Skip to content

Component Settings Schema

A component's behaviour is fully described by its Settings document. This page is the reference for the raw JSON shape of that document — useful when building integrations, writing toolkit scripts, or constructing components programmatically.


Settings

The top-level container for all component configuration.

Field Type Required Description
version string No Semver string of this settings snapshot
appearance Appearance No Custom UI entrypoints
list List No List view configuration
fields SettingsField[] Yes All fields defined for this component
model Model No Workflow events and unique index rules
presets Preset[] No Saved list-view filter configurations
templates object[] No Raw record templates
templates_dist TemplatesDist No Compiled template distribution
config object No Arbitrary key/value component config
functions Function[] No Named JavaScript expression functions
extensions Extension[] No Installed extensions
policies Policy[] No Access control policies
idl ComponentIDL No Type contracts per schema — see IDL
{
  "version": "1.0.0",
  "fields": [],
  "model": { "events": [], "unique_indexes_combinations": [] },
  "functions": [],
  "extensions": [],
  "policies": []
}

Appearance

Controls which custom UI component is rendered for each view.

Field Type Description
list_entrypoint string Custom component name for the list view
create_entrypoint string Custom component name for the create form
edit_entrypoint string Custom component name for the edit form

List

Configures the default list view.

Field Type Description
quick_actions boolean Show inline action buttons in each row
fields ListField[] Ordered list of columns to display

ListField

Field Type Description
key string Field key
label object Localised label
sortable boolean Allow column sorting
filterable boolean Allow column filtering
sort_direction string Default sort — "asc" or "desc"
formatter string Display formatter identifier
variant string Visual variant hint

Model

Holds workflow definitions and unique index constraints.

Field Type Description
events Node[] Workflow nodes — see Workflow Schema
unique_indexes_combinations UniqueIndexCombination[] Multi-field unique constraints

UniqueIndexCombination

Field Type Required Description
schema string No Schema this index applies to — defaults to "default"
fields string[] Yes Field keys that must be unique together
{
  "unique_indexes_combinations": [
    { "fields": ["email"] },
    { "schema": "premium", "fields": ["email", "tier"] }
  ]
}

SettingsField

Describes a single field on a component record.

Field Type Required Description
key string Yes Unique identifier used as the data key
name string No Internal system name
label object No Localised display label
description object No Localised help text
type string Yes Sub-type within the module — see Field Modules
module string Yes Input widget category — see Field Modules
group string No UI group/section name
sort_order number No Display order within the form
visible boolean No Whether the field is shown in the UI
protected boolean No Whether the field is write-protected
schema string No Schema this field belongs to — defaults to "default"
context Context[] No Static key/value pairs injected into expression context
constraints FieldConstraints No Validation and UI constraint rules
relation Relation No Foreign component reference settings
permissions string[] No Additional permission identifiers
provided_template boolean No Whether this field renders via a provided template
provided_template_component string No Component name providing the template
component_template string No Template name within the component
template string No Raw template string

Relation

Field Type Description
foreign string Name of the foreign component
foreign_uuid string \| null UUID of the foreign component
key string[] Field keys from the foreign component to include
type string Relation type — "one" or "many"

Field Modules

The module determines the input widget; type selects the variant within that module.

module type values Description
input text, text_i18n, number, date, image, email, password, file Single-value text inputs
image carousel Image carousel
text default, editor Text area / rich-text editor
select text, number, image, relation, external Dropdown / multi-select
radio text, number Radio button group
checkbox text, number, bool Checkbox(es)
table default, custom Inline table of sub-records
picker date, daterange, datetime, time Date/time pickers
fieldset default Group of fields rendered together
data json Raw JSON editor

FieldConstraints

Validation and UI behaviour rules for a field.

Field Type Description
required boolean Field must have a value
unique boolean Value must be unique across all records
placeholder string Input placeholder text
default string Default value expression
length.min number \| null Minimum string/array length
length.max number \| null Maximum string/array length
not_allowed_words string Comma-separated blocked words
regex string Validation regular expression
display_condition string JS expression — field is shown only when truthy
custom_data object Arbitrary module-specific data

constraints.date

