# 列出工作流 (/docs/api/native/automation/listWorkflows)





列出可见工作流的摘要、最新版本、标签及近七天统计；默认排除已归档条目。

`GET /automation/v1/workflows`

## 鉴权 [#鉴权]

`Authorization: Bearer $PRAXIS_API_KEY`

## 请求字段 [#请求字段]

| 参数 | 类型 | 说明 |
| --- | --- | --- |
| query: limit | `integer` | 可选；每页条数，整数 1–100，默认 25。 minimum: 1；maximum: 100 |
| query: cursor | `string` | 可选；上一页返回的 next_cursor，不透明字符串；保持原查询条件继续翻页。 |
| query: q | `string` | 可选；不区分大小写，按名称或说明的字面子串匹配；% 与 _ 无通配含义。 |
| query: namespace | `string[]` | 可选；仅返回指定命名空间的定义，名称按小写匹配。 多个值以逗号分隔，匹配任一值。 minItems: 1 |
| query: scope | `"platform"` / `"own"[]` | 可选；platform 仅平台定义，own 仅租户自建定义；省略返回两者。 多个值以逗号分隔，匹配任一值。 minItems: 1 |
| query: archived | `boolean` | 可选；true 仅已归档，false 仅未归档；默认 false。 |
| query: labels | `object` | 可选；按标签过滤，使用 labels[k]=v；同键逗号多值取任一，不同键同时满足。 |
| query: created_at[gte] | `string` | 可选；创建时间下界，包含边界；使用带时区的 ISO 8601 时间。 format: "date-time" |
| query: created_at[lte] | `string` | 可选；创建时间上界，包含边界；使用带时区的 ISO 8601 时间。 format: "date-time" |

## 示例 [#示例]

[SDK 安装与示例环境](/docs/api/native/automation)

```bash
curl --fail-with-body -X GET "https://api.deepraxis.ai/automation/v1/workflows" \
  -H "Authorization: Bearer $PRAXIS_API_KEY" \
  --get \
  --data-urlencode "namespace=docs-samples" \
  --data-urlencode "limit=1"
```

```typescript
import { createAutomationClient } from '@deepractice-ai/praxis-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.list({
  "query": {
    "namespace": [
      "docs-samples"
    ],
    "limit": 1
  }
});
console.log(result);
```

## 响应 [#响应]

### HTTP 200 [#http-200]

Success

`application/json`

