ObjectStackObjectStack

View

View protocol schemas

HTTP Method Enum & HTTP Request Schema

Migrated to shared/http.zod.ts. Re-exported here for backward compatibility.

Source: packages/spec/src/ui/view.zod.ts

TypeScript Usage

import { AddRecordConfig, AppearanceConfig, CalendarConfig, ColumnSummary, FormButtonConfig, FormField, FormSection, FormView, GalleryConfig, GanttConfig, GanttQuickFilter, GroupingConfig, GroupingField, KanbanConfig, ListChartConfig, ListColumn, ListView, NavigationConfig, NavigationMode, ObjectListView, ObjectUserFilters, PaginationConfig, RowColorConfig, RowHeight, SelectionConfig, TimelineConfig, TreeConfig, UserActionsConfig, UserFilterField, UserFilters, View, ViewData, ViewFilterRule, ViewItem, ViewItemName, ViewKind, ViewScope, ViewSharing, ViewTab, VisualizationType } from '@objectstack/spec/ui';
import type { AddRecordConfig, AppearanceConfig, CalendarConfig, ColumnSummary, FormButtonConfig, FormField, FormSection, FormView, GalleryConfig, GanttConfig, GanttQuickFilter, GroupingConfig, GroupingField, KanbanConfig, ListChartConfig, ListColumn, ListView, NavigationConfig, NavigationMode, ObjectListView, ObjectUserFilters, PaginationConfig, RowColorConfig, RowHeight, SelectionConfig, TimelineConfig, TreeConfig, UserActionsConfig, UserFilterField, UserFilters, View, ViewData, ViewFilterRule, ViewItem, ViewItemName, ViewKind, ViewScope, ViewSharing, ViewTab, VisualizationType } from '@objectstack/spec/ui';

// Validate data
const result = AddRecordConfig.parse(data);

AddRecordConfig

Add record entry point configuration

Properties

PropertyTypeRequiredDescription
enabledbooleanShow the add record entry point
positionEnum<'top' | 'bottom' | 'both'>Position of the add record button
modeEnum<'inline' | 'form' | 'modal'>How to add a new record
formViewstringoptionalNamed form view to use when mode is "form" or "modal"

AppearanceConfig

Appearance and visualization configuration

Properties

PropertyTypeRequiredDescription
showDescriptionbooleanShow the view description text
allowedVisualizationsEnum<'grid' | 'kanban' | 'gallery' | 'calendar' | 'timeline' | 'gantt' | 'map' | 'chart' | 'tree'>[]optionalWhitelist of visualization types users can switch between (e.g. ["grid", "gallery", "kanban"])

CalendarConfig

Properties

PropertyTypeRequiredDescription
startDateFieldstring
endDateFieldstringoptional
titleFieldstring
colorFieldstringoptional

ColumnSummary

Aggregation function for column footer summary

Allowed Values

  • none
  • count
  • count_empty
  • count_filled
  • count_unique
  • percent_empty
  • percent_filled
  • sum
  • avg
  • min
  • max

FormButtonConfig

Properties

PropertyTypeRequiredDescription
showbooleanoptionalWhether the button is rendered (renderer default applies when omitted)
labelstringoptionalButton label (i18n-capable; renderer default when omitted)

FormField

Properties

