5.2 KiB
5.2 KiB
Fami VIP 设置接口对接文档
1. 接口范围
本文档只描述 Fami VIP 设置相关接口、请求参数和返回字段。
2. 设置字段
| VIP 等级 | 设置项 | benefit_code |
接口字段 | 无记录默认值 |
|---|---|---|---|---|
| VIP6 | 隐藏个人数据 | hide_profile_data |
hide_profile_data_enabled |
false |
| VIP6 | 榜单隐身 | leaderboard_invisible |
leaderboard_invisible_enabled |
false |
| VIP7 | 匿名访问主页 | anonymous_profile_visit |
anonymous_profile_visit_enabled |
false |
| VIP8 | 进房全服通知 | room_entry_notice |
room_entry_notice_enabled |
true |
| VIP9 | 上线全服通知 | online_global_notice |
online_global_notice_enabled |
true |
updated_at_ms = 0 表示用户尚未修改,当前返回的是默认值。
3. 公共请求约定
3.1 请求头
Authorization: Bearer {access_token}
X-App-Code: fami
Content-Type: application/json
3.2 统一响应结构
{
"code": "OK",
"message": "OK",
"data": {},
"request_id": "req_xxx"
}
接口成功条件为 code == "OK"。
4. 查询当前用户设置
4.1 请求
GET /api/v1/vip/settings
请求体:无。
4.2 成功响应
{
"code": "OK",
"message": "OK",
"data": {
"settings": {
"app_code": "fami",
"user_id": 10001,
"room_entry_notice_enabled": true,
"online_global_notice_enabled": true,
"hide_profile_data_enabled": false,
"anonymous_profile_visit_enabled": false,
"leaderboard_invisible_enabled": false,
"updated_at_ms": 0
},
"evaluated_at_ms": 1784563200000
},
"request_id": "req_vip_settings_get"
}
5. 修改当前用户设置
5.1 请求
PATCH /api/v1/vip/settings
请求体支持以下可选字段:
{
"room_entry_notice_enabled": true,
"online_global_notice_enabled": true,
"hide_profile_data_enabled": false,
"anonymous_profile_visit_enabled": false,
"leaderboard_invisible_enabled": false
}
PATCH 规则:
- 每次请求至少传一个设置字段。
- 未传字段保持原值。
- 显式传
false表示关闭该设置。 - 不支持修改其他用户的设置。
单字段请求示例:
{
"hide_profile_data_enabled": true
}
5.2 成功响应
修改成功后返回完整设置对象:
{
"code": "OK",
"message": "OK",
"data": {
"settings": {
"app_code": "fami",
"user_id": 10001,
"room_entry_notice_enabled": true,
"online_global_notice_enabled": true,
"hide_profile_data_enabled": true,
"anonymous_profile_visit_enabled": false,
"leaderboard_invisible_enabled": false,
"updated_at_ms": 1784563200123
},
"server_time_ms": 1784563200150
},
"request_id": "req_vip_settings_patch"
}
6. VIP 用户信息接口返回设置
6.1 请求
GET /api/v1/vip/me
设置字段路径:
data.state.user_settings
精简响应示例:
{
"code": "OK",
"data": {
"state": {
"effective_vip": {
"level": 8,
"name": "VIP8",
"active": true
},
"effective_benefits": [
{
"benefit_code": "room_entry_notice",
"status": "active"
}
],
"user_settings": {
"app_code": "fami",
"user_id": 10001,
"room_entry_notice_enabled": true,
"online_global_notice_enabled": true,
"hide_profile_data_enabled": false,
"anonymous_profile_visit_enabled": false,
"leaderboard_invisible_enabled": false,
"updated_at_ms": 0
}
}
},
"request_id": "req_vip_me"
}
真实响应还包含 paid_vip、equipped_trial_card、effective_source、evaluated_at_ms 和 program_config 等字段。
7. 当前用户聚合信息返回设置
7.1 请求
GET /api/v1/users/me/overview
设置字段路径:
data.vip.user_settings
精简响应示例:
{
"code": "OK",
"data": {
"profile": {
"user_id": "10001",
"username": "Nina"
},
"vip": {
"level": 8,
"name": "VIP8",
"active": true,
"started_at_ms": 1780000000000,
"expires_at_ms": 1782592000000,
"user_settings": {
"app_code": "fami",
"user_id": 10001,
"room_entry_notice_enabled": true,
"online_global_notice_enabled": true,
"hide_profile_data_enabled": false,
"anonymous_profile_visit_enabled": false,
"leaderboard_invisible_enabled": false,
"updated_at_ms": 0
}
}
},
"request_id": "req_user_overview"
}
补充约定:
data.vip.unavailable == true表示本次 VIP 上游查询降级。- 他人公开资料接口
GET /api/v1/users/by-id/{user_id}/profile不返回user_settings。
8. 错误响应
| HTTP 状态码 | code |
说明 |
|---|---|---|
| 400 | INVALID_ARGUMENT |
请求体为空、字段名错误或字段类型错误。 |
| 401 | UNAUTHORIZED |
Access Token 无效或已过期。 |
| 403 | FORBIDDEN |
无权跨 App 或修改其他用户设置。 |
| 502 | UPSTREAM_ERROR |
VIP/Wallet 上游服务异常。 |
错误处理应以稳定的 code 为准,不依赖 message 文案。