| 字段 | 类型 | 说明 |
| --- | --- | --- |
| data | `object[]` | 必填 / 必有；本页的工作流摘要，按 created_at 倒序、id 倒序排列。 |
| data[].id | `string` | 必填 / 必有；编排 ID，脚本前缀 scr_，工作流前缀 wf_；日常使用 namespace 与 name。 |
| data[].kind | `"script"` / `"workflow"` | 必填 / 必有；编排类型。script 为 TypeScript 脚本，一次执行；workflow 为 YAML 工作流，由步骤组成，可等待事件、定时器或子运行并可暂停。 |
| data[].namespace | `string` | 必填 / 必有；命名空间，引用形如 namespace/name@版本。 |
| data[].name | `string` | 必填 / 必有；名字，与 namespace 一起在租户内唯一，脚本与工作流共用命名空间，重名返回 409 NAME_TAKEN。 |
| data[].description | `string` | 必填 / 必有；说明文字，最多 1000 字符。 |
| data[].labels | `object` | 必填 / 必有；用户自定义标签：字符串键值对，用于分类与列表过滤（labels[key]=value）；键不能以 praxis. 开头。 |
| data[].owner | `string` | 必填 / 必有；所属租户，由网关注入；按不透明字符串处理。 |
| data[].latest_version | `null` / `object` | 必填 / 必有；latest 标签指向的已发布版本 &#123;version, published_at&#125;；尚未发布为 null。 |
| data[].latest_version（分支2).version | `string` | 必填 / 必有；最新发布版本的版本号（semver）。 |
| data[].latest_version（分支2).published_at | `string` | 必填 / 必有；该版本的发布时间（RFC 3339 UTC）。 |
| data[].dist_tags | `object` | 必填 / 必有；标签到精确版本号的映射，例如 latest 指向 1.2.0；用 ns/name@标签 运行时按此解析。 |
| data[].draft_changed | `boolean` | 必填 / 必有；true 表示草稿内容（摘要）不同于 latest 版本，即有未发布的改动。 |
| data[].latest_run | `null` / `object` | 必填 / 必有；该编排最近一次运行的摘要；还没有运行为 null。 |
| data[].latest_run（分支2).id | `string` | 必填 / 必有；运行 ID（run_ 前缀），可用于 runs.retrieve。 |
| data[].latest_run（分支2).number | `null` / `number` | 必填 / 必有；运行在该脚本或工作流内的递增序号。 |
| data[].latest_run（分支2).status | `"running"` / `"completed"` / `"faulted"` / `"cancelled"` / `"pending"` / `"waiting"` / `"suspended"` | 必填 / 必有；运行状态。pending 已创建尚未开始；running 执行中；waiting 工作流在等待事件、定时器或子运行；suspended 工作流被暂停；cancelled 已取消；faulted 失败；completed 成功完成。 |
| data[].latest_run（分支2).created_at | `string` | 必填 / 必有；运行创建时间（RFC 3339 UTC）。 |
| data[].latest_run（分支2).current_wait | `null` / `object` | 必填 / 必有；当前未完成的等待点；没有等待为 null。 |
| data[].latest_run（分支2).current_wait（分支2).id | `string` | 必填 / 必有；等待点 ID，前缀 wait_；完成事件等待点时作为路径中的 wait_id。 |
| data[].latest_run（分支2).current_wait（分支2).run_id | `string` | 必填 / 必有；所属运行 ID（run_ 前缀）。 |
| data[].latest_run（分支2).current_wait（分支2).kind | `"event"` / `"timer"` / `"child"` | 必填 / 必有；等待类型。event 等待外部事件，可通过 runs.completeWait 提交；timer 等待到达 resume_at；child 等待子运行结束。 |
| data[].latest_run（分支2).current_wait（分支2).state | `"cancelled"` / `"open"` / `"resolved"` / `"expired"` | 必填 / 必有；等待点状态。open 仍在等待；resolved 已被满足；expired 已超过 expires_at；cancelled 已被取消，不会再被满足。 |
| data[].latest_run（分支2).current_wait（分支2).task | `null` / `object` | 必填 / 必有；产生该等待的工作流步骤 &#123;reference, name&#125;；没有对应步骤为 null。 |
| data[].latest_run（分支2).current_wait（分支2).task（分支2).reference | `string` | 必填 / 必有；步骤的 JSON Pointer，例如 /do/2/wait_payment。 |
| data[].latest_run（分支2).current_wait（分支2).task（分支2).name | `string` | 必填 / 必有；步骤名，即工作流 YAML 中的键。 |
| data[].latest_run（分支2).current_wait（分支2).resume_at | `null` / `string` | 必填 / 必有；kind=timer 时恢复运行的时刻（RFC 3339 UTC）；其它类型为 null。 |
| data[].latest_run（分支2).current_wait（分支2).event_type | `null` / `string` | 必填 / 必有；kind=event 时等待的事件类型；其它类型为 null。 |
| data[].latest_run（分支2).current_wait（分支2).child_run_id | `null` / `string` | 必填 / 必有；kind=child 时被等待的子运行 ID；其它类型为 null。 |
| data[].latest_run（分支2).current_wait（分支2).created_at | `string` | 必填 / 必有；等待点创建时间（RFC 3339 UTC）。 |
| data[].latest_run（分支2).current_wait（分支2).expires_at | `null` / `string` | 必填 / 必有；等待点到期时间（RFC 3339 UTC）；没有期限为 null。 |
| data[].latest_run（分支2).current_wait（分支2).resolved_at | `null` / `string` | 必填 / 必有；等待点被满足的时间（RFC 3339 UTC）；尚未满足为 null。 |
| data[].stats_7d | `object` | 必填 / 必有；近七天的运行统计：按运行结束日期累计，在运行结束时更新，读取时不扫描运行。 不接受额外字段。 |
| data[].stats_7d.runs | `number` | 必填 / 必有；近七天内结束的运行总数（任意终态）。 |
| data[].stats_7d.failures | `number` | 必填 / 必有；其中以 faulted 结束的运行数。 |
| data[].archived_at | `null` / `string` | 必填 / 必有；归档时间；未归档为 null。归档后名字保留，不可复用。 |
| data[].created_at | `string` | 必填 / 必有；创建时间（RFC 3339 UTC）。 |
| data[].updated_at | `string` | 必填 / 必有；最近一次更新的时间（RFC 3339 UTC）。 |
| next_cursor | `null` / `string` | 必填 / 必有；下一页游标，原样传给 cursor 参数并保持原查询条件；没有更多页为 null。接口不返回总数。 |

### 实测响应 [#实测响应]

HTTP 200

```json
{
  "data": [
    {
      "id": "wf_00mv67m4jad0d5c2a3d1e04dc9ac4c18cff616eca7",
      "owner": "tnt_3a9759864ccb4e00",
      "kind": "workflow",
      "namespace": "docs-samples",
      "name": "sample-workflows-1791867412840-b05e8a",
      "description": "",
      "labels": {},
      "latest_version": null,
      "dist_tags": {},
      "draft_changed": true,
      "latest_run": null,
      "stats_7d": {
        "runs": 0,
        "failures": 0
      },
      "archived_at": null,
      "created_at": "2026-10-13T04:57:29.206Z",
      "updated_at": "2026-10-13T04:57:29.206Z"
    }
  ],
  "next_cursor": null
}
```

## 错误码 [#错误码]

| HTTP | 错误码与说明 |
| --- | --- |
| 400 | INVALID_PARAMS：请求参数、路径、游标或请求体格式无效。 |
| default | RFC 9457 automation problem. 429 includes Retry-After. |

[鉴权错误与通用错误](/docs/api/errors) · 排查时保留响应头 `X-Request-Id`。
