API Reference

Workflows API

REST API for automation workflows — definitions, runs, schedules, steps, the code IDE, and the SDK reference. Auto-generated from the platform OpenAPI schema so it matches the running API.

REST API for this feature — 64 operations across 55 resource paths, auto-generated from the platform's live OpenAPI schema (drf-spectacular).

Base URL https://<your-versus-host>/api · Auth Authorization: Bearer <JWT> (from POST /api/auth/token/) · 📄 Download the OpenAPI spec for Postman/Insomnia/Swagger · see the API overview for pagination, filtering, and errors.

Backout runs

GET /api/backout-runs/

List backout runs

ParameterInRequiredTypeDescription
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
runquerynointeger
searchquerynostringA search term.
statusquerynostring* waiting_primary_approval - Waiting for Primary Approval

Responses: 200 → PaginatedBackoutRunListList

GET /api/backout-runs/{id}/

Retrieve backout run

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/approve_dual/

Approve dual: backout run

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/approve_primary/

Approve primary: backout run

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/cancel/

Cancel: backout run

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/steps/{step_id}/acknowledge/

Acknowledge: step

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.
step_idpathyesstring

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/steps/{step_id}/approve/

Approve: step

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.
step_idpathyesstring

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/steps/{step_id}/retry/

Retry: step

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.
step_idpathyesstring

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun

POST /api/backout-runs/{id}/steps/{step_id}/skip/

Skip: step

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this backout run.
step_idpathyesstring

Request body (application/json): BackoutRunRequest

Responses: 200 → BackoutRun


Quick run script

POST /api/quick-run-script/

POST { script, name?, context_vars? }

Responses: 200


Workflow ai generate

POST /api/workflow-ai-generate/

POST { prompt, answers? }

Responses: 200


Workflow ai snow fill

POST /api/workflow-ai-snow-fill/

POST { workflow_name, nodes: [{key, label, kind}] }

Responses: 200


Workflow code

POST /api/workflow-code/assist/

