---
title: "ModelApplicationProfiles · types"
url: https://developers.dagio.ai/reference/types-model-application-profiles/
---

# ModelApplicationProfiles · types

   
                                         
                                                                                   
                                                  
                  
           
          
   

The following types define named objects and their relationships. Tables include inherited properties. Schema-derived types refer to their validated structures; a TypeScript declaration does not replace the compiler’s semantic checks.

## ModelPresentationRole

Registered presentation role understood by the shared Surface renderer.

```typescript
export type ModelPresentationRole = (typeof MODEL_PRESENTATION_ROLES)[number];
```

```typescript
type ModelPresentationRole = "workmap.view" | "worknode.card" | "workmap.status" | "knowledge.explorer" | "account.dashboard" | "workspace.model-app" | "workspace.explorer" | "document.studio" | "knowledge.entry" | "surface.document" | "surface.canvas" | "surface.comments" | "workmap.editor" | "execution.status" | "flow.selector" | "action.confirmation";
```

## ModelVisualTokens

Closed visual tokens selected by a Model without supplying CSS.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `accent` | `"blue" \| "cyan" \| "green" \| "orange" \| "purple" \| "rose"` | **Required.** Defines accent for this object. Observe the type, variants and bounds in the Options column. |
| `density` | `"compact" \| "comfortable"` | **Required.** Defines density for this object. Observe the type, variants and bounds in the Options column. |
| `emphasis` | `"normal" \| "subtle" \| "strong"` | **Required.** Defines emphasis for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ModelVisualTokens {
  accent: 'blue' | 'cyan' | 'green' | 'orange' | 'purple' | 'rose';
  density: 'compact' | 'comfortable';
  emphasis: 'subtle' | 'normal' | 'strong';
}
```

## ModelAppSection

One bounded section in an Account Home or Workspace application composition.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `role` | `"workmap.view" \| "worknode.card" \| "workmap.status" \| "knowledge.explorer" \| "account.dashboard" \| "workspace.model-app" \| "workspace.explorer" \| "document.studio" \| "knowledge.entry" \| "surface.document" \| "surface.canvas" \| "surface.comments" \| "workmap.editor" \| "execution.status" \| "flow.selector" \| "action.confirmation"` | **Required.** Semantic role recognized by this contract; not an access grant. |
| `projection` | `"summary" \| "editor" \| "detail" \| "list"` | **Required.** Defines projection for this object. Observe the type, variants and bounds in the Options column. |
| `limit` | `number` | **Required.** Defines limit for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ModelAppSection {
  key: string;
  role: ModelPresentationRole;
  projection: 'summary' | 'list' | 'detail' | 'editor';
  limit: number;
}
```

## ModelAppProfile

Declarative composition resolved by the shared Model App renderer.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ModelAppProfile@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `workspaceRole` | `"account-home" \| "knowledge-workspace" \| "work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `presentationRole` | `"knowledge.explorer" \| "account.dashboard" \| "workspace.model-app"` | **Required.** Defines presentation Role for this object. Observe the type, variants and bounds in the Options column. |
| `sections` | `readonly ModelAppSection[]` | **Required.** Declared sections in reading or rendering order. |
| `viewKeys` | `readonly string[]` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `flowBlueprintKeys` | `readonly string[]` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `taskActionKeys` | `readonly string[]` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `searchProjectionKeys` | `readonly string[]` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `commentProfileKey` | `string \| undefined` | Optional. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `documentProfileKey` | `string \| undefined` | Optional. Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `tokens` | `ModelVisualTokens` | **Required.** Defines tokens for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ModelAppProfile {
  contract: 'ModelAppProfile@1';
  key: string;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  presentationRole: 'account.dashboard' | 'knowledge.explorer' | 'workspace.model-app';
  sections: readonly ModelAppSection[];
  viewKeys: readonly string[];
  flowBlueprintKeys: readonly string[];
  taskActionKeys: readonly string[];
  searchProjectionKeys: readonly string[];
  commentProfileKey?: string;
  documentProfileKey?: string;
  tokens: ModelVisualTokens;
}
```

## FlowWorkNodeDefinition

One WorkNode in a declarative, acyclic flow blueprint.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `surfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `title` | `string` | **Required.** Title of the object or section in the interface. |
| `dependsOn` | `readonly string[]` | **Required.** Prerequisite step keys; references must exist and must not create cycles. |
| `requiredInputs` | `readonly string[]` | **Required.** Exact Field keys read from this WorkNode Surface definition. |
| `resultSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `completionCriteria` | `readonly string[]` | **Required.** Conditions establishing that work is complete. |
| `initialFields` | `Readonly<Record<string, string \| number \| boolean \| readonly (string \| number \| boolean)[]>>` | **Required.** Defines initial Fields for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface FlowWorkNodeDefinition {
  key: string;
  surfaceDefinitionPath: string;
  title: string;
  dependsOn: readonly string[];
  /** Exact Field keys read from this WorkNode Surface definition. */
  requiredInputs: readonly string[];
  resultSurfaceDefinitionPath: string;
  completionCriteria: readonly string[];
  initialFields: Readonly<
    Record<string, boolean | number | string | readonly (boolean | number | string)[]>
  >;
}
```

## FlowHierarchyNode

Explicit hierarchy nodes distinguish structural containers from executable WorkNodes.

```typescript
export type FlowHierarchyNode =
  | (FlowWorkNodeDefinition & { kind: 'worknode'; parentWorkNodeKey: string | null })
  | (Omit<FlowWorkNodeDefinition, 'resultSurfaceDefinitionPath'> & {
      kind: 'container';
      parentWorkNodeKey: string | null;
      resultSurfaceDefinitionPath: null;
    });
