Save draft version (or validate-only for import gate)
Requires ADMIN. validateOnly:true runs full graph+effect validation and returns { valid:true } or 422, writing nothing. Otherwise saves/updates the draft version (draft saves validate effect props but not full graph).
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Project (tenant) identifier. Row-level tenant isolation is enforced on every query.
Automation (journey) identifier.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Journey/automation graph definition. Nodes are typed (trigger/action/branch/wait/waitForEvent/timeWindow).
object
object
Examplegenerated
{ "definition": { "nodes": [ {} ] }, "validateOnly": true}Responses
Section titled “Responses”Draft saved (existing draft updated) or { valid:true } for validateOnly.
object
New draft version created.
object
Example
{ "status": "draft"}Missing/invalid path input (e.g. projectId) or invalid JSON body.
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Not authenticated (401 via requireAuthenticated) or insufficient project role (403).
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Resource not found (or cross-tenant — same 404).
object
Human-readable error message.
Examplegenerated
{ "error": "example", "message": "example"}Param validation, graph validation, or effect props invalid (error in [graph_validation_failed, effect_props_invalid]).
object
object
Examplegenerated
{ "error": "example", "message": "example", "errors": [ "example" ], "issues": [ {} ], "draftId": "example"}