Automation

List workflow versions

Page through immutable schemas and locked dependencies in descending semantic-version order.

Page through immutable schemas and locked dependencies in descending semantic-version order. Lists omit source by default; only expand=source includes full source, and other values return 400. Detail endpoints retain full source.

GET /automation/v1/workflows/{ns}/{name}/versions

Authentication

Authorization: Bearer $PRAXIS_API_KEY

Request fields

ParameterTypeDescription
path: nsstringrequired; Namespace, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}. praxis is read-only.
path: namestringrequired; Name, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}.
query: limitintegeroptional; Page size: integer 1–100, default 25. minimum: 1; maximum: 100
query: cursorstringoptional; Opaque next_cursor from the previous page; keep the original filters when paging.
query: expand"source"optional; Only source is accepted; source is omitted by default and other values return 400.

Examples

Set these environment variables to your own resources:

VariableSource
WORKFLOW_NAMEname returned by creating a workflow
: "${WORKFLOW_NAME:?Set WORKFLOW_NAME}"
curl --fail-with-body -X GET "https://api.deepraxis.ai/automation/v1/workflows/docs-samples/${WORKFLOW_NAME}/versions" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
import { createAutomationClient } from '@deepraxis/sdk/automation';

function env(name: string): string {
  const value = process.env[name];
  if (!value) throw new Error(`Set ${name}`);
  return value;
}
const automation = createAutomationClient({
  apiKey: env('PRAXIS_API_KEY'),
  baseUrl: 'https://api.deepraxis.ai',
  maxRetries: 0,
  timeoutMs: 90_000,
});
const result = await automation.workflows.versions.list({
  "path": {
    "ns": "docs-samples",
    "name": env("WORKFLOW_NAME")
  }
});
console.log(result);

Response

HTTP 200

Success

application/json