```

```typescript
type FlowHierarchyNode = (FlowWorkNodeDefinition & { kind: "worknode"; parentWorkNodeKey: string | null; }) | (Omit<FlowWorkNodeDefinition, "resultSurfaceDefinitionPath"> & { kind: "container"; parentWorkNodeKey: string | null; resultSurfaceDefinitionPath: null; });
```

## FlowBlueprint

One current declaration preserves explicit Work hierarchy and optional composed execution.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"FlowBlueprint@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `workspaceRole` | `"work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `title` | `string` | **Required.** Title of the object or section in the interface. |
| `workNodes` | `readonly FlowHierarchyNode[]` | **Required.** Blueprint work units with inputs, dependencies and results. |
| `composition` | `{ contract: "FlowComposition@1"; rootWorkNodeKey: string; stateSurfaceDefinitionPath: string; subflowLinkTypePath: string \| null; entryStepKey: string; inputs: { key: string; type: "number" \| "boolean" \| "text" \| "surface-reference" \| "result-reference"; provenance: "caller" \| "canonical" \| "derived"; minimum: number; maximum: number; }[]; contexts: { definitionPath: string; source: { kind: "input"; key: string; } \| { kind: "step"; stepKey: string; } \| { kind: "collection-item"; stepKey: string; }; }[]; outputs: { key: string; type: "number" \| "boolean" \| "text" \| "surface-reference" \| "result-reference"; provenance: "caller" \| "canonical" \| "derived"; minimum: number; maximum: number; source: { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }; reduction: "first" \| "ordered-list" \| "distinct-list"; }[]; steps: ({ key: string; kind: "task"; workNodeKey: string; actionKey: string; inputs: Record<string, { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }>; outputs: { key: string; type: "number" \| "boolean" \| "text" \| "surface-reference" \| "result-reference"; provenance: "caller" \| "canonical" \| "derived"; minimum: number; maximum: number; result: "outputs" \| "reference" \| "summary" \| "decisions" \| "nextSteps" \| "blockers"; }[]; reservedCostUnits: number; maximumAttempts: number; } \| { key: string; kind: "sequence"; steps: string[]; } \| { key: string; kind: "choice"; mode: "exclusive" \| "multiple"; branches: { key: string; stepKey: string; ruleKey: string; }[]; minimum: number; maximum: number; selection: "all-eligible" \| "explicit"; confirmation: "required" \| "not-required"; freshness: "captured" \| "require-current"; join: { mode: "all"; remaining: "wait"; } \| { mode: "quorum"; successes: number; remaining: "wait" \| "request-cancel"; }; } \| { key: string; kind: "parallel"; branches: { key: string; stepKey: string; }[]; maximumConcurrency: number; join: { mode: "all"; remaining: "wait"; } \| { mode: "quorum"; successes: number; remaining: "wait" \| "request-cancel"; }; } \| { key: string; kind: "subflow"; blueprintKey: string; inputs: Record<string, { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }>; } \| { key: string; kind: "collection"; queryKey: string; parameters: Record<string, { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }>; stepKey: string; maximumItems: number; maximumPages: number; maximumOutputBytes: number; maximumConcurrency: number; freshness: "captured" \| "require-current"; join: { mode: "all"; remaining: "wait"; } \| { mode: "quorum"; successes: number; remaining: "wait" \| "request-cancel"; }; } \| { key: string; kind: "iterate"; stepKey: string; stopRuleKey: string; maximumIterations: number; inputs: Record<string, { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }>; } \| { key: string; kind: "wait"; inputs: ({ key: string; minimum: number; maximum: number; type: "number" \| "boolean" \| "text"; provenance: "caller"; } \| { key: string; minimum: number; maximum: number; type: "surface-reference" \| "result-reference"; provenance: "canonical"; selector: { contract: "SurfaceFlowReferenceSelector@1"; queryKey: string; parameters: Record<string, { kind: "input"; key: string; } \| { kind: "input-node-id"; key: string; } \| { kind: "field"; definitionPath: string; fieldKey: string; } \| { kind: "literal"; value: string \| number \| boolean \| null; } \| { kind: "collection-item"; } \| { kind: "collection-node-id"; } \| { kind: "iteration-number"; } \| { kind: "step-output"; stepKey: string; outputKey: string; }>; }; })[]; arrival: "active-only"; ordering: "first-committed"; eventKey: string; recipient: "initiator"; timeoutMilliseconds: number; onExpiration: "fail" \| "cancel"; } \| { key: string; kind: "delay"; resume: { kind: "duration"; milliseconds: number; } \| { kind: "instant"; at: number; }; })[]; budgets: { maximumDepth: number; maximumOccurrences: number; maximumConcurrency: number; maximumIterations: number; maximumDurationMilliseconds: number; maximumCostUnits: number; maximumStateBytes: number; }; } \| null` | **Required.** Non-composed dependencies are functional declarations, not an older technical format. |

```typescript
export interface FlowBlueprint {
  contract: 'FlowBlueprint@1';
  key: string;
  workspaceRole: 'work-workspace';
  title: string;
  workNodes: readonly FlowHierarchyNode[];
  /** Non-composed dependencies are functional declarations, not an older technical format. */
  composition: FlowComposition | null;
}
```

## TaskActionDefinition