POST /api/workflow-code/assist — unified AI code editor (generate/complete/

Responses: 200


Workflow http assist

POST /api/workflow-http-assist/

POST { prompt, existing_code? }

Responses: 200


Workflow playbook assist

POST /api/workflow-playbook-assist/

POST { prompt, existing_playbook? }

Responses: 200


Workflow runs

GET /api/workflow-runs/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
device_groupquerynointeger
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.
statusquerynostring* pending - Pending
workflowquerynointeger
workflow__categoryquerynostring* netscaler - NetScaler

Responses: 200 → PaginatedWorkflowRunListList

GET /api/workflow-runs/{id}/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Responses: 200 → WorkflowRunDetail

GET /api/workflow-runs/{id}/backout/

Retrieve an existing back-out for this run (if any).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/cancel/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/code-breakpoints/

Set/replace this run's code breakpoints ({node_id: [line, ...]}) before launch.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/node_breakpoints/

Set/replace this run's step-level breakpoints — the node ids the run pauses before — before launch or while paused. POST /api/workflows/{id}/run/ also accepts breakpoint_node_ids (list) and node_step (pause before every node) directly.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): { "node_ids": ["n2", "n5"] }

Responses: 200 → { "breakpoint_node_ids": [...] }

POST /api/workflow-runs/{id}/debug_resume/

Leave a step-level breakpoint pause. mode: "continue" runs on to the next breakpoint (or the end); mode: "step" runs just the paused step and pauses again before the next one. The run's debug_state describes the current pause (kind, node_id, label, why, paused_at).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): { "mode": "continue" | "step" }

Responses: 200 → WorkflowRunDetail · 400 when the run is not paused

POST /api/workflow-runs/{id}/debug/

Drive the paused debugger: command in {step, step_over, continue, stop}. DB-polled,

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

GET /api/workflow-runs/{id}/frame/

The current paused code-debugger frame for this run (line + locals).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/mark_complete/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/pause/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/request_backout/

Create a back-out plan for this run.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/resume/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/resume_approval/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/resume_failed/

Resume a failed run from the last node it was attempting.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/retry_step/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail

POST /api/workflow-runs/{id}/stop_step/

Deploy-safe base for making an existing DRF ModelViewSet tenant-isolated

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow run.

Request body (application/json): WorkflowRunDetailRequest

Responses: 200 → WorkflowRunDetail


Workflow schedules

GET /api/workflow-schedules/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
enabledquerynoboolean
orderingquerynostringWhich field to use when ordering the results.
pagequerynointegerA page number within the paginated result set.
page_sizequerynointegerNumber of results to return per page.
searchquerynostringA search term.
workflowquerynointeger

Responses: 200 → PaginatedWorkflowScheduleList

POST /api/workflow-schedules/

CRUD for workflow schedules with cron-based execution.

Request body (application/json): WorkflowScheduleRequest

Responses: 201 → WorkflowSchedule

GET /api/workflow-schedules/due/

List schedules that are currently due (for monitoring/debugging).

Responses: 200 → WorkflowSchedule

GET /api/workflow-schedules/{id}/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Responses: 200 → WorkflowSchedule

PUT /api/workflow-schedules/{id}/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Request body (application/json): WorkflowScheduleRequest

Responses: 200 → WorkflowSchedule

PATCH /api/workflow-schedules/{id}/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Request body (application/json): PatchedWorkflowScheduleRequest

Responses: 200 → WorkflowSchedule

DELETE /api/workflow-schedules/{id}/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Responses: 204

POST /api/workflow-schedules/{id}/disable/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Request body (application/json): WorkflowScheduleRequest

Responses: 200 → WorkflowSchedule

POST /api/workflow-schedules/{id}/enable/

CRUD for workflow schedules with cron-based execution.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Request body (application/json): WorkflowScheduleRequest

Responses: 200 → WorkflowSchedule

POST /api/workflow-schedules/{id}/run_now/

Immediately fire this schedule, ignoring next_run_at.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow schedule.

Request body (application/json): WorkflowScheduleRequest

Responses: 200 → WorkflowSchedule


Workflow script assist

POST /api/workflow-script-assist/

POST { prompt, existing_code? }

Responses: 200


Workflow sdk

GET /api/workflow-sdk/reference/

GET /api/workflow-sdk/reference?language=python — live-introspected SDK

Responses: 200


Workflow status

GET /api/workflow-status/{run_id}/

GET /api/workflow-status/<run_id>/

ParameterInRequiredTypeDescription
run_idpathyesinteger

Responses: 200


Workflow steps

GET /api/workflow-steps/

Lists every built-in step so the canvas can build its node palette and config forms.

Responses: 200

GET /api/workflow-steps/{key}/source/

Read-only view of a built-in step's actual implementation — the

ParameterInRequiredTypeDescription
keypathyesstring

Responses: 200


Workflow trigger

POST /api/workflow-trigger/

POST /api/workflow-trigger/

Responses: 200


Workflows

GET /api/workflows/

List workflows

ParameterInRequiredTypeDescription
categoryquerynostring* netscaler - NetScaler
is_activequerynoboolean
orderingquerynostringWhich field to use when ordering the results.
searchquerynostringA search term.
slugquerynostring

Responses: 200 → WorkflowDefinitionList[]

POST /api/workflows/

Create workflow

Request body (application/json): WorkflowDefinitionRequest

Responses: 201 → WorkflowDefinition

GET /api/workflows/{id}/

Retrieve workflow

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 200 → WorkflowDefinition

PUT /api/workflows/{id}/

Update workflow

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

PATCH /api/workflows/{id}/

Update workflow

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): PatchedWorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

DELETE /api/workflows/{id}/

Delete workflow

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 204

POST /api/workflows/{id}/duplicate/

Clones this workflow's graph into a new, editable (non-builtin)

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/favorite/

Toggle the current user's favorite state for this workflow.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/finalize/

Promote a published version to the canonical final — production runs pin to it.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/preflight/

Dry trace: validate, then run a dry_run that records what WOULD run — no device IO.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/publish/

Freeze the working draft into an immutable published version (hard-gated on validation).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/revert_draft/

Copy a version's frozen graph back onto the working draft.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/run/

Create a WorkflowRun and kick off execution in a background thread.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

GET /api/workflows/{id}/sections/

The workflow's high-level 'section' nodes, in execution order.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 200 → WorkflowDefinition

GET /api/workflows/{id}/validate/

Static validation of the working draft graph (advisory; also the publish gate).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 200 → WorkflowDefinition

POST /api/workflows/{id}/validate/

Static validation of the working draft graph (advisory; also the publish gate).

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Request body (application/json): WorkflowDefinitionRequest

Responses: 200 → WorkflowDefinition

GET /api/workflows/{id}/versions/

Versions: workflow

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 200 → WorkflowDefinition

GET /api/workflows/{id}/versions/diff/

Structured graph diff between two refs (?from=&to=); a ref is a version_no or 'draft'.

ParameterInRequiredTypeDescription
idpathyesintegerA unique integer value identifying this workflow definition.

Responses: 200 → WorkflowDefinition


Auto-generated from drf-spectacular OpenAPI. Endpoint descriptions come from viewset docstrings/serializers; enriching those improves this page on the next generation.