---
title: "managedModelAuthorFlow"
url: https://developers.dagio.ai/reference/managed-model-author-flow/
---

# managedModelAuthorFlow

   
                               
                                                                                 
                                           
                  
           
          
   

This reference describes the full structure of `managedModelAuthorFlow`. 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. |
| `title` | `string; min length 1; max length 4000` | **Required.** Title of the object or section in the interface. |
| `root` | `closed object` | **Required.** Defines root for this object. Observe the type, variants and bounds in the Options column. |
| `root.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. |
| `root.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. |
| `root.requiredInputs` | `Array<string; min length 1>; max length 100` | **Required.** Inputs needed before work; they must match declared Fields. |
| `root.initialFields` | `Record<string, true \| false OR number OR string OR Array<true \| false OR number OR string>>` | **Required.** Defines initial Fields for this object. Observe the type, variants and bounds in the Options column. |
| `stateDefinitionPath` | `string; min length 1; max length 600; /^workspace\/[a-z0-9-]+(?:\/surface\/[a-z0-9-]+)*$/u` | **Required.** Exact path of the relevant definition type; each reference must exist in the Model and respect declared scope. |
| `subflowLinkTypePath` | `string; min length 1; max length 600; null` | **Required.** Declared relation type with sources, targets and direction compatible with this traversal. |
| `inputs` | `Array<closed object>; max length 50` | **Required.** Named, typed inputs needed by the composition or operation. |
| `inputs[].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. |
| `inputs[].type` | `"text" \| "number" \| "boolean" \| "surface-reference" \| "result-reference"` | **Required.** Defines type for this object. Observe the type, variants and bounds in the Options column. |
| `inputs[].minimum` | `integer; ≥ 0; ≤ 1000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `inputs[].maximum` | `integer; ≥ 1; ≤ 1000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `contexts` | `Array<closed object>; max length 30` | **Required.** Defines contexts for this object. Observe the type, variants and bounds in the Options column. |
| `contexts[].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. |
| `contexts[].source` | `closed object OR closed object OR closed object` | **Required.** Defines source for this object. Observe the type, variants and bounds in the Options column. |
| `contexts[].source.[kind=input].kind` | `"input"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `contexts[].source.[kind=input].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. |
| `contexts[].source.[kind=step].kind` | `"step"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `contexts[].source.[kind=step].stepKey` | `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. |
| `contexts[].source.[kind=collection-item].kind` | `"collection-item"` | **Required.** Selects the variant and the properties admitted in this branch. |
| `contexts[].source.[kind=collection-item].stepKey` | `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. |
| `outputs` | `Array<closed object>; max length 50` | **Required.** Outputs exposed by the composition using declared names. |
| `outputs[].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. |
| `outputs[].from` | `closed object` | **Required.** Starting state or source for the transition or relation. |
| `outputs[].from.stepKey` | `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. |
| `outputs[].from.outputKey` | `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. |
| `outputs[].minimum` | `integer; ≥ 0; ≤ 1000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `outputs[].maximum` | `integer; ≥ 1; ≤ 1000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `outputs[].reduction` | `"first" \| "ordered-list" \| "distinct-list"` | **Required.** Defines reduction for this object. Observe the type, variants and bounds in the Options column. |
| `steps` | `Array<unknown>; min length 1; max length 199` | **Required.** Composition steps in their declared organization. |
| `budgets` | `closed object` | **Required.** Defines budgets for this object. Observe the type, variants and bounds in the Options column. |
| `budgets.maximumDepth` | `integer; ≥ 1; ≤ 8` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumOccurrences` | `integer; ≥ 1; ≤ 1000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumConcurrency` | `integer; ≥ 1; ≤ 100` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumIterations` | `integer; ≥ 1; ≤ 100` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumDurationMilliseconds` | `integer; ≥ 1; ≤ 2592000000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumCostUnits` | `integer; ≥ 0; ≤ 1000000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |
| `budgets.maximumStateBytes` | `integer; ≥ 1024; ≤ 2000000` | **Required.** Cardinality or budget bound for the named resource. Exceeding the bound is refused; null denotes no bound only where admitted by the schema. |

## 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.

## Structural example

This fragment passes the schema for this section. Its business references must be defined in the enclosing Model.

```json
{
  "key": "client",
  "title": "client",
  "root": {
    "key": "client",
    "definitionPath": "workspace/clients/surface/client",
    "requiredInputs": [],
    "initialFields": {}
  },
  "stateDefinitionPath": "workspace/clients/surface/client",
  "subflowLinkTypePath": null,
  "inputs": [],
  "contexts": [],
  "outputs": [],
  "steps": [
    {}
  ],
  "budgets": {
    "maximumDepth": 1,
    "maximumOccurrences": 1,
    "maximumConcurrency": 1,
    "maximumIterations": 1,
    "maximumDurationMilliseconds": 1,
    "maximumCostUnits": 0,
    "maximumStateBytes": 1024
  }
}
```

## Related references

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

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

## Applied examples : Prepare a quote

The Flow declares Client and Need inputs, an executable step and a bounded budget.

### Configuration

Contract object `managedModelAuthorFlow`. [Properties and accepted values](https://developers.dagio.ai/reference/managed-model-author-flow/).

```json
{
  "key": "client",
  "title": "client",
  "root": {
    "key": "client",
    "definitionPath": "workspace/clients/surface/client",
    "requiredInputs": [],
    "initialFields": {}
  },
  "stateDefinitionPath": "workspace/clients/surface/client",
  "subflowLinkTypePath": null,
  "inputs": [],
  "contexts": [],
  "outputs": [],
  "steps": [
    {}
  ],
  "budgets": {
    "maximumDepth": 1,
    "maximumOccurrences": 1,
    "maximumConcurrency": 1,
    "maximumIterations": 1,
    "maximumDurationMilliseconds": 1,
    "maximumCostUnits": 0,
    "maximumStateBytes": 1024
  }
}
```

### Variation and connection

Fragment placed in `flowBlueprints[].composition.inputs`. [Properties and accepted values](https://developers.dagio.ai/reference/flow-composition/).

```json
[
  {
    "key": "client",
    "type": "surface-reference",
    "provenance": "caller",
    "minimum": 1,
    "maximum": 1
  },
  {
    "key": "need",
    "type": "text",
    "provenance": "caller",
    "minimum": 1,
    "maximum": 1
  }
]
```

### 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. Qualify need
2. Prepare proposal
3. Wait for decision
4. Retain result

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