Declarative Task launch contract for one compatible WorkNode definition.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"TaskActionDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `label` | `string` | **Required.** Human-readable label displayed in the interface. |
| `parentSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `taskSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `instructionSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `requiredInputs` | `readonly string[]` | **Required.** Exact Field keys read from the parent Surface definition. |
| `resultSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `repeatability` | `"once" \| "repeatable"` | **Required.** Defines repeatability for this object. Observe the type, variants and bounds in the Options column. |
| `idempotency` | `"per-parent" \| "per-input-set"` | **Required.** Policy identifying the same intent to prevent repeated effects. |
| `containsLinkTypePath` | `string \| undefined` | Optional. Declared relation type with sources, targets and direction compatible with this traversal. |
| `taskStateFieldKey` | `string \| undefined` | Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use. |
| `activeTaskStates` | `readonly string[] \| undefined` | Optional. Defines active Task States for this object. Observe the type, variants and bounds in the Options column. |
| `assigneeFieldKey` | `string \| undefined` | Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use. |
| `dependencyLinkTypePath` | `string \| undefined` | Optional. Declared relation type with sources, targets and direction compatible with this traversal. |
| `dependencyDirection` | `"incoming" \| "outgoing" \| undefined` | Optional. Defines dependency Direction for this object. Observe the type, variants and bounds in the Options column. |
| `dependencyStateFieldKey` | `string \| undefined` | Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use. |
| `dependencyCompleteStates` | `readonly string[] \| undefined` | Optional. Defines dependency Complete States for this object. Observe the type, variants and bounds in the Options column. |
| `taskInputHashFieldKey` | `string \| undefined` | Optional. Key of a declared Field on the relevant type; its value type must be compatible with this use. |

```typescript
export interface TaskActionDefinition {
  contract: 'TaskActionDefinition@1';
  key: string;
  label: string;
  parentSurfaceDefinitionPath: string;
  taskSurfaceDefinitionPath: string;
  instructionSurfaceDefinitionPath: string;
  /** Exact Field keys read from the parent Surface definition. */
  requiredInputs: readonly string[];
  resultSurfaceDefinitionPath: string;
  repeatability: 'once' | 'repeatable';
  idempotency: 'per-parent' | 'per-input-set';
  containsLinkTypePath?: string;
  taskStateFieldKey?: string;
  activeTaskStates?: readonly string[];
  assigneeFieldKey?: string;
  dependencyLinkTypePath?: string;
  dependencyDirection?: 'incoming' | 'outgoing';
  dependencyStateFieldKey?: string;
  dependencyCompleteStates?: readonly string[];
  taskInputHashFieldKey?: string;
}
```

## ModelViewKind

Registered rich view kinds rendered by the shared Surface UI engine.

```typescript
export type ModelViewKind =
  'cards' | 'kanban' | 'table' | 'gantt' | 'timeline' | 'calendar' | 'graph' | 'portfolio';
```

```typescript
type ModelViewKind = "calendar" | "cards" | "gantt" | "graph" | "kanban" | "table" | "timeline" | "portfolio";
```

## ViewFieldMapping

One semantic field mapping consumed by a registered rich view.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `semantic` | `string` | **Required.** Defines semantic for this object. Observe the type, variants and bounds in the Options column. |
| `fieldKey` | `string` | **Required.** Key of a Field declared on the referenced Surface definition. |

```typescript
export interface ViewFieldMapping {
  semantic: string;
  fieldKey: string;
}
```

## ViewDefinition

Declarative registered view over canonical Surfaces and Links.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ViewDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `kind` | `ModelViewKind` | **Required.** Selects the variant and the properties admitted in this branch. |
| `workspaceRole` | `"account-home" \| "knowledge-workspace" \| "work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `nodeSurfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `fieldMappings` | `readonly ViewFieldMapping[]` | **Required.** Defines field Mappings for this object. Observe the type, variants and bounds in the Options column. |
| `linkTypePaths` | `readonly string[]` | **Required.** Defines link Type Paths for this object. Observe the type, variants and bounds in the Options column. |
| `schedule` | `{ durationUnit: "millisecond" \| "hour" \| "day"; progressScale: "ratio" \| "percent"; dependencies: { linkTypePath: string; predecessor: "source" \| "target"; }[]; } \| undefined` | Optional. Defines schedule for this object. Observe the type, variants and bounds in the Options column. |
| `presentationRole` | `"workmap.view" \| "worknode.card" \| "workmap.status" \| "knowledge.explorer" \| "account.dashboard" \| "workspace.model-app" \| "workspace.explorer" \| "document.studio" \| "knowledge.entry" \| "surface.document" \| "surface.canvas" \| "surface.comments" \| "workmap.editor" \| "execution.status" \| "flow.selector" \| "action.confirmation"` | **Required.** Defines presentation Role for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ViewDefinition {
  contract: 'ViewDefinition@1';
  key: string;
  kind: ModelViewKind;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  nodeSurfaceDefinitionPaths: readonly string[];
  fieldMappings: readonly ViewFieldMapping[];
  linkTypePaths: readonly string[];
  schedule?: ModelGanttSchedule;
  presentationRole: ModelPresentationRole;
}
```

## SearchFieldDefinition

One closed searchable Field declaration and its permitted query operations.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `fieldKey` | `string` | **Required.** Key of a Field declared on the referenced Surface definition. |
| `operators` | `readonly ("equals" \| "contains" \| "before" \| "after" \| "less-than" \| "greater-than")[]` | **Required.** Defines operators for this object. Observe the type, variants and bounds in the Options column. |
| `filterable` | `boolean` | **Required.** Permits filtering this property within the declared scope. |
| `sortable` | `boolean` | **Required.** Permits sorting this column when supported by the Query. |
| `facetable` | `boolean` | **Required.** Defines facetable for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface SearchFieldDefinition {
  fieldKey: string;
  operators: readonly ('equals' | 'contains' | 'before' | 'after' | 'less-than' | 'greater-than')[];
  filterable: boolean;
  sortable: boolean;
  facetable: boolean;
}
```

## SearchProjectionDefinition

