# API 测试链路
本文件记录 `docs/api-test-harness.html` 内置的流程化链路。HTML 只直接执行 HTTP API;腾讯云 IM/TRTC SDK 动作作为客户端步骤列出,不伪造成后端接口。
## 01 三方注册/登录 -> 资料 -> 国家 -> token 生命周期
1. `GET /healthz/ready`:确认 gateway 可接流量。
2. `GET /api/v1/countries`:确认注册页国家主数据可读。
3. `POST /api/v1/auth/third-party/login`:使用真实 Firebase/Google ID token 登录或注册,写入 username/avatar/gender/birth/country/device/source 等注册字段。
4. `GET /api/v1/users/me/identity`:确认 user_id/display_user_id 映射。
5. `GET /api/v1/users/me/overview`:确认我的页聚合数据。
6. `POST /api/v1/users/me/profile/update`:修改用户名、头像、生日。
7. `POST /api/v1/users/me/country/change`:修改国家;同一用户一个月只允许一次,重复执行应返回冲突。
8. `POST /api/v1/auth/password/set`:首次设置密码。
9. `POST /api/v1/auth/token/refresh`:刷新 access token。
10. `POST /api/v1/auth/logout`:失效 refresh session。
## 02 密码登录 -> refresh -> logout
1. `POST /api/v1/auth/account/login`:账号是当前展示短号。
2. `GET /api/v1/users/me/identity`:验证登录态。
3. `POST /api/v1/auth/token/refresh`:验证 refresh 轮换。
4. `POST /api/v1/auth/logout`:验证 session 失效。
## 03 房间 -> IM -> RTC -> MicUp -> 发流确认 -> 下麦离房
1. `POST /api/v1/rooms/create`:创建房间,成功后回填 `room_id`。
2. `POST /api/v1/rooms/join`:加入业务 presence。
3. `GET /api/v1/rooms/current`:确认当前可恢复房间。
4. `GET /api/v1/im/usersig`:获取 IM `sdk_app_id/user_id/user_sig`。
5. 客户端 IM SDK:`TIM.create + login`,房间群 ID 使用 `room_id`。
6. `POST /api/v1/rtc/token`:获取 RTC `sdk_app_id/rtc_user_id/user_sig/str_room_id`。
7. 客户端 TRTC SDK:使用 `str_room_id` 进房。
8. `POST /api/v1/rooms/mic/up`:麦位进入 `pending_publish`,回填 `mic_session_id/room_version`。
9. 客户端 TRTC SDK:`switchRole(anchor) + startLocalAudio`。
10. `POST /api/v1/rooms/mic/publishing/confirm`:带 `mic_session_id/room_version/event_time_ms` 确认发布。
11. `GET /api/v1/rooms/snapshot`:确认麦位进入 `publishing`。
12. `POST /api/v1/rooms/heartbeat`:刷新业务 presence。
13. `POST /api/v1/rooms/mic/down`:下麦。
14. `POST /api/v1/rooms/leave`:离房。
## 04 MicUp 未确认 -> publish_timeout 自动释放验证
1. `POST /api/v1/rooms/create`
2. `POST /api/v1/rooms/join`
3. `POST /api/v1/rtc/token`
4. `POST /api/v1/rooms/mic/up`
5. 不调用 `ConfirmMicPublishing`,等待 `publish_deadline_ms` 或服务配置 deadline。
6. `GET /api/v1/rooms/current`
7. `GET /api/v1/rooms/snapshot`:确认麦位释放或状态转移符合 `publish_timeout`。
## 05 App 消息 tab/inbox 读写链路
1. `GET /api/v1/messages/tabs`
2. `GET /api/v1/messages`
3. `POST /api/v1/messages/{message_id}/read`
4. `POST /api/v1/messages/read-all`
5. `DELETE /api/v1/messages/{message_id}`
## 06 资源/礼物/送礼/币商转账链路
1. `GET /api/v1/resources`
2. `GET /api/v1/resource-groups/{group_id}`
3. `GET /api/v1/gifts`
4. `GET /api/v1/users/me/resources`
5. `POST /api/v1/users/me/resources/{resource_id}/equip`
6. `POST /api/v1/rooms/gift/send`
7. `POST /api/v1/wallet/coin-seller/transfer`
## 07 后台国家/区域配置链路
1. `POST /api/v1/auth/login`
2. `GET /api/v1/auth/me`
3. `GET /api/v1/admin/countries`
4. `POST /api/v1/admin/countries`
5. `POST /api/v1/admin/countries/{country_id}/enable`
6. `GET /api/v1/admin/regions`
7. `POST /api/v1/admin/regions`
8. `PUT /api/v1/admin/regions/{region_id}/countries`
9. `POST /api/v1/admin/regions/{region_id}/enable`
## 08 后台币商库存入账 -> App 币商转账
1. `POST /api/v1/auth/login`
2. `GET /api/v1/admin/coin-sellers`
3. `POST /api/v1/admin/coin-sellers/{user_id}/stock-credits`
4. `POST /api/v1/wallet/coin-seller/transfer`
5. `GET /api/v1/admin/payment/recharge-bills`