PropertyTypeRequiredDescription
fieldstringField name (snake_case)
typeEnum<'text' | 'textarea' | 'email' | 'url' | 'phone' | 'password' | 'secret' | 'markdown' | 'html' | 'richtext' | 'number' | 'currency' | 'percent' | 'date' | 'datetime' | 'time' | 'boolean' | 'toggle' | 'select' | 'multiselect' | 'radio' | 'checkboxes' | 'lookup' | 'master_detail' | 'tree' | 'user' | 'image' | 'file' | 'avatar' | 'video' | 'audio' | 'formula' | 'summary' | 'autonumber' | 'composite' | 'repeater' | 'record' | 'location' | 'address' | 'code' | 'json' | 'color' | 'rating' | 'slider' | 'signature' | 'qrcode' | 'progress' | 'tags' | 'vector'>optionalField type (auto-infers widget if omitted)
optionsObject[]optionalOptions for select/multiselect/radio/checkboxes fields
referencestringoptionalTarget object name for lookup/master_detail fields
maxLengthnumberoptionalMaximum character length (for text/textarea/email/url/phone)
minLengthnumberoptionalMinimum character length
minnumberoptionalMinimum value (for number/currency/percent/slider)
maxnumberoptionalMaximum value
precisionnumberoptionalTotal digits (for number/currency)
scalenumberoptionalDecimal places
multiplebooleanoptionalAllow multiple values (for select/lookup/file/image)
labelstringoptionalDisplay label override
placeholderstringoptionalPlaceholder text
helpTextstringoptionalHelp/hint text
readonlybooleanoptionalRead-only override
immutablebooleanoptionalEditable on create, locked once the record exists (e.g. machine names).
requiredbooleanoptionalRequired override
hiddenbooleanoptionalHidden override
colSpanintegeroptional[legacy — prefer span] Absolute column span (1-4). Fragile when the column count is derived per surface (mobile 1 / modal 2 / page 3-4): a fixed span only lines up at the width the author imagined. The renderer clamps it to the current column count. Prefer span.
spanEnum<'auto' | 'full'>optionalRelative field width. 'auto' (default — omit it): the renderer sizes the field from its widget type × the current column count (wide widgets like textarea/richtext/json/file/subform take the whole row). 'full': whole row at any column count. Prefer this over the absolute colSpan.
widgetstringoptionalCustom widget/component name (overrides type-based inference)
languagestringoptionalCode editor language (for type=code)
fields[#](./#)[]optionalSub-fields for composite/repeater/record types
keyFieldObjectoptionalKey column config for record-typed fields
dependsOnstringoptionalParent field name for cascading
visibleWhenstring | ObjectoptionalVisibility predicate (CEL) — field shown only when TRUE. Root: record+current_user (runtime forms) or data (metadata forms). e.g. Precord.priority == 'urgent'
visibleOnstring | Objectoptional[DEPRECATED → visibleWhen] Visibility predicate (CEL). Normalized to visibleWhen at parse.
disclosureEnum<'inline' | 'popover'>optionalComposite rendering: inline bordered box (default) or a summary line + gear popover (progressive disclosure).

FormSection

Properties

PropertyTypeRequiredDescription
namestringoptionalStable section identifier for i18n lookup (snake_case)
labelstringoptionalDisplay label (plain string; i18n keys are auto-generated by the framework)
descriptionstringoptionalOptional description rendered under the section header.
collapsiblebooleanoptional
collapsedbooleanoptional
visibleWhenstring | ObjectoptionalVisibility predicate (CEL) — section shown only when TRUE. Root: record+current_user (runtime forms) or data (metadata forms).
visibleOnstring | Objectoptional[DEPRECATED → visibleWhen] Visibility predicate (CEL). Hides the whole section when false. Normalized to visibleWhen at parse.
columnsEnum<'1' | '2' | '3' | '4'> | number | number | number | numberoptional
fieldsstring | [__schema0](./__schema0)[]

FormView

Properties

PropertyTypeRequiredDescription
typeEnum<'simple' | 'tabbed' | 'wizard' | 'split' | 'drawer' | 'modal'>optional
layoutEnum<'vertical' | 'horizontal' | 'inline' | 'grid'>optionalField layout direction
columnsintegeroptionalNumber of columns for the form body
titlestringoptionalForm title
descriptionstringoptionalForm description
defaultTabstringoptionalInitially active tab (tabbed forms)
tabPositionEnum<'top' | 'bottom' | 'left' | 'right'>optionalTab strip position (tabbed forms)
allowSkipbooleanoptionalAllow skipping steps (wizard forms)
showStepIndicatorbooleanoptionalShow the step indicator (wizard forms)
splitDirectionEnum<'horizontal' | 'vertical'>optionalSplit orientation (split forms)
splitSizenumberoptionalPrimary split panel size, % (split forms)
splitResizablebooleanoptionalWhether the split is resizable (split forms)
drawerSideEnum<'top' | 'bottom' | 'left' | 'right'>optionalDrawer side (drawer forms)
drawerWidthstringoptional[DEPRECATED → size buckets] Drawer width, e.g. "480px". A pixel width cannot be chosen without knowing the client viewport — the renderer derives it.
modalSizeEnum<'sm' | 'default' | 'lg' | 'xl' | 'full'>optionalModal size (modal forms)
dataObject | Object | Object | ObjectoptionalData source configuration (defaults to "object" provider)
sectionsObject[]optional
groupsObject[]optional
subformsObject[]optionalInline master-detail child collections
defaultSortObject[]optionalDefault sort order for related list views within this form
sharingObjectoptionalPublic sharing configuration for this form
submitBehaviorObject | Object | Object | ObjectoptionalPost-submit behavior
buttonsObjectoptional[EXPERIMENTAL — NOT ENFORCED, #2998] Form action-button visibility & labels. Renderer wiring pending in ObjectUI (objectui#2545).
defaultsRecord<string, any>optional[EXPERIMENTAL — NOT ENFORCED, #2998] Initial field values for create-mode forms (spec home for ObjectUI initialValues). Renderer wiring pending (objectui#2545).
ariaObjectoptionalARIA accessibility attributes for the form view

GalleryConfig

Gallery/card view configuration

Properties

PropertyTypeRequiredDescription
coverFieldstringoptionalAttachment/image field to display as card cover
coverFitEnum<'cover' | 'contain'>Image fit mode for card cover
cardSizeEnum<'small' | 'medium' | 'large'>Card size in gallery view
titleFieldstringoptionalField to display as card title
visibleFieldsstring[]optionalFields to display on card body

GanttConfig

Properties

PropertyTypeRequiredDescription
startDateFieldstring
endDateFieldstring
titleFieldstring
progressFieldstringoptional
dependenciesFieldstringoptional
colorFieldstringoptionalField that drives the bar color
parentFieldstringoptionalField holding the parent task id (builds the summary → step tree)
typeFieldstringoptionalField whose value maps to task/summary/milestone
baselineStartFieldstringoptionalBaseline (planned) start field
baselineEndFieldstringoptionalBaseline (planned) end field
groupByFieldstringoptionalField to group leaf tasks by (synthesized summary rows)
resourceViewbooleanoptionalRender a per-resource workload histogram instead of the timeline
assigneeFieldstringoptionalResource field to bucket load by (resource view)
effortFieldstringoptionalPer-task load units (resource view; default 1)
capacitynumberoptionalPer-resource capacity ceiling; loads above this flag overload
tooltipFieldsstring | Object[]optionalFields to surface in the hover tooltip, in display order
quickFiltersObject[]optionalMulti-select filter dropdowns rendered above the chart
autoZoomToFilterbooleanoptionalWhen true (default), filtering zooms the range to the filtered tasks

GanttQuickFilter

Properties

PropertyTypeRequiredDescription
fieldstringRecord field / dot-path the dimension filters on
labelstringoptionalTrigger label (falls back to the field label)
optionsstring | Object[]optionalExplicit option override for fixed enums

GroupingConfig

Record grouping configuration

Properties

PropertyTypeRequiredDescription
fieldsObject[]Fields to group by (supports up to 3 levels)

GroupingField

Properties

PropertyTypeRequiredDescription
fieldstringField name to group by
orderEnum<'asc' | 'desc'>Group sort order
collapsedbooleanCollapse groups by default

KanbanConfig

Properties

PropertyTypeRequiredDescription
groupByFieldstringField to group columns by (usually status/select)
summarizeFieldstringoptionalField to sum at top of column (e.g. amount)
columnsstring[]Fields to show on cards

ListChartConfig

List chart view configuration

Properties

PropertyTypeRequiredDescription
chartTypeEnum<'bar' | 'line' | 'pie' | 'area' | 'scatter'>Chart visualisation type
datasetstringDataset name to bind (ADR-0021)
dimensionsstring[]optionalDimension names — X/group/split
valuesstring[]Measure names — Y (at least one)

ListColumn

Properties

PropertyTypeRequiredDescription
fieldstringField name (snake_case)
labelstringoptionalDisplay label override
widthnumberoptionalColumn width in pixels
alignEnum<'left' | 'center' | 'right'>optionalText alignment
hiddenbooleanoptionalHide column by default
sortablebooleanoptionalAllow sorting by this column
resizablebooleanoptionalAllow resizing this column
wrapbooleanoptionalAllow text wrapping
typestringoptionalRenderer type override (e.g., "currency", "date")
pinnedEnum<'left' | 'right'>optionalPin/freeze column to left or right side
summaryEnum<'none' | 'count' | 'count_empty' | 'count_filled' | 'count_unique' | 'percent_empty' | 'percent_filled' | 'sum' | 'avg' | 'min' | 'max'>optionalFooter aggregation function for this column
linkbooleanoptionalFunctions as the primary navigation link (triggers View navigation)
actionstringoptionalRegistered Action ID to execute when clicked

ListView

Properties

PropertyTypeRequiredDescription
namestringoptionalInternal view name (lowercase snake_case)
labelstringoptionalDisplay label (plain string; i18n keys are auto-generated by the framework)
typeEnum<'grid' | 'kanban' | 'gallery' | 'calendar' | 'timeline' | 'gantt' | 'map' | 'chart' | 'tree'>optional
dataObject | Object | Object | ObjectoptionalData source configuration (defaults to "object" provider)
columnsstring[] | Object[]Fields to display as columns
filterObject[]optionalFilter criteria (JSON Rules)
sortstring | Object[]optional
searchableFieldsstring[]optionalFields enabled for search
filterableFieldsstring[]optionalLegacy shorthand for userFilters.fields — bare field names enabled for end-user filtering. Prefer userFilters
userFiltersObjectoptionalEnd-user quick-filter bar: dropdown/toggle fields or tab presets. Omit to let the renderer derive filters from select/boolean fields
resizablebooleanoptionalEnable column resizing
stripedbooleanoptionalStriped row styling
borderedbooleanoptionalShow borders
compactToolbarbooleanoptionalCollapse Group/Color/Density/Hide-fields into a single View settings popover
selectionObjectoptionalRow selection configuration
navigationObjectoptionalConfiguration for item click navigation (page, drawer, modal, etc.)
paginationObjectoptionalPagination configuration
kanbanObjectoptional
calendarObjectoptional
ganttRecord<string, any>optional
galleryObjectoptionalGallery/card view configuration
timelineObjectoptionalTimeline view configuration
chartObjectoptionalList chart view configuration
treeRecord<string, any>optional
descriptionstringoptionalView description for documentation/tooltips
sharingObjectoptionalView sharing and access configuration
rowHeightEnum<'compact' | 'short' | 'medium' | 'tall' | 'extra_tall'>optionalRow height / density setting
groupingObjectoptionalGroup records by one or more fields
rowColorObjectoptionalColor rows based on field value
hiddenFieldsstring[]optionalFields to hide in this specific view
fieldOrderstring[]optionalExplicit field display order for this view
rowActionsstring[]optionalActions available for individual row items
bulkActionsstring[]optionalActions available when multiple rows are selected
bulkActionDefsRecord<string, any>[]optionalRich bulk action definitions (schema-driven, executed via BulkActionDialog)
virtualScrollbooleanoptionalEnable virtual scrolling for large datasets
conditionalFormattingObject[]optionalConditional formatting rules for list rows
inlineEditbooleanoptionalAllow inline editing of records directly in the list view
exportOptionsEnum<'csv' | 'xlsx' | 'pdf' | 'json'>[]optionalAvailable export format options
userActionsObjectoptionalUser action toggles for the view toolbar
appearanceObjectoptionalAppearance and visualization configuration
tabsObject[]optionalTab definitions for multi-tab view interface
addRecordObjectoptionalAdd record entry point configuration
showRecordCountbooleanoptionalShow record count at the bottom of the list
allowPrintingbooleanoptionalAllow users to print the view
emptyStateObjectoptionalEmpty state configuration when no records found
ariaObjectoptionalARIA accessibility attributes for the list view
responsiveObjectoptionalResponsive layout configuration
performanceObjectoptionalPerformance optimization settings

Properties

PropertyTypeRequiredDescription
modeEnum<'page' | 'drawer' | 'modal' | 'split' | 'popover' | 'new_window' | 'none'>
viewstringoptionalName of the form view to use for details (e.g. "summary_view", "edit_form")
preventNavigationbooleanDisable standard navigation entirely
openNewTabbooleanForce open in new tab (applies to page mode)
sizeEnum<'auto' | 'sm' | 'md' | 'lg' | 'xl' | 'full'>[#2578] Overlay size bucket for drawer/modal detail: 'auto' (default — renderer derives from field count + viewport; AI writes nothing) or a coarse override sm/md/lg/xl/full. Prefer this over the pixel width; page mode ignores it.
widthstring | numberoptional[DEPRECATED → size] Pixel/percent width of the drawer/modal (e.g. "600px"). A pixel width cannot be chosen at authoring time without knowing the client viewport — use the size bucket.

Allowed Values

  • page
  • drawer
  • modal
  • split
  • popover
  • new_window
  • none

ObjectListView

Properties

PropertyTypeRequiredDescription
namestringoptionalInternal view name (lowercase snake_case)
labelstringoptionalDisplay label (plain string; i18n keys are auto-generated by the framework)
typeEnum<'grid' | 'kanban' | 'gallery' | 'calendar' | 'timeline' | 'gantt' | 'map' | 'chart' | 'tree'>optional
dataObject | Object | Object | ObjectoptionalData source configuration (defaults to "object" provider)
columnsstring[] | Object[]Fields to display as columns
filterObject[]optionalFilter criteria (JSON Rules)
sortstring | Object[]optional
searchableFieldsstring[]optionalFields enabled for search
filterableFieldsstring[]optionalLegacy shorthand for userFilters.fields — bare field names enabled for end-user filtering. Prefer userFilters
resizablebooleanoptionalEnable column resizing
stripedbooleanoptionalStriped row styling
borderedbooleanoptionalShow borders
compactToolbarbooleanoptionalCollapse Group/Color/Density/Hide-fields into a single View settings popover
selectionObjectoptionalRow selection configuration
navigationObjectoptionalConfiguration for item click navigation (page, drawer, modal, etc.)
paginationObjectoptionalPagination configuration
kanbanObjectoptional
calendarObjectoptional
ganttRecord<string, any>optional
galleryObjectoptionalGallery/card view configuration
timelineObjectoptionalTimeline view configuration
chartObjectoptionalList chart view configuration
treeRecord<string, any>optional
descriptionstringoptionalView description for documentation/tooltips
sharingObjectoptionalView sharing and access configuration
rowHeightEnum<'compact' | 'short' | 'medium' | 'tall' | 'extra_tall'>optionalRow height / density setting
groupingObjectoptionalGroup records by one or more fields
rowColorObjectoptionalColor rows based on field value
hiddenFieldsstring[]optionalFields to hide in this specific view
fieldOrderstring[]optionalExplicit field display order for this view
rowActionsstring[]optionalActions available for individual row items
bulkActionsstring[]optionalActions available when multiple rows are selected
bulkActionDefsRecord<string, any>[]optionalRich bulk action definitions (schema-driven, executed via BulkActionDialog)
virtualScrollbooleanoptionalEnable virtual scrolling for large datasets
conditionalFormattingObject[]optionalConditional formatting rules for list rows
inlineEditbooleanoptionalAllow inline editing of records directly in the list view
exportOptionsEnum<'csv' | 'xlsx' | 'pdf' | 'json'>[]optionalAvailable export format options
userActionsObjectoptionalUser action toggles for the view toolbar
appearanceObjectoptionalAppearance and visualization configuration
tabsObject[]optionalTab definitions for multi-tab view interface
addRecordObjectoptionalAdd record entry point configuration
showRecordCountbooleanoptionalShow record count at the bottom of the list
allowPrintingbooleanoptionalAllow users to print the view
emptyStateObjectoptionalEmpty state configuration when no records found
ariaObjectoptionalARIA accessibility attributes for the list view
responsiveObjectoptionalResponsive layout configuration
performanceObjectoptionalPerformance optimization settings
userFiltersObjectoptional

ObjectUserFilters

Properties

PropertyTypeRequiredDescription
elementEnum<'dropdown' | 'toggle'>Filter control style on object views: "dropdown" (per-field value chips). "toggle" is deprecated. "tabs" is page-only — use listViews for named presets.
fieldsObject[]optionalFields exposed as quick filters (dropdown/toggle elements)

PaginationConfig

Properties

PropertyTypeRequiredDescription
pageSizeintegerNumber of records per page
pageSizeOptionsinteger[]optionalAvailable page size options

RowColorConfig

Row color configuration based on field values

Properties

PropertyTypeRequiredDescription
fieldstringField to derive color from (typically a select/status field)
colorsRecord<string, string>optionalMap of field value to color (hex/token)

RowHeight

Row height / density setting for list view

Allowed Values

  • compact
  • short
  • medium
  • tall
  • extra_tall

SelectionConfig

Properties

PropertyTypeRequiredDescription
typeEnum<'none' | 'single' | 'multiple'>Selection mode

TimelineConfig

Timeline view configuration

Properties

PropertyTypeRequiredDescription
startDateFieldstringField for timeline item start date
endDateFieldstringoptionalField for timeline item end date
titleFieldstringField to display as timeline item title
groupByFieldstringoptionalField to group timeline rows
colorFieldstringoptionalField to determine item color
scaleEnum<'hour' | 'day' | 'week' | 'month' | 'quarter' | 'year'>Default timeline scale

TreeConfig

Properties

PropertyTypeRequiredDescription
parentFieldstringoptionalSingle-parent pointer field (auto-detected from the object schema when omitted)
labelFieldstringoptionalField rendered indented in the first column (defaults to "name")
fieldsstring[]optionalAdditional fields rendered as flat columns alongside the label
defaultExpandedDepthintegeroptionalInitial expansion depth (0 = roots only; omit = expand all)

UserActionsConfig

User action toggles for the view toolbar

Properties

PropertyTypeRequiredDescription
sortbooleanAllow users to sort records
searchbooleanAllow users to search records
filterbooleanAllow users to filter records
rowHeightbooleanAllow users to toggle row height/density
addRecordFormbooleanAdd records through a form instead of inline
editInlinebooleanAllow users to edit records inline — click a cell to edit it with the field's type-aware widget (the same control the form uses). Off by default: the list is read-only unless the author opts in.
buttonsstring[]optionalCustom action button IDs to show in the toolbar

UserFilterField

Quick-filter field configuration

Properties

PropertyTypeRequiredDescription
fieldstringField name on the source object (must exist — checked by reference diagnostics)
labelstringoptionalDisplay label override (defaults to the field label)
typeEnum<'select' | 'multi-select' | 'boolean' | 'date-range' | 'text'>optionalFilter control type. Omit to infer from the field definition
optionsObject[]optionalStatic options. Omit to derive from the field definition (select options / lookup records)
showCountbooleanoptionalShow per-option record counts
defaultValuesstring | number | boolean[]optionalPre-selected values when the view loads

UserFilters

End-user quick-filter configuration (Airtable "User filters" parity)

Properties

PropertyTypeRequiredDescription
elementEnum<'dropdown' | 'tabs' | 'toggle'>Filter control style: "dropdown" (per-field value selectors) or "tabs" (named presets). "toggle" is deprecated.
fieldsObject[]optionalFields exposed as quick filters (dropdown/toggle elements)
tabsObject[]optionalNamed filter presets rendered as tabs (tabs element). Reuses ViewTabSchema
showAllRecordsbooleanoptionalShow an "All records" tab before the presets (tabs element)

View

Properties

PropertyTypeRequiredDescription
listObjectoptional
formObjectoptional
listViewsRecord<string, Object>optionalAdditional named list views (views mode — dropdown userFilters allowed, no tabs; ADR-0047)
formViewsRecord<string, Object>optionalAdditional named form views
protectionObjectoptionalPackage author protection block — lock policy for this view.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact | package | env-forced).
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package | org | env-forced).
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.

ViewData

Union Options

This schema accepts one of the following structures:

Option 1

Properties

PropertyTypeRequiredDescription
providerstring
objectstringTarget object name

Option 2

Properties

PropertyTypeRequiredDescription
providerstring
readObjectoptionalConfiguration for fetching data
writeObjectoptionalConfiguration for submitting data (for forms/editable tables)

Option 3

Properties

PropertyTypeRequiredDescription
providerstring
itemsany[]Static data array

Option 4

Properties

PropertyTypeRequiredDescription
providerstring
schemaIdstringSchema identifier — typically the metadata type name
schemaRecord<string, any>optionalInline JSON Schema (Draft 2020-12). Optional when schemaId is resolvable.


ViewFilterRule

View filter rule

Properties

PropertyTypeRequiredDescription
fieldstringField name to filter on
operatorstringFilter operator (e.g. equals, not_equals, contains, this_quarter)
valuestring | number | boolean | null | string | number[]optionalFilter value

ViewItem

Union Options

This schema accepts one of the following structures:

Option 1

Properties

PropertyTypeRequiredDescription
viewKindstring
configObjectList-family view configuration.
namestringGlobally-unique view id, <object>.<viewKey>.
objectstringBound object name — the foreign key used to aggregate views.
labelstringoptionalDisplay label (supports i18n).
isDefaultbooleanoptionalWhether this is the object's default view in the switcher.
orderintegeroptionalSort order within the object's view switcher / left rail.
scopeEnum<'package' | 'shared' | 'personal'>optionalIdentity layer (defaults to package for source-loaded views).
ownerstringoptionalOwner user id — set when scope is personal.
hiddenbooleanoptionalHidden from the switcher (per-user / per-org declutter).
protectionObjectoptionalPackage author protection block — lock policy for this view.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact | package | env-forced).
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package | org | env-forced).
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.

