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

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}.
path: revisionstringrequired; Action revision ID (actr_); the query parameter filters invocation records.

Examples

Set these environment variables to your own resources:

: "${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

FieldTypeDescription
currentbooleanrequired; true when this is the action's current revision.
rollbackobjectrequired; Whether rolling back to this revision is possible, judged by the server against the current revision. no additional fields.
rollback.allowedbooleanrequired; true when rolling back to this revision is allowed; when false, issues explains why.
rollback.issuesobject[]required; Incompatibilities a rollback would cause, each with pointer and reason; empty when allowed is true.
rollback.issues[].pointerstringrequired; JSON Pointer (RFC 6901) to the incompatible location, relative to the action's input_schema or output_schema.
rollback.issues[].reasonstringrequired; Why this location is incompatible with earlier revisions (inputs may only widen, outputs may only narrow).
idstringrequired; Revision id, prefixed actr_; used for display and as the revision of a rollback, and cannot be referenced directly by scripts.
digeststringrequired; Content digest of the contract and implementation; an update with identical content does not create a new revision.
input_schemaobjectrequired; Any JSON object whose keys are strings and whose values are any JSON value.
input_schema.* (variant 5)objectRecursive JSON value.
input_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
output_schemaobjectrequired; Any JSON object whose keys are strings and whose values are any JSON value.
output_schema.* (variant 5)objectRecursive JSON value.
output_schema.* (variant 6)[]null / string / number / boolean / object / JSON[]Recursive JSON value.
errorsobject[]required; Errors the action declares it may raise, each with type, code and description.
errors[].typestringrequired; Error type: a stable URI or a standard Open Workflow type such as validation, timeout, communication or runtime.
errors[].codestringoptional; Optional stable error code callers can branch on.
errors[].descriptionstringrequired; What this error means and when it occurs, written for callers.
annotationsobjectrequired; Declared action behaviour {read_only, idempotent}; keys not supplied at creation default to false. no additional fields.
annotations.read_onlybooleanrequired; true declares that the action does not change external state and only reads data.
annotations.idempotentbooleanrequired; 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_msnumberrequired; Timeout of one execution in milliseconds; when not supplied it defaults to 30000 for code and 600000 for container or shell implementations.
implementationobject / object / objectrequired; 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).sourcestringrequired; 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).imagestringrequired; Container image reference.
implementation (variant 2).commandstring[]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).scriptstringrequired; 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_apisstring[]required; Platform APIs derived from the code; also the scopes of the action's run token (least privilege).
created_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.
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.idstringrequired; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string.
messagenull / stringrequired; Note supplied when this revision was created, or null.
created_atstringrequired; 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

HTTPCodes and description
400INVALID_PARAMS: Invalid request parameters, path, cursor, or body format.
404ACTION_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.
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