按明确的 Schedule ID 批量归档 Forward Schedule。
POST /api/v1/forward/schedules/archive
该接口只执行归档,不物理删除 Schedule 或 Schedule Run。仅允许 PAT 或管理员 SAT 调用;Identity-bound SAT 无权执行批量归档。
请求头
| Header | 是否必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <PAT 或管理员 SAT> |
Content-Type | 是 | application/json |
Idempotency-Key | 否 | 相同 owner、路径和请求体可安全重放。 |
请求体参数
| 参数 | 类型 | 是否必填 | 说明 |
|---|---|---|---|
schedule_ids | array<string> | 是 | 去重后必须包含 1~50 个非空 Schedule ID。 |
400 invalid_request_body。
示例请求
清理指定 Identity 或当前 owner 的全部 Schedule
接口不提供无上限同步归档整个 Identity 或 owner 的方式。先通过 GET /api/v1/forward/schedules?identity_id=<id>&limit=100 查询指定 Identity,或省略 identity_id 查询当前 owner;沿响应中的 last_id 继续传 after_id,确认目标后再将 ID 按每批最多 50 个提交。建议每批使用独立的 Idempotency-Key。
单批原子,跨批不原子。如果清理期间可能创建新 Schedule,完成一轮后应从第一页重新查询,直到没有目标。
示例响应
archived_count 表示本次从未归档变为已归档的 Schedule 数量;已归档目标不重复计数。
归档语义
active和pausedSchedule 都可以归档。归档会设置archived_at、清除下次计划触发时间,并阻止创建新的 Run。- 服务端先在当前 owner 内解析全部 ID;任一 ID 不存在或属于其他 owner 时整批返回 404,不部分归档,也不指出失败 ID。
- 已归档 ID 是幂等 no-op;如果所有目标都已归档,返回
archived_count: 0。 - 已有
pending或runningRun 不阻断归档,也不会被取消、跳过、强杀、修改或删除。 - 归档后的 Schedule 可按 ID 查询,也可通过
include_archived=true列出;历史 Schedule Run 始终可查询。 - 未提供
Idempotency-Key时重复请求仍自然幂等;相同键和请求体会重放首次响应,并返回Idempotency-Replayed: true。 - Forward 不提供
DELETE /api/v1/forward/schedules,也不提供 Schedule 或 Schedule Run 的物理删除接口。
错误
| HTTP | Type | Code | 触发条件 |
|---|---|---|---|
| 400 | invalid_request_error | invalid_request_body | JSON 错误、存在 scope、identity_id 等未知字段或尾随额外 JSON 值。 |
| 400 | invalid_request_error | invalid_request | ID 为空或去重后数量不在 1~50。 |
| 401 | authentication_error | authentication_required | PAT 或 SAT 无效或已过期。 |
| 403 | permission_error | identity_mismatch | Identity-bound SAT 调用管理员批量归档接口。 |
| 404 | not_found_error | schedule_not_found | Schedule 不存在或属于其他 owner。 |
| 409 | conflict_error | idempotency_key_reused | 相同 Idempotency-Key 被用于不同请求体。 |

