---
title: "workspaceRecordProfile"
url: https://developers.dagio.ai/reference/workspace-record-profile/
---

# workspaceRecordProfile

   
                               
                                                                                 
                                          
                  
           
          
   

This reference describes the full structure of `workspaceRecordProfile`. Paths include nested objects, list items and conditional branches. A branch selected by `kind`, `contract` or `mode` only admits its own properties.

## Structure and values

| Field | Options / expected values | Description |
| --- | --- | --- |
| `key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `definitionPaths` | `Array<string; min length 1; max length 600; /^workspace\/[a-z0-9-]+(?:\/surface\/[a-z0-9-]+)+$/u>; min length 1; max length 100` | **Required.** Defines definition Paths for this object. Observe the type, variants and bounds in the Options column. |
| `editActionKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `identity` | `closed object` | **Required.** Sources for information identifying the record to users. |
| `identity.title` | `closed object OR closed object OR closed object` | **Required.** Title of the object or section in the interface. |
| `identity.title.[kind=native].kind` | `"native"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.title.[kind=native].property` | `"title" \| "description" \| "createdAt" \| "updatedAt"` | **Required.** Recognized native property name; this selector does not allow arbitrary access. |
| `identity.title.[kind=field].kind` | `"field"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.title.[kind=field].fieldPath` | `string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u` | **Required.** Semantic Field selector, using the fields/ prefix. |
| `identity.title.[kind=calculation].kind` | `"calculation"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.title.[kind=calculation].calculationKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `identity.avatar` | `closed object` | **Required.** Visual identity presentation under the admitted variant. |
| `identity.avatar.kind` | `"initials"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.avatar.maximumLetters` | `integer; ≥ 1; ≤ 4` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `identity.subtitle` | `closed object OR closed object OR closed object; null` | **Required.** Subtitle source or explicit absence where null is admitted. |
| `identity.subtitle.[kind=native].kind` | `"native"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.subtitle.[kind=native].property` | `"title" \| "description" \| "createdAt" \| "updatedAt"` | **Required.** Recognized native property name; this selector does not allow arbitrary access. |
| `identity.subtitle.[kind=field].kind` | `"field"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.subtitle.[kind=field].fieldPath` | `string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u` | **Required.** Semantic Field selector, using the fields/ prefix. |
| `identity.subtitle.[kind=calculation].kind` | `"calculation"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `identity.subtitle.[kind=calculation].calculationKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `valueLabels` | `Array<closed object>; max length 100` | **Required.** Mappings from stable values to user-facing labels. |
| `valueLabels[].fieldPath` | `string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u` | **Required.** Semantic Field selector, using the fields/ prefix. |
| `valueLabels[].values` | `Array<closed object>; min length 1; max length 100` | **Required.** Set of admitted or compared values according to the declared operation. |
| `valueLabels[].values[].value` | `string; max length 4000 OR number OR true \| false` | **Required.** Effective value interpreted according to the enclosing type and discriminant. |
| `valueLabels[].values[].label` | `string; min length 1; max length 4000` | **Required.** Human-readable label displayed in the interface. |
| `card` | `closed object` | **Required.** Summary record presentation within a collection. |
| `card.summary` | `closed object OR closed object OR closed object; null` | **Required.** Defines summary for this object. Observe the type, variants and bounds in the Options column. |
| `card.summary.[kind=native].kind` | `"native"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `card.summary.[kind=native].property` | `"title" \| "description" \| "createdAt" \| "updatedAt"` | **Required.** Recognized native property name; this selector does not allow arbitrary access. |
| `card.summary.[kind=field].kind` | `"field"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `card.summary.[kind=field].fieldPath` | `string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u` | **Required.** Semantic Field selector, using the fields/ prefix. |
| `card.summary.[kind=calculation].kind` | `"calculation"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `card.summary.[kind=calculation].calculationKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `card.tags` | `closed object; null` | **Required.** Classification or display configuration for admitted tags. |
| `card.tags.namespace` | `"user"` | **Required.** Namespace determining value vocabulary and scope. |
| `card.tags.maximumVisible` | `integer; ≥ 0; ≤ 20` | **Required.** Maximum number of items in the bounded preview; the full collection remains accessible separately. |
| `card.metricKeys` | `Array<string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u>; max length 20` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `card.openLabel` | `string; min length 1; max length 4000` | **Required.** Label opening the object’s detail. |
| `queryBindings` | `Array<closed object>; max length 100` | **Required.** Bindings from named Queries to parameter values supplied by context. |
| `queryBindings[].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `queryBindings[].queryKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Reference to a declared Query; scope and authorization remain enforced by the data engine. |
| `queryBindings[].parameters` | `Record<string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u OR string; min length 1; max length 120; /^[a-zA-Z][a-zA-Z0-9]*$/u, closed object OR closed object OR closed object>; semantic validation` | **Required.** Named operation or Query parameters and their associated values. |
| `queryBindings[].parameters{key}.[kind=entity-id].kind` | `"entity-id"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `queryBindings[].parameters{key}.[kind=entity-id].definitionPath` | `string; min length 1; max length 600; /^workspace\/[a-z0-9-]+(?:\/surface\/[a-z0-9-]+)*$/u` | **Required.** Exact path of a definition in the Model; this is not a record instance ID. |
| `queryBindings[].parameters{key}.[kind=field].kind` | `"field"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `queryBindings[].parameters{key}.[kind=field].field` | `closed object` | **Required.** Defines field for this object. Observe the type, variants and bounds in the Options column. |
| `queryBindings[].parameters{key}.[kind=field].field.definitionPath` | `string; min length 1; max length 600; /^workspace\/[a-z0-9-]+(?:\/surface\/[a-z0-9-]+)*$/u` | **Required.** Exact path of a definition in the Model; this is not a record instance ID. |
| `queryBindings[].parameters{key}.[kind=field].field.fieldKey` | `string; min length 1; max length 120; /^[a-zA-Z][a-zA-Z0-9]*$/u` | **Required.** Key of a Field declared on the referenced Surface definition. |
| `queryBindings[].parameters{key}.[kind=literal].kind` | `"literal"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `queryBindings[].parameters{key}.[kind=literal].value` | `string; max length 4000 OR number OR true \| false OR null` | **Required.** Effective value interpreted according to the enclosing type and discriminant. |
| `metrics` | `Array<closed object>; max length 20` | **Required.** Declared metrics based on a Query and canonical aggregate. |
| `metrics[].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `metrics[].queryBindingKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `metrics[].value` | `"aggregate"` | **Required.** Effective value interpreted according to the enclosing type and discriminant. |
| `metrics[].singularLabel` | `string; min length 1; max length 4000` | **Required.** Label used for a single result unit. |
| `metrics[].pluralLabel` | `string; min length 1; max length 4000` | **Required.** Label used for multiple result units. |
| `metrics[].navigation` | `closed object; null` | **Required.** Declared destinations in presentation order. |
| `metrics[].navigation.kind` | `"record-related-group"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `metrics[].navigation.relatedGroupKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail` | `closed object` | **Required.** Sections, Actions, settings and relations of an open record. |
| `detail.primaryActionKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u; null` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.primaryActionLabel` | `string; min length 1; max length 4000; null` | **Required.** Defines primary Action Label for this object. Observe the type, variants and bounds in the Options column. |
| `detail.creationActionKeys` | `Array<string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u>; max length 100` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.actionKeys` | `Array<string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u>; max length 100` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.sections` | `Array<closed object OR closed object OR closed object>; min length 1; max length 40` | **Required.** Declared sections in reading or rendering order. |
| `detail.sections[].[kind=fields].kind` | `"fields"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `detail.sections[].[kind=fields].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `detail.sections[].[kind=fields].label` | `string; min length 1; max length 4000` | **Required.** Human-readable label displayed in the interface. |
| `detail.sections[].[kind=fields].fieldPaths` | `Array<string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u>; min length 1; max length 100` | **Required.** Defines field Paths for this object. Observe the type, variants and bounds in the Options column. |
| `detail.sections[].[kind=content].kind` | `"content"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `detail.sections[].[kind=content].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `detail.sections[].[kind=content].label` | `string; min length 1; max length 4000` | **Required.** Human-readable label displayed in the interface. |
| `detail.sections[].[kind=query-view].kind` | `"query-view"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `detail.sections[].[kind=query-view].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `detail.sections[].[kind=query-view].label` | `string; min length 1; max length 4000` | **Required.** Human-readable label displayed in the interface. |
| `detail.sections[].[kind=query-view].queryBindingKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.sections[].[kind=query-view].viewKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.settings` | `closed object` | **Required.** Fields presented in the record settings form. |
| `detail.settings.fieldPaths` | `Array<string; min length 8; max length 127; /^fields\/[a-zA-Z][a-zA-Z0-9]*$/u>; max length 100` | **Required.** Defines field Paths for this object. Observe the type, variants and bounds in the Options column. |
| `detail.tags` | `closed object; null` | **Required.** Classification or display configuration for admitted tags. |
| `detail.tags.namespace` | `"user"` | **Required.** Namespace determining value vocabulary and scope. |
| `detail.tags.maximumVisible` | `integer; ≥ 0; ≤ 20` | **Required.** Maximum number of items in the bounded preview; the full collection remains accessible separately. |
| `detail.relatedGroups` | `Array<closed object>; max length 40` | **Required.** Relation groups with a Query and bounded preview plus access to the full collection. |
| `detail.relatedGroups[].key` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable semantic identifier used by references; changing it changes identity. |
| `detail.relatedGroups[].label` | `string; min length 1; max length 4000` | **Required.** Human-readable label displayed in the interface. |
| `detail.relatedGroups[].queryBindingKey` | `string; min length 1; max length 120; /^[a-z][a-z0-9-]*$/u` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `detail.relatedGroups[].maximumVisible` | `integer; ≥ 1; ≤ 100` | **Required.** Maximum number of items in the bounded preview; the full collection remains accessible separately. |
| `detail.relatedGroups[].openAllLabel` | `string; min length 1; max length 4000` | **Required.** Label opening the full collection, such as View all. |
| `detail.relatedGroups[].rowIcon` | `closed object; null` | **Required.** Defines row Icon for this object. Observe the type, variants and bounds in the Options column. |
| `detail.relatedGroups[].rowIcon.catalog` | `Managed by Surface; supplied by the Model tools.` | **Required.** Defines catalog for this object. Observe the type, variants and bounds in the Options column. |
| `detail.relatedGroups[].rowIcon.revision` | `"0.468.0"` | **Required.** Defines revision for this object. Observe the type, variants and bounds in the Options column. |
| `detail.relatedGroups[].rowIcon.name` | `string; min length 1; max length 120; semantic validation` | **Required.** Readable name of the element in its presentation context. |

## Reading the contract

A path ending in `[]` describes each list item; `{key}` describes each dictionary value. The `↻` marker refers to the same recursive expression. Closed objects reject additional properties. Semantic validation denotes an additional check: matching a type does not make a reference, permission or transition valid. References must resolve in the Model and the current user context.

An older variant cannot accept properties belonging to a newer variant. The compiler checks the version and consistency of the complete Model.

Surface manages this structure’s implementation parameters. Use Model tools to produce them; they are not values to enter in a record.

## Related references

[Complete Model index](https://developers.dagio.ai/reference/) · [Build a Model](https://developers.dagio.ai/models/)

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

## Applied examples : Visible notes, accessible settings

Place follow-up on the Surface and email in settings, while retaining the same Fields.

### Configuration

Contract object `workspaceRecordProfile`. [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
  }
}
```

### Variation and connection

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

```json
{
  "fieldPaths": [
    "fields/email"
  ]
}
```

### 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. Client identity
2. Notes and follow-up
3. Settings
4. Linked quotes

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