Workflows

Update a workflow

Updates a workflow definition. Structural changes (states/transitions) are re-validated. Existing tasks in a removed state stay put but can only leave via transitions valid in the new definition.

patch/v1/projects/{project_id}/workflows/{workflow_id}

Request

  • Base URL: https://api.naturali.ai
  • URL: https://api.naturali.ai/v1/projects/{project_id}/workflows/{workflow_id}
  • Auth: one of:
    • HTTP bearer
    • OAuth 2 (authorization code, authorization URL https://api.naturali.ai/authorize, token URL https://api.naturali.ai/token, scopes: mcp:access)

Path parameters

workflow_idstring required

Headers

If-Matchstring

The version the caller believes the resource holds, as an entity tag (3 or "3"). Equivalent to expected_version in the request body; * states no precondition beyond the resource existing. A mismatch is 409 VERSION_CONFLICT.

Request body

namestring
descriptionstring nullable
payload_schemaobject nullable
version_labelstring

Optional tag for the version this write archives, e.g. pre-rewire. Ignored when the write changes no definition field, since no version is archived.

expected_versioninteger nullable

The version the caller believes the resource holds. When the resource is at any other version the write is refused with 409 VERSION_CONFLICT and nothing is written; meta.current_version on that response names the version in force.

Omit it to write unconditionally. Omitting it does not make the write unordered: two writes that reach the server together are still serialized, and the one whose version was taken first is refused the same way. What the field adds is refusing a write whose author read the resource some time ago and has not seen what happened since.

The If-Match header carries the same precondition for a client that prefers the HTTP spelling. Sending both with different versions is 400 VALIDATION_FAILED.

Example request

{
  "version_label": "pre-rewire",
  "expected_version": 3
}

Response

Workflow updated

idstring
project_idstring
namestring
descriptionstring nullable
versioninteger

Incremented on every write that changes the state machine; prior versions are archived. A task pins the version it entered on, so these fields are a draft for tasks created from now on rather than a live rewrite of the ones already in flight.

payload_schemaobject nullable
created_atstring date-time
updated_atstring date-time

Example response

{
  "version": 1
}

Changes

No recorded changes to this operation across all 1 revision of this API.