Current-state search projection compiled into reconstructible indexes.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"SearchProjectionDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `workspaceRole` | `"account-home" \| "knowledge-workspace" \| "work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `surfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `textTargets` | `readonly ("title" \| "content" \| "description")[]` | **Required.** Defines text Targets for this object. Observe the type, variants and bounds in the Options column. |
| `fields` | `readonly SearchFieldDefinition[]` | **Required.** Typed value definitions or selections within the enclosing context. |
| `defaultSort` | `readonly { target: string; direction: "ascending" \| "descending"; }[]` | **Required.** Defines default Sort for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface SearchProjectionDefinition {
  contract: 'SearchProjectionDefinition@1';
  key: string;
  workspaceRole: 'account-home' | 'knowledge-workspace' | 'work-workspace';
  surfaceDefinitionPaths: readonly string[];
  textTargets: readonly ('title' | 'description' | 'content')[];
  fields: readonly SearchFieldDefinition[];
  defaultSort: readonly {
    target: string;
    direction: 'ascending' | 'descending';
  }[];
}
```

## CommentProfile

Comment graph declaration referencing Model-owned Surface and Link definitions.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"CommentProfile@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `threadSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `commentSurfaceDefinitionPath` | `string` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `targetLinkTypePath` | `string` | **Required.** Declared relation type with sources, targets and direction compatible with this traversal. |
| `replyLinkTypePath` | `string` | **Required.** Declared relation type with sources, targets and direction compatible with this traversal. |
| `mentionLinkTypePath` | `string` | **Required.** Declared relation type with sources, targets and direction compatible with this traversal. |
| `containsLinkTypePath` | `string \| undefined` | Optional. Declared relation type with sources, targets and direction compatible with this traversal. |
| `states` | `readonly ("open" \| "resolved")[]` | **Required.** Lifecycle-recognized states referenced by stable keys. |
| `targets` | `readonly ("selection" \| "anchor" \| "surface")[]` | **Required.** Defines targets for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface CommentProfile {
  contract: 'CommentProfile@1';
  key: string;
  threadSurfaceDefinitionPath: string;
  commentSurfaceDefinitionPath: string;
  targetLinkTypePath: string;
  replyLinkTypePath: string;
  mentionLinkTypePath: string;
  containsLinkTypePath?: string;
  states: readonly ('open' | 'resolved')[];
  targets: readonly ('surface' | 'anchor' | 'selection')[];
}
```

## WorkspaceProjectionTextSource

One declared text source folded into a reconstructible Workspace Portfolio projection.

```typescript
export type WorkspaceProjectionTextSource =
  | { kind: 'workspace'; target: 'title' | 'description' }
  | {
      kind: 'surface';
      definitionPath: string;
      target: 'title' | 'description' | 'content';
    };
```

```typescript
type WorkspaceProjectionTextSource = { kind: "workspace"; target: "title" | "description"; } | { kind: "surface"; definitionPath: string; target: "title" | "description" | "content"; };
```

## WorkspaceProjectionDimension

One typed dimension materialized from canonical Workspace or Surface state.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `type` | `"number" \| "boolean" \| "text" \| "date" \| "datetime"` | **Required.** Defines type for this object. Observe the type, variants and bounds in the Options column. |
| `source` | `{ kind: "workspace"; field: "createdAt" \| "lifecycleState" \| "modelId" \| "modelRevisionId" \| "title" \| "updatedAt"; } \| { kind: "surface-field"; definitionPath: string; fieldKey: string; aggregate: "count" \| "exists" \| "first" \| "maximum" \| "minimum"; } \| { kind: "link-exists"; linkTypePath: string; direction: "incoming" \| "outgoing"; }` | **Required.** Defines source for this object. Observe the type, variants and bounds in the Options column. |
| `operators` | `readonly ("in" \| "eq" \| "lt" \| "lte" \| "gt" \| "gte" \| "exists" \| "between")[]` | **Required.** Defines operators for this object. Observe the type, variants and bounds in the Options column. |
| `filterable` | `boolean` | **Required.** Permits filtering this property within the declared scope. |
| `sortable` | `boolean` | **Required.** Permits sorting this column when supported by the Query. |
| `facetable` | `boolean` | **Required.** Defines facetable for this object. Observe the type, variants and bounds in the Options column. |
| `groupable` | `boolean` | **Required.** Defines groupable for this object. Observe the type, variants and bounds in the Options column. |
| `maximumFacetValues` | `number` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |

```typescript
export interface WorkspaceProjectionDimension {
  key: string;
  type: 'boolean' | 'date' | 'datetime' | 'number' | 'text';
  source:
    | {
        kind: 'workspace';
        field:
          'createdAt' | 'lifecycleState' | 'modelId' | 'modelRevisionId' | 'title' | 'updatedAt';
      }
    | {
        kind: 'surface-field';
        definitionPath: string;
        fieldKey: string;
        aggregate: 'count' | 'exists' | 'first' | 'maximum' | 'minimum';
      }
    | {
        kind: 'link-exists';
        linkTypePath: string;
        direction: 'incoming' | 'outgoing';
      };
  operators: readonly ('eq' | 'in' | 'exists' | 'lt' | 'lte' | 'gt' | 'gte' | 'between')[];
  filterable: boolean;
  sortable: boolean;
  facetable: boolean;
  groupable: boolean;
  maximumFacetValues: number;
}
```

## WorkspaceProjectionDefinition

Model-owned Workspace rollup projection used by Account Home Portfolio queries.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"WorkspaceProjectionDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `workspaceRole` | `"knowledge-workspace" \| "work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `textSources` | `readonly WorkspaceProjectionTextSource[]` | **Required.** Defines text Sources for this object. Observe the type, variants and bounds in the Options column. |
| `dimensions` | `readonly WorkspaceProjectionDimension[]` | **Required.** Defines dimensions for this object. Observe the type, variants and bounds in the Options column. |
| `defaultSort` | `readonly { dimension: string; direction: "ascending" \| "descending"; }[]` | **Required.** Defines default Sort for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface WorkspaceProjectionDefinition {
  contract: 'WorkspaceProjectionDefinition@1';
  key: string;
  workspaceRole: 'knowledge-workspace' | 'work-workspace';
  textSources: readonly WorkspaceProjectionTextSource[];
  dimensions: readonly WorkspaceProjectionDimension[];
  defaultSort: readonly { dimension: string; direction: 'ascending' | 'descending' }[];
}
```

## WorkspaceProjectionDimensionV2

Decimal dimensions retain authored format/unit and only source-defined first/minimum/maximum reductions.

```typescript
export type WorkspaceProjectionDimensionV2 =
  | (WorkspaceProjectionDimensionV2Base & Pick<WorkspaceProjectionDimension, 'type' | 'source'>)
  | (WorkspaceProjectionDimensionV2Base & {
      readonly type: 'decimal';
      readonly numeric: {
        readonly precision: number;
        readonly scale: number;
        readonly unit: ManagedExactDataUnit;
      };
      readonly source: Omit<
        Extract<WorkspaceProjectionDimension['source'], { kind: 'surface-field' }>,
        'aggregate'
      > & {
        readonly aggregate: 'first' | 'maximum' | 'minimum';
      };
    });
