跳转到主要内容
POST /api/v1/forward/schedules/{schedule_id} 使用 merge-patch 语义:请求体中出现的字段会被更新,未出现字段保持不变。

请求头

Header是否必填说明
AuthorizationBearer <PAT>
Content-Typeapplication/json
Idempotency-Key有副作用请求可选的幂等键。

路径参数

参数类型是否必填说明
schedule_idstringForward Schedule ID。

请求体参数

参数类型是否必填说明
namestring新的 Schedule 名称。
descriptionstring新的 Schedule 描述。
template_idstring新的 Forward Template ID。
initial_eventsarray替换初始事件列表。
executionobject合并更新执行策略。
trigger_policyobject | null更新触发策略;null 表示改为 manual。
environment_idstring新的执行环境。
metadataobject合并更新 metadata;value 为 null 删除 key。

触发策略

trigger_policy 是按 type 分发的对象。创建和更新请求只接收配置字段:typeexpressiontimezone。更新时传 null 表示改为 {"type":"manual"}upcoming_runs_atlast_run_at 是服务端计算出的响应字段。
字段类型是否必填说明
typestringcrononceintervalmanual
expressionstring条件必填触发表达式;crononceinterval 必填,manual 不需要。
timezonestring条件必填IANA timezone,例如 Asia/Shanghaicron 必填,once 在表达式不带时区时必填,intervalmanual 可省略。
upcoming_runs_atarray响应返回后续触发时间,UTC ISO 8601。当前实现返回 [] 或最多一个下一次计划触发时间。
last_run_atstring | null响应返回最近一次触发时间。
type创建/更新入参说明
crontypeexpressiontimezone使用 5 字段 cron 表达式按指定 IANA timezone 重复触发。
oncetypeexpression、可选 timezone按 ISO 8601 时间触发一次;表达式不带 offset 时必须提供 timezone
intervaltypeexpression按 ISO 8601 duration 重复触发,例如 PT15M
manualtype不自动触发,只能通过 Run Schedule 接口手动执行。
typeexpression 格式示例说明
cron标准 5 字段 cron0 9 * * *分钟级日历规则;不支持秒字段和 6 字段 cron。
onceISO 8601 绝对时间2026-06-23T09:00:002026-06-23T01:00:00Z目标时间必须至少晚于服务端当前时间 1 分钟。
intervalISO 8601 durationPT15MPT1HP1D固定间隔触发,最小粒度 1 分钟。
manual省略或空字符串-不产生计划触发时间。

执行策略

execution 使用合并更新语义,未出现的字段保持原值。
字段类型默认值说明
session_modestringnew_sessionSession 使用方式,取值 new_sessionreuse_session
max_concurrent_runsinteger1同一个 Schedule 最大并发 Run 数。
max_attemptsinteger1预留字段;当前实现只记录、校验和回显,单个 Run 仍只执行一次。
timeout_msinteger300000单次尝试超时时间。
session_mode说明
new_session每次触发都创建新的执行 Session,不延续历史上下文。
reuse_sessionForward 为该 Schedule 管理一个固定执行 Session,并在多次触发间持续使用;调用方不能指定任意已有 session_id

示例请求

curl -s -X POST 'https://api.qoder.com/api/v1/forward/schedules/sched_019f00112233445566778899aabbccdd' \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
  "name": "Weekday tech brief",
  "trigger_policy": {
    "type": "cron",
    "expression": "0 9 * * 1-5",
    "timezone": "Asia/Shanghai"
  }
}'

示例响应

HTTP 200 OK
{
  "id": "sched_019f00112233445566778899aabbccdd",
  "identity_id": "idn_019eabc123",
  "template_id": "tmpl_support",
  "name": "Weekday tech brief",
  "description": "Generate a daily technology news summary",
  "status": "active",
  "initial_events": [
    {
      "type": "user.message",
      "content": "Summarize current technology news in five bullet points."
    }
  ],
  "execution": {
    "session_mode": "new_session",
    "max_concurrent_runs": 1,
    "max_attempts": 1,
    "timeout_ms": 300000
  },
  "trigger_policy": {
    "type": "cron",
    "expression": "0 9 * * 1-5",
    "timezone": "Asia/Shanghai",
    "upcoming_runs_at": [
      "2026-06-23T01:00:00Z"
    ]
  },
  "environment_id": "env_019e64e01a137caf953ac2ac7b42ec5c",
  "sinks": [],
  "metadata": {},
  "created_at": "2026-06-22T10:00:00Z",
  "updated_at": "2026-06-22T10:30:00Z"
}

响应字段

字段类型说明
返回值object更新后的 Schedule 对象。

错误

HTTPTypeCode触发条件
400invalid_request_errorinvalid_trigger_policy触发策略不合法。
400invalid_request_errorunsupported_sinks_input请求体包含不支持的 sinks
404not_found_errorschedule_not_foundSchedule 不存在。
409invalid_request_errorschedule_archivedSchedule 已归档。
401authentication_errorauthentication_requiredPAT 无效或已过期。

注意事项

  • HTTP 更新请求不支持更新 sinks
  • reuse_session 表示 Forward 为该 Schedule 管理固定执行 Session,调用方不能指定任意已有 Session。

相关

获取 Schedule

暂停 Schedule