Files
patbond-doc/docs/api/index.md
T
lixi f848476c16
CI / docs-build (push) Successful in 1m12s
docs(api): M3 契约冻结 v1.3.0——community/media 域合入
按第二波定型表(iteration-3 报告 13/15/16/17)将 community/media 域草案
合入正典 openapi.yaml,1.2.0 → 1.3.0:

- 新增 13 路径 / 19 操作(媒体两步上传、帖子生命周期、公共 Feed、
  单层评论、点赞/收藏/关注最小接口),正典总量 31 路径 / 43 操作
- 新增 27 schemas / 4 参数 / 7 响应组件;错误码表补 9 码
  (40301/40403/40404/40405/40406/40905/42203/42204/42205)
- info 头新增「Community / Media 域约定」:Idempotency-Key 必带 +
  规范化 request_hash 比对(与 pets 域差异成文)、私有桶 + 时效性
  预签名 GET 读取语义、防枚举码族、互动面=帖子公开面
- 草案 10 处 TODO-FREEZE 全部回填删除;26 项草案→冻结修正照单全收
  (对照见 iteration-3/18 冻结报告,波末入档)
- index.md 端点清单同步;servers 增 :8084、tags 并入 6 个

api 侧字节级快照同步为硬依赖,由后续 api 侧工单执行。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-09 11:12:50 +08:00

29 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# API 契约
正式契约见 [openapi.yaml](openapi.yaml)OpenAPI 3v1.3.0),当前 31 路径 / 43 操作:
- 认证域(第一迭代冻结):注册、登录、刷新、退出、当前用户 5 个端点,统一错误信封 `{code, message, data}` 与错误码表,以及会话轮换与登录锁定策略说明。
- 埋点域(M2 第一波补录):`POST /api/v1/events` 批量上报产品事件——单批 1–50 条、202 逐条结果(accepted/duplicate/rejected)、`eventId` 幂等去重、唯一允许匿名的写端点(携带 Bearer 则完整校验)。
- 宠物健康档案域(M2 第二波冻结,12 路径;冻结报告为 iteration-2 的 19 号报告,波末入档):
- 宠物 CRUD`GET/POST /api/v1/pets``GET/PATCH /api/v1/pets/{petId}`(乐观锁、防枚举 404/40401、MANAGE 仅 owner
- 只读字典:`GET /api/v1/breeds``GET /api/v1/vaccine-catalog``?species=` 过滤)
- 体重记录:`GET/POST /api/v1/pets/{petId}/weights`cursor 分页正典 `{items, nextCursor, hasMore}`
- 疫苗记录:`GET/POST /api/v1/pets/{petId}/vaccinations``PATCH /api/v1/vaccinations/{vaccinationId}`(状态机 422/42201、剂次唯一 409/40904
- 健康事件:`GET/POST /api/v1/pets/{petId}/health-events``PATCH /api/v1/health-events/{eventId}`cursor 分页、金额整数分)
- 照护提醒:`GET/POST /api/v1/pets/{petId}/care-reminders``PATCH /api/v1/care-reminders/{reminderId}``?status=` 过滤、流转 422/42202
- 档案聚合:`GET /api/v1/pets/{petId}/summary`(最新体重、疫苗进度、下次接种、当月花费;`?tz=` 缺省 UTC
权限三档 READ/WRITE/MANAGEADR-015 三角色)、创建返回 201、PATCH 不支持清空回 null、四个记录类 POST 支持可选 `Idempotency-Key`;错误码新增 40300/40401/40402/40902/40903/40904/42201/42202。
- 社区与媒体域(M3 第二波冻结,13 路径;冻结报告为 iteration-3 的 18 号报告,波末入档):
- 媒体两步上传:`POST /api/v1/media/uploads``POST /api/v1/media/uploads/{assetId}/complete`(预签名 PUT 直传 + HEAD 校验确认;私有桶,一切读取 URL 为时效性预签名 GET)
- 帖子生命周期:`POST /api/v1/posts``GET/PATCH/DELETE /api/v1/posts/{postId}``GET /api/v1/me/posts`(草稿/编辑/发布/软删;发布 = `PATCH {status: published}`,乐观锁 409/40902,防枚举 404/40403
- 公共 Feed`GET /api/v1/feed``(published_at, id)` keyset 游标;FeedCard = 200 码点摘要 + 唯一封面行 + 计数)
- 单层评论:`GET/POST /api/v1/posts/{postId}/comments``DELETE /api/v1/comments/{commentId}`@ 回复 `replyToUserId`;仅评论作者可删,帖主不可删他人评论)
- 点赞/收藏:`PUT/DELETE /api/v1/posts/{postId}/like|bookmark``GET /api/v1/me/bookmarks`PUT/DELETE 语义幂等,响应回 `{liked, likeCount}` 族权威终态;收藏列表失效帖静默剔除)
- 关注最小接口:`PUT/DELETE /api/v1/users/{userId}/follow``GET /api/v1/users/{userId}/follow-stats`(自关注 422/42204,自取关 200 幂等 no-op
创建型写入(发帖/评论)`Idempotency-Key` **必带**1~128,比对规范化 request_hash,与 pets 域可选键刻意不同);互动面 = 帖子公开面(作者本人草稿在互动路径同样 404);错误码新增 40301/40403/40404/40405/40406/40905/42203/42204/42205。
约定:契约变更须先改本文件目录下的 OpenAPI,再改实现(契约先行);错误码只增不改义;**pets 域已冻结(1.2.0)、community/media 域已冻结(1.3.0)——冻结后任何字段变更须显著上报、两端同步**。