```

```typescript
type WorkspaceProjectionDimensionV2 = (WorkspaceProjectionDimensionV2Base & Pick<WorkspaceProjectionDimension, "type" | "source">) | (WorkspaceProjectionDimensionV2Base & { readonly type: "decimal"; readonly numeric: { readonly precision: number; readonly scale: number; readonly unit: ManagedExactDataUnit; }; readonly source: Omit<Extract<WorkspaceProjectionDimension["source"], { kind: "surface-field"; }>, "aggregate"> & { readonly aggregate: "first" | "maximum" | "minimum"; }; });
```

## WorkspaceProjectionDefinitionV2

The new projection family keeps its original operators, capabilities and exact source coordinates.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"WorkspaceProjectionDefinition@2"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `dimensions` | `readonly WorkspaceProjectionDimensionV2[]` | **Required.** Defines dimensions for this object. Observe the type, variants and bounds in the Options column. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `defaultSort` | `readonly { dimension: string; direction: "ascending" \| "descending"; }[]` | **Required.** Defines default Sort for this object. Observe the type, variants and bounds in the Options column. |
| `workspaceRole` | `"knowledge-workspace" \| "work-workspace"` | **Required.** Defines workspace Role for this object. Observe the type, variants and bounds in the Options column. |
| `textSources` | `readonly WorkspaceProjectionTextSource[]` | **Required.** Defines text Sources for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface WorkspaceProjectionDefinitionV2 extends Omit<
  WorkspaceProjectionDefinition,
  'contract' | 'dimensions'
> {
  readonly contract: 'WorkspaceProjectionDefinition@2';
  readonly dimensions: readonly WorkspaceProjectionDimensionV2[];
}
```

## SemanticCommandOperation

Closed canonical operation selected by one Model semantic command.

```typescript
export type SemanticCommandOperation =
  | { kind: 'surface.create'; surfaceDefinitionPath: string; parent: 'surface' | 'workspace' }
  | { kind: 'surface.move'; surfaceDefinitionPath: string }
  | { kind: 'link.create'; linkTypePath: string }
  | { kind: 'task.start'; taskActionKey: string };
```

```typescript
type SemanticCommandOperation = { kind: "surface.create"; surfaceDefinitionPath: string; parent: "surface" | "workspace"; } | { kind: "surface.move"; surfaceDefinitionPath: string; } | { kind: "link.create"; linkTypePath: string; } | { kind: "task.start"; taskActionKey: string; };
```

## SemanticCommandDefinition

Host-neutral command declaration compiled into canonical Change Set primitives.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"SemanticCommandDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `label` | `string` | **Required.** Human-readable label displayed in the interface. |
| `entityLabel` | `string` | **Required.** Defines entity Label for this object. Observe the type, variants and bounds in the Options column. |
| `icon` | `"record" \| "link" \| "add" \| "move" \| "play"` | **Required.** Icon from the catalog admitted for this presentation variant. |
| `presentationRole` | `"workmap.view" \| "worknode.card" \| "workmap.status" \| "knowledge.explorer" \| "account.dashboard" \| "workspace.model-app" \| "workspace.explorer" \| "document.studio" \| "knowledge.entry" \| "surface.document" \| "surface.canvas" \| "surface.comments" \| "workmap.editor" \| "execution.status" \| "flow.selector" \| "action.confirmation"` | **Required.** Defines presentation Role for this object. Observe the type, variants and bounds in the Options column. |
| `contexts` | `readonly ("account-home" \| "worknode" \| "surface" \| "workspace")[]` | **Required.** Defines contexts for this object. Observe the type, variants and bounds in the Options column. |
| `requiredCapabilities` | `readonly string[]` | **Required.** Defines required Capabilities for this object. Observe the type, variants and bounds in the Options column. |
| `confirmation` | `"never" \| "required"` | **Required.** Requires or configures intent review before execution; does not replace permissions. |
| `operation` | `SemanticCommandOperation` | **Required.** Canonical operation executed after context, parameter and permission validation. |

```typescript
export interface SemanticCommandDefinition {
  contract: 'SemanticCommandDefinition@1';
  key: string;
  label: string;
  entityLabel: string;
  icon: 'add' | 'link' | 'move' | 'play' | 'record';
  presentationRole: ModelPresentationRole;
  contexts: readonly ('account-home' | 'surface' | 'worknode' | 'workspace')[];
  requiredCapabilities: readonly string[];
  confirmation: 'never' | 'required';
  operation: SemanticCommandOperation;
}
```

