You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|**data**|`{ name: string; label: string; description?: string; successMessage?: string; … }`| ✅ | The created flow definition|
183
+
|**data**|`{ name: string; label: string; description?: string; successMessage?: string; … }`| ✅ | The created flow, canonicalized — the parsed shape the engine stored, identical to what a subsequent GET answers|
184
184
185
185
### Nested Shape: `CreateFlowResponse.error`
186
186
@@ -624,24 +624,24 @@ const result = AutomationApiErrorCode.parse(data);
624
624
| Property | Type | Required | Description |
625
625
| :--- | :--- | :--- | :--- |
626
626
|**name**|`string`| ✅ | Flow machine name (snake_case) |
|**definition**|`{ name: string; label: string; description?: string; successMessage?: string; … }`| ✅ |Complete flow definition to store — the engine requires a full flow; partial update is not implemented|
628
628
629
629
### Nested Shape: `UpdateFlowRequest.definition`
630
630
631
631
| Property | Type | Required | Description |
632
632
| :--- | :--- | :--- | :--- |
633
-
|**name**|`string`|optional| Machine name |
634
-
|**label**|`string`|optional| Flow label |
633
+
|**name**|`string`|✅| Machine name |
634
+
|**label**|`string`|✅| Flow label |
635
635
|**description**|`string`| optional ||
636
636
|**successMessage**|`string`| optional | Message carried on AutomationResult for every terminal run (not only screen flows); the screen-flow UI shows it as a toast instead of a generic "Done". |
637
637
|**errorMessage**|`string`| optional | Message carried on AutomationResult for every terminal run (not only screen flows); the screen-flow UI shows it as a toast instead of the raw error. |
638
638
|**version**|`integer`| optional (default: `1`) | Version number |
|**template**|`never`| optional |[REMOVED]`flow.template` was removed in @objectstack/spec 17.0.0 (audit close-out) — no designer or engine path ever read it, so flagging a flow as a template/subflow did nothing. Delete the key. Shared logic is invoked via a subflow NODE referencing the flow by name. Run `os migrate meta --from 16` to list the mechanical edits for existing sources; apply them by hand. |
|**active**|`never`| optional |[REMOVED]`flow.active` was removed in @objectstack/spec 17.0.0 (audit close-out) — it never had an effect: the engine arms flows from `status`, and `active: false` did NOT stop a flow (worse, the default read as disabled while the engine treated unset as enabled). Delete the key. Use `status: 'obsolete'` (or 'invalid') to unbind and disable a flow, `status: 'active'` to arm it. Run `os migrate meta --from 16` to list the mechanical edits for existing sources; apply them by hand. |
646
646
|**runAs**|`Enum<'system' \| 'user'>`| optional (default: `"user"`) | Execution identity for the run: system = elevated (bypasses RLS), user = the triggering user (RLS-respecting). A run with no trigger user has no identity to scope to, so under user its data operations are REFUSED — declare system to make the elevation explicit. This covers schedule/time-relative/api triggers AND any record-change flow fired by a write that carried no user. |
647
647
|**errorHandling**|`{ strategy?: Enum<'fail' \| 'retry' \| 'continue'>; maxRetries?: integer; backoffMs?: integer; backoffMultiplier?: number; … }`| optional | Flow-level error handling configuration. A durable pause ends the retry-governed segment: strategy: 'retry' describes one synchronous dispatch, so a run that parks on an approval/screen/wait node and later resumes gets one attempt for anything that fails after the pause. Protect the post-pause half with its own failure handling in the flow — a try_catch node's retry around the post-resume work, or fault edges to a handler node. |
@@ -666,7 +666,7 @@ const result = AutomationApiErrorCode.parse(data);
666
666
|**success**|`boolean`| ✅ | Operation success status |
|**data**|`{ name: string; label: string; description?: string; successMessage?: string; … }`| ✅ | The updated flow, canonicalized — the parsed shape the engine stored, identical to what a subsequent GET answers|
0 commit comments