# List script versions (/en/docs/api/native/automation/listScriptVersions)





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/scripts/{ns}/{name}/versions`

## Authentication [#authentication]

`Authorization: Bearer $PRAXIS_API_KEY`

## Request fields [#request-fields]

| Parameter | Type | Description |
| --- | --- | --- |
| path: ns | `string` | required; Namespace, folded to lowercase; matches [a-z0-9][a-z0-9._-]&#123;0,63&#125;. praxis is read-only. |
| path: name | `string` | required; Name, folded to lowercase; matches [a-z0-9][a-z0-9._-]&#123;0,63&#125;. |
| query: limit | `integer` | optional; Page size: integer 1–100, default 25. minimum: 1; maximum: 100 |
| query: cursor | `string` | optional; 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 [#examples]

[SDK installation and example environment](/en/docs/api/native/automation)

Set these environment variables to your own resources:

| Variable | Source |
| --- | --- |
| SCRIPT_NAME | [name returned by creating a script](/en/docs/api/native/automation/createScript) |

```bash
: "${SCRIPT_NAME:?Set SCRIPT_NAME}"
curl --fail-with-body -X GET "https://api.deepraxis.ai/automation/v1/scripts/docs-samples/${SCRIPT_NAME}/versions" \
  -H "Authorization: Bearer $PRAXIS_API_KEY"
```

```typescript
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.scripts.versions.list({
  "path": {
    "ns": "docs-samples",
    "name": env("SCRIPT_NAME")
  }
});
console.log(result);
```

## Response [#response]

### HTTP 200 [#http-200]

Success

`application/json`

| Field | Type | Description |
| --- | --- | --- |
| data | `object[]` | required; Script versions (source only with expand=source) on this page, ordered by semver descending. |
| data[].id | `string` | required; 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[].version | `string` | required; Version number (semver, with +build metadata removed). |
| data[].digest | `string` | required; Content digest of the source and contract. |
| data[].source | `string` | optional; Full source of this version. Version lists omit it unless expand=source is given. |
| data[].input_schema | `object` | required; Any JSON object whose keys are strings and whose values are any JSON value. |
| data[].input_schema.* (variant 5) | `object` | Recursive JSON value. |
| data[].input_schema.* (variant 6)[] | `null` / `string` / `number` / `boolean` / `object` / `JSON[]` | Recursive JSON value. |
| data[].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. |
| data[].output_schema.* (variant 5) | `object` | Recursive JSON value. |
| data[].output_schema.* (variant 6)[] | `null` / `string` / `number` / `boolean` / `object` / `JSON[]` | Recursive JSON value. |
| data[].references | `object[]` | 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[].name | `string` | required; Referenced item: ns/name for an action, the operation name for a platform API, ns/name for a script or workflow. |
| data[].references[].range | `string` | optional; Version range or tag as written in the reference (npm rules); absent when none was written. |
| data[].references[].locked_version | `string` | optional; Exact version locked at publication; only script and workflow dependencies have it, actions and platform APIs are not locked. |
| data[].outline | `null` / `object[]` | required; Step outline of a workflow as OutlineNode entries generated statically by the parser; null for scripts. |
| data[].outline (variant 2)[].name | `string` | required; Step name, the key of the step in the workflow YAML. |
| data[].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. |
| 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)[].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. |
| data[].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. |
| data[].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. |
| data[].outline (variant 2)[].wait.seconds | `number` | optional; Wait in seconds when statically convertible, including duration objects and convertible ISO durations. |
| data[].outline (variant 2)[].wait.event | `string` | optional; Event type a listen step waits for. |
| data[].outline (variant 2)[].wait.duration | `string` | optional; Original duration or runtime expression that cannot be statically converted to seconds. |
| data[].outline (variant 2)[].loop | `object` | optional; Loop information &#123;each, in&#125; of a for step. no additional fields. |
| data[].outline (variant 2)[].loop.each | `string` | required; Loop variable name; item when not specified. |
| data[].outline (variant 2)[].loop.in | `string` | required; Verbatim expression of the collection being iterated. |
| data[].outline (variant 2)[].children | `object[]` | optional; Nested child steps (inside do, fork branches, try and catch). |
| data[].outline (variant 2)[].children[] | `object` | Recursive JSON value. |
| data[].sdk_version | `null` / `string` | required; SDK version used when publishing a script; null for workflows. |
| data[].published_at | `string` | required; Publication time (RFC 3339 UTC). |
| data[].published_by | `object` | required; Principal &#123;type, id&#125; 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.id | `string` | required; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string. |
| data[].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. |
| data[].deprecated_at | `null` / `string` | required; Time the version was deprecated (RFC 3339 UTC), or null. |
| data[].deprecated_by | `null` / `object` | required; 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).id | `string` | required; Principal identifier whose meaning follows type: a user, API key, agent, run or trigger id. Treat it as an opaque string. |
| next_cursor | `null` / `string` | required; 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 [#measured-response]

HTTP 200

```json
{
  "data": [
    {
      "id": "scv_00mv67lza679fc5498438040079f0c5684208c4915",
      "kind": "script",
      "version": "1.0.0",
      "digest": "7ae6678882a4ef2ea96e401c105d5c6ef512917cd72a9235289d2a3bf1f1b49d",
      "input_schema": {
        "type": "object",
        "properties": {
          "n": {
            "type": "number"
          }
        },
        "required": [
          "n"
        ]
      },
      "output_schema": {
        "type": "object",
        "properties": {
          "answer": {
            "type": "number"
          }
        },
        "required": [
          "answer"
        ]
      },
      "references": [],
      "outline": null,
      "sdk_version": "0.1.0",
      "published_at": "2026-10-13T04:57:22.398Z",
      "published_by": {
        "type": "api_key",
        "id": "key_3e00b8984967"
      },
      "deprecated": null,
      "deprecated_at": null,
      "deprecated_by": null
    }
  ],
  "next_cursor": null
}
```

## Errors [#errors]

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

[Authentication and common errors](/en/docs/api/errors) · Retain the `X-Request-Id` response header for troubleshooting.