## DocumentProfileV1

Document assembly and export policy consumed by the registered Document Studio.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"DocumentProfile@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `sourceSurfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `template` | `"article" \| "report" \| "manuscript" \| "project-brief"` | **Required.** Defines template for this object. Observe the type, variants and bounds in the Options column. |
| `sectionPolicy` | `"ordered" \| "grouped"` | **Required.** Defines section Policy for this object. Observe the type, variants and bounds in the Options column. |
| `exportFormats` | `readonly ("markdown" \| "docx" \| "pdf")[]` | **Required.** Defines export Formats for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface DocumentProfileV1 {
  contract: 'DocumentProfile@1';
  key: string;
  sourceSurfaceDefinitionPaths: readonly string[];
  template: 'article' | 'report' | 'manuscript' | 'project-brief';
  sectionPolicy: 'ordered' | 'grouped';
  exportFormats: readonly ('docx' | 'markdown' | 'pdf')[];
}
```

## DocumentCompositionSection

One exact named-Query section with optional native historical proof coordinates.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `parentSectionKey` | `string \| null` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `queryKey` | `string` | **Required.** Reference to a declared Query; scope and authorization remain enforced by the data engine. |
| `sourceParameterKey` | `string` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `headingLevel` | `number` | **Required.** Defines heading Level for this object. Observe the type, variants and bounds in the Options column. |
| `orderBy` | `readonly { fieldKey: string; direction: "ascending" \| "descending"; }[]` | **Required.** Declared sort order using keys within the authorized scope. |
| `historicalTraversal` | `{ pathIndex: number; stepIndex: number; } \| null` | **Required.** Defines historical Traversal for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface DocumentCompositionSection {
  key: string;
  parentSectionKey: string | null;
  queryKey: string;
  sourceParameterKey: string;
  headingLevel: number;
  orderBy: readonly { fieldKey: string; direction: 'ascending' | 'descending' }[];
  historicalTraversal: { pathIndex: number; stepIndex: number } | null;
}
```

## DocumentProfileV2

V6-only composition; published mono-Surface profiles remain byte-stable.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"DocumentProfile@2"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `composition` | `{ contract: "SurfaceDocumentComposition@1"; maximumSources: number; maximumEntries: number; maximumOutputBytes: number; historicalCapturePolicyKey: string \| null; sections: readonly DocumentCompositionSection[]; }` | **Required.** Declarative organization of components, sources or Spaces for the selected variant. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `sourceSurfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `template` | `"article" \| "report" \| "manuscript" \| "project-brief"` | **Required.** Defines template for this object. Observe the type, variants and bounds in the Options column. |
| `sectionPolicy` | `"ordered" \| "grouped"` | **Required.** Defines section Policy for this object. Observe the type, variants and bounds in the Options column. |
| `exportFormats` | `readonly ("markdown" \| "docx" \| "pdf")[]` | **Required.** Defines export Formats for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface DocumentProfileV2 extends Omit<DocumentProfileV1, 'contract'> {
  contract: 'DocumentProfile@2';
  composition: {
    contract: 'SurfaceDocumentComposition@1';
    maximumSources: number;
    maximumEntries: number;
    maximumOutputBytes: number;
    historicalCapturePolicyKey: string | null;
    sections: readonly DocumentCompositionSection[];
  };
}
```

## DocumentProfileV3

Collection format policy has its own origin and never invents a Surface subject.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"DocumentProfile@3"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `source` | `{ kind: "collection"; destinationKey: string; queryKey: string; viewKey: string; } \| { kind: "home-section"; sectionKey: string; queryKey: string; viewKey: string; } \| { kind: "record-query"; recordProfileKey: string; queryBindingKey: string; viewKey: string; } \| { kind: "work-query"; experienceKey: string; sectionKey: string; bindingKey: string; viewKey: string; }` | **Required.** Defines source for this object. Observe the type, variants and bounds in the Options column. |
| `exportFormats` | `readonly ("markdown" \| "pdf")[]` | **Required.** Defines export Formats for this object. Observe the type, variants and bounds in the Options column. |
| `budget` | `{ maximumRows: number; maximumPages: number; maximumOutputBytes: number; }` | **Required.** Defines budget for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface DocumentProfileV3 {
  contract: 'DocumentProfile@3';
  key: string;
  source:
    | { kind: 'collection'; destinationKey: string; queryKey: string; viewKey: string }
    | { kind: 'home-section'; sectionKey: string; queryKey: string; viewKey: string }
    | { kind: 'record-query'; recordProfileKey: string; queryBindingKey: string; viewKey: string }
    | {
        kind: 'work-query';
        experienceKey: string;
        sectionKey: string;
        bindingKey: string;
        viewKey: string;
      };
  exportFormats: readonly ('markdown' | 'pdf')[];
  budget: { maximumRows: number; maximumPages: number; maximumOutputBytes: number };
}
```

## DocumentProfile

Closed authoring versions of document format and composition policy.

```typescript
export type DocumentProfile = DocumentProfileV1 | DocumentProfileV2 | DocumentProfileV3;
```

## SurfaceViewKind

Closed Surface-level view kinds rendered only by application-owned renderers.

```typescript
export type SurfaceViewKind =
  | 'cockpit'
  | 'editor'
  | 'structure'
  | 'flow-context'
  | 'board'
  | 'review'
  | 'history-compare'
  | 'relations'
  | 'evidence'
  | 'tasks-runs'
  | 'preview-export'
  | 'activity'
  | 'work-children';
