Skip to content

API 契约

TradingCopilot 的 HTTP API 以 /api 为根路径。除健康检查、初始化、登录和部分原生协议端点外,受保护路由都需要 Bearer token。

http
Authorization: Bearer <jwt>

OpenAPI 文件是机器可读事实来源;本文是部署使用者和贡献者的实用索引,用于理解接口边界、认证方式、资源分组和排障方向。

请求形态

JSON:API 约定

约定说明
data.typekebab-case 复数资源名
id始终是字符串
attributes业务字段,使用 camelCase
relationships关联关系
errors[{ code, message, detail?, field? }]
分页page[limit]page[cursor]

游标是不透明值。客户端必须原样透传,不得解析、自增或自行构造。

公开接口

方法路径用途
GET/health健康检查
GET/auth/bootstrap-required判断是否需要管理员初始化
POST/auth/bootstrap首次创建管理员
POST/auth/login登录并获取 token

接口分组

领域常见路径使用者关心点
Dashboard/dashboard系统状态、运行时诊断
Logs/logs, /logs/files排障、审计、噪声过滤
Settings/settings/*环境、密钥、代理、应用设置
AI/ai/providers, /ai/roles模型提供商、模型同步、角色能力
Research Teams/research-teams/*团队、团队角色、默认角色重置
Market/market/*标的、报价、历史数据、自选列表
Messages/message-subscriptions/*, /ingested-messages/*订阅、过滤器、采集消息
Meetings/meetings/*会议 CRUD、事件、引用、复盘、SSE
Wake Plans/wake-plans/*唤醒计划、暂停、恢复、触发、取消
Paper Trading/paper/*账户、风控、订单、成交、持仓、绩效

认证和错误

受保护接口没有 token 或 token 无效时,应返回认证错误。业务错误应包含稳定 code 和人类可读 message,必要时包含 field

客户端排障建议:

  1. 先确认 HTTP 状态码。
  2. 再看 JSON:API errors
  3. 对照日志中的 eventgroupstatus
  4. 最后检查对应领域配置。

SSE 和静态资源

会议事件流使用原生 SSE:

text
GET /api/meetings/{meetingId}/stream

SSE 流和静态前端资源保持原生协议,不包装为 JSON:API。生产反向代理应避免过短的读超时导致事件流中断。

消息领域规则

  • 消息订阅资源与提供方无关。
  • Telegram 和 RSS/Atom 是 provider 值,不是独立路由模型。
  • sourceMessageId 始终是字符串。
  • 启用订阅必须绑定至少一个研究团队。
  • RSS/Atom 订阅要求公开 URL,v1 不支持 feed 认证。

变更检查清单

修改 API 时同步:

  • OpenAPI 契约。
  • 生成的 Go 服务端接口。
  • 生成的前端 TypeScript 类型。
  • API 契约文档。
  • 对应领域测试和前端调用。

TradingCopilot 不提供投资建议,所有内容仅用于研究、测试和学习。