FieldTypeDescription
dataobject[]required; Workflow versions (source only with expand=source) on this page, ordered by semver descending.
data[].idstringrequired; Version id, prefixed scv_ for scripts and wfv_ for workflows.
data[].kind"script" / "workflow"required; Orchestration kind. script is a TypeScript script that executes once; workflow is a YAML workflow made of steps that can wait for events, timers or child runs and can be suspended.
data[].versionstringrequired; Version number (semver, with +build metadata removed).
data[].digeststringrequired; Content digest of the source and contract.
data[].sourcestringoptional; Full source of this version. Version lists omit it unless expand=source is given.
data[].input_schemaobjectrequired; Any JSON object whose keys are strings and whose values are any JSON value.
data[].input_schema.* (variant 5)objectRecursive JSON value.
data[].input_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
data[].output_schemaobjectrequired; Inferred from script return types, including Promise unwrapping, Record, intersections and Date (date-time); unresolved types yield an empty schema with a warning in /validate warnings.
data[].output_schema.* (variant 5)objectRecursive JSON value.
data[].output_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
data[].referencesobject[]required; Actions, platform APIs, scripts and workflows this version depends on. Script and workflow dependencies are locked to exact versions at publication.
data[].references[].kind"action" / "script" / "workflow" / "platform_api" / "run"required; Dependency kind. action is an action; platform_api is a platform API operation; script is a script; workflow is a workflow; run is the child-run target of an invoke("ns/name") call in a script (a script or workflow, resolved at publication).
data[].references[].namestringrequired; Referenced item: ns/name for an action, the operation name for a platform API, ns/name for a script or workflow.
data[].references[].rangestringoptional; Version range or tag as written in the reference (npm rules); absent when none was written.
data[].references[].locked_versionstringoptional; Exact version locked at publication; only script and workflow dependencies have it, actions and platform APIs are not locked.
data[].outlinenull / object[]required; Step outline of a workflow as OutlineNode entries generated statically by the parser; null for scripts.
data[].outline (variant 2)[].namestringrequired; Step name, the key of the step in the workflow YAML.
data[].outline (variant 2)[].referencestringrequired; JSON Pointer of the step in the workflow document, for example /do/0/start; equals Task.reference at run time.
data[].outline (variant 2)[].kind"run" / "call" / "wait" / "set" / "for" / "fork" / "try" / "switch" / "emit" / "raise" / "listen" / "do"required; Workflow step kind. call invokes an action; run starts a child script or workflow; wait pauses for a duration; set assigns variables; for loops; fork runs parallel branches; try is a block with catch; switch branches on conditions; emit publishes an event; raise throws an error; listen waits for an event; do is a block of sequential steps.
data[].outline (variant 2)[].targetstringoptional; Target of the step: the action ns/name for a call step, ns/name@range for a run step; absent for other kinds.
data[].outline (variant 2)[].waitobjectoptional; Summary of a waiting step: the duration (seconds or duration) or the event type being awaited (event). no additional fields.
data[].outline (variant 2)[].wait.untilstringoptional; Absolute instant at which the wait ends, given only when it is statically known; the outline does not populate it today.
data[].outline (variant 2)[].wait.secondsnumberoptional; Wait in seconds when statically convertible, including duration objects and convertible ISO durations.
data[].outline (variant 2)[].wait.eventstringoptional; Event type a listen step waits for.
data[].outline (variant 2)[].wait.durationstringoptional; Original duration or runtime expression that cannot be statically converted to seconds.
data[].outline (variant 2)[].loopobjectoptional; Loop information {each, in} of a for step. no additional fields.
data[].outline (variant 2)[].loop.eachstringrequired; Loop variable name; item when not specified.
data[].outline (variant 2)[].loop.instringrequired; Verbatim expression of the collection being iterated.
data[].outline (variant 2)[].childrenobject[]optional; Nested child steps (inside do, fork branches, try and catch).
data[].outline (variant 2)[].children[]objectRecursive JSON value.
data[].sdk_versionnull / stringrequired; SDK version used when publishing a script; null for workflows.
data[].published_atstringrequired; Publication time (RFC 3339 UTC).
data[].published_byobjectrequired; Principal {type, id} injected by the gateway that says who initiated or acted. This service does not resolve names; the console resolves them in batches. no additional fields.
data[].published_by.type"user" / "api_key" / "agent" / "run" / "trigger"required; Principal type. user is a signed-in user; api_key is a platform API key; agent is an agent; run is an action performed by a run itself (for example a parent run); trigger is a trigger.
data[].published_by.idstringrequired; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string.
data[].deprecatednull / stringrequired; Deprecation message, or null when not deprecated. A deprecated version still runs, but resolving a range or tag prefers versions that are not deprecated.
data[].deprecated_atnull / stringrequired; Time the version was deprecated (RFC 3339 UTC), or null.
data[].deprecated_bynull / objectrequired; Principal that deprecated the version, or null.
data[].deprecated_by (variant 2).type"user" / "api_key" / "agent" / "run" / "trigger"required; Principal type. user is a signed-in user; api_key is a platform API key; agent is an agent; run is an action performed by a run itself (for example a parent run); trigger is a trigger.
data[].deprecated_by (variant 2).idstringrequired; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string.
next_cursornull / stringrequired; Cursor for the next page: pass it unchanged as cursor with the same filters; null when there are no more pages. No total is returned.

Measured response

HTTP 200

{
  "data": [
    {
      "id": "wfv_00mv67m6x5409408c354944fa8a960d207eb33c297",
      "kind": "workflow",
      "version": "1.0.0",
      "digest": "ea7352d51087eca0113ee82230848ce1506fd97d27aad4c7b1911e5c4ef9b5fb",
      "input_schema": {},
      "output_schema": {},
      "references": [],
      "outline": [
        {
          "name": "answer",
          "reference": "/do/0/answer",
          "kind": "set"
        }
      ],
      "sdk_version": null,
      "published_at": "2026-10-13T04:57:32.297Z",
      "published_by": {
        "type": "api_key",
        "id": "key_3e00b8984967"
      },
      "deprecated": null,
      "deprecated_at": null,
      "deprecated_by": null
    }
  ],
  "next_cursor": null
}

Errors

HTTPCodes and description
400INVALID_PARAMS: Invalid request parameters, path, cursor, or body format.
404TARGET_NOT_FOUND: The target does not exist or has an incompatible type.
defaultRFC 9457 automation problem. 429 includes Retry-After.

Authentication and common errors · Retain the X-Request-Id response header for troubleshooting.

Export

On this page