# API 清单

本清单由当前仓库的 OpenAPI/路由合约生成。浏览器测试页只直接调用 HTTP JSON 接口；内部 gRPC 路径是 protobuf 合约引用，不代表公网 HTTP endpoint。

## Gateway HTTP

`/api/v1/**` 业务接口返回 `{code,message,request_id,data}` envelope；`/healthz/**` 不套 envelope。

| Method | Path | Tag | Operation | Summary |
| --- | --- | --- | --- | --- |
| GET | `/healthz/live` | health | `gatewayLive` | 进程存活探测 |
| GET | `/healthz/ready` | health | `gatewayReady` | 接流量就绪探测 |
| POST | `/api/v1/auth/account/login` | auth | `loginAccountPassword` | 账号密码登录 |
| POST | `/api/v1/auth/third-party/login` | auth | `loginThirdParty` | 三方登录或注册 |
| POST | `/api/v1/auth/password/set` | auth | `setPassword` | 已登录用户首次设置密码 |
| POST | `/api/v1/auth/token/refresh` | auth | `refreshToken` | 刷新 token |
| POST | `/api/v1/auth/logout` | auth | `logout` | 登出并失效 refresh session |
| GET | `/api/v1/countries` | countries | `listRegistrationCountries` | 获取 App 注册页可选国家 |
| GET | `/api/v1/app/bootstrap` | app-config | `getAppBootstrap` | 获取 App 启动配置摘要 |
| GET | `/api/v1/app/h5-links` | app-config | `listAppH5Links` | 获取 App H5 入口地址 |
| GET | `/api/v1/app/splash-screens` | app-config | `listSplashScreens` | 获取 App 开屏配置 |
| GET | `/api/v1/app/popups` | app-config | `listAppPopups` | 获取 App 弹窗配置 |
| POST | `/api/v1/app/heartbeat` | app | `appHeartbeat` | 刷新当前 App 登录会话心跳 |
| GET | `/api/v1/im/usersig` | tencent-im | `issueTencentIMUserSig` | 获取腾讯云 IM UserSig |
| POST | `/api/v1/rtc/token` | tencent-rtc | `issueTencentRTCToken` | 获取腾讯 RTC 进房 UserSig |
| POST | `/api/v1/tencent-rtc/callback` | tencent-rtc | `handleTencentRTCCallback` | 腾讯 RTC 服务端事件回调 |
| GET | `/api/v1/games` | games | `listGames` | 获取语音房合并游戏列表 |
| POST | `/api/v1/games/{game_id}/launch` | games | `launchGame` | 创建 H5 游戏启动会话 |
| POST | `/api/v1/game-callbacks/{platform_code}/{operation}` | games | `handleGameCallback` | 第三方游戏平台公网回调 |
| POST | `/api/v1/files/upload` | files | `uploadFile` | 上传 App 通用文件 |
| POST | `/api/v1/files/avatar/upload` | files | `uploadAvatar` | 上传用户头像 |
| POST | `/api/v1/users/me/avatar/upload` | users | `uploadUserAvatar` | 校验实际格式和动态头像 VIP 权益，原字节上传并返回一次性 `avatar_upload_id` |
| POST | `/api/v1/devices/push-token` | devices | `bindPushToken` | 绑定设备推送 token |
| DELETE | `/api/v1/devices/push-token` | devices | `deletePushToken` | 删除设备推送 token |
| POST | `/api/v1/tencent-im/callback` | tencent-im | `handleTencentIMCallback` | 腾讯云 IM 服务端回调 |
| GET | `/api/v1/users/by-display-user-id/{display_user_id}` | users | `resolveDisplayUserID` | 通过当前展示短号解析用户 |
| GET | `/api/v1/users/profiles:batch` | users | `batchUserProfiles` | 批量查询会话展示资料 |
| GET | `/api/v1/users/room-display-profiles:batch` | users | `batchRoomDisplayProfiles` | 批量查询房间和公屏展示资料 |
| GET | `/api/v1/users/voice-room-presence:batch` | users | `batchUserVoiceRoomPresences` | 批量查询个人信息页可展示的用户上麦入口 |
| GET | `/api/v1/users/me/identity` | users | `getMyIdentity` | 查询当前用户展示短号状态 |
| GET | `/api/v1/users/me/host-identity` | users | `getMyHostIdentity` | 查询当前用户 Host/Agency/BD 身份 |
| GET | `/api/v1/users/me/overview` | users | `getMyOverview` | 我的页首屏聚合摘要 |
| GET | `/api/v1/users/me/invite-overview` | users | `getMyInviteOverview` | 查询当前用户邀请码和邀请计数 |
| GET | `/api/v1/users/me/gift-wall` | users | `getMyGiftWall` | 查询当前用户收到的礼物墙聚合 |
| GET | `/api/v1/users/{user_id}/gift-wall` | users | `getUserGiftWall` | 查询资料卡用户收到的礼物墙聚合 |
| GET | `/api/v1/users/me/role-summary` | users | `getMyRoleSummary` | 查询当前用户角色摘要 |
| POST | `/api/v1/users/me/onboarding/complete` | users | `completeMyOnboarding` | 完成注册页必填资料 |
| POST | `/api/v1/users/me/profile/update` | users | `updateMyProfile` | 修改当前用户基础资料 |
| POST | `/api/v1/users/me/country/change` | users | `changeMyCountry` | 修改当前用户国家 |
| POST | `/api/v1/users/me/display-id/change` | users | `changeMyDisplayUserID` | 修改当前用户默认短号 |
| POST | `/api/v1/users/me/display-id/pretty/apply` | users | `applyMyPrettyDisplayUserID` | 申请临时靓号 |
| POST | `/api/v1/users/{user_id}/visit` | users | `recordProfileVisit` | 记录访问用户主页 |
| GET | `/api/v1/users/me/visitors` | users | `listMyProfileVisitors` | 我的访问记录列表 |
| POST | `/api/v1/users/{user_id}/follow` | users | `followUser` | 关注用户 |
| DELETE | `/api/v1/users/{user_id}/follow` | users | `unfollowUser` | 取消关注用户 |
| GET | `/api/v1/users/me/following` | users | `listMyFollowing` | 我的关注列表 |
| POST | `/api/v1/users/{user_id}/friend-requests` | users | `applyFriend` | 创建好友申请，客户端随后发 IM 申请消息 |
| POST | `/api/v1/users/{user_id}/friend-requests/accept` | users | `acceptFriendApplication` | 同意该用户发来的好友申请 |
| GET | `/api/v1/users/me/friend-requests` | users | `listMyFriendApplications` | 我的好友申请列表 |
| GET | `/api/v1/users/me/friends` | users | `listMyFriends` | 我的好友列表 |
| DELETE | `/api/v1/users/{user_id}/friend` | users | `deleteFriend` | 双向删除好友关系 |
| GET | `/api/v1/rooms/filters` | rooms | `listRoomFilters` | Flutter 首页区域/国家筛选目录，下发可原样回传的 `region_id/country_code` |
| GET | `/api/v1/rooms` | rooms | `listRooms` | 房间发现列表；Huwaa 默认 All，支持互斥的 `region_id/country_code` 及 `tab=hot/new`，卡片返回 `im_group_id`、房主 `owner_vip_level` 和 `room_border_url` |
| GET | `/api/v1/rooms/me` | rooms | `getMyRoom` | 查询 Mine 顶部我的房间卡片 |
| GET | `/api/v1/rooms/feeds` | rooms | `listRoomFeeds` | Mine 页 Visited/Friend/Following/Followed 房间流，复用包含 `owner_vip_level/room_border_url` 的房间卡片结构 |
| GET | `/api/v1/rooms/current` | rooms | `getCurrentRoom` | 查询当前可恢复房间 |
| GET | `/api/v1/rooms/snapshot` | rooms | `getRoomSnapshot` | 查询房间完整快照 |
| GET | `/api/v1/rooms/{room_id}/detail` | rooms | `getRoomDetail` | 查询房间详情页首屏聚合包 |
| GET | `/api/v1/rooms/{room_id}/online-users` | rooms | `listRoomOnlineUsers` | 分页查询房间在线用户 |
| GET | `/api/v1/rooms/{room_id}/gift-panel` | rooms | `getRoomGiftPanel` | 查询房间礼物面板初始化数据 |
| GET | `/api/v1/rooms/{room_id}/backgrounds` | rooms | `listRoomBackgrounds` | 房主查询房间已保存背景图列表和当前背景 |
| POST | `/api/v1/rooms/{room_id}/follow` | rooms | `followRoom` | 关注房间 |
| DELETE | `/api/v1/rooms/{room_id}/follow` | rooms | `unfollowRoom` | 取消关注房间 |
| POST | `/api/v1/rooms/covers/upload` | rooms | `uploadRoomCover` | 校验实际格式和动态封面 VIP 权益，原字节上传并返回一次性 `cover_upload_id` |
| POST | `/api/v1/rooms/create` | rooms | `createRoom` | 创建房间 |
| POST | `/api/v1/rooms/profile/update` | rooms | `updateRoomProfile` | 修改房间资料和座位数 |
| POST | `/api/v1/rooms/backgrounds/save` | rooms | `saveRoomBackground` | 房主保存房间背景图 URL 到素材列表 |
| POST | `/api/v1/rooms/backgrounds/set` | rooms | `setRoomBackground` | 房主设置当前房间背景图 |
| POST | `/api/v1/rooms/{room_id}/border/save` | rooms | `saveRoomBorder` | 房主把已授权的 `room_border` 资源保存为当前房间边框并返回字符串 URL |
| POST | `/api/v1/rooms/join` | rooms | `joinRoom` | 加入房间并返回首屏数据和 RTC token |
| POST | `/api/v1/rooms/heartbeat` | rooms | `roomHeartbeat` | 刷新房间业务 presence |
| POST | `/api/v1/rooms/leave` | rooms | `leaveRoom` | 离开房间 |
| POST | `/api/v1/rooms/close` | rooms | `closeRoom` | 设计稿电源按钮：离开房间但不关闭房间 |
| POST | `/api/v1/rooms/mic/up` | rooms | `micUp` | 上麦 |
| POST | `/api/v1/rooms/mic/down` | rooms | `micDown` | 下麦 |
| POST | `/api/v1/rooms/mic/change` | rooms | `changeMicSeat` | 调整麦位 |
| POST | `/api/v1/rooms/mic/publishing/confirm` | rooms | `confirmMicPublishing` | 确认 RTC 音频发布成功 |
| POST | `/api/v1/rooms/mic/heartbeat` | rooms | `micHeartbeat` | 刷新当前麦位会话心跳 |
| POST | `/api/v1/rooms/mic/mute` | rooms | `setMicMute` | 设置服务端可见麦克风静音状态 |
| POST | `/api/v1/rooms/mic/lock` | rooms | `setMicSeatLock` | 锁定或解锁麦位 |
| POST | `/api/v1/rooms/chat/enabled` | rooms | `setChatEnabled` | 开启或关闭房间公屏 |
| POST | `/api/v1/rooms/password` | rooms | `setRoomPassword` | 房主设置或清空房间入房密码 |
| POST | `/api/v1/rooms/admin/set` | rooms | `setRoomAdmin` | 添加或移除房间管理员 |
| POST | `/api/v1/rooms/user/mute` | rooms | `muteUser` | 设置房间内禁言 |
| POST | `/api/v1/rooms/user/kick` | rooms | `kickUser` | 踢出房间用户 |
| POST | `/api/v1/rooms/user/unban` | rooms | `unbanUser` | 解除房间 ban |
| POST | `/api/v1/rooms/gift/send` | rooms | `sendGift` | 发送礼物 |
| GET | `/api/v1/resources` | resources | `listResources` | App 资源列表 |
| GET | `/api/v1/resource-groups/{group_id}` | resources | `getResourceGroup` | App 资源组详情 |
| GET | `/api/v1/gifts` | resources | `listGifts` | App 礼物列表 |
| GET | `/api/v1/gift-tabs` | resources | `listGiftTabs` | App 礼物 Tab 配置和礼物预加载列表，不依赖房间 |
| GET | `/api/v1/users/me/resources` | resources | `listMyResources` | 我的资源权益 |
| POST | `/api/v1/users/me/resources/{resource_id}/equip` | resources | `equipMyResource` | 佩戴我的资源 |
| GET | `/api/v1/messages/tabs` | messages | `listMessageTabs` | 消息 tab 分区摘要 |
| GET | `/api/v1/messages` | messages | `listInboxMessages` | system/activity 消息列表 |
| POST | `/api/v1/messages/read-all` | messages | `markInboxSectionRead` | 标记分区全部已读 |
| POST | `/api/v1/messages/{message_id}/read` | messages | `markInboxMessageRead` | 标记单条消息已读 |
| DELETE | `/api/v1/messages/{message_id}` | messages | `deleteInboxMessage` | 删除单条消息 |
| GET | `/api/v1/wallet/me/overview` | wallet | `getWalletOverview` | 钱包二级页摘要 |
| GET | `/api/v1/wallet/me/balances` | wallet | `getMyBalances` | 查询当前用户钱包余额 |
| GET | `/api/v1/wallet/recharge/products` | wallet | `listRechargeProducts` | 查询充值商品和渠道 |
| GET | `/api/v1/wallet/diamond-exchange/config` | wallet | `getDiamondExchangeConfig` | 查询钻石兑换配置 |
| GET | `/api/v1/wallet/coin-transactions` | wallet | `listCoinTransactions` | 分页查询当前用户金币流水 |
| GET | `/api/v1/wallet/transactions` | wallet | `listWalletTransactions` | 分页查询钱包流水 |
| POST | `/api/v1/wallet/coin-seller/transfer` | wallet | `transferCoinFromSeller` | 币商给玩家转金币 |
| GET | `/api/v1/vip/me` | vip | `getMyVIP` | 查询当前 VIP 状态 |
| GET | `/api/v1/vip/packages` | vip | `listVIPPackages` | 查询可购买 VIP 套餐 |
| POST | `/api/v1/vip/purchase` | vip | `purchaseVIP` | 购买、续费或升级 VIP |

