Skip to main content

订阅 CRUD

订阅 API 使用 camelCase 字段。服务端管理字段会在响应中返回,但不能出现在写请求里。

操作语义

AI 集成在更新或删除前,应该先查询并确认目标订阅;除非用户已经提供了准确的订阅 UUID。写操作需要带 write 权限的 API Key;只读 Key 会收到 403 insufficient_scope

分页

GET /api/v1/subscriptions 按创建时间倒序返回,支持两个可选查询参数: 响应中包含 pagination 对象。当 hasMoretrue 时,用 offset + limit 获取下一页。
超出范围的取值会返回 400 invalid_pagination

过滤与排序

GET /api/v1/subscriptions 在分页之外,还支持以下可选过滤器和排序: status=activeexpiringBefore 组合即可回答「哪些即将续费」。非法取值返回 400 invalid_query,并带 fieldsuggestedFix
响应会回显实际生效的查询,便于 Agent 确认结果来源:

订阅对象

可写字段

服务端管理这些字段:
  • id
  • createdAt
  • updatedAt
不要在 POSTPATCH 请求里发送服务端管理字段。

字段规则

nextPaymentDate 是权威的订阅计划日期。月付订阅通过 billingAnchorDay 保留原始日历日期,短月份只会临时落到月末,例如:1 月 31 日 → 2 月 28/29 日 → 3 月 31 日。如果服务是固定每 30 天扣费,而不是每月固定日期,请使用 period: "custom"customDate: "30"。响应中的 lastPaymentDate 只是反推得到的兼容字段,新集成不应再依赖它。

生命周期:取消、暂停、恢复 vs 删除

订阅有一个 statusactive(计费中)、paused(暂停)、cancelled(已取消、停止计费但保留历史)。修改状态是软操作——记录及其审计历史都会保留,可随时恢复为 active。而 DELETE 是永久删除,会一并移除该记录的审计历史。 当用户表示不再使用某服务但将来可能回来时,优先改状态而不是删除:
分析端点中,只有 active 订阅计入活跃支出。只有当用户希望永久删除记录时才用 DELETE

自然语言示例

新增订阅

用户意图:
API 调用:

修改计费周期

用户意图:
Agent 流程:
  1. 调用 GET /api/v1/subscriptions 找到 Netflix 记录。
  2. 向用户确认具体记录和修改内容。
  3. 调用 PATCH /api/v1/subscriptions/{id}

删除重复记录

用户意图:
Agent 流程:
  1. 调用 GET /api/v1/subscriptions 找到重复候选。
  2. 向用户确认订阅名称和 id。
  3. 调用 DELETE /api/v1/subscriptions/{id}

自定义计费周期

如果不是月付或年付,把 period 设为 custom,并把 customDate 设为表示天数的正整数字符串。
固定每 30 天续费时,把 customDate 设为 "30";不要选择 monthly custom 改回 monthlyyearly 时,省略 customDate。服务端会清理旧的自定义计费数据。

AI tool schema

使用 ai-tools.json 获取 tool/function 定义、风险等级和确认提示。