---
title: "workspaceGraphPresentation"
url: https://developers.dagio.ai/reference/workspace-graph-presentation/
---

# workspaceGraphPresentation

   
                                   
                                                                                     
                                              
                  
           
          
   

This reference describes the full structure of `workspaceGraphPresentation`. 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 |
| --- | --- | --- |
| `contract` | `"WorkspaceGraphPresentation@1"` | **Required.** Exact discriminant of this contract variant. Match the literal value shown. |
| `initialProfileKey` | `string; min length 1; max length 120` | **Required.** Stable key reference to the corresponding named declaration; the compiler checks existence and compatibility. |
| `profiles` | `Array<closed object>; min length 1; max length 20` | **Required.** Defines profiles for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].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. |
| `profiles[].label` | `string; min length 1; max length 200` | **Required.** Human-readable label displayed in the interface. |
| `profiles[].edgeRouting` | `Managed by Surface; supplied by the Model tools.` | **Required.** Defines edge Routing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout` | `closed object OR closed object OR closed object OR closed object OR closed object OR closed object OR closed object` | **Required.** Arrangement algorithm or structure configured by variant properties. |
| `profiles[].layout.[algorithm=box].algorithm` | `"box"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=box].nodeSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines node Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=box].aspectRatio` | `number; ≥ 0.1; ≤ 10` | **Required.** Defines aspect Ratio for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=disco].algorithm` | `"disco"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=disco].componentSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines component Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=disco].aspectRatio` | `number; ≥ 0.1; ≤ 10` | **Required.** Defines aspect Ratio for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=disco].componentLayout` | `"force" \| "stress" \| "layered"` | **Required.** Defines component Layout for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=force].algorithm` | `"force"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=force].nodeSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines node Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=force].aspectRatio` | `number; ≥ 0.1; ≤ 10` | **Required.** Defines aspect Ratio for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=force].seed` | `integer; ≥ 1; ≤ 2147483647` | **Required.** Provisions initial content rather than only declaring an instance type. |
| `profiles[].layout.[algorithm=layered].algorithm` | `"layered"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=layered].nodeSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines node Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=layered].componentSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines component Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=layered].layerSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines layer Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=layered].direction` | `"UP" \| "DOWN" \| "LEFT" \| "RIGHT"` | **Required.** Traversal or presentation direction using this contract’s closed values. |
| `profiles[].layout.[algorithm=layered].seed` | `integer; ≥ 1; ≤ 2147483647` | **Required.** Provisions initial content rather than only declaring an instance type. |
| `profiles[].layout.[algorithm=mrtree].algorithm` | `"mrtree"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=mrtree].nodeSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines node Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=mrtree].direction` | `"UP" \| "DOWN" \| "LEFT" \| "RIGHT"` | **Required.** Traversal or presentation direction using this contract’s closed values. |
| `profiles[].layout.[algorithm=mrtree].aspectRatio` | `number; ≥ 0.1; ≤ 10` | **Required.** Defines aspect Ratio for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=random].algorithm` | `"random"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=random].nodeSpacing` | `number; ≥ 1; ≤ 1000` | **Required.** Defines node Spacing for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=random].aspectRatio` | `number; ≥ 0.1; ≤ 10` | **Required.** Defines aspect Ratio for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=random].seed` | `integer; ≥ 1; ≤ 2147483647` | **Required.** Provisions initial content rather than only declaring an instance type. |
| `profiles[].layout.[algorithm=stress].algorithm` | `"stress"` | **Required.** Graph layout algorithm; its parameters depend on this value. |
| `profiles[].layout.[algorithm=stress].desiredEdgeLength` | `number; ≥ 1; ≤ 1000` | **Required.** Defines desired Edge Length for this object. Observe the type, variants and bounds in the Options column. |
| `profiles[].layout.[algorithm=stress].iterationLimit` | `integer; ≥ 1; ≤ 1000` | **Required.** Defines iteration Limit for this object. Observe the type, variants and bounds in the Options column. |

## 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 : Explore the client and its relations

Two visual arrangements present the same linked objects without changing their data.

### Configuration

Value for property `initialProfileKey`. [Properties and accepted values](https://developers.dagio.ai/reference/workspace-graph-presentation/).

```json
"dependencies"
```

### Variation and connection

Fragment placed in `graphPresentations[].profiles[].layout`. [Properties and accepted values](https://developers.dagio.ai/reference/workspace-graph-layout/).

```json
{
  "algorithm": "mrtree",
  "nodeSpacing": 56,
  "direction": "DOWN",
  "aspectRatio": 1.5
}
```

### 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. North Studio
2. Quote S-1042
3. Preparation
4. Sources

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