业务接口
角色发布、回滚与 Webhook
按业务职责归类的既有接口契约
更新时间:2026年09月08日 13时20分03秒(UTC+8)
本次仅迁移文档,不改变接口行为。原有“候选”标识保留,表示发布状态尚需逐项核验,不代表本次已上线该能力。
Priya Live 发布接口
登录浏览器通过以下 BFF 操作发布,服务凭据始终只保留在 Web 服务端:
GET /api/priya-live/targets:服务端注入状态读取 Bearer,返回可发布目标;原/api/live-characters继续读取公开角色媒体目录,二者不混用。GET /api/canvas/projects/{projectId}/priya-live/releases:仅站点 bootstrap root 可读取该画布、该操作者最近 20 条本地 release summary,用于刷新页面后继续查看、重试或回滚。POST /api/canvas/projects/{projectId}/priya-live/releases:必须携带Idempotency-Key;同 key 与同一规范化请求返回原 release,不同请求返回409 / idempotency_conflict。GET /api/priya-live/releases/{releaseId}:返回queued / received / processing / active / rejected / rolled_back / superseded、脱敏错误与更新时间;服务端会合并 Priya 权威状态。POST /api/priya-live/releases/{releaseId}:本地 outbox 失败时重新排队;事件已送达时由服务端调用 Priya 的受 Bearer 保护 retry 接口。POST /api/priya-live/releases/{releaseId}/rollback:root 提交{expectedCurrentReleaseId, reason};服务端用目标端乐观锁回滚,首次创建撤回返回rolled_back,更新版本恢复上一版返回active与activeReleaseId。
Priya worker 使用独立 PRIYA_LIVE_READ_TOKEN 拉取不可变源数据:
GET /api/integrations/priya-live/releases/{releaseId}返回 canonical source manifest v2,并以ETag、X-Manifest-SHA256暴露相同摘要。GET /api/integrations/priya-live/releases/{releaseId}/assets/{assetId}从冻结 OSS key 经内部 Proxy 流式返回媒体,只接受单段前向bytes=N-M/bytes=N-Range;suffix、多段和非法区间返回416。Node 侧 15 分钟是整个流的总时限(不是 read-idle),用于覆盖目标端 180 秒 read-idle 与最大 512MiB 素材;响应不返回签名 URL 或 OSS key。
上述机器读取响应同时设置 Cache-Control、CDN-Cache-Control、Surrogate-Control 为 no-store,并以 Vary: Authorization 阻止共享缓存复用;这些 header 是纵深防护,主要边界仍是 Priya 通过内网 IC_LIVE_MEDIA_FETCH_BASE_URL 直连 IC,而不是把公共 CDN 当作鉴权控制面。
Outbox webhook 固定发送 X-IC-Timestamp、X-IC-Event-ID、X-IC-Signature 与同 event ID 的 Idempotency-Key。签名正文为 v1\n<TIMESTAMP>\n<EVENT_ID>\n<SHA256(RAW_BODY)>;事件 JSON 只包含 event_type、release_id、source_account、project 和 manifest_sha256。