快照发布 API
用 POST /api/v1/snapshot-uploads 提交 {filename, byteSize} 创建上传。向返回的签名地址 PUT 原始 .cap 字节,再调用 POST /api/v1/snapshot-uploads/{uploadId}/complete。该接口立即返回 202 与 status: "queued",校验在后台进行。轮询 GET /api/v1/snapshot-uploads/{uploadId},直到 status 为 complete(含快照号与分享链接)或 rejected(含校验报告)。若回到 uploading 并附报告,说明校验没能完成,可再次调用 complete。每个 API Key 有请求次数限制(60 秒内 120 次,计数在连续空闲满 60 秒后才清零),轮询请逐步放宽间隔(例如从 3 秒放宽到 15 秒),遇到 429 按 Retry-After 等待后继续。
GET /api/v1/snapshots/{snapshotId} 返回元数据,/download 下载原始归档。只有当前快照明确随附的字节可以下载。/files 按顶层目录分组列出文件(加 ?dir=<目录> 取单个目录),/records/{recordId} 返回快照里的一条原始记录。
绑定公钥时,向 POST /api/account/signing-keys/challenges 提交 {key}(会话或带 account 权限的 API Key),返回里的 proof 是四行“密钥证明”文本;用 cap.signature/3 签这段文本 UTF-8 字节的 SHA-256(@hypoark/cap/signing 的 signKeyProof),再向 /api/account/signing-keys 提交 {challengeId, signature}。不要直接签 challenge。挑战五分钟到期,只能消费一次。