Automation
Get an action revision
Read a specific revision with its full implementation and rollback compatibility result.
Read a specific revision with its full implementation and rollback compatibility result. A missing revision returns VERSION_NOT_FOUND. Details always return full source.
GET /automation/v1/actions/{ns}/{name}/revisions/{revision}
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: revision | string | required; Action revision ID (actr_); the query parameter filters invocation records. |
Examples
Set these environment variables to your own resources:
| Variable | Source |
|---|---|
| ACTION_NAME | name returned by creating an action |
| REVISION_ID | Existing function revision id |
: "${ACTION_NAME:?Set ACTION_NAME}"
: "${REVISION_ID:?Set REVISION_ID}"
curl --fail-with-body -X GET "https://api.deepraxis.ai/automation/v1/actions/docs-samples/${ACTION_NAME}/revisions/${REVISION_ID}" \
-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.actions.revisions.retrieve({
"path": {
"ns": "docs-samples",
"name": env("ACTION_NAME"),
"revision": env("REVISION_ID")
}
});
console.log(result);Response
HTTP 200
Success
application/json
| Field | Type | Description |
|---|---|---|
| current | boolean | required; true when this is the action's current revision. |
| rollback | object | required; Whether rolling back to this revision is possible, judged by the server against the current revision. no additional fields. |
| rollback.allowed | boolean | required; true when rolling back to this revision is allowed; when false, issues explains why. |
| rollback.issues | object[] | required; Incompatibilities a rollback would cause, each with pointer and reason; empty when allowed is true. |
| rollback.issues[].pointer | string | required; JSON Pointer (RFC 6901) to the incompatible location, relative to the action's input_schema or output_schema. |
| rollback.issues[].reason | string | required; Why this location is incompatible with earlier revisions (inputs may only widen, outputs may only narrow). |
| id | string | required; Revision id, prefixed actr_; used for display and as the revision of a rollback, and cannot be referenced directly by scripts. |
| digest | string | required; Content digest of the contract and implementation; an update with identical content does not create a new revision. |
| 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; Any JSON object whose keys are strings and whose values are any JSON value. |
| output_schema.* (variant 5) | object | Recursive JSON value. |
| output_schema.* (variant 6)[] | null / string / number / boolean / object / JSON[] | Recursive JSON value. |
| errors | object[] | required; Errors the action declares it may raise, each with type, code and description. |
| errors[].type | string | required; Error type: a stable URI or a standard Open Workflow type such as validation, timeout, communication or runtime. |
| errors[].code | string | optional; Optional stable error code callers can branch on. |
| errors[].description | string | required; What this error means and when it occurs, written for callers. |
| annotations | object | required; Declared action behaviour {read_only, idempotent}; keys not supplied at creation default to false. no additional fields. |
| annotations.read_only | boolean | required; true declares that the action does not change external state and only reads data. |
| annotations.idempotent | boolean | required; true declares that repeating a call with the same input has the same effect as calling once; retries of such a action reuse one idempotency key (run_id plus step path, without the attempt number). |
| timeout_ms | number | required; Timeout of one execution in milliseconds; when not supplied it defaults to 30000 for code and 600000 for container or shell implementations. |
| implementation | object / object / object | required; code uses language=ts and source. container and shell are not yet available; creation returns OPERATION_NOT_SUPPORTED. |
| implementation (variant 1).kind | "code" | required; Always code: implemented by source code. |
| implementation (variant 1).language | "ts" | required; Source language; only ts (TypeScript) is supported now. |
| implementation (variant 1).source | string | required; Complete TypeScript source of the action; empty for built-in actions. |
| implementation (variant 2).kind | "container" | required; Always container: implemented as a container image (not yet available). |
| implementation (variant 2).image | string | required; Container image reference. |
| implementation (variant 2).command | string[] | required; Command and arguments to execute in the container. |
| implementation (variant 3).kind | "shell" | required; Always shell: implemented as a shell script (not yet available). |
| implementation (variant 3).script | string | required; Full text of the shell script to run. |
| host | "builtin" / "isolate" / "sandbox" | required; Where an action runs, computed at publication. builtin is a platform-provided action; isolate runs user code in an isolated Worker isolate; sandbox runs in a sandbox (container and shell implementations). |
| platform_apis | string[] | required; Platform APIs derived from the code; also the scopes of the action's run token (least privilege). |
| created_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. |
| created_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. |
| created_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. |
| message | null / string | required; Note supplied when this revision was created, or null. |
| created_at | string | required; Time this revision was created (RFC 3339 UTC). |
Measured response
HTTP 200
{
"id": "actr_00mv67loz3e46938b8ecf54e57b8f31297df016a1c",
"digest": "e35c209873c60486ca8da455878062cb7ea572a6147ce3ca03e0693b4769fa45",
"input_schema": {
"type": "object",
"properties": {
"n": {
"type": "number"
}
},
"required": [
"n"
],
"additionalProperties": false
},
"output_schema": {
"type": "object",
"properties": {
"answer": {
"type": "number"
}
},
"required": [
"answer"
],
"additionalProperties": false
},
"errors": [],
"annotations": {
"read_only": false,
"idempotent": false
},
"timeout_ms": 30000,
"implementation": {
"kind": "code",
"language": "ts",
"source": "export default async (input: { n: number }) => ({ answer: input.n + 1 });"
},
"host": "isolate",
"platform_apis": [],
"created_by": {
"type": "api_key",
"id": "key_3e00b8984967"
},
"message": null,
"created_at": "2026-10-13T04:57:09.039Z",
"current": false,
"rollback": {
"allowed": true,
"issues": []
}
}Errors
| HTTP | Codes and description |
|---|---|
| 400 | INVALID_PARAMS: Invalid request parameters, path, cursor, or body format. |
| 404 | ACTION_NOT_FOUND: The action does not exist or is not visible to this tenant; a same-name script/workflow adds a hint pointing to its endpoint. VERSION_NOT_FOUND: The requested version or revision does not exist. |
| default | RFC 9457 automation problem. 429 includes Retry-After. |
Authentication and common errors · Retain the X-Request-Id response header for troubleshooting.