Structural primitive — defines a single configurable field.
An Attribute is a reusable building block: "text_input", "email_input", "asset",
"select", etc. It carries default data_config and ui_config that can be
overridden at the ASA and ASD layers.
Key fields
handle— unique machine identifier, used in templates and data resolutiondata_config— embeddedDataConfig: data type, validation rules, source mappingui_config— embeddedUIConfig: input type, tag, classes, edit/view modulesdraft_config— staged config changes before promotiontranslations— JSONB map for translatable metadata (name, description)state— lifecycle state, used by workflows and pipelines
Virtual fields
sample— preview sample valuedata_preview— data configuration preview for UIui_preview— UI configuration preview for UIui_state— transient UI state (expanded, selected, etc.)easy_mode— auto-generates handle/code/state from name
Config cascade
Attribute provides the base layer (layer 1) of the 4-layer cascade: Attribute defaults → ASA overrides → ASD instance → runtime enrichment.
Summary
Functions
Builds a changeset for attribute creation and updates.