---
title: "Create table field"
method: POST
path: "/orgs/tables/{table_id}/fields"
tags: ["Tables"]
---

# Create table field

`POST /orgs/tables/{table_id}/fields`

## Request

- Base URL: `https://api.useinvent.com`
- URL: `https://api.useinvent.com/orgs/tables/{table_id}/fields`
- Auth: HTTP bearer

Create a new field on a table. Pass `before` / `after` (a sibling field key) to slot it at a global position; omit both to append.

## Path parameters

- `table_id` string, required

## Request body

- CreateTableFieldSchema
  - `id` string: Client-generated id for the new field (enables optimistic creation). Encoded (`field_…`) or raw UUID. Rejected if already in use.
  - `key` string, required
  - `schema` union, required: A table field schema
    - FieldIdBaseSchema
      - `type` 'id', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `prefix` string: Uppercase alphanumeric prefix rendered before the record number (e.g. `LEAD` → `LEAD-42`). Omit to render the bare number.
    - FieldStringBaseSchema
      - `type` 'string', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldStringDisplaySchema: Display options for the string field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `render` 'text' | 'textarea' | 'password': The render type of the string field, text is a single line input, textarea is a multi-line input
      - `default` union: The default value of the string field
        - string
        - string[]
      - `format` 'url' | 'email' | 'phone': The validation type for the field
      - `min` number: The minimum length of the string field
      - `max` number: The maximum length of the string field
    - FieldNumberBaseSchema
      - `type` 'number', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldNumberDisplaySchema: Display options for the number field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `format` 'number' | 'percent' | 'currency': Numeric style (maps to Intl.NumberFormat `style`); `number` is a plain number. Thousand separators are always applied.
        - `notation` 'standard' | 'compact': Number notation (maps to Intl.NumberFormat `notation`); `compact` renders 1.2K (short form)
        - `decimals` integer: Fixed fraction digits (min and max); omit for the locale default
        - `currency` string: ISO 4217 currency code, used when `format` is `currency`; defaults to USD when omitted
        - `show_as` FieldNumberShowAsSchema: Renders the number as a plain value, a progress bar, or a ring
          - `kind` 'number' | 'bar' | 'ring', required: How to render the number: a plain value, a progress bar, or a ring
          - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
          - `divide_by` number: Denominator for the bar / ring progress (value / divide_by)
          - `show_number` boolean: Show the numeric value alongside the bar / ring
      - `default` union: The default value of the number field
        - number
        - '{{auto}}'
    - FieldBooleanBaseSchema
      - `type` 'boolean', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` boolean: The default value of the boolean field
    - FieldDateBaseSchema
      - `type` 'date', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDateDisplaySchema: Display options for the date field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
      - `default` string, date-time, nullable: The default value of the date field, formatted as YYYY-MM-DD
      - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
    - FieldDateTimeBaseSchema
      - `type` 'datetime', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDateTimeDisplaySchema: Display options for the datetime field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
        - `time_format` 'hidden' | '12h' | '24h': The rendered time format for datetime / time fields. `hidden` collapses a datetime to a date-only render.
      - `default` string, date-time, nullable: The default value of the date time field, formatted as YYYY-MM-DDTHH:MM:SS
      - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
      - `source` 'created_at' | 'updated_at': Record timestamp a sourced datetime field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
    - FieldEnumBaseSchema
      - `type` 'enum', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldEnumDisplaySchema: Display options for the enum field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `render` 'dropdown' | 'inline': The render type of the enum field
        - `sort` 'manual' | 'asc' | 'desc': Option ordering by label; `manual` keeps the `items[]` order (default), `asc` A→Z, `desc` Z→A
      - `default` union: The default value of the enum field
        - string
        - string[]
      - `items` FieldEnumItemSchema[], required: The options for the enum field
        - `label` string: Label of the enum item
        - `value` string, required: Value of the enum item
        - `description` string: Description of the enum item
        - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
        - `icon` 'StepFormIcon' | 'StepAiIcon' | 'StepNoteIcon' | 'StepBranchIcon' | 'StepCodeIcon' | 'SmsIcon' | 'ConnectionIcon' | 'ConnectionSchedulerIcon' | 'ConnectionFilesIcon' | 'ConnectionHttpIcon' | 'ConnectionHttpCredentialsIcon' | 'ConnectionWorkflowIcon' | 'ConnectionMcpIcon' | 'ConnectionOpenApiIcon' | 'ConnectionAudienceIcon' | 'ConnectionContactsIcon' | 'ConnectionTablesIcon' | 'ConnectionAssistantsIcon' | 'ConnectionAgentsIcon' | 'ConnectionChatsIcon' | 'ConnectionInboxIcon' | 'ConnectionKnowledgeIcon' | 'ConnectionAuditIcon' | 'InternalIntegrationIcon' | 'CustomIntegrationIcon' | 'ToolThinkIcon' | 'ToolWebSearchIcon' | 'ToolWebScrapingIcon' | 'ToolGenerateImageIcon' | 'ToolDisplayFileIcon' | 'ToolCalculatorIcon' | 'ToolGenerateFileIcon' | 'ToolGeneratePdfIcon' | 'ToolRunCodeIcon' | 'ToolDeepResearchIcon' | 'ToolSearchKbIcon' | 'ToolShowOptionsIcon' | 'ToolRequestLocationIcon' | 'ToolSendLocationIcon' | 'ToolSendContactIcon' | 'ToolManageMemoryIcon' | 'ToolUpdateContactIcon' | 'TextIcon' | 'ClockFadingIcon' | 'CalendarIcon' | 'CloudIcon' | 'GlobeAltIcon' | 'LockClosedIcon' | 'NoSymbolIcon' | 'SparklesIcon' | 'AcademicCapIcon' | 'HandRaisedIcon' | 'BoltIcon' | 'WorkflowIcon' | 'FileSpreadsheetIcon' | 'DatabaseIcon' | 'TableIcon' | 'TableRowIcon' | 'TableRowAddIcon' | 'TableRowEditIcon' | 'TableRowDeleteIcon' | 'TableRowsIcon' | 'PageIcon' | 'UserIcon' | 'UsersIcon' | 'EmailIcon' | 'PhoneIcon' | 'CurrencyIcon' | 'FunctionIcon' | 'TableCellsIcon' | 'DocumentTextIcon' | 'QueueListIcon' | 'TagIcon' | 'SettingsIcon' | 'ShoppingCartIcon' | 'ShoppingBagIcon' | 'BuildingStorefrontIcon' | 'MegaphoneIcon' | 'WrenchScrewdriverIcon' | 'MagnifyingGlassIcon' | 'DocumentChartBarIcon' | 'ClipboardDocumentListIcon' | 'ClipboardDocumentCheckIcon' | 'FolderIcon' | 'ArchiveBoxIcon' | 'InboxIcon' | 'BookOpenIcon' | 'BookmarkIcon' | 'NewspaperIcon' | 'RectangleStackIcon' | 'PencilSquareIcon' | 'UserGroupIcon' | 'UserPlusIcon' | 'IdentificationIcon' | 'FaceSmileIcon' | 'HandThumbUpIcon' | 'HeartIcon' | 'StarIcon' | 'CheckBadgeIcon' | 'TrophyIcon' | 'CrownIcon' | 'ChatBubbleLeftIcon' | 'ChatBubbleLeftRightIcon' | 'EnvelopeIcon' | 'EnvelopeOpenIcon' | 'DevicePhoneMobileIcon' | 'BellIcon' | 'PaperAirplaneIcon' | 'AtSymbolIcon' | 'RssIcon' | 'LifebuoyIcon' | 'CreditCardIcon' | 'BanknotesIcon' | 'CurrencyDollarIcon' | 'CurrencyEuroIcon' | 'ReceiptPercentIcon' | 'WalletIcon' | 'CoinsIcon' | 'GiftIcon' | 'TicketIcon' | 'ScaleIcon' | 'TruckIcon' | 'CubeIcon' | 'CalendarDaysIcon' | 'CalendarDateRangeIcon' | 'ClockIcon' | 'FlagIcon' | 'CheckCircleIcon' | 'ListBulletIcon' | 'FunnelIcon' | 'ChartBarIcon' | 'ChartPieIcon' | 'PresentationChartLineIcon' | 'ArrowTrendingUpIcon' | 'BriefcaseIcon' | 'Cog6ToothIcon' | 'KeyIcon' | 'ShieldCheckIcon' | 'LightBulbIcon' | 'BeakerIcon' | 'BugAntIcon' | 'CpuChipIcon' | 'CodeBracketIcon' | 'CommandLineIcon' | 'ServerIcon' | 'LinkIcon' | 'HomeIcon' | 'HomeModernIcon' | 'BuildingOfficeIcon' | 'BuildingOffice2Icon' | 'BuildingLibraryIcon' | 'MapPinIcon' | 'MapIcon' | 'GlobeAmericasIcon' | 'RocketLaunchIcon' | 'PlaneIcon' | 'CarIcon' | 'SunIcon' | 'MoonIcon' | 'FireIcon' | 'CakeIcon' | 'ScissorsIcon' | 'SwatchIcon' | 'PaintBrushIcon' | 'CoffeeIcon' | 'UtensilsIcon' | 'LeafIcon' | 'DumbbellIcon' | 'HeartPulseIcon' | 'PawPrintIcon' | 'StethoscopeIcon' | 'CameraIcon' | 'PhotoIcon' | 'FilmIcon' | 'VideoCameraIcon' | 'MicrophoneIcon' | 'MusicalNoteIcon' | 'SpeakerWaveIcon' | 'PlayCircleIcon' | 'TvIcon' | 'RadioIcon' | 'PuzzlePieceIcon' | 'GamepadIcon' | 'ModelAutoIcon' | 'ModelOpenAIIcon' | 'ModelAnthropicIcon' | 'ModelClaudeIcon' | 'ModelGoogleIcon' | 'ModelGeminiIcon' | 'ModelXAIIcon' | 'ModelGrokIcon' | 'ModelPerplexityIcon' | 'ModelGroqIcon' | 'ModelAzureIcon' | 'ModelElevenLabsIcon' | 'ModelDeepgramIcon' | 'ModelOpenRouterIcon' | 'ModelDeepSeekIcon' | 'ModelMoonshotIcon' | 'ModelQwenIcon' | 'ModelMetaIcon' | 'ModelZhipuIcon': The name of the icon to use in the UI
        - `icon_url` string
        - `metadata` FieldEnumItemMetadataSchema: Additional metadata for the enum item
          - `link` string, uri: A link associated with the enum item
          - `data` unknown
      - `additional_items` boolean: Indicates whether additional unlisted items are allowed
    - FieldFileBaseSchema
      - `type` 'file', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldFileDisplaySchema: Display options for the file field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `render` 'button' | 'dropzone': The render type of the file field
      - `allowed_types` string[]: Allowed mime types for the file field (e.g. image/*, application/pdf)
      - `visibility` 'PUBLIC' | 'PRIVATE': Whether the file is private or public, private files URLs are signed with a token and can be accessed temporarily
      - `default` union: The default value of the file field: the already-attached file(s), pre-filled and replaceable
        - FileSchema: Detailed information about a file
          - `id` string, required: Unique identifier for the file
          - `file_path` string, required: Path to the file in the storage system
          - `file_filename` string, required: Name of the file
          - `file_size` number, required: Size of the file in bytes
          - `file_mimetype` string, required: MIME type of the file
          - `file_url` string, required: URL to access the file
          - `created_at` string, date-time, nullable, required: Timestamp when the file was created
        - FileSchema[]
          - `id` string, required: Unique identifier for the file
          - `file_path` string, required: Path to the file in the storage system
          - `file_filename` string, required: Name of the file
          - `file_size` number, required: Size of the file in bytes
          - `file_mimetype` string, required: MIME type of the file
          - `file_url` string, required: URL to access the file
          - `created_at` string, date-time, nullable, required: Timestamp when the file was created
    - FieldRecordBaseSchema
      - `type` 'record', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the record field (encoded record id)
        - string
        - string[]
      - `target_table_id` string: The id of the table whose records are referenceable
    - FieldContactBaseSchema
      - `type` 'contact', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the contact field (encoded contact id)
        - string
        - string[]
    - FieldUserBaseSchema
      - `type` 'user', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the user field (encoded user id of an org member)
        - string
        - string[]
      - `source` 'created_by' | 'updated_by': Record actor a sourced user field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
    - FieldChatBaseSchema
      - `type` 'chat', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the chat field (encoded chat id)
        - string
        - string[]
    - FieldSegmentBaseSchema
      - `type` 'segment', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the segment field (encoded segment id)
        - string
        - string[]
    - FieldAssistantBaseSchema
      - `type` 'assistant', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the assistant field (encoded assistant id)
        - string
        - string[]
    - FieldAgentBaseSchema
      - `type` 'agent', required: The type of the field
      - `name` string: The name of the field
      - `description` string: The description of the field
      - `optional` boolean: Indicates whether the field is optional
      - `array` boolean: Indicates whether the field can contain multiple values
      - `placeholder` string: The placeholder of the field
      - `display` FieldDisplaySchema: Display options for the field
        - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
        - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
        - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
      - `default` union: The default value of the agent field (encoded agent id)
        - string
        - string[]
  - `icon` union
    - string, emoji: The emoji of a curated icon a user can pick for a table, view, field, or other entity
    - 'TableCellsIcon' | 'DatabaseIcon' | 'DocumentTextIcon' | 'DocumentChartBarIcon' | 'ClipboardDocumentListIcon' | 'ClipboardDocumentCheckIcon' | 'FolderIcon' | 'ArchiveBoxIcon' | 'InboxIcon' | 'BookOpenIcon' | 'BookmarkIcon' | 'NewspaperIcon' | 'RectangleStackIcon' | 'PencilSquareIcon' | 'UserIcon' | 'UsersIcon' | 'UserGroupIcon' | 'UserPlusIcon' | 'IdentificationIcon' | 'FaceSmileIcon' | 'HandThumbUpIcon' | 'HeartIcon' | 'StarIcon' | 'CheckBadgeIcon' | 'TrophyIcon' | 'CrownIcon' | 'ChatBubbleLeftIcon' | 'ChatBubbleLeftRightIcon' | 'EnvelopeIcon' | 'EnvelopeOpenIcon' | 'PhoneIcon' | 'DevicePhoneMobileIcon' | 'MegaphoneIcon' | 'BellIcon' | 'PaperAirplaneIcon' | 'AtSymbolIcon' | 'RssIcon' | 'LifebuoyIcon' | 'ShoppingCartIcon' | 'ShoppingBagIcon' | 'BuildingStorefrontIcon' | 'CreditCardIcon' | 'BanknotesIcon' | 'CurrencyDollarIcon' | 'CurrencyEuroIcon' | 'ReceiptPercentIcon' | 'WalletIcon' | 'CoinsIcon' | 'GiftIcon' | 'TagIcon' | 'TicketIcon' | 'ScaleIcon' | 'TruckIcon' | 'CubeIcon' | 'CalendarIcon' | 'CalendarDaysIcon' | 'CalendarDateRangeIcon' | 'ClockIcon' | 'FlagIcon' | 'CheckCircleIcon' | 'ListBulletIcon' | 'QueueListIcon' | 'FunnelIcon' | 'ChartBarIcon' | 'ChartPieIcon' | 'PresentationChartLineIcon' | 'ArrowTrendingUpIcon' | 'BriefcaseIcon' | 'WrenchScrewdriverIcon' | 'Cog6ToothIcon' | 'KeyIcon' | 'LockClosedIcon' | 'ShieldCheckIcon' | 'BoltIcon' | 'LightBulbIcon' | 'BeakerIcon' | 'BugAntIcon' | 'CpuChipIcon' | 'CodeBracketIcon' | 'CommandLineIcon' | 'ServerIcon' | 'LinkIcon' | 'HomeIcon' | 'HomeModernIcon' | 'BuildingOfficeIcon' | 'BuildingOffice2Icon' | 'BuildingLibraryIcon' | 'MapPinIcon' | 'MapIcon' | 'GlobeAltIcon' | 'GlobeAmericasIcon' | 'RocketLaunchIcon' | 'PlaneIcon' | 'CarIcon' | 'SunIcon' | 'MoonIcon' | 'FireIcon' | 'SparklesIcon' | 'CakeIcon' | 'AcademicCapIcon' | 'ScissorsIcon' | 'SwatchIcon' | 'PaintBrushIcon' | 'CoffeeIcon' | 'UtensilsIcon' | 'LeafIcon' | 'DumbbellIcon' | 'HeartPulseIcon' | 'PawPrintIcon' | 'StethoscopeIcon' | 'CameraIcon' | 'PhotoIcon' | 'FilmIcon' | 'VideoCameraIcon' | 'MicrophoneIcon' | 'MusicalNoteIcon' | 'SpeakerWaveIcon' | 'PlayCircleIcon' | 'TvIcon' | 'RadioIcon' | 'PuzzlePieceIcon' | 'GamepadIcon': The name of a curated icon a user can pick for a table, view, field, or other entity
  - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
  - `unique` boolean
  - `readonly` boolean
  - `on_target_delete` 'restrict' | 'clear' | 'cascade': What happens when the referenced target is deleted (ref-typed fields only). `restrict` forbids deleting the target while any cell still points to it. `clear` allows the delete and drops those field values on remaining rows. `cascade` also deletes table rows that reference the target via this field.
  - `before` string
  - `after` string

## Response `200`

- union
  - TableSystemFieldSchema
    - `id` string, required
    - `table_id` string, required
    - `key` string, required
    - `type` 'id' | 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'enum' | 'file' | 'record' | 'contact' | 'user' | 'chat' | 'segment' | 'assistant' | 'agent', required
    - `schema` union, required: A user-created field: the table field types, without the props only built-in definitions set
      - FieldIdBaseSchema
        - `type` 'id', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `prefix` string: Uppercase alphanumeric prefix rendered before the record number (e.g. `LEAD` → `LEAD-42`). Omit to render the bare number.
      - FieldStringBaseSchema
        - `type` 'string', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldStringDisplaySchema: Display options for the string field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'text' | 'textarea' | 'password': The render type of the string field, text is a single line input, textarea is a multi-line input
        - `default` union: The default value of the string field
          - string
          - string[]
        - `format` 'url' | 'email' | 'phone': The validation type for the field
        - `min` number: The minimum length of the string field
        - `max` number: The maximum length of the string field
      - FieldNumberBaseSchema
        - `type` 'number', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldNumberDisplaySchema: Display options for the number field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `format` 'number' | 'percent' | 'currency': Numeric style (maps to Intl.NumberFormat `style`); `number` is a plain number. Thousand separators are always applied.
          - `notation` 'standard' | 'compact': Number notation (maps to Intl.NumberFormat `notation`); `compact` renders 1.2K (short form)
          - `decimals` integer: Fixed fraction digits (min and max); omit for the locale default
          - `currency` string: ISO 4217 currency code, used when `format` is `currency`; defaults to USD when omitted
          - `show_as` FieldNumberShowAsSchema: Renders the number as a plain value, a progress bar, or a ring
            - `kind` 'number' | 'bar' | 'ring', required: How to render the number: a plain value, a progress bar, or a ring
            - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
            - `divide_by` number: Denominator for the bar / ring progress (value / divide_by)
            - `show_number` boolean: Show the numeric value alongside the bar / ring
        - `default` union: The default value of the number field
          - number
          - '{{auto}}'
      - FieldBooleanBaseSchema
        - `type` 'boolean', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` boolean: The default value of the boolean field
      - FieldDateBaseSchema
        - `type` 'date', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDateDisplaySchema: Display options for the date field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
        - `default` string, date-time, nullable: The default value of the date field, formatted as YYYY-MM-DD
        - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
      - FieldDateTimeBaseSchema
        - `type` 'datetime', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDateTimeDisplaySchema: Display options for the datetime field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
          - `time_format` 'hidden' | '12h' | '24h': The rendered time format for datetime / time fields. `hidden` collapses a datetime to a date-only render.
        - `default` string, date-time, nullable: The default value of the date time field, formatted as YYYY-MM-DDTHH:MM:SS
        - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
        - `source` 'created_at' | 'updated_at': Record timestamp a sourced datetime field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
      - FieldEnumBaseSchema
        - `type` 'enum', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldEnumDisplaySchema: Display options for the enum field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'dropdown' | 'inline': The render type of the enum field
          - `sort` 'manual' | 'asc' | 'desc': Option ordering by label; `manual` keeps the `items[]` order (default), `asc` A→Z, `desc` Z→A
        - `default` union: The default value of the enum field
          - string
          - string[]
        - `items` FieldEnumItemSchema[], required: The options for the enum field
          - `label` string: Label of the enum item
          - `value` string, required: Value of the enum item
          - `description` string: Description of the enum item
          - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
          - `icon` 'StepFormIcon' | 'StepAiIcon' | 'StepNoteIcon' | 'StepBranchIcon' | 'StepCodeIcon' | 'SmsIcon' | 'ConnectionIcon' | 'ConnectionSchedulerIcon' | 'ConnectionFilesIcon' | 'ConnectionHttpIcon' | 'ConnectionHttpCredentialsIcon' | 'ConnectionWorkflowIcon' | 'ConnectionMcpIcon' | 'ConnectionOpenApiIcon' | 'ConnectionAudienceIcon' | 'ConnectionContactsIcon' | 'ConnectionTablesIcon' | 'ConnectionAssistantsIcon' | 'ConnectionAgentsIcon' | 'ConnectionChatsIcon' | 'ConnectionInboxIcon' | 'ConnectionKnowledgeIcon' | 'ConnectionAuditIcon' | 'InternalIntegrationIcon' | 'CustomIntegrationIcon' | 'ToolThinkIcon' | 'ToolWebSearchIcon' | 'ToolWebScrapingIcon' | 'ToolGenerateImageIcon' | 'ToolDisplayFileIcon' | 'ToolCalculatorIcon' | 'ToolGenerateFileIcon' | 'ToolGeneratePdfIcon' | 'ToolRunCodeIcon' | 'ToolDeepResearchIcon' | 'ToolSearchKbIcon' | 'ToolShowOptionsIcon' | 'ToolRequestLocationIcon' | 'ToolSendLocationIcon' | 'ToolSendContactIcon' | 'ToolManageMemoryIcon' | 'ToolUpdateContactIcon' | 'TextIcon' | 'ClockFadingIcon' | 'CalendarIcon' | 'CloudIcon' | 'GlobeAltIcon' | 'LockClosedIcon' | 'NoSymbolIcon' | 'SparklesIcon' | 'AcademicCapIcon' | 'HandRaisedIcon' | 'BoltIcon' | 'WorkflowIcon' | 'FileSpreadsheetIcon' | 'DatabaseIcon' | 'TableIcon' | 'TableRowIcon' | 'TableRowAddIcon' | 'TableRowEditIcon' | 'TableRowDeleteIcon' | 'TableRowsIcon' | 'PageIcon' | 'UserIcon' | 'UsersIcon' | 'EmailIcon' | 'PhoneIcon' | 'CurrencyIcon' | 'FunctionIcon' | 'TableCellsIcon' | 'DocumentTextIcon' | 'QueueListIcon' | 'TagIcon' | 'SettingsIcon' | 'ShoppingCartIcon' | 'ShoppingBagIcon' | 'BuildingStorefrontIcon' | 'MegaphoneIcon' | 'WrenchScrewdriverIcon' | 'MagnifyingGlassIcon' | 'DocumentChartBarIcon' | 'ClipboardDocumentListIcon' | 'ClipboardDocumentCheckIcon' | 'FolderIcon' | 'ArchiveBoxIcon' | 'InboxIcon' | 'BookOpenIcon' | 'BookmarkIcon' | 'NewspaperIcon' | 'RectangleStackIcon' | 'PencilSquareIcon' | 'UserGroupIcon' | 'UserPlusIcon' | 'IdentificationIcon' | 'FaceSmileIcon' | 'HandThumbUpIcon' | 'HeartIcon' | 'StarIcon' | 'CheckBadgeIcon' | 'TrophyIcon' | 'CrownIcon' | 'ChatBubbleLeftIcon' | 'ChatBubbleLeftRightIcon' | 'EnvelopeIcon' | 'EnvelopeOpenIcon' | 'DevicePhoneMobileIcon' | 'BellIcon' | 'PaperAirplaneIcon' | 'AtSymbolIcon' | 'RssIcon' | 'LifebuoyIcon' | 'CreditCardIcon' | 'BanknotesIcon' | 'CurrencyDollarIcon' | 'CurrencyEuroIcon' | 'ReceiptPercentIcon' | 'WalletIcon' | 'CoinsIcon' | 'GiftIcon' | 'TicketIcon' | 'ScaleIcon' | 'TruckIcon' | 'CubeIcon' | 'CalendarDaysIcon' | 'CalendarDateRangeIcon' | 'ClockIcon' | 'FlagIcon' | 'CheckCircleIcon' | 'ListBulletIcon' | 'FunnelIcon' | 'ChartBarIcon' | 'ChartPieIcon' | 'PresentationChartLineIcon' | 'ArrowTrendingUpIcon' | 'BriefcaseIcon' | 'Cog6ToothIcon' | 'KeyIcon' | 'ShieldCheckIcon' | 'LightBulbIcon' | 'BeakerIcon' | 'BugAntIcon' | 'CpuChipIcon' | 'CodeBracketIcon' | 'CommandLineIcon' | 'ServerIcon' | 'LinkIcon' | 'HomeIcon' | 'HomeModernIcon' | 'BuildingOfficeIcon' | 'BuildingOffice2Icon' | 'BuildingLibraryIcon' | 'MapPinIcon' | 'MapIcon' | 'GlobeAmericasIcon' | 'RocketLaunchIcon' | 'PlaneIcon' | 'CarIcon' | 'SunIcon' | 'MoonIcon' | 'FireIcon' | 'CakeIcon' | 'ScissorsIcon' | 'SwatchIcon' | 'PaintBrushIcon' | 'CoffeeIcon' | 'UtensilsIcon' | 'LeafIcon' | 'DumbbellIcon' | 'HeartPulseIcon' | 'PawPrintIcon' | 'StethoscopeIcon' | 'CameraIcon' | 'PhotoIcon' | 'FilmIcon' | 'VideoCameraIcon' | 'MicrophoneIcon' | 'MusicalNoteIcon' | 'SpeakerWaveIcon' | 'PlayCircleIcon' | 'TvIcon' | 'RadioIcon' | 'PuzzlePieceIcon' | 'GamepadIcon' | 'ModelAutoIcon' | 'ModelOpenAIIcon' | 'ModelAnthropicIcon' | 'ModelClaudeIcon' | 'ModelGoogleIcon' | 'ModelGeminiIcon' | 'ModelXAIIcon' | 'ModelGrokIcon' | 'ModelPerplexityIcon' | 'ModelGroqIcon' | 'ModelAzureIcon' | 'ModelElevenLabsIcon' | 'ModelDeepgramIcon' | 'ModelOpenRouterIcon' | 'ModelDeepSeekIcon' | 'ModelMoonshotIcon' | 'ModelQwenIcon' | 'ModelMetaIcon' | 'ModelZhipuIcon': The name of the icon to use in the UI
          - `icon_url` string
          - `metadata` FieldEnumItemMetadataSchema: Additional metadata for the enum item
            - `link` string, uri: A link associated with the enum item
            - `data` unknown
        - `additional_items` boolean: Indicates whether additional unlisted items are allowed
      - FieldFileBaseSchema
        - `type` 'file', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldFileDisplaySchema: Display options for the file field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'button' | 'dropzone': The render type of the file field
        - `allowed_types` string[]: Allowed mime types for the file field (e.g. image/*, application/pdf)
        - `visibility` 'PUBLIC' | 'PRIVATE': Whether the file is private or public, private files URLs are signed with a token and can be accessed temporarily
        - `default` union: The default value of the file field: the already-attached file(s), pre-filled and replaceable
          - FileSchema: Detailed information about a file
            - `id` string, required: Unique identifier for the file
            - `file_path` string, required: Path to the file in the storage system
            - `file_filename` string, required: Name of the file
            - `file_size` number, required: Size of the file in bytes
            - `file_mimetype` string, required: MIME type of the file
            - `file_url` string, required: URL to access the file
            - `created_at` string, date-time, nullable, required: Timestamp when the file was created
          - FileSchema[]
            - `id` string, required: Unique identifier for the file
            - `file_path` string, required: Path to the file in the storage system
            - `file_filename` string, required: Name of the file
            - `file_size` number, required: Size of the file in bytes
            - `file_mimetype` string, required: MIME type of the file
            - `file_url` string, required: URL to access the file
            - `created_at` string, date-time, nullable, required: Timestamp when the file was created
      - FieldRecordBaseSchema
        - `type` 'record', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the record field (encoded record id)
          - string
          - string[]
        - `target_table_id` string: The id of the table whose records are referenceable
      - FieldContactBaseSchema
        - `type` 'contact', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the contact field (encoded contact id)
          - string
          - string[]
      - FieldUserBaseSchema
        - `type` 'user', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the user field (encoded user id of an org member)
          - string
          - string[]
        - `source` 'created_by' | 'updated_by': Record actor a sourced user field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
      - FieldChatBaseSchema
        - `type` 'chat', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the chat field (encoded chat id)
          - string
          - string[]
      - FieldSegmentBaseSchema
        - `type` 'segment', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the segment field (encoded segment id)
          - string
          - string[]
      - FieldAssistantBaseSchema
        - `type` 'assistant', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the assistant field (encoded assistant id)
          - string
          - string[]
      - FieldAgentBaseSchema
        - `type` 'agent', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the agent field (encoded agent id)
          - string
          - string[]
    - `readonly` boolean, required
    - `sortable` boolean, required: Whether views can sort their records by this field.
    - `groupable_in` string[], required: View kinds that accept this field as their grouping axis.
    - `kind` 'system', required
  - TableCustomFieldSchema
    - `id` string, required
    - `table_id` string, required
    - `key` string, required
    - `type` 'id' | 'string' | 'number' | 'boolean' | 'date' | 'datetime' | 'enum' | 'file' | 'record' | 'contact' | 'user' | 'chat' | 'segment' | 'assistant' | 'agent', required
    - `schema` union, required: A user-created field: the table field types, without the props only built-in definitions set
      - FieldIdBaseSchema
        - `type` 'id', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `prefix` string: Uppercase alphanumeric prefix rendered before the record number (e.g. `LEAD` → `LEAD-42`). Omit to render the bare number.
      - FieldStringBaseSchema
        - `type` 'string', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldStringDisplaySchema: Display options for the string field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'text' | 'textarea' | 'password': The render type of the string field, text is a single line input, textarea is a multi-line input
        - `default` union: The default value of the string field
          - string
          - string[]
        - `format` 'url' | 'email' | 'phone': The validation type for the field
        - `min` number: The minimum length of the string field
        - `max` number: The maximum length of the string field
      - FieldNumberBaseSchema
        - `type` 'number', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldNumberDisplaySchema: Display options for the number field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `format` 'number' | 'percent' | 'currency': Numeric style (maps to Intl.NumberFormat `style`); `number` is a plain number. Thousand separators are always applied.
          - `notation` 'standard' | 'compact': Number notation (maps to Intl.NumberFormat `notation`); `compact` renders 1.2K (short form)
          - `decimals` integer: Fixed fraction digits (min and max); omit for the locale default
          - `currency` string: ISO 4217 currency code, used when `format` is `currency`; defaults to USD when omitted
          - `show_as` FieldNumberShowAsSchema: Renders the number as a plain value, a progress bar, or a ring
            - `kind` 'number' | 'bar' | 'ring', required: How to render the number: a plain value, a progress bar, or a ring
            - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
            - `divide_by` number: Denominator for the bar / ring progress (value / divide_by)
            - `show_number` boolean: Show the numeric value alongside the bar / ring
        - `default` union: The default value of the number field
          - number
          - '{{auto}}'
      - FieldBooleanBaseSchema
        - `type` 'boolean', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` boolean: The default value of the boolean field
      - FieldDateBaseSchema
        - `type` 'date', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDateDisplaySchema: Display options for the date field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
        - `default` string, date-time, nullable: The default value of the date field, formatted as YYYY-MM-DD
        - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
      - FieldDateTimeBaseSchema
        - `type` 'datetime', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDateTimeDisplaySchema: Display options for the datetime field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `date_format` 'full' | 'short' | 'month_day_year' | 'day_month_year' | 'year_month_day' | 'relative': The rendered date format for date / datetime fields
          - `time_format` 'hidden' | '12h' | '24h': The rendered time format for datetime / time fields. `hidden` collapses a datetime to a date-only render.
        - `default` string, date-time, nullable: The default value of the date time field, formatted as YYYY-MM-DDTHH:MM:SS
        - `range` boolean: Turns the field into a range: requires `array: true`, and the value becomes an array of exactly two dates (start, end). A Timeline can draw it as a bar.
        - `source` 'created_at' | 'updated_at': Record timestamp a sourced datetime field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
      - FieldEnumBaseSchema
        - `type` 'enum', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldEnumDisplaySchema: Display options for the enum field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'dropdown' | 'inline': The render type of the enum field
          - `sort` 'manual' | 'asc' | 'desc': Option ordering by label; `manual` keeps the `items[]` order (default), `asc` A→Z, `desc` Z→A
        - `default` union: The default value of the enum field
          - string
          - string[]
        - `items` FieldEnumItemSchema[], required: The options for the enum field
          - `label` string: Label of the enum item
          - `value` string, required: Value of the enum item
          - `description` string: Description of the enum item
          - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral': Accent color, by name
          - `icon` 'StepFormIcon' | 'StepAiIcon' | 'StepNoteIcon' | 'StepBranchIcon' | 'StepCodeIcon' | 'SmsIcon' | 'ConnectionIcon' | 'ConnectionSchedulerIcon' | 'ConnectionFilesIcon' | 'ConnectionHttpIcon' | 'ConnectionHttpCredentialsIcon' | 'ConnectionWorkflowIcon' | 'ConnectionMcpIcon' | 'ConnectionOpenApiIcon' | 'ConnectionAudienceIcon' | 'ConnectionContactsIcon' | 'ConnectionTablesIcon' | 'ConnectionAssistantsIcon' | 'ConnectionAgentsIcon' | 'ConnectionChatsIcon' | 'ConnectionInboxIcon' | 'ConnectionKnowledgeIcon' | 'ConnectionAuditIcon' | 'InternalIntegrationIcon' | 'CustomIntegrationIcon' | 'ToolThinkIcon' | 'ToolWebSearchIcon' | 'ToolWebScrapingIcon' | 'ToolGenerateImageIcon' | 'ToolDisplayFileIcon' | 'ToolCalculatorIcon' | 'ToolGenerateFileIcon' | 'ToolGeneratePdfIcon' | 'ToolRunCodeIcon' | 'ToolDeepResearchIcon' | 'ToolSearchKbIcon' | 'ToolShowOptionsIcon' | 'ToolRequestLocationIcon' | 'ToolSendLocationIcon' | 'ToolSendContactIcon' | 'ToolManageMemoryIcon' | 'ToolUpdateContactIcon' | 'TextIcon' | 'ClockFadingIcon' | 'CalendarIcon' | 'CloudIcon' | 'GlobeAltIcon' | 'LockClosedIcon' | 'NoSymbolIcon' | 'SparklesIcon' | 'AcademicCapIcon' | 'HandRaisedIcon' | 'BoltIcon' | 'WorkflowIcon' | 'FileSpreadsheetIcon' | 'DatabaseIcon' | 'TableIcon' | 'TableRowIcon' | 'TableRowAddIcon' | 'TableRowEditIcon' | 'TableRowDeleteIcon' | 'TableRowsIcon' | 'PageIcon' | 'UserIcon' | 'UsersIcon' | 'EmailIcon' | 'PhoneIcon' | 'CurrencyIcon' | 'FunctionIcon' | 'TableCellsIcon' | 'DocumentTextIcon' | 'QueueListIcon' | 'TagIcon' | 'SettingsIcon' | 'ShoppingCartIcon' | 'ShoppingBagIcon' | 'BuildingStorefrontIcon' | 'MegaphoneIcon' | 'WrenchScrewdriverIcon' | 'MagnifyingGlassIcon' | 'DocumentChartBarIcon' | 'ClipboardDocumentListIcon' | 'ClipboardDocumentCheckIcon' | 'FolderIcon' | 'ArchiveBoxIcon' | 'InboxIcon' | 'BookOpenIcon' | 'BookmarkIcon' | 'NewspaperIcon' | 'RectangleStackIcon' | 'PencilSquareIcon' | 'UserGroupIcon' | 'UserPlusIcon' | 'IdentificationIcon' | 'FaceSmileIcon' | 'HandThumbUpIcon' | 'HeartIcon' | 'StarIcon' | 'CheckBadgeIcon' | 'TrophyIcon' | 'CrownIcon' | 'ChatBubbleLeftIcon' | 'ChatBubbleLeftRightIcon' | 'EnvelopeIcon' | 'EnvelopeOpenIcon' | 'DevicePhoneMobileIcon' | 'BellIcon' | 'PaperAirplaneIcon' | 'AtSymbolIcon' | 'RssIcon' | 'LifebuoyIcon' | 'CreditCardIcon' | 'BanknotesIcon' | 'CurrencyDollarIcon' | 'CurrencyEuroIcon' | 'ReceiptPercentIcon' | 'WalletIcon' | 'CoinsIcon' | 'GiftIcon' | 'TicketIcon' | 'ScaleIcon' | 'TruckIcon' | 'CubeIcon' | 'CalendarDaysIcon' | 'CalendarDateRangeIcon' | 'ClockIcon' | 'FlagIcon' | 'CheckCircleIcon' | 'ListBulletIcon' | 'FunnelIcon' | 'ChartBarIcon' | 'ChartPieIcon' | 'PresentationChartLineIcon' | 'ArrowTrendingUpIcon' | 'BriefcaseIcon' | 'Cog6ToothIcon' | 'KeyIcon' | 'ShieldCheckIcon' | 'LightBulbIcon' | 'BeakerIcon' | 'BugAntIcon' | 'CpuChipIcon' | 'CodeBracketIcon' | 'CommandLineIcon' | 'ServerIcon' | 'LinkIcon' | 'HomeIcon' | 'HomeModernIcon' | 'BuildingOfficeIcon' | 'BuildingOffice2Icon' | 'BuildingLibraryIcon' | 'MapPinIcon' | 'MapIcon' | 'GlobeAmericasIcon' | 'RocketLaunchIcon' | 'PlaneIcon' | 'CarIcon' | 'SunIcon' | 'MoonIcon' | 'FireIcon' | 'CakeIcon' | 'ScissorsIcon' | 'SwatchIcon' | 'PaintBrushIcon' | 'CoffeeIcon' | 'UtensilsIcon' | 'LeafIcon' | 'DumbbellIcon' | 'HeartPulseIcon' | 'PawPrintIcon' | 'StethoscopeIcon' | 'CameraIcon' | 'PhotoIcon' | 'FilmIcon' | 'VideoCameraIcon' | 'MicrophoneIcon' | 'MusicalNoteIcon' | 'SpeakerWaveIcon' | 'PlayCircleIcon' | 'TvIcon' | 'RadioIcon' | 'PuzzlePieceIcon' | 'GamepadIcon' | 'ModelAutoIcon' | 'ModelOpenAIIcon' | 'ModelAnthropicIcon' | 'ModelClaudeIcon' | 'ModelGoogleIcon' | 'ModelGeminiIcon' | 'ModelXAIIcon' | 'ModelGrokIcon' | 'ModelPerplexityIcon' | 'ModelGroqIcon' | 'ModelAzureIcon' | 'ModelElevenLabsIcon' | 'ModelDeepgramIcon' | 'ModelOpenRouterIcon' | 'ModelDeepSeekIcon' | 'ModelMoonshotIcon' | 'ModelQwenIcon' | 'ModelMetaIcon' | 'ModelZhipuIcon': The name of the icon to use in the UI
          - `icon_url` string
          - `metadata` FieldEnumItemMetadataSchema: Additional metadata for the enum item
            - `link` string, uri: A link associated with the enum item
            - `data` unknown
        - `additional_items` boolean: Indicates whether additional unlisted items are allowed
      - FieldFileBaseSchema
        - `type` 'file', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldFileDisplaySchema: Display options for the file field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
          - `render` 'button' | 'dropzone': The render type of the file field
        - `allowed_types` string[]: Allowed mime types for the file field (e.g. image/*, application/pdf)
        - `visibility` 'PUBLIC' | 'PRIVATE': Whether the file is private or public, private files URLs are signed with a token and can be accessed temporarily
        - `default` union: The default value of the file field: the already-attached file(s), pre-filled and replaceable
          - FileSchema: Detailed information about a file
            - `id` string, required: Unique identifier for the file
            - `file_path` string, required: Path to the file in the storage system
            - `file_filename` string, required: Name of the file
            - `file_size` number, required: Size of the file in bytes
            - `file_mimetype` string, required: MIME type of the file
            - `file_url` string, required: URL to access the file
            - `created_at` string, date-time, nullable, required: Timestamp when the file was created
          - FileSchema[]
            - `id` string, required: Unique identifier for the file
            - `file_path` string, required: Path to the file in the storage system
            - `file_filename` string, required: Name of the file
            - `file_size` number, required: Size of the file in bytes
            - `file_mimetype` string, required: MIME type of the file
            - `file_url` string, required: URL to access the file
            - `created_at` string, date-time, nullable, required: Timestamp when the file was created
      - FieldRecordBaseSchema
        - `type` 'record', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the record field (encoded record id)
          - string
          - string[]
        - `target_table_id` string: The id of the table whose records are referenceable
      - FieldContactBaseSchema
        - `type` 'contact', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the contact field (encoded contact id)
          - string
          - string[]
      - FieldUserBaseSchema
        - `type` 'user', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the user field (encoded user id of an org member)
          - string
          - string[]
        - `source` 'created_by' | 'updated_by': Record actor a sourced user field renders. A sourced field is readonly and stores no values. Table fields on custom tables only; immutable after create.
      - FieldChatBaseSchema
        - `type` 'chat', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the chat field (encoded chat id)
          - string
          - string[]
      - FieldSegmentBaseSchema
        - `type` 'segment', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the segment field (encoded segment id)
          - string
          - string[]
      - FieldAssistantBaseSchema
        - `type` 'assistant', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the assistant field (encoded assistant id)
          - string
          - string[]
      - FieldAgentBaseSchema
        - `type` 'agent', required: The type of the field
        - `name` string: The name of the field
        - `description` string: The description of the field
        - `optional` boolean: Indicates whether the field is optional
        - `array` boolean: Indicates whether the field can contain multiple values
        - `placeholder` string: The placeholder of the field
        - `display` FieldDisplaySchema: Display options for the field
          - `field` 'inline' | 'stacked': Controls how the label and field are arranged (inline or stacked)
          - `container` 'grid' | 'full' | 'center': Controls how the field container behaves in terms of width and positioning
          - `empty` 'show' | 'hide': What to render when an `object` field resolves to no visible sub-fields. Defaults to `hide` when the sub-fields come from a remote sync (`additional_properties.path`) — an empty result has nothing to fill in — and to `show` for every other field. Only honoured on fields marked `optional`: hiding a required field would leave a form that cannot be completed and no visible reason why. Never applies while the sync is loading or errored, nor while `requires` siblings are unfilled — those states keep rendering their own message — and never in the field editor, where the empty container is the drop target.
        - `default` union: The default value of the agent field (encoded agent id)
          - string
          - string[]
    - `readonly` boolean, required
    - `sortable` boolean, required: Whether views can sort their records by this field.
    - `groupable_in` string[], required: View kinds that accept this field as their grouping axis.
    - `kind` 'custom', required
    - `icon` union, required
      - string, emoji: The emoji of a curated icon a user can pick for a table, view, field, or other entity
      - 'TableCellsIcon' | 'DatabaseIcon' | 'DocumentTextIcon' | 'DocumentChartBarIcon' | 'ClipboardDocumentListIcon' | 'ClipboardDocumentCheckIcon' | 'FolderIcon' | 'ArchiveBoxIcon' | 'InboxIcon' | 'BookOpenIcon' | 'BookmarkIcon' | 'NewspaperIcon' | 'RectangleStackIcon' | 'PencilSquareIcon' | 'UserIcon' | 'UsersIcon' | 'UserGroupIcon' | 'UserPlusIcon' | 'IdentificationIcon' | 'FaceSmileIcon' | 'HandThumbUpIcon' | 'HeartIcon' | 'StarIcon' | 'CheckBadgeIcon' | 'TrophyIcon' | 'CrownIcon' | 'ChatBubbleLeftIcon' | 'ChatBubbleLeftRightIcon' | 'EnvelopeIcon' | 'EnvelopeOpenIcon' | 'PhoneIcon' | 'DevicePhoneMobileIcon' | 'MegaphoneIcon' | 'BellIcon' | 'PaperAirplaneIcon' | 'AtSymbolIcon' | 'RssIcon' | 'LifebuoyIcon' | 'ShoppingCartIcon' | 'ShoppingBagIcon' | 'BuildingStorefrontIcon' | 'CreditCardIcon' | 'BanknotesIcon' | 'CurrencyDollarIcon' | 'CurrencyEuroIcon' | 'ReceiptPercentIcon' | 'WalletIcon' | 'CoinsIcon' | 'GiftIcon' | 'TagIcon' | 'TicketIcon' | 'ScaleIcon' | 'TruckIcon' | 'CubeIcon' | 'CalendarIcon' | 'CalendarDaysIcon' | 'CalendarDateRangeIcon' | 'ClockIcon' | 'FlagIcon' | 'CheckCircleIcon' | 'ListBulletIcon' | 'QueueListIcon' | 'FunnelIcon' | 'ChartBarIcon' | 'ChartPieIcon' | 'PresentationChartLineIcon' | 'ArrowTrendingUpIcon' | 'BriefcaseIcon' | 'WrenchScrewdriverIcon' | 'Cog6ToothIcon' | 'KeyIcon' | 'LockClosedIcon' | 'ShieldCheckIcon' | 'BoltIcon' | 'LightBulbIcon' | 'BeakerIcon' | 'BugAntIcon' | 'CpuChipIcon' | 'CodeBracketIcon' | 'CommandLineIcon' | 'ServerIcon' | 'LinkIcon' | 'HomeIcon' | 'HomeModernIcon' | 'BuildingOfficeIcon' | 'BuildingOffice2Icon' | 'BuildingLibraryIcon' | 'MapPinIcon' | 'MapIcon' | 'GlobeAltIcon' | 'GlobeAmericasIcon' | 'RocketLaunchIcon' | 'PlaneIcon' | 'CarIcon' | 'SunIcon' | 'MoonIcon' | 'FireIcon' | 'SparklesIcon' | 'CakeIcon' | 'AcademicCapIcon' | 'ScissorsIcon' | 'SwatchIcon' | 'PaintBrushIcon' | 'CoffeeIcon' | 'UtensilsIcon' | 'LeafIcon' | 'DumbbellIcon' | 'HeartPulseIcon' | 'PawPrintIcon' | 'StethoscopeIcon' | 'CameraIcon' | 'PhotoIcon' | 'FilmIcon' | 'VideoCameraIcon' | 'MicrophoneIcon' | 'MusicalNoteIcon' | 'SpeakerWaveIcon' | 'PlayCircleIcon' | 'TvIcon' | 'RadioIcon' | 'PuzzlePieceIcon' | 'GamepadIcon': The name of a curated icon a user can pick for a table, view, field, or other entity
    - `color` 'red' | 'orange' | 'amber' | 'yellow' | 'lime' | 'green' | 'teal' | 'cyan' | 'sky' | 'blue' | 'indigo' | 'violet' | 'purple' | 'fuchsia' | 'pink' | 'rose' | 'neutral', required: Accent color, by name
    - `unique` boolean, required
    - `on_target_delete` 'restrict' | 'clear' | 'cascade', required: What happens when the referenced target is deleted (ref-typed fields only). `restrict` forbids deleting the target while any cell still points to it. `clear` allows the delete and drops those field values on remaining rows. `cascade` also deletes table rows that reference the target via this field.
    - `archived` boolean, required
    - `created_at` string, date-time, nullable, required
    - `updated_at` string, date-time, nullable, required

---

[API](https://skmtc.dev/useinvent/apis/invent-api.md) · [All operations](https://skmtc.dev/useinvent/apis/invent-api/llms.txt) · [OpenAPI document](https://skmtc.dev/useinvent/apis/invent-api/revisions/98824f3fde82?raw)