Option 2

Properties

PropertyTypeRequiredDescription
viewKindstring
configObjectForm view configuration.
namestringGlobally-unique view id, <object>.<viewKey>.
objectstringBound object name — the foreign key used to aggregate views.
labelstringoptionalDisplay label (supports i18n).
isDefaultbooleanoptionalWhether this is the object's default view in the switcher.
orderintegeroptionalSort order within the object's view switcher / left rail.
scopeEnum<'package' | 'shared' | 'personal'>optionalIdentity layer (defaults to package for source-loaded views).
ownerstringoptionalOwner user id — set when scope is personal.
hiddenbooleanoptionalHidden from the switcher (per-user / per-org declutter).
protectionObjectoptionalPackage author protection block — lock policy for this view.
_lockEnum<'none' | 'no-overlay' | 'no-delete' | 'full'>optionalItem-level lock — controls overlay & delete (ADR-0010).
_lockReasonstringoptionalHuman-readable reason shown when a write is refused by _lock.
_lockSourceEnum<'artifact' | 'package' | 'env-forced'>optionalLayer that set _lock (artifact | package | env-forced).
_provenanceEnum<'package' | 'org' | 'env-forced'>optionalOrigin of the item (package | org | env-forced).
_packageIdstringoptionalOwning package machine id.
_packageVersionstringoptionalOwning package version.
_lockDocsUrlstringoptionalOptional documentation link surfaced next to _lockReason.



ViewKind

Whether config is a ListView (list family) or a FormView.

Allowed Values

  • list
  • form

ViewScope

View identity layer: package | shared | personal.

Allowed Values

  • package
  • shared
  • personal

ViewSharing

View sharing and access configuration

Properties

PropertyTypeRequiredDescription
typeEnum<'personal' | 'collaborative'>View ownership type
lockedBystringoptionalUser who locked the view configuration

ViewTab

Tab configuration for multi-tab view interface

Properties

PropertyTypeRequiredDescription
namestringTab identifier (snake_case)
labelstringoptionalDisplay label
iconstringoptionalTab icon name
viewstringoptionalReferenced list view name from listViews
filterObject[]optionalTab-specific filter criteria
orderintegeroptionalTab display order
pinnedbooleanPin tab (cannot be removed by users)
isDefaultbooleanSet as the default active tab
visiblebooleanTab visibility

VisualizationType

Visualization type that users can switch to

Allowed Values

  • grid
  • kanban
  • gallery
  • calendar
  • timeline
  • gantt
  • map
  • chart
  • tree

On this page