```

```typescript
type SurfaceViewKind = "relations" | "editor" | "review" | "activity" | "structure" | "cockpit" | "flow-context" | "board" | "history-compare" | "evidence" | "tasks-runs" | "preview-export" | "work-children";
```

## SurfaceViewSourceDefinition

One bounded source set consumed by a registered Surface view renderer.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `surfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `linkTypePaths` | `readonly string[]` | **Required.** Defines link Type Paths for this object. Observe the type, variants and bounds in the Options column. |
| `maximumItems` | `number` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `maximumDepth` | `number` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |

```typescript
export interface SurfaceViewSourceDefinition {
  surfaceDefinitionPaths: readonly string[];
  linkTypePaths: readonly string[];
  maximumItems: number;
  maximumDepth: number;
}
```

## SurfaceViewDefinition

Child collections are named by the Model and resolved by the existing parent-scoped query.

```typescript
export type SurfaceViewDefinition =
  | LegacySurfaceViewDefinition
  | (Omit<LegacySurfaceViewDefinition, 'contract' | 'kind'> & {
      contract: 'SurfaceViewDefinition@2';
      kind: 'work-children';
      childViews: readonly { key: string; label: string }[];
      defaultChildViewKey: string;
    })
  | (Omit<LegacySurfaceViewDefinition, 'contract' | 'kind' | 'commandKeys'> & {
      contract: 'SurfaceViewDefinition@3';
      kind: 'evidence';
      commandKeys: readonly [];
      evidenceSources: {
        contract: 'SurfaceConsolidationSources@1';
        profileKeys: readonly string[];
      };
    });
```

```typescript
type SurfaceViewDefinition = LegacySurfaceViewDefinition | (Omit<LegacySurfaceViewDefinition, "contract" | "kind"> & { contract: "SurfaceViewDefinition@2"; kind: "work-children"; childViews: readonly { key: string; label: string; }[]; defaultChildViewKey: string; }) | (Omit<LegacySurfaceViewDefinition, "contract" | "kind" | "commandKeys"> & { contract: "SurfaceViewDefinition@3"; kind: "evidence"; commandKeys: readonly []; evidenceSources: { contract: "SurfaceConsolidationSources@1"; profileKeys: readonly string[]; }; });
```

## SurfaceViewDefinitionV4

Work experience views are admitted only by Source10, never by the historical view union.

```typescript
export type SurfaceViewDefinitionV4 = Omit<
  LegacySurfaceViewDefinition,
  'contract' | 'kind' | 'commandKeys'
> & {
  contract: 'SurfaceViewDefinition@4';
  kind: 'work-experience';
  experienceKey: string;
  commandKeys: readonly [];
};
```

```typescript
type SurfaceViewDefinitionV4 = Omit<LegacySurfaceViewDefinition, "contract" | "kind" | "commandKeys"> & { contract: "SurfaceViewDefinition@4"; kind: "work-experience"; experienceKey: string; commandKeys: readonly []; };
```

## WorkExperienceSurfaceViewDefinition

New source family selects this union explicitly; Source5–9 still use views1–3.

```typescript
export type WorkExperienceSurfaceViewDefinition = SurfaceViewDefinition | SurfaceViewDefinitionV4;
```

## SurfaceViewProfile

Ordered Surface view composition attached to exact Model Surface definitions.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"SurfaceViewProfile@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `surfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `defaultViewKey` | `string` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `viewKeys` | `readonly string[]` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |

```typescript
export interface SurfaceViewProfile {
  contract: 'SurfaceViewProfile@1';
  key: string;
  surfaceDefinitionPaths: readonly string[];
  defaultViewKey: string;
  viewKeys: readonly string[];
}
```

## ActionVariantDefinition

One user-facing action variant backed by an existing canonical semantic command.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `label` | `string` | **Required.** Human-readable label displayed in the interface. |
| `commandKey` | `string` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |

```typescript
export interface ActionVariantDefinition {
  key: string;
  label: string;
  commandKey: string;
}
```

## ActionGroupDefinition

