Autosave the draft head.
Writes a new head for the draft, appending an immutable entry to its undo/redo history (an identical payload is a no-op). Creates the draft on first call. Pass the draft `Version` you last saw as `If-Match`; a mismatch returns 409, signalling a concurrent edit from another client — preserve the local edit and reconcile.
Authorization
Bearer JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.
In: header
Path Parameters
The unique identifier of the Workflow.
The base revision the draft forks from.
The tenant identifier
The new draft head — the current authoring state.
Represents a sequence of steps in a agent flow, supporting versioning and ordered execution.
A valid flow has exactly one ENTRY_POINT step and exactly one
EXIT_POINT step in Steps — these are not synthesized
for you. The other steps (AGENT, TOOL, CLAUDE_BOX)
sit between them, wired by Edges.
Response Body
curl -X PUT "https://api.fruxon.com/v1/tenants/string/workflows/string/revisions/string/draft" \ -H "Content-Type: application/json" \ -d '{ "flow": {} }'{
"workflowId": "string",
"baseRevision": 0,
"version": 0,
"historyCursor": 0,
"canUndo": false,
"canRedo": false,
"updatedAt": 0,
"headData": {
"comment": "string",
"flow": {
"steps": [],
"edges": []
},
"integrationSlots": [
{
"id": "00000000-0000-0000-0000-000000000000",
"integrationId": "string",
"displayName": "string",
"tenantConfigId": "00000000-0000-0000-0000-000000000000"
}
],
"integrationBindings": {},
"assets": [
{
"id": "string"
}
],
"slots": [
{
"name": "string",
"displayName": "string",
"requiredKind": "UNSPECIFIED"
}
]
},
"history": [
{
"seqNo": 0,
"contentHash": "string",
"pinned": false,
"label": "string",
"createdAt": 0
}
]
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}{
"type": "string",
"title": "string",
"status": 0,
"detail": "string",
"instance": "string",
"property1": null,
"property2": null
}