1972 lines
29 KiB
Markdown
1972 lines
29 KiB
Markdown
# API 清单
|
||
> 文档版本:v1.23
|
||
> 最后更新:2026-04-07 16:08:37
|
||
|
||
|
||
本文档只记录当前 backend 已实现接口,不写未来规划接口。
|
||
|
||
当前已实现接口总数:
|
||
|
||
- `115`
|
||
|
||
## 1. Health
|
||
|
||
### `GET /healthz`
|
||
|
||
用途:
|
||
|
||
- 健康检查
|
||
|
||
## 0. Workbench
|
||
|
||
### `GET /dev/workbench`
|
||
|
||
用途:
|
||
|
||
- 调试工作台
|
||
- 一键回归、日志查看、摘要排查
|
||
|
||
### `GET /admin/ops-workbench`
|
||
|
||
用途:
|
||
|
||
- 运维后台第一期页面
|
||
- 资源录入、OSS 纳管、地图瓦片导入、KML 批量导入
|
||
|
||
## 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
|
||
|
||
## 2.1 Ops Auth
|
||
|
||
说明:
|
||
|
||
- 运维账号与前端玩家账号完全分离
|
||
- 生产环境走手机号验证码运维账号
|
||
- 开发环境为了录资源和调发布方便,`/admin/ops-workbench` 与 `/ops/admin/*` 默认免登录可用
|
||
|
||
### `POST /ops/auth/sms/send`
|
||
|
||
用途:
|
||
|
||
- 发送运维账号登录 / 注册验证码
|
||
|
||
### `POST /ops/auth/register`
|
||
|
||
用途:
|
||
|
||
- 注册独立运维账号
|
||
- 首个账号默认授予 `owner`
|
||
|
||
### `POST /ops/auth/login/sms`
|
||
|
||
用途:
|
||
|
||
- 运维账号手机号验证码登录
|
||
|
||
### `POST /ops/auth/refresh`
|
||
|
||
用途:
|
||
|
||
- 刷新运维 access token
|
||
|
||
### `POST /ops/auth/logout`
|
||
|
||
用途:
|
||
|
||
- 撤销运维 refresh token
|
||
|
||
### `GET /ops/me`
|
||
|
||
鉴权:
|
||
|
||
- Ops bearer token
|
||
|
||
用途:
|
||
|
||
- 获取当前运维账号信息和主角色
|
||
|
||
## 2.2 Ops Admin(地图资源管理第一刀)
|
||
|
||
### `GET /ops/admin/summary`
|
||
|
||
用途:
|
||
|
||
- 运维后台总览聚合接口
|
||
- 返回资源、活动、运行绑定、发布版本统计
|
||
|
||
### `GET /ops/admin/assets`
|
||
|
||
用途:
|
||
|
||
- 读取受管资源列表
|
||
- 给运维后台资源总览与录入校验使用
|
||
|
||
### `POST /ops/admin/assets/register-link`
|
||
|
||
用途:
|
||
|
||
- 登记已有正式外链资源
|
||
- 统一纳管到 backend 资源对象
|
||
|
||
### `POST /ops/admin/assets/upload`
|
||
|
||
用途:
|
||
|
||
- 上传文件给 backend,再统一存入 OSS
|
||
- 运维不需要自己处理底层存储细节
|
||
|
||
### `GET /ops/admin/assets/{assetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 查看单个受管资源详情
|
||
- 返回资源类型、版本、正式 URL 和元数据
|
||
|
||
### `GET /ops/admin/places`
|
||
|
||
用途:
|
||
|
||
- 读取地点列表
|
||
- 给运维后台地图资源管理区做浏览入口
|
||
|
||
### `POST /ops/admin/places`
|
||
|
||
用途:
|
||
|
||
- 新建地点
|
||
|
||
### `GET /ops/admin/places/{placePublicID}`
|
||
|
||
用途:
|
||
|
||
- 读取地点详情
|
||
- 返回当前地点下的地图资源列表
|
||
|
||
### `POST /ops/admin/places/{placePublicID}/map-assets`
|
||
|
||
用途:
|
||
|
||
- 在指定地点下新建地图资源
|
||
|
||
### `GET /ops/admin/map-assets/{mapAssetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 读取地图资源详情
|
||
- 返回当前瓦片版本、关联赛道集和关联活动摘要
|
||
|
||
### `GET /ops/admin/map-assets`
|
||
|
||
用途:
|
||
|
||
- 读取地图列表
|
||
- 返回地点、当前瓦片版本和关联活动摘要
|
||
|
||
### `PUT /ops/admin/map-assets/{mapAssetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 更新地图基础信息
|
||
- 支持名称、封面、摘要、状态维护
|
||
|
||
### `POST /ops/admin/map-assets/{mapAssetPublicID}/tile-releases`
|
||
|
||
用途:
|
||
|
||
- 给地图资源追加新的瓦片版本
|
||
|
||
### `POST /ops/admin/ops/tile-releases/import`
|
||
|
||
用途:
|
||
|
||
- 一次录入 `place + map asset + tile release`
|
||
- 运维录入地图瓦片版本的最小入口
|
||
|
||
### `GET /ops/admin/course-sources`
|
||
|
||
用途:
|
||
|
||
- 运维后台读取 KML / GeoJSON 输入源列表
|
||
|
||
### `GET /ops/admin/course-sources/{sourcePublicID}`
|
||
|
||
用途:
|
||
|
||
- 运维后台读取单个赛道输入源详情
|
||
|
||
### `GET /ops/admin/course-sets/{courseSetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 运维后台读取赛道集合详情
|
||
- 用于默认路线和路线预览
|
||
|
||
### `POST /ops/admin/ops/course-sets/import-kml-batch`
|
||
|
||
用途:
|
||
|
||
- 批量录入一组 KML
|
||
- 自动生成 `course set + variants`
|
||
|
||
### `GET /ops/admin/events`
|
||
|
||
用途:
|
||
|
||
- 运维后台活动列表
|
||
- 给地图关联活动区做浏览入口
|
||
|
||
### `POST /ops/admin/events`
|
||
|
||
用途:
|
||
|
||
- 运维后台新建活动
|
||
- 先录活动基础信息,再进入默认绑定和发布链
|
||
|
||
### `GET /ops/admin/events/{eventPublicID}`
|
||
|
||
用途:
|
||
|
||
- 运维后台活动详情
|
||
- 返回默认绑定和当前 source 摘要
|
||
|
||
### `PUT /ops/admin/events/{eventPublicID}`
|
||
|
||
用途:
|
||
|
||
- 运维后台更新活动基础信息
|
||
- 支持名称、摘要、slug、状态维护
|
||
|
||
### `POST /ops/admin/events/{eventPublicID}/presentations/import`
|
||
|
||
用途:
|
||
|
||
- 导入活动展示定义
|
||
- 用于当前活动默认绑定与发布
|
||
|
||
### `POST /ops/admin/events/{eventPublicID}/content-bundles/import`
|
||
|
||
用途:
|
||
|
||
- 导入活动内容包
|
||
- 用于当前活动默认绑定与发布
|
||
|
||
### `POST /ops/admin/events/{eventPublicID}/defaults`
|
||
|
||
用途:
|
||
|
||
- 保存活动默认绑定
|
||
- 固化 `runtime / presentation / content bundle` 三元组
|
||
|
||
### `GET /ops/admin/events/{eventPublicID}/pipeline`
|
||
|
||
用途:
|
||
|
||
- 读取活动发布链概览
|
||
- 返回 source / build / release 摘要
|
||
|
||
### `POST /ops/admin/sources/{sourceID}/build`
|
||
|
||
用途:
|
||
|
||
- 基于 source 构建 build
|
||
|
||
### `GET /ops/admin/builds/{buildID}`
|
||
|
||
用途:
|
||
|
||
- 读取单个 build 明细
|
||
|
||
### `POST /ops/admin/builds/{buildID}/publish`
|
||
|
||
用途:
|
||
|
||
- 发布 build 为正式 release
|
||
|
||
### `GET /ops/admin/releases/{releasePublicID}`
|
||
|
||
用途:
|
||
|
||
- 读取单个 release 详情
|
||
|
||
### `POST /ops/admin/events/{eventPublicID}/rollback`
|
||
|
||
用途:
|
||
|
||
- 将活动当前 release 回滚到指定版本
|
||
|
||
## 3. Entry / Home
|
||
|
||
### `GET /entry/resolve`
|
||
|
||
用途:
|
||
|
||
- 解析当前入口归属哪个 tenant / channel
|
||
|
||
查询参数:
|
||
|
||
- `channelCode`
|
||
- `channelType`
|
||
- `platformAppId`
|
||
|
||
## 3.1 Public Experience
|
||
|
||
### `GET /public/experience-maps`
|
||
|
||
用途:
|
||
|
||
- 游客模式地图列表
|
||
- 返回可公开体验的地图与默认活动摘要
|
||
|
||
### `GET /public/experience-maps/{mapAssetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 游客模式地图详情
|
||
- 返回某张地图下挂载的默认体验活动
|
||
|
||
### `GET /public/events/{eventPublicID}`
|
||
|
||
用途:
|
||
|
||
- 游客模式活动详情
|
||
- 只允许默认体验活动
|
||
|
||
### `GET /public/events/{eventPublicID}/play`
|
||
|
||
用途:
|
||
|
||
- 游客模式准备页聚合接口
|
||
- 返回 `canLaunch`、`assignmentMode`、`courseVariants`、`preview`
|
||
|
||
### `POST /public/events/{eventPublicID}/launch`
|
||
|
||
用途:
|
||
|
||
- 游客模式启动一局
|
||
- 返回与正式 launch 近似结构,并带 `business.isGuest = true`
|
||
|
||
核心参数:
|
||
|
||
- `releaseId`
|
||
- `variantId`
|
||
- `clientType`
|
||
- `deviceKey`
|
||
- `tenantCode`
|
||
|
||
### `GET /home`
|
||
|
||
用途:
|
||
|
||
- 返回入口首页卡片
|
||
- 当前卡片摘要字段已统一补齐:
|
||
- `summary`
|
||
- `status`
|
||
- `statusCode`
|
||
- `timeWindow`
|
||
- `ctaText`
|
||
- `isDefaultExperience`
|
||
- `eventType`
|
||
- `currentPresentation`
|
||
- `currentContentBundle`
|
||
|
||
### `GET /cards`
|
||
|
||
用途:
|
||
|
||
- 只返回卡片列表
|
||
- 当前与 `/home` 使用同一套卡片摘要语义
|
||
|
||
当前额外补充:
|
||
|
||
- `showInEventList`
|
||
|
||
### `GET /experience-maps`
|
||
|
||
用途:
|
||
|
||
- 地图资源列表
|
||
- 返回每张地图下默认体验活动数量和默认活动 ID 列表
|
||
|
||
返回重点:
|
||
|
||
- `placeId`
|
||
- `placeName`
|
||
- `mapId`
|
||
- `mapName`
|
||
- `coverUrl`
|
||
- `summary`
|
||
- `defaultExperienceCount`
|
||
- `defaultExperienceEventIds`
|
||
|
||
### `GET /experience-maps/{mapAssetPublicID}`
|
||
|
||
用途:
|
||
|
||
- 地图详情
|
||
- 返回地图基础信息和默认体验活动摘要
|
||
|
||
返回重点:
|
||
|
||
- `tileBaseUrl`
|
||
- `tileMetaUrl`
|
||
- `defaultExperiences[]`
|
||
|
||
`defaultExperiences[]` 当前包含:
|
||
|
||
- `eventId`
|
||
- `title`
|
||
- `subtitle`
|
||
- `eventType`
|
||
- `status`
|
||
- `statusCode`
|
||
- `ctaText`
|
||
- `isDefaultExperience`
|
||
- `showInEventList`
|
||
- `currentPresentation`
|
||
- `currentContentBundle`
|
||
|
||
### `GET /me/entry-home`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 首页聚合接口
|
||
- 当前 `cards` 也已统一使用活动卡片最小摘要字段
|
||
|
||
返回重点:
|
||
|
||
- `user`
|
||
- `tenant`
|
||
- `channel`
|
||
- `cards`
|
||
- `ongoingSession`
|
||
- `recentSession`
|
||
|
||
`ongoingSession / recentSession` 当前会额外带:
|
||
|
||
- `variantId`
|
||
- `variantName`
|
||
- `routeCode`
|
||
|
||
## 4. Event
|
||
|
||
### `GET /events/{eventPublicID}`
|
||
|
||
用途:
|
||
|
||
- Event 详情
|
||
|
||
返回重点:
|
||
|
||
- `event`
|
||
- `release`
|
||
- `resolvedRelease`
|
||
- `runtime`
|
||
- `preview`
|
||
- `currentPresentation`
|
||
- `currentContentBundle`
|
||
|
||
当前摘要字段最少包括:
|
||
|
||
- `currentPresentation.presentationId`
|
||
- `currentPresentation.templateKey`
|
||
- `currentPresentation.version`
|
||
- `currentContentBundle.contentBundleId`
|
||
- `currentContentBundle.bundleType`
|
||
- `currentContentBundle.version`
|
||
|
||
当前 `preview` 为准备页地图预览 V1 只读增强字段,最小包括:
|
||
|
||
- `preview.mode`
|
||
- `preview.baseTiles.tileBaseUrl`
|
||
- `preview.baseTiles.zoom`
|
||
- `preview.baseTiles.tileSize`
|
||
- `preview.viewport.width / height`
|
||
- `preview.viewport.minLon / minLat / maxLon / maxLat`
|
||
- `preview.variants[].controls`
|
||
- `preview.variants[].legs`
|
||
- `preview.selectedVariantId`
|
||
|
||
### `GET /events/{eventPublicID}/play`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 活动详情页 / 开始前准备页聚合
|
||
|
||
返回重点:
|
||
|
||
- `event`
|
||
- `release`
|
||
- `resolvedRelease`
|
||
- `runtime`
|
||
- `preview`
|
||
- `currentPresentation`
|
||
- `currentContentBundle`
|
||
- `play.assignmentMode`
|
||
- `play.courseVariants`
|
||
- `play.canLaunch`
|
||
- `play.primaryAction`
|
||
- `play.launchSource`
|
||
- `play.ongoingSession`
|
||
- `play.recentSession`
|
||
|
||
当前 `play.canLaunch=true` 的最小前置条件为:
|
||
|
||
- event `status = active`
|
||
- 当前已发布 release 存在
|
||
- 当前已发布 release 有 `manifest`
|
||
- 当前已发布 release 已绑定 `runtime`
|
||
- 当前已发布 release 已绑定 `presentation`
|
||
- 当前已发布 release 已绑定 `content bundle`
|
||
|
||
当前摘要字段最少包括:
|
||
|
||
- `currentPresentation.presentationId`
|
||
- `currentPresentation.templateKey`
|
||
- `currentPresentation.version`
|
||
- `currentContentBundle.contentBundleId`
|
||
- `currentContentBundle.bundleType`
|
||
- `currentContentBundle.version`
|
||
|
||
当前 `preview` 继续表示准备页地图预览 V1 只读增强字段,结构与 `GET /events/{eventPublicID}` 相同。
|
||
|
||
### `POST /events/{eventPublicID}/launch`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 基于当前 event 的可启动 release 创建一局 session
|
||
|
||
请求体重点:
|
||
|
||
- `releaseId`
|
||
- `variantId`
|
||
- `clientType`
|
||
- `deviceKey`
|
||
|
||
补充说明:
|
||
|
||
- 如果当前 release 声明了 `play.courseVariants[]`
|
||
- `launch` 会返回最终绑定的 `launch.variant`
|
||
- 当前为兼容旧调用方,`assignmentMode=manual` 且未传 `variantId` 时,backend 会先回退到首个可选 variant
|
||
- 当前 `launch` 与 `play.canLaunch` 使用同一套前置条件
|
||
- 若当前发布 release 缺少:
|
||
- `runtime`
|
||
- `presentation`
|
||
- `content bundle`
|
||
之一,`launch` 会直接返回 `409`
|
||
|
||
返回重点:
|
||
|
||
- `launch.source`
|
||
- `launch.resolvedRelease`
|
||
- `launch.variant`
|
||
- `launch.runtime`
|
||
- `launch.presentation`
|
||
- `launch.contentBundle`
|
||
- `launch.config`
|
||
- `launch.business.sessionId`
|
||
- `launch.business.sessionToken`
|
||
|
||
当前活动运营摘要最少包括:
|
||
|
||
- `launch.presentation.presentationId`
|
||
- `launch.presentation.templateKey`
|
||
- `launch.presentation.version`
|
||
- `launch.contentBundle.contentBundleId`
|
||
- `launch.contentBundle.bundleType`
|
||
- `launch.contentBundle.version`
|
||
|
||
`launch.runtime` 当前为兼容新增字段,最少会带:
|
||
|
||
- `runtimeBindingId`
|
||
- `placeId`
|
||
- `mapId`
|
||
- `tileReleaseId`
|
||
- `courseSetId`
|
||
- `courseVariantId`
|
||
|
||
如当前 release 尚未挂接 runtime binding,则该字段为空。
|
||
|
||
### `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`
|
||
|
||
`session` 当前会额外带:
|
||
|
||
- `assignmentMode`
|
||
- `variantId`
|
||
- `variantName`
|
||
- `routeCode`
|
||
|
||
### `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`
|
||
- `variantId`
|
||
- `variantName`
|
||
- `routeCode`
|
||
|
||
### `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
|
||
|
||
### `POST /dev/client-logs`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 接收 frontend 主动上报的调试日志
|
||
- 供 backend 通过 workbench 统一查看和排查
|
||
|
||
请求体重点:
|
||
|
||
- `source`
|
||
- `level`
|
||
- `category`
|
||
- `message`
|
||
- `eventId`
|
||
- `releaseId`
|
||
- `sessionId`
|
||
- `manifestUrl`
|
||
- `route`
|
||
- `occurredAt`
|
||
- `details`
|
||
|
||
补充说明:
|
||
|
||
- 当前只保存在内存中
|
||
- 默认最多保留最近 200 条
|
||
- 仅用于联调调试
|
||
|
||
### `GET /dev/client-logs`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 获取 frontend 最近上报的调试日志
|
||
|
||
查询参数:
|
||
|
||
- `limit`
|
||
|
||
### `DELETE /dev/client-logs`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 清空当前内存中的 frontend 调试日志
|
||
|
||
### `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 导出
|
||
- frontend 调试日志查看/清空
|
||
|
||
### `GET /dev/manifest-summary`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 由 backend 代读指定 manifest
|
||
- 返回最小调试摘要:
|
||
- `schemaVersion`
|
||
- `playfield.kind`
|
||
- `game.mode`
|
||
|
||
### `GET /dev/demo-assets/presentations/{demoKey}`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 返回联调用的示例展示定义 schema
|
||
- 给 workbench 的玩法切换自动填充真实 `presentation schema` 资源地址
|
||
|
||
路径参数:
|
||
|
||
- `demoKey`
|
||
- 当前支持:`classic`、`score-o`、`manual-variant`
|
||
|
||
### `GET /dev/demo-assets/content-manifests/{demoKey}`
|
||
|
||
环境:
|
||
|
||
- 仅 non-production
|
||
|
||
用途:
|
||
|
||
- 返回联调用的示例内容 manifest
|
||
- 给 workbench 的玩法切换自动填充真实 `content manifest` 资源地址
|
||
|
||
路径参数:
|
||
|
||
- `demoKey`
|
||
- 当前支持:`classic`、`score-o`、`manual-variant`
|
||
|
||
补充说明:
|
||
|
||
- 只用于 workbench 联调排查
|
||
- 不参与正式客户端运行链路
|
||
|
||
### `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`
|
||
- `runtimeBindingId` 可选
|
||
- `presentationId` 可选
|
||
- `contentBundleId` 可选
|
||
|
||
返回重点:
|
||
|
||
- `release.releaseId`
|
||
- `release.manifestUrl`
|
||
- `release.configLabel`
|
||
- `runtime.runtimeBindingId` 可选
|
||
|
||
## 9. Admin 资源对象
|
||
|
||
说明:
|
||
|
||
- 当前是后台第一版的最小对象接口
|
||
- 先只做 Bearer 鉴权
|
||
- 暂未接正式 RBAC / 管理员权限模型
|
||
- 运维后台当前已开始切到独立前缀:
|
||
- `/ops/admin/*`
|
||
- 这批接口在运维后台中与 `/admin/*` 使用同一套 handler,语义一致
|
||
|
||
### `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}/presentations`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看某个 event 下的展示定义列表
|
||
|
||
### `POST /admin/events/{eventPublicID}/presentations`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 为 event 创建一条最小 presentation 定义
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `presentationType`
|
||
- `schema`
|
||
|
||
### `POST /admin/events/{eventPublicID}/presentations/import`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 通过统一导入入口创建展示定义
|
||
- 第一阶段只记录:
|
||
- `templateKey`
|
||
- `sourceType`
|
||
- `schemaUrl`
|
||
- `version`
|
||
- `title`
|
||
|
||
核心参数:
|
||
|
||
- `title`
|
||
- `templateKey`
|
||
- `sourceType`
|
||
- `schemaUrl`
|
||
- `version`
|
||
|
||
### `GET /admin/presentations/{presentationPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单条 presentation 明细
|
||
|
||
### `GET /admin/events/{eventPublicID}/content-bundles`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看某个 event 下的内容包列表
|
||
|
||
### `POST /admin/events/{eventPublicID}/content-bundles`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 为 event 创建一条最小 content bundle
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `entryUrl`
|
||
- `assetRootUrl`
|
||
- `metadata`
|
||
|
||
### `POST /admin/events/{eventPublicID}/content-bundles/import`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 通过统一导入入口为 event 创建内容包
|
||
- 先记录 `bundleType / sourceType / manifestUrl / version / assetManifest`
|
||
|
||
请求体重点:
|
||
|
||
- `title`
|
||
- `bundleType`
|
||
- `sourceType`
|
||
- `manifestUrl`
|
||
- `version`
|
||
- `assetManifest`
|
||
|
||
### `GET /admin/content-bundles/{contentBundlePublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单条 content bundle 明细
|
||
|
||
### `POST /admin/events/{eventPublicID}/defaults`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 固化 event 当前默认 active 绑定
|
||
- 后续 publish 在未显式传参时,优先继承:
|
||
- `presentationId`
|
||
- `contentBundleId`
|
||
- `runtimeBindingId`
|
||
|
||
核心参数:
|
||
|
||
- `presentationId`
|
||
- `contentBundleId`
|
||
- `runtimeBindingId`
|
||
|
||
### `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
|
||
- 可选在发布时直接挂接:
|
||
- `runtimeBindingId`
|
||
- `presentationId`
|
||
- `contentBundleId`
|
||
- 如果未显式传入 `runtimeBindingId / presentationId / contentBundleId`,会优先按 event 当前默认 active 绑定自动补齐
|
||
|
||
请求体重点:
|
||
|
||
- `runtimeBindingId` 可选
|
||
- `presentationId` 可选
|
||
- `contentBundleId` 可选
|
||
|
||
### `GET /admin/releases/{releasePublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单个 release 明细
|
||
- 带出当前已挂接的最小 runtime / presentation / content bundle 摘要
|
||
|
||
当前 release 摘要最少包括:
|
||
|
||
- `presentation.presentationId`
|
||
- `presentation.templateKey`
|
||
- `presentation.version`
|
||
- `contentBundle.contentBundleId`
|
||
- `contentBundle.bundleType`
|
||
- `contentBundle.version`
|
||
- `runtime.runtimeBindingId`
|
||
- `runtime.placeId`
|
||
- `runtime.mapId`
|
||
- `runtime.tileReleaseId`
|
||
- `runtime.courseVariantId`
|
||
|
||
### `POST /admin/releases/{releasePublicID}/runtime-binding`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 将某个 `runtimeBindingId` 挂接到指定 release
|
||
- 为后续 `launch.runtime` 提供运行对象来源
|
||
|
||
请求体重点:
|
||
|
||
- `runtimeBindingId`
|
||
|
||
### `POST /admin/events/{eventPublicID}/rollback`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 将 event 当前 release 显式切回某个已发布 release
|
||
|
||
请求体重点:
|
||
|
||
- `releaseId`
|
||
|
||
## 10. Admin 生产骨架
|
||
|
||
说明:
|
||
|
||
- 当前是总控确认后的第一阶段生产骨架接口
|
||
- 重点先覆盖:
|
||
- `Place`
|
||
- `MapAsset`
|
||
- `TileRelease`
|
||
- `CourseSource`
|
||
- `CourseSet`
|
||
- `CourseVariant`
|
||
- `MapRuntimeBinding`
|
||
- 这批接口不会替换现有 `events / event_releases / launch` 主链,而是增量补运行域对象
|
||
|
||
### `GET /admin/places`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取地点对象列表
|
||
|
||
### `POST /admin/places`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建地点对象
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `region`
|
||
- `coverUrl`
|
||
- `description`
|
||
- `centerPoint`
|
||
- `status`
|
||
|
||
### `GET /admin/places/{placePublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看地点详情
|
||
- 同时带出该地点下的地图资产列表
|
||
|
||
### `POST /admin/places/{placePublicID}/map-assets`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 在某个地点下创建地图资产
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `name`
|
||
- `mapType`
|
||
- `legacyMapId`
|
||
- `coverUrl`
|
||
- `description`
|
||
- `status`
|
||
|
||
### `GET /admin/map-assets/{mapAssetPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看地图资产详情
|
||
- 同时带出瓦片版本和赛道集合摘要
|
||
|
||
### `GET /admin/map-assets`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看地图资产列表
|
||
- 返回地点、当前瓦片版本和关联活动摘要
|
||
|
||
### `PUT /admin/map-assets/{mapAssetPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 更新地图资产基础信息
|
||
- 支持名称、封面、摘要、状态维护
|
||
|
||
### `POST /admin/map-assets/{mapAssetPublicID}/tile-releases`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 为某个地图资产创建瓦片版本
|
||
|
||
请求体重点:
|
||
|
||
- `legacyVersionId`
|
||
- `versionCode`
|
||
- `tileBaseUrl`
|
||
- `metaUrl`
|
||
- `publishedAssetRoot`
|
||
- `metadata`
|
||
- `status`
|
||
- `setAsCurrent`
|
||
|
||
### `GET /admin/course-sources`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取赛道原始输入源列表
|
||
|
||
### `POST /admin/course-sources`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 新建赛道原始输入源
|
||
- 用于承接 KML / GeoJSON 等输入
|
||
|
||
请求体重点:
|
||
|
||
- `legacyPlayfieldId`
|
||
- `legacyVersionId`
|
||
- `sourceType`
|
||
- `fileUrl`
|
||
- `checksum`
|
||
- `parserVersion`
|
||
- `importStatus`
|
||
- `metadata`
|
||
|
||
### `GET /admin/course-sources/{sourcePublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单个赛道输入源详情
|
||
|
||
### `POST /admin/map-assets/{mapAssetPublicID}/course-sets`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 在某个地图资产下创建赛道集合
|
||
|
||
请求体重点:
|
||
|
||
- `code`
|
||
- `mode`
|
||
- `name`
|
||
- `description`
|
||
- `status`
|
||
|
||
### `GET /admin/course-sets/{courseSetPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看赛道集合详情
|
||
- 同时带出它的 variant 列表
|
||
|
||
### `POST /admin/course-sets/{courseSetPublicID}/variants`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 为某个赛道集合创建具体可运行赛道方案
|
||
|
||
请求体重点:
|
||
|
||
- `sourceId`
|
||
- `name`
|
||
- `routeCode`
|
||
- `mode`
|
||
- `controlCount`
|
||
- `difficulty`
|
||
- `configPatch`
|
||
- `metadata`
|
||
- `status`
|
||
- `isDefault`
|
||
|
||
### `GET /admin/runtime-bindings`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 获取活动运行绑定列表
|
||
|
||
### `POST /admin/runtime-bindings`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 把活动和地点、地图资产、瓦片版本、赛道方案正式绑定起来
|
||
|
||
请求体重点:
|
||
|
||
- `eventId`
|
||
- `placeId`
|
||
- `mapAssetId`
|
||
- `tileReleaseId`
|
||
- `courseSetId`
|
||
- `courseVariantId`
|
||
- `status`
|
||
- `notes`
|
||
|
||
### `GET /admin/runtime-bindings/{runtimeBindingPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单个运行绑定详情
|
||
|
||
### `POST /admin/ops/tile-releases/import`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 运维入口第一期:按 `place + map asset + tile release` 一次录入瓦片版本
|
||
- 可在录入时直接指定 `setAsCurrent`
|
||
|
||
请求体重点:
|
||
|
||
- `placeCode`
|
||
- `placeName`
|
||
- `mapAssetCode`
|
||
- `mapAssetName`
|
||
- `mapType`
|
||
- `versionCode`
|
||
- `tileBaseUrl`
|
||
- `metaUrl`
|
||
- `publishedAssetRoot`
|
||
- `setAsCurrent`
|
||
|
||
### `POST /admin/ops/course-sets/import-kml-batch`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 运维入口第一期:按一组 KML 路线批量录入赛道集合与 variants
|
||
- 适合把同一场地的一批路线一次性整理成 `course set`
|
||
|
||
请求体重点:
|
||
|
||
- `placeCode`
|
||
- `placeName`
|
||
- `mapAssetCode`
|
||
- `mapAssetName`
|
||
- `mapType`
|
||
- `courseSetCode`
|
||
- `courseSetName`
|
||
- `mode`
|
||
- `defaultRouteCode`
|
||
- `routes[]`
|
||
|
||
### `GET /admin/assets`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看当前 backend 已纳管的正式资源对象列表
|
||
|
||
### `POST /admin/assets/register-link`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 登记一个已有正式外链为受管资源
|
||
|
||
请求体重点:
|
||
|
||
- `assetType`
|
||
- `assetCode`
|
||
- `version`
|
||
- `publicUrl`
|
||
- `status`
|
||
- `metadata`
|
||
|
||
### `POST /admin/assets/upload`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 通过 backend 上传一个正式资源文件到 OSS,并自动纳管
|
||
|
||
表单重点:
|
||
|
||
- `assetType`
|
||
- `assetCode`
|
||
- `version`
|
||
- `title`
|
||
- `objectDir` 可选
|
||
- `status`
|
||
- `metadataJson` 可选
|
||
- `file`
|
||
|
||
### `GET /admin/assets/{assetPublicID}`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 查看单个已纳管资源对象详情
|
||
|
||
|
||
### `GET /home`
|
||
|
||
用途:
|
||
|
||
- 返回入口首页摘要
|
||
- 当前卡片摘要字段已统一补齐:
|
||
- `summary`
|
||
- `status`
|
||
- `statusCode`
|
||
- `timeWindow`
|
||
- `ctaText`
|
||
- `isDefaultExperience`
|
||
- `eventType`
|
||
- `currentPresentation`
|
||
- `currentContentBundle`
|
||
|
||
### `GET /cards`
|
||
|
||
用途:
|
||
|
||
- 按入口返回活动卡片列表
|
||
- 当前与 `/home` 使用同一套卡片摘要语义
|
||
|
||
### `GET /me/entry-home`
|
||
|
||
鉴权:
|
||
|
||
- Bearer token
|
||
|
||
用途:
|
||
|
||
- 返回“我的首页”聚合
|
||
- 当前 `cards` 也已统一使用活动卡片最小摘要字段
|