diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 10f1e8c..fbb344d 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -102,6 +102,7 @@ _请求方式:GET_
_请求方式:GET_
网页:`https://bbs-api.miyoushe.com/post/wapi/userPost`
+
应用:`https://bbs-api.miyoushe.com/painter/api/user_instant/list`
```
@@ -119,6 +120,7 @@ _请求方式:GET_
- `str`:字符串。
- `arr`:数组。
- `obj`:对象(字典、集合)。
+- `null`:空(一般不使用)。
需要使用下面的格式:
@@ -195,8 +197,6 @@ _请求方式:GET_
数据类型应使用JSON数据类型英文缩写。
-
-
具体可查看例子:
```markdown
diff --git a/hoyolab/user/game_account_info.md b/hoyolab/user/game_account_info.md
index 0858494..c9d4aa7 100644
--- a/hoyolab/user/game_account_info.md
+++ b/hoyolab/user/game_account_info.md
@@ -3,8 +3,10 @@
- [获取游戏记录卡片信息](#获取游戏记录卡片信息)
- [通过LToken获取绑定游戏账号的基本信息](#通过ltoken获取绑定游戏账号的基本信息)
- [通过SToken获取绑定游戏账号的基本信息](#通过stoken获取绑定游戏账号的基本信息)
+- [通过Action Ticket获取绑定游戏账号的基本信息](#通过action-ticket获取绑定游戏账号的基本信息)
- [原神](#原神)
- [获取首页信息](#genshin-home)
+ - [获取游戏账号基本信息](#genshin-role-basics)
- [获取角色信息](#genshin-characters)
- [获取深境螺旋信息](#genshin-spiral-abyss)
- [获取祈愿记录](#genshin-wish)
@@ -314,9 +316,79 @@ _请求方式:GET_
```
+## 通过Action Ticket获取绑定游戏账号的基本信息
+
+**国服:**
+
+_请求方式:GET_
+
+`https://api-takumi.miyoushe.com/binding/api/getUserGameRoles`
+
+**参数:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| action_ticket | str | 用于获取绑定游戏账号信息的有效Action Ticket | |
+| game_biz | str | 游戏标识符 | 若该值为空,将返回所有绑定游戏账号的信息 |
+
+**JSON返回:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| retcode | num | 返回码 | |
+| message | str | 返回消息 | |
+| data | obj | Cookie对应米游社账号绑定的游戏账号信息 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| list | arr | 游戏账号基本信息 | |
+
+`data`对象→`list`数组→对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| game_biz | str | 该游戏账号所属游戏的标识符 | |
+| region | str | 该游戏账号所在服务器的名称 | |
+| game_uid | str | 该游戏账号的UID | |
+| nickname | str | 该游戏账号的昵称 | |
+| level | num | 该游戏账号的等级 | |
+| is_chosen | bool | 是否已收藏该游戏账号 | |
+| region_name | str | 该游戏账号所在服务器的称呼 | |
+| is_official | bool | 该游戏账号所在服务器是否为官方服务器 | |
+
+
+查看示例
+
+```json
+{
+ "retcode": 0,
+ "message": "OK",
+ "data": {
+ "list": [
+ {
+ "game_biz": "hk4e_cn",
+ "region": "cn_qd01",
+ "game_uid": "524923864",
+ "nickname": "༽墨ᐒ染ᐓ月༼",
+ "level": 22,
+ "is_chosen": false,
+ "region_name": "世界树",
+ "is_official": false
+ },
+ ...
+ ]
+ }
+}
+```
+
+
## 原神
-
获取玩家首页信息
+获取首页信息
**国服:**
@@ -561,7 +633,72 @@ _请求方式:GET_
| role_id | num | 原神UID | |
| server | str | 服务器名称 | |
-获取玩家角色信息
+获取游戏账号基本信息
+
+**国服:**
+
+_请求方式:GET_
+
+> _需要验证请求头_
+>
+> `x-rpc-client_type`:`5`
+>
+> 4X`salt`
+>
+> `DS2`
+
+> _需要验证Cookie_
+>
+> LToken
+
+`https://api-takumi-record.mihoyo.com/game_record/app/genshin/api/roleBasicInfo`
+
+**参数:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| server | str | 服务器名称 | |
+| role_id | num | 原神UID | |
+
+**JSON返回**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| retcode | num | 返回码 | |
+| message | str | 返回消息 | |
+| data | obj | 该游戏账号的基本信息 | |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| AvatarUrl | str | 空字符串 | |
+| nickname | str | 该游戏账号的昵称 | |
+| region | str | 该游戏账号所属服务器的名称 | |
+| level | num | 该游戏账号的冒险等级 | |
+| card_play_level | num | 待调查 | |
+
+
+查看示例
+
+```json
+{
+ "retcode": 0,
+ "message": "OK",
+ "data": {
+ "AvatarUrl": "",
+ "nickname": "※青衫入雨※",
+ "region": "cn_gf01",
+ "level": 59,
+ "card_play_level": 0
+ }
+}
+```
+
+
+获取角色信息
**国服:**
@@ -799,7 +936,7 @@ _请求方式:POST_
**JSON返回**
-获取玩家深境螺旋信息
+获取深境螺旋信息
**国服:**
diff --git a/hoyolab/user/token.md b/hoyolab/user/token.md
index 4d62003..a1f5096 100644
--- a/hoyolab/user/token.md
+++ b/hoyolab/user/token.md
@@ -6,6 +6,8 @@
- [通过Game Token获取SToken](#通过game-token获取stoken)
- [通过Game Token获取Cookie Token](#通过game-token获取cookie-token)
- [通过Cookie Token获取Hk4e Token](#通过cookie-token获取hk4e-token)
+- [Action Ticket](#action-ticket)
+ - [通过SToken获取Action Ticket](#通过stoken获取action-ticket)
- [Auth Key](#auth-key)
- [通过SToken获取账号Auth Key A](#通过stoken获取账号auth-key-a)
- [通过SToken获取账号Auth Key B](#通过stoken获取账号auth-key-b)
@@ -177,18 +179,18 @@ _请求方式:POST_
| 字段 | 类型 | 内容 | 备注 |
| ---- | ---- | ---- | ---- |
-| aid | str | 米游社UID | |
+| aid | str | 米游社账号UID | |
| mid | str | 米游社MiHoYo ID | |
| account_name | str | 空字符串 | |
| email | str | 被隐藏的账号的绑定邮箱 | |
| is_email_verify | num | 绑定邮箱是否通过验证 | |
-| area_code | str | 账号绑定手机的区号 | |
+| area_code | str | 账号绑定手机的国家号码 | |
| mobile | str | 被隐藏的账号的绑定手机 | |
-| safe_area_code | str | 账号安全手机的区号 | 历史遗留字段,现在安全手机的功能已经被移除了 |
+| safe_area_code | str | 账号安全手机的国家号码 | 历史遗留字段,现在安全手机的功能已经被移除了 |
| safe_mobile | str | 被隐藏的账号安全手机 | 历史遗留字段,现在安全手机的功能已经被移除了 |
| realname | str | 被隐藏的账号实名认证姓名 | |
| identity_code | str | 被隐藏的账号实名认证身份证号 | |
-| rebind_area_code | str | 账号的换绑手机号的区号 | |
+| rebind_area_code | str | 账号的换绑手机号的国家号码 | |
| rebind_mobile | str | 被隐藏的账号的换绑手机号 | |
| rebind_mobile_time | str | 0 | |
| links | arr | 待调查 | |
@@ -329,6 +331,121 @@ _请求方式:POST_
```
+## Action Ticket
+
+### 通过SToken获取Action Ticket
+
+**国服:**
+
+_请求方式:GET_
+
+> _需要验证Cookie_
+>
+> SToken
+
+`https://api-takumi.mihoyo.com/auth/api/getActionTicketBySToken`
+
+**JSON请求:**
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| action_type | str | 获取Action Ticket的用途
game_role 获取绑定游戏账号信息 | |
+
+**JSON返回:**
+
+根对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| retcode | num | 返回码 | |
+| message | str | 返回消息 | |
+| data | obj | 对应用途的Action Ticket与部分账号个人信息 | 个人信息已隐藏 |
+
+`data`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| ticket | str | Action Ticket | |
+| is_verified | bool | 待调查 | |
+| account_info | obj | 部分个人信息 | 个人信息已隐藏 |
+
+`data`对象→`account_info`对象:
+
+| 字段 | 类型 | 内容 | 备注 |
+| ---- | ---- | ---- | ---- |
+| is_realname | bool | 待调查 | |
+| mobile | str | 绑定手机的手机号 | |
+| safe_mobile | str | 安全手机的手机号 | 历史遗留字段,现在安全手机的功能已经被移除了 |
+| safe_area_code | str | 安全手机的国家号码 | 历史遗留字段,现在安全手机的功能已经被移除了 |
+| account_id | str | Cookie对应米游社账号的ID | |
+| account_name | str | 空字符串 | |
+| email | str | 被隐藏的绑定邮箱 | |
+| is_email_verify | bool | 绑定邮箱是否已通过验证 | |
+| area_code | str | 绑定手机的国家号码 | |
+| real_name | str | 被隐藏的实名认证中的姓名 | |
+| identify_code | str | 被隐藏的实名认证中的身份证号 | |
+| create_time | str | 该米游社账号创建时间的Unix时间戳 | |
+| create_ip | str | 待调查 | |
+| change_pwd_time | sr | 待调查 | |
+| nickname | str | 空字符串 | |
+| user_icon_id | num | 待调查 | |
+| safe_level | num | 该账号的安全等级
3 高 | |
+| black_endtime | str | 待调查 | |
+| black_note | str | 待调查 | |
+| gender | num | 性别 | |
+| real_stat | num | 待调查 | |
+| apple_name | str | 待调查 | |
+| sony_name | str | 待调查 | |
+| tap_name | str | 待调查 | |
+| reactivate_ticket | str | 待调查 | |
+
+
+查看示例
+
+```json
+{
+ "retcode": 0,
+ "message": "OK",
+ "data": {
+ "ticket": "***",
+ "is_verified": false,
+ "account_info": {
+ "is_realname": false,
+ "mobile": "***********",
+ "safe_mobile": "",
+ "account_id": "317832114",
+ "account_name": "",
+ "email": "262****725@qq.com",
+ "is_email_verify": true,
+ "area_code": "+86",
+ "safe_area_code": "",
+ "real_name": "***",
+ "identity_code": "******************",
+ "create_time": "1646740732",
+ "create_ip": "",
+ "change_pwd_time": "0",
+ "nickname": "",
+ "user_icon_id": 0,
+ "safe_level": 3,
+ "black_endtime": "0",
+ "black_note": "",
+ "gender": 0,
+ "real_stat": 0,
+ "apple_name": "",
+ "sony_name": "",
+ "tap_name": "",
+ "reactivate_ticket": ""
+ }
+ }
+}
+```
+
+
+
+**国际服:**
+
+`未知`
+
## Auth Key
### 通过SToken获取账号Auth Key A
diff --git a/other/authentication.md b/other/authentication.md
index e785639..59d7d62 100644
--- a/other/authentication.md
+++ b/other/authentication.md
@@ -26,6 +26,8 @@
- [Account ID](#account-id)
- [Login Ticket](#login-ticket)
- [Cookie Token](#cookie-token)
+ - [Action Ticket](#action-ticket)
+ - [Auth Key](#auth-key)
- [Game Token](#game-token)
- [Hk4e Token](#hk4e-token)
@@ -358,9 +360,13 @@ const final = `${t},${r},${ds}` // 最终结果
即`ltoken_v2`和`ltoken`。
-`ltoken_v2`和`ltoken`多用于查询用户的游戏账号信息。
+`ltoken_v2`和`ltoken`并不总是使用相同的值,多用于查询用户的游戏账号信息。
-必须与[`ltmid_v2`](#mihoyo-id)一起使用。
+`ltoken_v2`必须与[`ltmid_v2`](#mihoyo-id)一起使用,`ltoken`必须与[`ltuid`](#account-id)一起使用。
+
+`ltoken_v2`的开头通常带有“v2_”字样,且长度较长;`ltoken`的长度则较短。
+
+在修改米游社账号的密码后将会发生变化。
#### SToken
@@ -370,6 +376,8 @@ const final = `${t},${r},${ds}` // 最终结果
必须与[`mid`](#mihoyo-id)一起使用。
+在修改米游社账号的密码后将会发生变化。
+
#### MiHoYo ID
分为与[LToken](#ltoken)一起使用的`ltmid_v2`,和与[SToken](#stoken)一起使用的`mid`
@@ -378,7 +386,7 @@ const final = `${t},${r},${ds}` // 最终结果
#### Account ID
-有`account_id_v2`、`account_id`、`login_uid`、`ltuid`和`stuid`。
+有`account_id_v2`、`account_id`、`login_uid`、`ltuid`、`ltuid_v2`和`stuid`。
UID即米游社UID。这个Cookie不是必须传递的。
@@ -386,21 +394,35 @@ UID即米游社UID。这个Cookie不是必须传递的。
即`login_ticket`。
-`login_ticket`是米游社的登录凭证,可用于获取[SToken](#stoken)和[LToken](#ltoken)。隔一段时间刷新。
+`login_ticket`是米游社的登录凭证,可用于获取[SToken](#stoken)和[LToken](#ltoken)。
通常在[米游社通行证](https://user.mihoyo.com/)中登录获得。
+有效期为30分钟。
+
#### Cookie Token
分为`cookie_token`和`cookie_token_v2`。
`cookie_token`与`cookie_token_v2`的值不相同。
+#### Action Ticket
+
+Action Ticket通常不在Cookie中使用,而是作为URL参数或请求体的一部分传递,类似于凭证。
+
+Action Ticket通常用于米游社内的部分网页操作。
+
+#### Auth Key
+
+Auth Key通常不在Cookie中使用,而是作为URL参数或请求体的一部分传递,类似于凭证。
+
+Auth Key通常用于米游社的联系客服页面。
+
#### Game Token
即`game_token`。
-`game_token`为游戏登录凭证,通常用于扫码登录后获取其它Token。
+`game_token`为游戏登录凭证,通常用于获取其它Token。
#### Hk4e Token
diff --git a/other/error_code.md b/other/error_code.md
index ac90687..3d38a82 100644
--- a/other/error_code.md
+++ b/other/error_code.md
@@ -12,8 +12,8 @@
| ----- | ---- | ---- |
| -10001 | invalid request | 该API需要验证请求头,请求头的一些字段缺失或错误
请查看[绕过检测与鉴权](other/authentication.md) |
| -1 | param error
param {param} error: value must be greater than {max}
param {param} error: value must be in list [{n1} {n2} ... {nn}] | 传递的参数值错误
传递的参数`param`的值必须大于`max`
传递的参数`param`的值只能是`n1`、`n2`至`nn`其中之一 |
-| 1008 | 用户信息不匹配 | 传递的参数不正确
(例如获取用户游戏账号信息的`role_id`为无效UID) |
-| 10001 | Please login | 该API需要验证Cookie
请查看[绕过检测与鉴权](other/authentication.md#cookie) |
+| 1008 | 用户信息不匹配 | 传递的参数不正确,例如获取用户游戏账号信息的`role_id`为无效UID |
+| 10001 | Please login | 该API需要验证Cookie
请查看[绕过检测与鉴权](other/authentication.md#cookie) |
| 1034 | | 请求遇到验证码 |
### `api-takumi.miyoushe.com`