Automation
Deprecate a workflow version
Record a deprecation message.
Record a deprecation message; an empty message removes deprecation without changing the version source.
POST /automation/v1/workflows/{ns}/{name}/versions/{version}/deprecate
Authentication
Authorization: Bearer $PRAXIS_API_KEY
Request fields
| Parameter | Type | Description |
|---|---|---|
| path: ns | string | required; Namespace, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}. praxis is read-only. |
| path: name | string | required; Name, folded to lowercase; matches [a-z0-9][a-z0-9._-]{0,63}. |
| path: version | string | required; An exact canonical semantic version, such as 1.2.0 or 1.3.0-beta.1, not a range. |
application/json
no additional fields.
| Field | Type | Description |
|---|---|---|
| message | string | required; Deprecation message; an empty string removes deprecation. |
Examples
Set these environment variables to your own resources:
| Variable | Source |
|---|---|
| WORKFLOW_NAME | name returned by creating a workflow |
: "${WORKFLOW_NAME:?Set WORKFLOW_NAME}"
curl --fail-with-body -X POST "https://api.deepraxis.ai/automation/v1/workflows/docs-samples/${WORKFLOW_NAME}/versions/1.0.0/deprecate" \
-H "Authorization: Bearer $PRAXIS_API_KEY" \
-H "Content-Type: application/json" \
--data '{
"message": ""
}'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.deprecate({
"path": {
"ns": "docs-samples",
"name": env("WORKFLOW_NAME"),
"version": "1.0.0"
},
"body": {
"message": ""
}
});
console.log(result);Response
HTTP 200
Success
application/json
| Field | Type | Description |
|---|---|---|
| id | string | required; Version id, prefixed scv_ for scripts and wfv_ for workflows. |
| 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. |
| version | string | required; Version number (semver, with +build metadata removed). |
| digest | string | required; Content digest of the source and contract. |
| source | string | required; Full source of this version. Version lists omit it unless expand=source is given. |
| input_schema | object | required; Any JSON object whose keys are strings and whose values are any JSON value. |
| input_schema.* (variant 5) | object | Recursive JSON value. |
| input_schema.* (variant 6)[] | null / string / number / boolean / object / JSON[] | Recursive JSON value. |
| output_schema | object | required; 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. |
| output_schema.* (variant 5) | object | Recursive JSON value. |
| output_schema.* (variant 6)[] | null / string / number / boolean / object / JSON[] | Recursive JSON value. |
| references | object[] | required; Actions, platform APIs, scripts and workflows this version depends on. Script and workflow dependencies are locked to exact versions at publication. |
| 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). |
| references[].name | string | required; Referenced item: ns/name for an action, the operation name for a platform API, ns/name for a script or workflow. |
| references[].range | string | optional; Version range or tag as written in the reference (npm rules); absent when none was written. |
| references[].locked_version | string | optional; Exact version locked at publication; only script and workflow dependencies have it, actions and platform APIs are not locked. |
| outline | null / object[] | required; Step outline of a workflow as OutlineNode entries generated statically by the parser; null for scripts. |
| outline (variant 2)[].name | string | required; Step name, the key of the step in the workflow YAML. |
| outline (variant 2)[].reference | string | required; JSON Pointer of the step in the workflow document, for example /do/0/start; equals Task.reference at run time. |
| 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. |
| outline (variant 2)[].target | string | optional; Target of the step: the action ns/name for a call step, ns/name@range for a run step; absent for other kinds. |
| outline (variant 2)[].wait | object | optional; Summary of a waiting step: the duration (seconds or duration) or the event type being awaited (event). no additional fields. |
| outline (variant 2)[].wait.until | string | optional; Absolute instant at which the wait ends, given only when it is statically known; the outline does not populate it today. |
| outline (variant 2)[].wait.seconds | number | optional; Wait in seconds when statically convertible, including duration objects and convertible ISO durations. |
| outline (variant 2)[].wait.event | string | optional; Event type a listen step waits for. |
| outline (variant 2)[].wait.duration | string | optional; Original duration or runtime expression that cannot be statically converted to seconds. |
| outline (variant 2)[].loop | object | optional; Loop information {each, in} of a for step. no additional fields. |
| outline (variant 2)[].loop.each | string | required; Loop variable name; item when not specified. |
| outline (variant 2)[].loop.in | string | required; Verbatim expression of the collection being iterated. |
| outline (variant 2)[].children | object[] | optional; Nested child steps (inside do, fork branches, try and catch). |
| outline (variant 2)[].children[] | object | Recursive JSON value. |
| sdk_version | null / string | required; SDK version used when publishing a script; null for workflows. |
| published_at | string | required; Publication time (RFC 3339 UTC). |
| published_by | object | required; 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. |
| 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. |
| published_by.id | string | required; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string. |
| deprecated | null / string | required; Deprecation message, or null when not deprecated. A deprecated version still runs, but resolving a range or tag prefers versions that are not deprecated. |
| deprecated_at | null / string | required; Time the version was deprecated (RFC 3339 UTC), or null. |
| deprecated_by | null / object | required; Principal that deprecated the version, or null. |
| 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. |
| deprecated_by (variant 2).id | string | required; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string. |
Measured response
HTTP 200
{
"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,
"source": "document:\n dsl: '1.0.3'\n namespace: docs-samples\n name: sample-workflows-1791867412840-b05e8a\n version: '1.0.0'\ndo:\n - answer:\n set:\n answer: 42\n"
}Errors
| HTTP | Codes and description |
|---|---|
| 400 | INVALID_PARAMS: Invalid request parameters, path, cursor, or body format. |
| 403 | NAMESPACE_FORBIDDEN: The namespace is read-only, or the run token does not permit this call. |
| 404 | TARGET_NOT_FOUND: The target does not exist or has an incompatible type. VERSION_NOT_FOUND: The requested version or revision does not exist. |
| 409 | TARGET_ARCHIVED: The target is archived and cannot be used for this operation; action execution error detail includes ns/name. |
| 412 | PRECONDITION_FAILED: The revision, source digest, or concurrent write precondition does not match. |
| default | RFC 9457 automation problem. 429 includes Retry-After. |
Authentication and common errors · Retain the X-Request-Id response header for troubleshooting.