文档
03 平台04 媒体供应04_开发

MG-04-012 会话与渠道配置接口

2026-09-30 实现;产品决定见 重做入口。不新增客户认证/账务域。

接口行为
GET /admin/v1/session恢复有效管理员会话;返回 user、csrf_token、expires_at
POST /admin/v1/session{password} 登录;同源 Origin;设置 HttpOnly 会话 Cookie
DELETE /admin/v1/session同源 Origin + X-CSRF-Token;撤销当前会话
PUT /admin/v1/session/password{current_password,password};同源/CSRF;更新密码并撤销全部会话
GET /admin/v1/channels/{id}/configuration单个 PostgreSQL 快照读取 channel、supplies[].supply/video_capability/cost_rules
PUT /admin/v1/channels/{id}/configurationIf-Match 为渠道版本;每项包含 Supply version;同渠道所有修改一次提交
GET/HEAD /admin/v1/content/{outputID}管理会话或管理运维 Bearer 授权媒体;沿用对象权限/Range/重定向安全检查

Cookie 名 ow_gateway_admin,Path=/admin、SameSite=Strict;生产 Secure。会话令牌只存 SHA-256;密码沿用 Argon2id。CSRF 从有效会话恢复,仅在前端内存保存。默认绝对 24 小时、空闲 8 小时;退出和密码版本更新立即撤销。持久登录限速:单管理员每分钟最多 8 次,进程重启不清空计数。受控服务器初始化/恢复使用 cmd/admin;启动初始化只 INSERT,不重设已有密码。纯本机 loopback development 可用 HTTP 管理页面,媒体结果仍保持独立 HTTPS URL。

管理浏览器不再输入/存储运维管理 Key。显式 Authorization 继续交给既有运维 Bearer 校验,错误 Bearer 不退回 Cookie;服务 Key 不能管理。Cookie 不认证 /v1 服务生成接口。管理记录输出返回 /admin/v1/content/;外部服务输出仍为 /v1/content/。

配置请求例:

{"changes":[{"id":"<Supply UUID>","version":7,"update":{"upstream_model":"sora-2"},"cost":{"currency":"USD","billing_mode":"per_request","charge_on":"success","rule":{"fixed_price":{"amount":"0.12","currency":"USD"}}},"price_verified":true}]}

capability 可携带完整 VideoCapability 参数;服务端重建版本,剥除客户端旧验证证据。cost 强制新手工版本及服务端时间,保留每个旧成本版本;price_verified 是管理员已核对报价的声明,不是上游 API 自动认证。已验证的纯价格替换保持原启用状态;身份/能力变更只暂停对应 Supply。未验证价格变更保守停用。后台不在事务中调用 Provider。

按照渠道锁、排序后的 Supply 锁及乐观版本检查保存。任一错误全部回滚,包括所有子写入与聚合审计;409 保留草稿并要求比较;503 表示配置数据库不可用。成功返回事务拥有的 Supply 新版本。客户端再读完整快照;已提交而回读失败时只允许刷新,禁止重复提交旧草稿。空请求/重复规格/跨渠道/非视频/超过 500 项拒绝。

当前共享参数编辑以首个规格显示值为明确基准,只修改同值字段;已有差异作为规格例外保留,例外从规格侧边编辑。这是现有 Supply 能力快照的批量编辑,尚不是持久模型组默认/继承实体;新增规格的继承、型号组重命名/手工增规格继续在 W02 完成。首尾帧、音频默认/必选、seed/增强没有通用已执行字段,不提供无效开关。真实测试仍沿用旧受控流程,W04 后替换为持久 Task/Attempt。