Skip to main content
The UI Schema defines how to render a dynamic form — the layout structure, controls, conditional visibility rules, and custom options. It follows the JSON Forms UI Schema specification.

Structure

A UI Schema is a tree of elements. Each element has a type that determines how it behaves:
  • Layouts — Container elements that organize other elements
  • Controls — Elements that render input fields bound to schema properties

Layouts

Layouts organize controls and other layouts into a visual structure.

VerticalLayout

Arranges elements vertically, one below the other.

HorizontalLayout

Arranges elements horizontally, side by side.

Group

Groups related controls together with an optional label.

Categorization

Organizes content into tabs or wizard-style steps. A Categorization contains multiple Category elements, each representing a step in the form.
Categories correspond to steps in the schema. Each Category typically maps to a root-level schema property, enabling progressive disclosure as users complete each step.

ListWithDetail

Renders an array as a master-detail view — a list of items on one side and a detail form for the selected item.

Controls

Controls render input fields and bind them to schema properties.

Control

The Control element renders an input based on the schema type at the specified scope.
The renderer automatically selects the appropriate input type based on the schema:

Rules

Rules control the visibility and enabled state of elements based on data conditions.

Effects

Conditions

A condition specifies a scope (the property to evaluate) and a schema that the value must match.
Common condition patterns:

Options

The options property on controls allows you to customize behavior. These are standard JSON Forms options.

Array options

Options for array controls:

readonly

Renders the control as read-only.

detail

For ListWithDetail layouts, specifies the UI Schema for the detail view.

Custom options

The Enterprise API Suite extends JSON Forms with custom options for specific use cases.

data

Specifies a data source for populating select options dynamically. The data object defines where to fetch options from and how to filter them.

format

Specifies custom display formats for controls that are not covered by the standard JSON Schema format keyword. Standard formats like date are defined in the JSON Schema and handled natively by renderers.

rules (validation)

Defines client-side validation rules on a control. These rules allow you to enforce constraints that go beyond standard JSON Schema validation, such as age thresholds relative to the current date.
These validation rules are defined in options.rules on individual controls and are distinct from the visibility rules (rule with effect and condition) that control element visibility.
In this example, the date must be at least 18 years ago and at most 100 years ago, effectively restricting the input to valid adult birthday dates.

dependsOn

Declares that a control depends on the value of one or more other controls. When a dependency value changes, the dependent control should update its available options or validation accordingly.
In this example, the subdivision field depends on the selected country — when the country changes, the list of available subdivisions is updated. Dependencies can also be chained. For example, a postal code field can depend on both country and subdivision:

Next steps

Rendering

Implementation guidance and best practices.