775 lines
9.3 KiB
Markdown
775 lines
9.3 KiB
Markdown
# API 清单
|
||
> 文档版本:v1.0
|
||
> 最后更新:2026-04-02 09:01:17
|
||
|
||
|
||
本文档只记录当前 backend 已实现接口,不写未来规划接口。
|
||
|
||
## 1. Health
|
||
|
||
### `GET /healthz`
|
||
|
||
用途:
|
||
|
||
- 健康检查
|
||
|
||
## 2. Auth
|
||
|
||
### `POST /auth/sms/send`
|
||
|
||
用途:
|
||
|
||
- 发登录验证码
|
||
- 发绑定手机号验证码
|
||
|
||
核心参数:
|
||
|
||
- `countryCode`
|
||
- `mobile`
|
||
- `clientType`
|
||
- `deviceKey`
|
||
- `scene`
|
||
|
||
### `POST /auth/login/sms`
|
||
|
||
用途:
|
||
|
||
- APP 手机号验证码登录
|
||
|
||
返回重点:
|
||
|
||
- `user`
|
||
- `tokens.accessToken`
|
||
- `tokens.refreshToken`
|
||
|
||
### `POST /auth/login/wechat-mini`
|
||
|
||
用途:
|
||
|
||
- 微信小程序登录
|
||
|
||
开发态:
|
||
|
||
- 支持 `dev-` 前缀 code
|
||
|
||
### `POST /auth/bind/mobile`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 已登录用户绑定手机号
|
||
- 必要时执行账号合并
|
||
|
||
### `POST /auth/refresh`
|
||
|
||
用途:
|
||
|
||
- 刷新 access token
|
||
|
||
### `POST /auth/logout`
|
||
|
||
用途:
|
||
|
||
- 撤销 refresh token
|
||
|
||
## 3. Entry / Home
|
||
|
||
### `GET /entry/resolve`
|
||
|
||
用途:
|
||
|
||
- 解析当前入口归属哪个 tenant / channel
|
||
|
||
查询参数:
|
||
|
||
- `channelCode`
|
||
- `channelType`
|
||
- `platformAppId`
|
||
- `tenantCode`
|
||
|
||
### `GET /home`
|
||
|
||
用途:
|
||
|
||
- 返回入口首页卡片
|
||
|
||
### `GET /cards`
|
||
|
||
用途:
|
||
|
||
- 只返回卡片列表
|
||
|
||
### `GET /me/entry-home`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 首页聚合接口
|
||
|
||
返回重点:
|
||
|
||
- `user`
|
||
- `tenant`
|
||
- `channel`
|
||
- `cards`
|
||
- `ongoingSession`
|
||
- `recentSession`
|
||
|
||
## 4. Event
|
||
|
||
### `GET /events/{eventPublicID}`
|
||
|
||
用途:
|
||
|
||
- Event 详情
|
||
|
||
返回重点:
|
||
|
||
- `event`
|
||
- `release`
|
||
- `resolvedRelease`
|
||
|
||
### `GET /events/{eventPublicID}/play`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 活动详情页 / 开始前准备页聚合
|
||
|
||
返回重点:
|
||
|
||
- `event`
|
||
- `release`
|
||
- `resolvedRelease`
|
||
- `play.canLaunch`
|
||
- `play.primaryAction`
|
||
- `play.launchSource`
|
||
- `play.ongoingSession`
|
||
- `play.recentSession`
|
||
|
||
### `POST /events/{eventPublicID}/launch`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 基于当前 event 的可启动 release 创建一局 session
|
||
|
||
请求体重点:
|
||
|
||
- `releaseId`
|
||
- `clientType`
|
||
- `deviceKey`
|
||
|
||
返回重点:
|
||
|
||
- `launch.source`
|
||
- `launch.resolvedRelease`
|
||
- `launch.config`
|
||
- `launch.business.sessionId`
|
||
- `launch.business.sessionToken`
|
||
|
||
### `GET /events/{eventPublicID}/config-sources`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看某个 event 的 source config 列表
|
||
|
||
### `GET /config-sources/{sourceID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单条 source config 明细
|
||
|
||
### `GET /config-builds/{buildID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单次 build 明细
|
||
|
||
## 5. Session
|
||
|
||
### `GET /sessions/{sessionPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查询一局详情
|
||
|
||
返回重点:
|
||
|
||
- `session`
|
||
- `event`
|
||
- `resolvedRelease`
|
||
|
||
### `POST /sessions/{sessionPublicID}/start`
|
||
|
||
鉴权:
|
||
|
||
- `sessionToken`
|
||
|
||
用途:
|
||
|
||
- 将 session 从 `launched` 推进到 `running`
|
||
|
||
补充约束:
|
||
|
||
- 幂等
|
||
- 重复调用时:
|
||
- `launched` 会推进到 `running`
|
||
- `running` 或已终态直接返回当前 session
|
||
|
||
### `POST /sessions/{sessionPublicID}/finish`
|
||
|
||
鉴权:
|
||
|
||
- `sessionToken`
|
||
|
||
用途:
|
||
|
||
- 结束一局
|
||
- 同时沉淀结果摘要
|
||
|
||
当前结束语义:
|
||
|
||
- `finished`:正常完成
|
||
- `failed`:超时或规则失败
|
||
- `cancelled`:主动退出或放弃恢复
|
||
|
||
补充约束:
|
||
|
||
- 幂等
|
||
- 已终态重复调用直接返回当前 session / result
|
||
- `finish(cancelled)` 是当前“放弃恢复”的官方后端语义
|
||
- 同一局旧 `sessionToken` 在 `finish(cancelled)` 场景允许继续使用
|
||
|
||
请求体重点:
|
||
|
||
- `sessionToken`
|
||
- `status`
|
||
- `summary.finalDurationSec`
|
||
- `summary.finalScore`
|
||
- `summary.completedControls`
|
||
- `summary.totalControls`
|
||
- `summary.distanceMeters`
|
||
- `summary.averageSpeedKmh`
|
||
- `summary.maxHeartRateBpm`
|
||
|
||
### `GET /me/sessions`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查询用户最近 session
|
||
|
||
## 6. Result
|
||
|
||
### `GET /sessions/{sessionPublicID}/result`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查询单局结果页数据
|
||
|
||
返回重点:
|
||
|
||
- `session`
|
||
- `result`
|
||
|
||
`session` 中会带:
|
||
|
||
- `releaseId`
|
||
- `configLabel`
|
||
|
||
### `GET /me/results`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查询用户最近结果列表
|
||
|
||
## 7. Profile
|
||
|
||
### `GET /me`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 当前用户基础信息
|
||
|
||
### `GET /me/profile`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- “我的页”聚合接口
|
||
|
||
返回重点:
|
||
|
||
- `user`
|
||
- `bindings`
|
||
- `recentSessions`
|
||
|
||
## 8. Dev
|
||
|
||
### `POST /dev/bootstrap-demo`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 自动准备 demo tenant / channel / event / release / card
|
||
|
||
### `GET /dev/workbench`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 后端自带 API 测试面板
|
||
|
||
当前支持:
|
||
|
||
- bootstrap
|
||
- auth
|
||
- entry/home
|
||
- event/play/launch
|
||
- session start/finish/detail
|
||
- result 查询
|
||
- profile 查询
|
||
- quick flows
|
||
- scenarios
|
||
- request history
|
||
- curl 导出
|
||
|
||
### `GET /dev/config/local-files`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 列出本地配置目录中的 JSON 文件
|
||
|
||
### `POST /dev/events/{eventPublicID}/config-sources/import-local`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 从本地配置目录导入 source config
|
||
|
||
请求体重点:
|
||
|
||
- `fileName`
|
||
- `notes`
|
||
|
||
### `POST /dev/config-builds/preview`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 基于 source config 生成 preview build
|
||
|
||
请求体重点:
|
||
|
||
- `sourceId`
|
||
|
||
### `POST /dev/config-builds/publish`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 将成功的 preview build 发布成正式 release
|
||
- 自动切换 `event.current_release_id`
|
||
|
||
请求体重点:
|
||
|
||
- `buildId`
|
||
|
||
返回重点:
|
||
|
||
- `release.releaseId`
|
||
- `release.manifestUrl`
|
||
- `release.configLabel`
|
||
|
||
## 9. Admin 资源对象
|
||
|
||
说明:
|
||
|
||
- 当前是后台第一版的最小对象接口
|
||
- 先只做 Bearer 鉴权
|
||
- 暂未接正式 RBAC / 管理员权限模型
|
||
|
||
### `GET /admin/maps`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取地图对象列表
|
||
|
||
### `POST /admin/maps`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建地图对象
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `status`
|
||
- `description`
|
||
|
||
### `GET /admin/maps/{mapPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取地图对象详情和版本列表
|
||
|
||
### `POST /admin/maps/{mapPublicID}/versions`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建地图版本
|
||
|
||
请求体重点:
|
||
|
||
- `versionCode`
|
||
- `mapmetaUrl`
|
||
- `tilesRootUrl`
|
||
- `status`
|
||
- `publishedAssetRoot`
|
||
- `bounds`
|
||
- `metadata`
|
||
- `setAsCurrent`
|
||
|
||
### `GET /admin/playfields`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取赛场 / KML 对象列表
|
||
|
||
### `POST /admin/playfields`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建赛场对象
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `kind`
|
||
- `status`
|
||
- `description`
|
||
|
||
### `GET /admin/playfields/{playfieldPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取赛场对象详情和版本列表
|
||
|
||
### `POST /admin/playfields/{playfieldPublicID}/versions`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建赛场版本
|
||
|
||
请求体重点:
|
||
|
||
- `versionCode`
|
||
- `sourceType`
|
||
- `sourceUrl`
|
||
- `controlCount`
|
||
- `status`
|
||
- `publishedAssetRoot`
|
||
- `bounds`
|
||
- `metadata`
|
||
- `setAsCurrent`
|
||
|
||
### `GET /admin/resource-packs`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取资源包对象列表
|
||
|
||
### `POST /admin/resource-packs`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建资源包对象
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `status`
|
||
- `description`
|
||
|
||
### `GET /admin/resource-packs/{resourcePackPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取资源包对象详情和版本列表
|
||
|
||
### `POST /admin/resource-packs/{resourcePackPublicID}/versions`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建资源包版本
|
||
|
||
请求体重点:
|
||
|
||
- `versionCode`
|
||
- `contentEntryUrl`
|
||
- `audioRootUrl`
|
||
- `themeProfileCode`
|
||
- `status`
|
||
- `publishedAssetRoot`
|
||
- `metadata`
|
||
- `setAsCurrent`
|
||
|
||
### `GET /admin/events`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取后台 Event 列表
|
||
|
||
### `POST /admin/events`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建后台 Event
|
||
|
||
请求体重点:
|
||
|
||
- `tenantCode`
|
||
- `slug`
|
||
- `displayName`
|
||
- `summary`
|
||
- `status`
|
||
|
||
### `GET /admin/events/{eventPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取后台 Event 详情
|
||
- 返回最新 source config 摘要
|
||
|
||
### `PUT /admin/events/{eventPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 更新 Event 基础信息
|
||
|
||
请求体重点:
|
||
|
||
- `tenantCode`
|
||
- `slug`
|
||
- `displayName`
|
||
- `summary`
|
||
- `status`
|
||
|
||
### `POST /admin/events/{eventPublicID}/source`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 用地图版本、赛场版本、资源包版本组装一版 source config
|
||
- 直接落到现有 `event_config_sources`
|
||
|
||
请求体重点:
|
||
|
||
- `map.mapId`
|
||
- `map.versionId`
|
||
- `playfield.playfieldId`
|
||
- `playfield.versionId`
|
||
- `resourcePack.resourcePackId`
|
||
- `resourcePack.versionId`
|
||
- `gameModeCode`
|
||
- `routeCode`
|
||
- `overrides`
|
||
- `notes`
|
||
|
||
### `GET /admin/events/{eventPublicID}/pipeline`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 从后台视角聚合查看某个 event 的:
|
||
- sources
|
||
- builds
|
||
- releases
|
||
- current release
|
||
|
||
### `POST /admin/sources/{sourceID}/build`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 基于某个 source 生成 preview build
|
||
|
||
### `GET /admin/builds/{buildID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看某次 build 详情
|
||
|
||
### `POST /admin/builds/{buildID}/publish`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 将某次成功 build 发布成正式 release
|
||
- 自动切换 event 当前 release
|
||
|
||
### `POST /admin/events/{eventPublicID}/rollback`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 将 event 当前 release 显式切回某个已发布 release
|
||
|
||
请求体重点:
|
||
|
||
- `releaseId`
|
||
|
||
|