## Admin HTTP

后台接口实际路径包含 `/api/v1` 前缀，鉴权使用后台登录 token。

| Method | Path | Tag | Operation | Summary |
| --- | --- | --- | --- | --- |
| GET | `/api/v1/admin/agencies` | admin | `listAgencies` | listAgencies |
| POST | `/api/v1/admin/agencies` | admin | `createAgency` | createAgency |
| POST | `/api/v1/admin/agencies/{agency_id}/close` | admin | `closeAgency` | closeAgency |
| POST | `/api/v1/admin/agencies/{agency_id}/join-enabled` | admin | `setAgencyJoinEnabled` | setAgencyJoinEnabled |
| GET | `/api/v1/admin/app-config/banners` | admin | `listBanners` | listBanners |
| POST | `/api/v1/admin/app-config/banners` | admin | `createBanner` | createBanner |
| DELETE | `/api/v1/admin/app-config/banners/{banner_id}` | admin | `deleteBanner` | deleteBanner |
| PUT | `/api/v1/admin/app-config/banners/{banner_id}` | admin | `updateBanner` | updateBanner |
| GET | `/api/v1/admin/app-config/splash-screens` | admin | `listSplashScreens` | listSplashScreens |
| POST | `/api/v1/admin/app-config/splash-screens` | admin | `createSplashScreen` | createSplashScreen |
| DELETE | `/api/v1/admin/app-config/splash-screens/{splash_id}` | admin | `deleteSplashScreen` | deleteSplashScreen |
| PUT | `/api/v1/admin/app-config/splash-screens/{splash_id}` | admin | `updateSplashScreen` | updateSplashScreen |
| GET | `/api/v1/admin/app-config/h5-links` | admin | `listH5Links` | listH5Links |
| PUT | `/api/v1/admin/app-config/h5-links` | admin | `updateH5Links` | updateH5Links |
| GET | `/api/v1/admin/apps` | admin | `listApps` | listApps |
| GET | `/api/v1/admin/rooms/config` | admin | `getRoomConfig` | 查询房间配置 |
| PUT | `/api/v1/admin/rooms/config` | admin | `updateRoomConfig` | 保存房间配置 |
| GET | `/api/v1/admin/bd-leaders` | admin | `listBDLeaders` | listBDLeaders |
| POST | `/api/v1/admin/bd-leaders` | admin | `createBDLeader` | createBDLeader |
| PATCH | `/api/v1/admin/bd-leaders/{user_id}/status` | admin | `setBDLeaderStatus` | setBDLeaderStatus |
| GET | `/api/v1/admin/bds` | admin | `listBDs` | listBDs |
| POST | `/api/v1/admin/bds` | admin | `createBD` | createBD |
| PATCH | `/api/v1/admin/bds/{user_id}/status` | admin | `setBDStatus` | setBDStatus |
| GET | `/api/v1/admin/coin-sellers` | admin | `listCoinSellers` | listCoinSellers |
| POST | `/api/v1/admin/coin-sellers` | admin | `createCoinSeller` | createCoinSeller |
| PATCH | `/api/v1/admin/coin-sellers/{user_id}/status` | admin | `setCoinSellerStatus` | setCoinSellerStatus |
| POST | `/api/v1/admin/coin-sellers/{user_id}/stock-credits` | admin | `creditCoinSellerStock` | creditCoinSellerStock |
| GET | `/api/v1/admin/countries` | admin | `listCountries` | listCountries |
| POST | `/api/v1/admin/countries` | admin | `createCountry` | createCountry |
| DELETE | `/api/v1/admin/countries/{country_id}` | admin | `deleteCountry` | deleteCountry |
| GET | `/api/v1/admin/countries/{country_id}` | admin | `getCountry` | getCountry |
| PATCH | `/api/v1/admin/countries/{country_id}` | admin | `updateCountry` | updateCountry |
| POST | `/api/v1/admin/countries/{country_id}/disable` | admin | `disableCountry` | disableCountry |
| POST | `/api/v1/admin/countries/{country_id}/enable` | admin | `enableCountry` | enableCountry |
| POST | `/api/v1/admin/files/image/upload` | admin | `uploadImage` | uploadImage |
| POST | `/api/v1/admin/files/upload` | admin | `uploadFile` | uploadFile |
| GET | `/api/v1/admin/gifts` | admin | `listGifts` | listGifts |
| POST | `/api/v1/admin/gifts` | admin | `createGift` | createGift |
| PUT | `/api/v1/admin/gifts/{gift_id}` | admin | `updateGift` | updateGift |
| POST | `/api/v1/admin/gifts/{gift_id}/disable` | admin | `disableGift` | disableGift |
| POST | `/api/v1/admin/gifts/{gift_id}/enable` | admin | `enableGift` | enableGift |
| GET | `/api/v1/admin/game/platforms` | admin | `listPlatforms` | 查询游戏平台配置 |
| POST | `/api/v1/admin/game/platforms` | admin | `createPlatform` | 创建游戏平台 |
| PATCH | `/api/v1/admin/game/platforms/{platform_code}` | admin | `updatePlatform` | 更新游戏平台 |
| GET | `/api/v1/admin/game/games` | admin | `listCatalog` | 查询游戏目录 |
| POST | `/api/v1/admin/game/games` | admin | `createCatalog` | 创建游戏目录 |
| PATCH | `/api/v1/admin/game/games/{game_id}` | admin | `updateCatalog` | 更新游戏目录 |
| PATCH | `/api/v1/admin/game/games/{game_id}/status` | admin | `setGameStatus` | 设置游戏状态 |
| GET | `/api/v1/admin/hosts` | admin | `listHosts` | listHosts |
| GET | `/api/v1/admin/operations/coin-ledger` | admin | `listCoinLedger` | listCoinLedger |
| GET | `/api/v1/admin/payment/recharge-bills` | admin | `listRechargeBills` | listRechargeBills |
| GET | `/api/v1/admin/regions` | admin | `listRegions` | listRegions |
| POST | `/api/v1/admin/regions` | admin | `createRegion` | createRegion |
| DELETE | `/api/v1/admin/regions/{region_id}` | admin | `disableRegion` | disableRegion |
| GET | `/api/v1/admin/regions/{region_id}` | admin | `getRegion` | getRegion |
| PATCH | `/api/v1/admin/regions/{region_id}` | admin | `updateRegion` | updateRegion |
| PUT | `/api/v1/admin/regions/{region_id}/countries` | admin | `replaceRegionCountries` | replaceRegionCountries |
| POST | `/api/v1/admin/regions/{region_id}/enable` | admin | `enableRegion` | enableRegion |
| GET | `/api/v1/admin/resource-grants` | admin | `listResourceGrants` | listResourceGrants |
| POST | `/api/v1/admin/resource-grants/group` | admin | `grantResourceGroup` | grantResourceGroup |
| POST | `/api/v1/admin/resource-grants/resource` | admin | `grantResource` | grantResource |
| GET | `/api/v1/admin/resource-groups` | admin | `listResourceGroups` | listResourceGroups |
| POST | `/api/v1/admin/resource-groups` | admin | `createResourceGroup` | createResourceGroup |
| GET | `/api/v1/admin/resource-groups/{group_id}` | admin | `getResourceGroup` | getResourceGroup |
| PUT | `/api/v1/admin/resource-groups/{group_id}` | admin | `updateResourceGroup` | updateResourceGroup |
| POST | `/api/v1/admin/resource-groups/{group_id}/disable` | admin | `disableResourceGroup` | disableResourceGroup |
| POST | `/api/v1/admin/resource-groups/{group_id}/enable` | admin | `enableResourceGroup` | enableResourceGroup |
| PUT | `/api/v1/admin/resource-groups/{group_id}/items` | admin | `updateResourceGroupItems` | updateResourceGroupItems |
| GET | `/api/v1/admin/resources` | admin | `listResources` | listResources |
| POST | `/api/v1/admin/resources` | admin | `createResource` | createResource |
| GET | `/api/v1/admin/resources/{resource_id}` | admin | `getResource` | getResource |
| PUT | `/api/v1/admin/resources/{resource_id}` | admin | `updateResource` | updateResource |
| POST | `/api/v1/admin/resources/{resource_id}/disable` | admin | `disableResource` | disableResource |
| POST | `/api/v1/admin/resources/{resource_id}/enable` | admin | `enableResource` | enableResource |
| GET | `/api/v1/admin/rooms` | admin | `listRooms` | listRooms |
| GET | `/api/v1/admin/rooms/pins` | admin | `listRoomPins` | 查询房间区域置顶列表 |
| POST | `/api/v1/admin/rooms/pins` | admin | `createRoomPin` | 新增或恢复房间区域置顶 |
| DELETE | `/api/v1/admin/rooms/pins/{pin_id}` | admin | `cancelRoomPin` | 取消房间区域置顶 |
| DELETE | `/api/v1/admin/rooms/{room_id}` | admin | `deleteRoom` | deleteRoom |
| PATCH | `/api/v1/admin/rooms/{room_id}` | admin | `updateRoom` | updateRoom |
| GET | `/api/v1/app/users` | admin | `appListUsers` | appListUsers |
| GET | `/api/v1/app/users/{id}` | admin | `appGetUser` | appGetUser |
| PATCH | `/api/v1/app/users/{id}` | admin | `appUpdateUser` | appUpdateUser |
| POST | `/api/v1/app/users/{id}/ban` | admin | `appBanUser` | appBanUser |
| POST | `/api/v1/app/users/{id}/password` | admin | `appSetPassword` | appSetPassword |
| POST | `/api/v1/app/users/{id}/unban` | admin | `appUnbanUser` | appUnbanUser |
| POST | `/api/v1/auth/change-password` | admin | `changePassword` | changePassword |
| POST | `/api/v1/auth/login` | admin | `login` | login |
| POST | `/api/v1/auth/logout` | admin | `logout` | logout |
| GET | `/api/v1/auth/me` | admin | `me` | me |
| POST | `/api/v1/auth/refresh` | admin | `refresh` | refresh |
| GET | `/api/v1/dashboard/overview` | admin | `dashboardOverview` | dashboardOverview |
| POST | `/api/v1/exports/users` | admin | `createUserExportJob` | createUserExportJob |
| GET | `/api/v1/jobs` | admin | `listJobs` | listJobs |
| GET | `/api/v1/jobs/{id}/artifact` | admin | `downloadJobArtifact` | downloadJobArtifact |
| POST | `/api/v1/jobs/{id}/cancel` | admin | `cancelJob` | cancelJob |
| GET | `/api/v1/logs/login` | admin | `listLoginLogs` | listLoginLogs |
| GET | `/api/v1/logs/login/export` | admin | `exportLoginLogs` | exportLoginLogs |
| GET | `/api/v1/logs/operations` | admin | `listOperationLogs` | listOperationLogs |
| GET | `/api/v1/logs/operations/export` | admin | `exportOperationLogs` | exportOperationLogs |
| GET | `/api/v1/navigation/menus` | admin | `navigationMenus` | navigationMenus |
| GET | `/api/v1/permissions` | admin | `listPermissions` | listPermissions |
| POST | `/api/v1/permissions` | admin | `createPermission` | createPermission |
| DELETE | `/api/v1/permissions/{id}` | admin | `deletePermission` | deletePermission |
| PATCH | `/api/v1/permissions/{id}` | admin | `updatePermission` | updatePermission |
| POST | `/api/v1/permissions/sync` | admin | `syncPermissions` | syncPermissions |
| GET | `/api/v1/roles` | admin | `listRoles` | listRoles |
| POST | `/api/v1/roles` | admin | `createRole` | createRole |
| DELETE | `/api/v1/roles/{id}` | admin | `deleteRole` | deleteRole |
| PATCH | `/api/v1/roles/{id}` | admin | `updateRole` | updateRole |
| GET | `/api/v1/roles/{id}/data-scopes` | admin | `getRoleDataScopes` | getRoleDataScopes |
| PUT | `/api/v1/roles/{id}/data-scopes` | admin | `replaceRoleDataScopes` | replaceRoleDataScopes |
| PUT | `/api/v1/roles/{id}/permissions` | admin | `replaceRolePermissions` | replaceRolePermissions |
| GET | `/api/v1/search` | admin | `search` | search |
| GET | `/api/v1/system/menus` | admin | `listSystemMenus` | listSystemMenus |
| POST | `/api/v1/system/menus` | admin | `createMenu` | createMenu |
| DELETE | `/api/v1/system/menus/{id}` | admin | `deleteMenu` | deleteMenu |
| PATCH | `/api/v1/system/menus/{id}` | admin | `updateMenu` | updateMenu |
| PATCH | `/api/v1/system/menus/{id}/visible` | admin | `updateMenuVisible` | updateMenuVisible |
| PUT | `/api/v1/system/menus/sort` | admin | `sortMenus` | sortMenus |
| GET | `/api/v1/users` | admin | `listUsers` | listUsers |
| POST | `/api/v1/users` | admin | `createUser` | createUser |
| GET | `/api/v1/users/{id}` | admin | `getUser` | getUser |
| PATCH | `/api/v1/users/{id}` | admin | `updateUser` | updateUser |
| POST | `/api/v1/users/{id}/reset-password` | admin | `resetUserPassword` | resetUserPassword |
| PATCH | `/api/v1/users/{id}/status` | admin | `updateUserStatus` | updateUserStatus |
| POST | `/api/v1/users/batch/status` | admin | `batchUpdateUserStatus` | batchUpdateUserStatus |
| GET | `/api/v1/users/export` | admin | `exportUsers` | exportUsers |