Ordered business action group rendered consistently by MCP and the Surface UX.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ActionGroupDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `label` | `string` | **Required.** Human-readable label displayed in the interface. |
| `target` | `"worknode" \| "surface" \| "workspace"` | **Required.** Defines target for this object. Observe the type, variants and bounds in the Options column. |
| `variants` | `readonly ActionVariantDefinition[]` | **Required.** Defines variants for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ActionGroupDefinition {
  contract: 'ActionGroupDefinition@1';
  key: string;
  label: string;
  target: 'surface' | 'worknode' | 'workspace';
  variants: readonly ActionVariantDefinition[];
}
```

## DataProtectionProfile

Explicit protection and disclosure policy for Model-declared Surface definitions.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"DataProtectionProfile@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `key` | `string` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `surfaceDefinitionPaths` | `readonly string[]` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `classification` | `"confidential" \| "internal" \| "public"` | **Required.** Sensitivity class used to apply disclosure policies. |
| `search` | `"allowed" \| "denied"` | **Required.** Search policy or configuration according to the enclosing context. |
| `aiDisclosure` | `"allowed" \| "denied"` | **Required.** Policy governing content exposure to AI context. |
| `export` | `"allowed" \| "denied"` | **Required.** Export policy for affected content. |

```typescript
export interface DataProtectionProfile {
  contract: 'DataProtectionProfile@1';
  key: string;
  surfaceDefinitionPaths: readonly string[];
  classification: 'confidential' | 'internal' | 'public';
  search: 'allowed' | 'denied';
  aiDisclosure: 'allowed' | 'denied';
  export: 'allowed' | 'denied';
}
```

## ProductVocabulary

Product terms shared verbatim by the UX, MCP tools, and System Knowledge.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"ProductVocabulary@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `controlCenter` | `string` | **Required.** Defines control Center for this object. Observe the type, variants and bounds in the Options column. |
| `overview` | `string` | **Required.** Defines overview for this object. Observe the type, variants and bounds in the Options column. |
| `actionRequired` | `string` | **Required.** Defines action Required for this object. Observe the type, variants and bounds in the Options column. |
| `portfolio` | `string` | **Required.** Defines portfolio for this object. Observe the type, variants and bounds in the Options column. |
| `inbox` | `string` | **Required.** Defines inbox for this object. Observe the type, variants and bounds in the Options column. |
| `activity` | `string` | **Required.** Defines activity for this object. Observe the type, variants and bounds in the Options column. |
| `settings` | `string` | **Required.** Fields presented in the record settings form. |
| `marketplace` | `string` | **Required.** Public information presenting the app in the catalog. |
| `workspace` | `string` | **Required.** Defines workspace for this object. Observe the type, variants and bounds in the Options column. |
| `surface` | `string` | **Required.** Defines surface for this object. Observe the type, variants and bounds in the Options column. |

```typescript
export interface ProductVocabulary {
  contract: 'ProductVocabulary@1';
  controlCenter: string;
  overview: string;
  actionRequired: string;
  portfolio: string;
  inbox: string;
  activity: string;
  settings: string;
  marketplace: string;
  workspace: string;
  surface: string;
}
```

## MarketplaceListingDefinition

Public catalogue metadata published with an immutable Model Revision.

| Field | Options / expected values | Description |
| --- | --- | --- |
| `contract` | `"MarketplaceListingDefinition@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `slug` | `string` | **Required.** Defines slug for this object. Observe the type, variants and bounds in the Options column. |
| `title` | `string` | **Required.** Title of the object or section in the interface. |
| `summary` | `string` | **Required.** Defines summary for this object. Observe the type, variants and bounds in the Options column. |
| `publisher` | `string` | **Required.** Defines publisher for this object. Observe the type, variants and bounds in the Options column. |
| `category` | `"knowledge" \| "project" \| "writing" \| "universal"` | **Required.** Defines category for this object. Observe the type, variants and bounds in the Options column. |
| `tags` | `readonly string[]` | **Required.** Classification or display configuration for admitted tags. |
| `visibility` | `"public" \| "included"` | **Required.** Determines presentation visibility or category using this variant’s values. |

```typescript
export interface MarketplaceListingDefinition {
  contract: 'MarketplaceListingDefinition@1';
  slug: string;
  title: string;
  summary: string;
  publisher: string;
  category: 'knowledge' | 'project' | 'writing' | 'universal';
  tags: readonly string[];
  visibility: 'included' | 'public';
}
```

[All references](https://developers.dagio.ai/reference/)

<!-- surface-examples:start -->

## Applied examples : Assemble a coherent definition

The Form and record profile reference the same company, status and notes Fields.

### Configuration

Fragment placed in `forms[]`. [Properties and accepted values](https://developers.dagio.ai/reference/workspace-model-foundation/).

```json
{
  "contract": "WorkspaceForm@2",
  "key": "new-client",
  "label": "New client",
  "actionKey": "create-client",
  "targetDefinitionPath": "workspace/clients/surface/client",
  "mode": "create",
  "fields": [
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "company",
      "label": "Company",
      "input": "text",
      "binding": {
        "kind": "field",
        "fieldKey": "company"
      },
      "required": true,
      "ruleKeys": [],
      "options": []
    },
    {
      "contract": "WorkspaceFormControl@2",
      "repeatable": false,
      "key": "status",
      "label": "Status",
      "input": "choice",
      "binding": {
        "kind": "field",
        "fieldKey": "status"
      },
      "required": true,
      "ruleKeys": [],
      "options": [
        "prospect",
        "active"
      ]
    }
  ],
  "ruleKeys": []
}
```

### Variation and connection

Fragment placed in `presentation.recordProfiles[]`. [Properties and accepted values](https://developers.dagio.ai/reference/workspace-record-profile/).

```json
{
  "key": "client",
  "definitionPaths": [
    "workspace/clients/surface/client"
  ],
  "editActionKey": "edit-client",
  "identity": {
    "title": {
      "kind": "field",
      "fieldPath": "fields/company"
    },
    "avatar": {
      "kind": "initials",
      "maximumLetters": 2
    },
    "subtitle": {
      "kind": "field",
      "fieldPath": "fields/status"
    }
  },
  "valueLabels": [
    {
      "fieldPath": "fields/status",
      "values": [
        {
          "value": "prospect",
          "label": "Prospect"
        },
        {
          "value": "active",
          "label": "Active"
        }
      ]
    }
  ],
  "card": {
    "summary": {
      "kind": "field",
      "fieldPath": "fields/notes"
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "metricKeys": [],
    "openLabel": "Open client"
  },
  "queryBindings": [],
  "metrics": [],
  "detail": {
    "primaryActionKey": null,
    "creationActionKeys": [],
    "actionKeys": [],
    "sections": [
      {
        "kind": "fields",
        "key": "follow-up",
        "label": "Client follow-up",
        "fieldPaths": [
          "fields/notes",
          "fields/status"
        ]
      }
    ],
    "settings": {
      "fieldPaths": [
        "fields/email"
      ]
    },
    "tags": {
      "namespace": "user",
      "maximumVisible": 3
    },
    "relatedGroups": [],
    "primaryActionLabel": null
  }
}
```

### UI layout example

The illustrative layout below places this configuration in the Clients/Quotes app. Insert each fragment at the stated location, with Field, Query and Action references matching the Model declarations.

1. Clients · Data
2. References · Knowledge
3. Preparation · Work
4. Quotes · Product

<!-- surface-examples:end -->
