3.5 KiB
EveryPublish Web API(Web-only V1)
Base URL:http://127.0.0.1:8090/api/v1。成功响应为 {code:0,message:"ok",data:...},失败响应包含业务 code/message。
认证
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /auth/register |
注册并返回 token |
| POST | /auth/login |
登录并返回 access/refresh |
| POST | /auth/refresh |
refresh 轮换 |
| POST | /auth/logout |
登出 |
| POST | /auth/password |
修改当前用户密码 |
| GET | /auth/me |
当前用户 |
| POST | /auth/switch-workspace/:id |
切换到本人所属工作空间并签发新 token |
核心业务
| 模块 | 路径 | 说明 |
|---|---|---|
| 工作区/成员 | /workspaces、/members |
工作区与角色权限 |
| 账号 | /accounts、/accounts/:id/bind、/accounts/:id/credentials、/accounts/:id/check、/accounts/:id/unbind |
网页本机账号、扫码登录、凭据导入和登录检查 |
| 素材 | /materials、/materials/:id/url、/files/:token |
multipart、SHA-256 去重、一次性下载直链和 ?inline=1 预览 |
| 任务 | /tasks、/tasks/:id/events、submit、approve、reject、retry、cancel |
状态机、时间线和审核 |
| 挑战 | /challenges、/challenges/:id/solve、resend、suspend |
QR/验证码/APP 确认 |
| 通知 | /notifications、/notifications/:id/read、read-all |
站内通知 |
| 审计 | /audit-logs |
业务操作记录 |
账号绑定返回值
POST /accounts/:id/bind 对同一账号的已有 active challenge 幂等,返回 challengeId、qrUrl、qrToken、prompt、expiresAt。网页显示 qrUrl,服务端后台轮询平台状态;用户使用目标平台手机客户端扫码,不生成 EveryPublish 客户端配对码。真实二维码由适配器确认,不能调用 /challenges/:id/solve 伪造完成;只有显式 mock:// 联调挑战允许使用 value 解决。
POST /accounts/:id/credentials 接收 { "cookies": "..." },仅在 EXECUTOR_MODE=web 且平台适配器已注册时可用。成功后只返回账号状态;Cookie 不进入响应、审计详情或 WebSocket payload。
POST /accounts/:id/check 调用平台适配器的凭据检查;有效时更新 active/lastActiveAt,失效时更新 expired/lastError,不会返回 Cookie。
写操作按 workspace member role 限制:账号资料、素材和任务由 owner/admin/operator 处理;解绑、删除和工作区成员管理需要 owner/admin;审核由 reviewer/admin 处理;viewer 只读。
Browser WebSocket
GET /ws/browser?token=<accessToken>,浏览器连接后接收:
task.status:任务状态/结果/错误。challenge.status:挑战创建、解决、过期。notification.new:新通知。
WebSocket 不是首屏数据源;页面必须先 REST 拉取,断线时通过 REST 轮询兜底。
本地 mock 执行
设置 EXECUTOR_MODE=mock(默认)后,审核通过的任务由 Go server 本机执行,状态依次为 queued → dispatched → running → success,结果 URL 使用 mock:// 协议,仅用于自动化联调。
设置 EXECUTOR_MODE=web 后,已注册的平台适配器在 Go server 所在设备执行。当前已接入 B 站:二维码轮询、workspace/account 隔离加密凭据、UPOS 分片上传和投稿;其它未接入平台保留明确的 mock fallback,不能把 mock URL 当作真实平台结果。
B 站 adapter 的 BILIBILI_MEMBER_BASE、BILIBILI_PASSPORT_BASE 和 BILIBILI_UPOS_SCHEME 可在本地 stub 联调时覆盖;生产环境保持官方地址并遵守平台规则。