## Internal gRPC/OpenAPI Reference

这些路径用于记录 gRPC full method，不能直接用浏览器 fetch 调用。

| Method | Path | Tag | Operation | Summary |
| --- | --- | --- | --- | --- |
| POST | `/hyapp.user.v1.AuthService/LoginPassword` | auth | `userAuthLoginPassword` | 短号密码登录 |
| POST | `/hyapp.user.v1.AuthService/LoginThirdParty` | auth | `userAuthLoginThirdParty` | 三方登录或注册 |
| POST | `/hyapp.user.v1.AuthService/SetPassword` | auth | `userAuthSetPassword` | 首次设置密码 |
| POST | `/hyapp.user.v1.AuthService/RefreshToken` | auth | `userAuthRefreshToken` | 刷新 token |
| POST | `/hyapp.user.v1.AuthService/Logout` | auth | `userAuthLogout` | 登出并失效 refresh session |
| POST | `/hyapp.user.v1.UserService/GetUser` | users | `userGetUser` | 查询单个用户主状态 |
| POST | `/hyapp.user.v1.UserService/GetMyProfileStats` | users | `userGetMyProfileStats` | 查询我的页顶部计数 read model |
| POST | `/hyapp.user.v1.UserService/BatchGetUsers` | users | `userBatchGetUsers` | 批量查询用户主状态 |
| POST | `/hyapp.user.v1.UserService/ListUserIDs` | users | `userListUserIDs` | 后台任务按 user_id 游标查询目标用户 |
| POST | `/hyapp.user.v1.UserService/UpdateUserProfile` | users | `userUpdateUserProfile` | 修改用户基础资料 |
| POST | `/hyapp.user.v1.UserService/ChangeUserCountry` | users | `userChangeUserCountry` | 修改用户国家 |
| POST | `/hyapp.user.v1.UserService/CompleteOnboarding` | users | `userCompleteOnboarding` | 完成注册页必填资料 |
| POST | `/hyapp.user.v1.UserSocialService/RecordProfileVisit` | users | `userRecordProfileVisit` | 记录访问用户主页 |
| POST | `/hyapp.user.v1.UserSocialService/ListProfileVisitors` | users | `userListProfileVisitors` | 查询访问记录列表 |
| POST | `/hyapp.user.v1.UserSocialService/FollowUser` | users | `userFollowUser` | 关注用户 |
| POST | `/hyapp.user.v1.UserSocialService/UnfollowUser` | users | `userUnfollowUser` | 取消关注 |
| POST | `/hyapp.user.v1.UserSocialService/ListFollowing` | users | `userListFollowing` | 查询关注列表 |
| POST | `/hyapp.user.v1.UserSocialService/ApplyFriend` | users | `userApplyFriend` | 创建好友申请 |
| POST | `/hyapp.user.v1.UserSocialService/AcceptFriendApplication` | users | `userAcceptFriendApplication` | 同意好友申请并写双向好友关系 |
| POST | `/hyapp.user.v1.UserSocialService/DeleteFriend` | users | `userDeleteFriend` | 删除双向好友关系 |
| POST | `/hyapp.user.v1.UserSocialService/ListFriends` | users | `userListFriends` | 查询好友列表 |
| POST | `/hyapp.user.v1.UserSocialService/ListFriendApplications` | users | `userListFriendApplications` | 查询好友申请列表 |
| POST | `/hyapp.user.v1.UserDeviceService/BindPushToken` | user-devices | `userBindPushToken` | 绑定当前登录用户的系统推送 token |
| POST | `/hyapp.user.v1.UserDeviceService/DeletePushToken` | user-devices | `userDeletePushToken` | 失效当前登录用户的系统推送 token |
| POST | `/hyapp.user.v1.CountryAdminService/CreateCountry` | country-admin | `userCreateCountry` | 创建国家主数据 |
| POST | `/hyapp.user.v1.CountryAdminService/ListCountries` | country-admin | `userListCountries` | 查询国家主数据 |
| POST | `/hyapp.user.v1.CountryAdminService/UpdateCountry` | country-admin | `userUpdateCountry` | 修改国家展示字段 |
| POST | `/hyapp.user.v1.CountryAdminService/EnableCountry` | country-admin | `userEnableCountry` | 开放国家给 App 选择 |
| POST | `/hyapp.user.v1.CountryAdminService/DisableCountry` | country-admin | `userDisableCountry` | 关闭国家 App 可选状态 |
| POST | `/hyapp.user.v1.CountryQueryService/ListRegistrationCountries` | country-query | `userListRegistrationCountries` | 查询 App 注册页开放国家列表 |
| POST | `/hyapp.user.v1.RegionAdminService/CreateRegion` | region-admin | `userCreateRegion` | 创建区域并配置国家列表 |
| POST | `/hyapp.user.v1.RegionAdminService/ListRegions` | region-admin | `userListRegions` | 查询区域列表 |
| POST | `/hyapp.user.v1.RegionAdminService/GetRegion` | region-admin | `userGetRegion` | 查询单个区域 |
| POST | `/hyapp.user.v1.RegionAdminService/UpdateRegion` | region-admin | `userUpdateRegion` | 修改区域展示字段 |
| POST | `/hyapp.user.v1.RegionAdminService/ReplaceRegionCountries` | region-admin | `userReplaceRegionCountries` | 替换区域国家列表 |
| POST | `/hyapp.user.v1.RegionAdminService/DisableRegion` | region-admin | `userDisableRegion` | 停用区域 |
| POST | `/hyapp.user.v1.UserIdentityService/GetUserIdentity` | user-identity | `userGetUserIdentity` | 按 user_id 查询当前展示短号 |
| POST | `/hyapp.user.v1.UserIdentityService/ResolveDisplayUserID` | user-identity | `userResolveDisplayUserID` | 通过当前展示短号解析用户 |
| POST | `/hyapp.user.v1.UserIdentityService/ChangeDisplayUserID` | user-identity | `userChangeDisplayUserID` | 修改默认展示短号 |
| POST | `/hyapp.user.v1.UserIdentityService/ApplyPrettyDisplayUserID` | user-identity | `userApplyPrettyDisplayUserID` | 申请临时靓号 |
| POST | `/hyapp.user.v1.UserIdentityService/ExpirePrettyDisplayUserID` | user-identity | `userExpirePrettyDisplayUserID` | 主动触发靓号过期恢复 |
| POST | `/grpc.health.v1.Health/Check` | health | `userHealthCheck` | 标准 gRPC health check |
| POST | `/grpc.health.v1.Health/Watch` | health | `userHealthWatch` | 标准 gRPC health watch |
| POST | `/hyapp.room.v1.RoomCommandService/CreateRoom` | room-command | `roomCreateRoom` | 创建房间 |
| POST | `/hyapp.room.v1.RoomCommandService/UpdateRoomProfile` | room-command | `roomUpdateRoomProfile` | 修改房间资料和座位数 |
| POST | `/hyapp.room.v1.RoomCommandService/JoinRoom` | room-command | `roomJoinRoom` | 加入房间业务 presence |
| POST | `/hyapp.room.v1.RoomCommandService/LeaveRoom` | room-command | `roomLeaveRoom` | 离开房间业务 presence |
| POST | `/hyapp.room.v1.RoomCommandService/MicUp` | room-command | `roomMicUp` | 上麦 |
| POST | `/hyapp.room.v1.RoomCommandService/MicDown` | room-command | `roomMicDown` | 下麦 |
| POST | `/hyapp.room.v1.RoomCommandService/ChangeMicSeat` | room-command | `roomChangeMicSeat` | 调整麦位 |
| POST | `/hyapp.room.v1.RoomCommandService/ConfirmMicPublishing` | room-command | `roomConfirmMicPublishing` | 确认 RTC 音频发布成功 |
| POST | `/hyapp.room.v1.RoomCommandService/SetMicSeatLock` | room-command | `roomSetMicSeatLock` | 锁定或解锁麦位 |
| POST | `/hyapp.room.v1.RoomCommandService/SetChatEnabled` | room-command | `roomSetChatEnabled` | 开启或关闭公屏 |
| POST | `/hyapp.room.v1.RoomCommandService/SetRoomAdmin` | room-command | `roomSetRoomAdmin` | 添加或移除房间管理员 |
| POST | `/hyapp.room.v1.RoomCommandService/MuteUser` | room-command | `roomMuteUser` | 设置房间内禁言 |
| POST | `/hyapp.room.v1.RoomCommandService/KickUser` | room-command | `roomKickUser` | 踢出房间用户 |
| POST | `/hyapp.room.v1.RoomCommandService/UnbanUser` | room-command | `roomUnbanUser` | 解除房间 ban |
| POST | `/hyapp.room.v1.RoomCommandService/SendGift` | room-command | `roomSendGift` | 发送礼物 |
| POST | `/hyapp.room.v1.RoomCommandService/FollowRoom` | room-command | `roomFollowRoom` | 建立用户对房间的关注关系 |
| POST | `/hyapp.room.v1.RoomCommandService/UnfollowRoom` | room-command | `roomUnfollowRoom` | 取消用户对房间的关注关系 |
| POST | `/hyapp.room.v1.RoomGuardService/CheckSpeakPermission` | room-guard | `roomCheckSpeakPermission` | 发言前守卫 |
| POST | `/hyapp.room.v1.RoomGuardService/VerifyRoomPresence` | room-guard | `roomVerifyRoomPresence` | 入群前 presence 守卫 |
| POST | `/hyapp.room.v1.RoomQueryService/GetCurrentRoom` | room-query | `roomGetCurrentRoom` | 查询用户当前可恢复房间 |
| POST | `/hyapp.room.v1.RoomQueryService/GetRoomSnapshot` | room-query | `roomGetRoomSnapshot` | 查询房间完整快照 |
| POST | `/grpc.health.v1.Health/Check` | health | `roomHealthCheck` | 标准 gRPC health check |
| POST | `/grpc.health.v1.Health/Watch` | health | `roomHealthWatch` | 标准 gRPC health watch |
| POST | `/hyapp.wallet.v1.WalletService/DebitGift` | wallet | `walletDebitGift` | 送礼扣费 |
| POST | `/hyapp.wallet.v1.WalletService/ApplyGameCoinChange` | wallet | `walletApplyGameCoinChange` | 游戏专用金币改账 |
| POST | `/grpc.health.v1.Health/Check` | health | `walletHealthCheck` | 标准 gRPC health check |
| POST | `/grpc.health.v1.Health/Watch` | health | `walletHealthWatch` | 标准 gRPC health watch |
| POST | `/hyapp.game.v1.GameAppService/ListGames` | games | `gameListGames` | App 合并游戏列表 |
| POST | `/hyapp.game.v1.GameAppService/LaunchGame` | games | `gameLaunchGame` | 创建 H5 启动会话 |
| POST | `/hyapp.game.v1.GameCallbackService/HandleCallback` | games | `gameHandleCallback` | 处理平台原始回调 |
| POST | `/hyapp.game.v1.GameAdminService/ListPlatforms` | games-admin | `gameAdminListPlatforms` | 查询游戏平台配置 |
| POST | `/hyapp.game.v1.GameAdminService/UpsertPlatform` | games-admin | `gameAdminUpsertPlatform` | 创建或更新游戏平台 |
| POST | `/hyapp.game.v1.GameAdminService/ListCatalog` | games-admin | `gameAdminListCatalog` | 查询游戏目录 |
| POST | `/hyapp.game.v1.GameAdminService/UpsertCatalog` | games-admin | `gameAdminUpsertCatalog` | 创建或更新游戏目录 |
| POST | `/hyapp.game.v1.GameAdminService/SetGameStatus` | games-admin | `gameAdminSetGameStatus` | 设置游戏状态 |
| POST | `/grpc.health.v1.Health/Check` | health | `gameHealthCheck` | 标准 gRPC health check |
| POST | `/grpc.health.v1.Health/Watch` | health | `gameHealthWatch` | 标准 gRPC health watch |
| POST | `/hyapp.activity.v1.ActivityService/PingActivity` | activity | `activityPingActivity` | 活动服务连通性探测 |
| POST | `/hyapp.activity.v1.ActivityService/GetActivityStatus` | activity | `activityGetActivityStatus` | 查询活动状态 |
| POST | `/hyapp.activity.v1.MessageInboxService/ListMessageTabs` | messages | `activityListMessageTabs` | 查询 App 消息 tab 摘要 |
| POST | `/hyapp.activity.v1.MessageInboxService/ListInboxMessages` | messages | `activityListInboxMessages` | 分页查询 system/activity inbox |
| POST | `/hyapp.activity.v1.MessageInboxService/MarkInboxMessageRead` | messages | `activityMarkInboxMessageRead` | 标记单条 inbox 消息已读 |
| POST | `/hyapp.activity.v1.MessageInboxService/MarkInboxSectionRead` | messages | `activityMarkInboxSectionRead` | 标记一个消息分区全部已读 |
| POST | `/hyapp.activity.v1.MessageInboxService/DeleteInboxMessage` | messages | `activityDeleteInboxMessage` | 删除当前用户可见 inbox 消息 |
| POST | `/hyapp.activity.v1.MessageInboxService/CreateInboxMessage` | messages | `activityCreateInboxMessage` | 生产者创建单用户 inbox 消息 |
| POST | `/hyapp.activity.v1.MessageInboxService/CreateFanoutJob` | messages | `activityCreateFanoutJob` | 创建后台 fanout 任务 |
| POST | `/grpc.health.v1.Health/Check` | health | `activityHealthCheck` | 标准 gRPC health check |
| POST | `/grpc.health.v1.Health/Watch` | health | `activityHealthWatch` | 标准 gRPC health watch |