For picker module fields.

Field Type Description
pattern string Display format pattern
disable_past_dates boolean Prevent selecting past dates
disable_future_dates boolean Prevent selecting future dates
disabled_dates.dates string[] Specific disabled dates
disabled_dates.days number[] Disabled weekday numbers (0 = Sunday)
highlighted_dates object Same structure as disabled_dates

constraints.selectables

For select and radio module fields.

Field Type Description
items any[] Explicit list of allowed values
multiple boolean Allow selecting multiple values
range.from number Generate items from this number
range.to number Generate items up to this number
custom boolean Allow values not in items

constraints.table

For table module fields.

Field Type Description
search boolean Show search box above the table
per_page number Default rows per page
save_on_create boolean Persist rows immediately on record create
fields SettingsField[] Column definitions — same shape as top-level fields

constraints.relation

For select relation type fields.

Field Type Description
label string Field key from the foreign component used as display label
searchOn string[] Field keys to search when filtering the relation dropdown

Function

Named JavaScript expression callable from workflows and other expressions.

Field Type Required Description
name string Yes Function identifier
expr string Yes JavaScript expression body
{
  "functions": [
    { "name": "fullName", "expr": "data.first_name + ' ' + data.last_name" }
  ]
}

Preset

A saved list-view filter configuration.

Field Type Description
name string Display name of the preset
roles string[] Roles that can see this preset
context.filters Filters Filter values applied when preset is active
context.default boolean Auto-apply this preset on load
context.locked boolean Prevent users from clearing this preset
context.expr string Dynamic filter expression

Filters

Field Type Description
filter string Free-text search string
filterOn string[] Fields to search within
dateField string Field used for date range filtering
dateFrom string Start of date range
dateTo string End of date range
$adv object Advanced filter map — keyed by field key

Extension

An installed extension adds fields, functions, and workflows to a component without modifying the base settings.

Field Type Description
name string Extension identifier
is_active boolean Whether the extension is enabled
version string Installed version string
installed_by string UUID of the component that installed this extension
installed_at string ISO 8601 install timestamp
fields SettingsField[] Additional fields contributed by this extension
functions Function[] Additional functions
workflows Node[] Additional workflow nodes — see Workflow Schema
config object Extension-specific configuration
idl ComponentIDL Extension-scoped type contracts — see IDL

Extension functions are called using dot notation: extensionName.functionName.


Policy

Access control rule applied to the component.

Field Type Required Description
name string Yes Policy identifier
type string Yes Policy category — currently only "field_access"
description string No Human-readable explanation
enabled boolean Yes Whether the policy is active
priority number No Higher priority wins on conflict (default: 0)
config object Yes Type-specific configuration — see Policies

Complete Example

{
  "version": "1.0.0",
  "appearance": {
    "list_entrypoint": "",
    "create_entrypoint": "",
    "edit_entrypoint": ""
  },
  "fields": [
    {
      "key": "name",
      "label": { "locales": { "en_US": "Name" } },
      "module": "input",
      "type": "text",
      "visible": true,
      "constraints": { "required": true }
    },
    {
      "key": "status",
      "label": { "locales": { "en_US": "Status" } },
      "module": "select",
      "type": "text",
      "visible": true,
      "constraints": {
        "selectables": { "items": ["active", "inactive"] }
      }
    },
    {
      "key": "assigned_to",
      "label": { "locales": { "en_US": "Assigned To" } },
      "module": "select",
      "type": "relation",
      "visible": true,
      "relation": {
        "foreign": "users",
        "key": ["name", "email"],
        "type": "one"
      },
      "constraints": {
        "relation": { "label": "name", "searchOn": ["name", "email"] }
      }
    }
  ],
  "model": {
    "events": [
      {
        "id": 1,
        "name": "Create",
        "type": "event",
        "action": "event",
        "data": {},
        "connections": [],
        "parallel": false,
        "paused": false
      }
    ],
    "unique_indexes_combinations": [
      { "fields": ["name"] }
    ]
  },
  "functions": [
    { "name": "displayName", "expr": "data.name.toUpperCase()" }
  ],
  "policies": [],
  "extensions": []
}