个人资料
GET /cm/profile
个人资料 · /profile
权限:CurrentMusic Bearer 登录态;房间/绑定等条件另见校验。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request GET 'https://music.20110208.xyz/cm/profile' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
响应体 | out |
实现定位:backend/cm_server.py:2881。接口参数和返回条件均来自该路由分支。
PUT /cm/profile
个人资料 · /profile
权限:CurrentMusic Bearer 登录态;房间/绑定等条件另见校验。
请求参数
| 位置 | 字段 | 默认/读取方式 |
|---|---|---|
| JSON body | publicSquare | 未在 get 中指定 |
表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request PUT 'https://music.20110208.xyz/cm/profile' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"publicSquare": "<publicSquare>"}'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
响应体 | public_user(cm_db.get_user(u['id'])) |
实现定位:backend/cm_server.py:2887。接口参数和返回条件均来自该路由分支。
PUT /cm/profile/avatar
个人资料 · /profile/avatar
权限:CurrentMusic Bearer 登录态;房间/绑定等条件另见校验。
请求参数
| 位置 | 字段 | 默认/读取方式 |
|---|---|---|
| JSON body | data | ''(空值时回退) |
表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。
参数校验与业务错误
| HTTP | 服务端校验说明 |
|---|---|
| 400 | '仅支持 PNG/JPG/WebP' |
| 400 | '图片需 ≤1MB' |
| 400 | '头像数据无效' |
| 400 | str(e) |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request PUT 'https://music.20110208.xyz/cm/profile/avatar' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"data": "<data>"}'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
avatar | fname |
实现定位:backend/cm_server.py:2996。接口参数和返回条件均来自该路由分支。
PUT /cm/profile/email
绑定/换绑邮箱 {email, code}(验证码证明所有权;bind: 命名空间隔离)
权限:Bearer。
请求参数
| 位置 | 字段 | 默认/读取方式 |
|---|---|---|
| JSON body | code | ''(空值时回退) |
| JSON body | email | ''(空值时回退) |
表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。
参数校验与业务错误
| HTTP | 服务端校验说明 |
|---|---|
| 400 | '请填写邮箱与验证码' |
| 409 | '该邮箱已被其他账号使用' |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request PUT 'https://music.20110208.xyz/cm/profile/email' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"code": "`", "email": "<email>"}'
ˋˋˋ
### 返回结构
以下是实现中直接返回的字段与取值表达式,**不是一次真实请求的响应示例**。条件分支可能返回不同结构。
HTTP 200
\| 字段 \| 取值/生成逻辑 \|
\| --- \| --- \|
\| ˋ响应体ˋ \| <code>public_user(cm_db.get_user(u['id']))` |
实现定位:`backend/cm_server.py:2982`。接口参数和返回条件均来自该路由分支。
## POST /cm/profile/email/code
发送**绑定/换绑邮箱**验证码(新邮箱不得属于其他账号;60s 冷却 + IP 限流)
**权限**:Bearer。
### 请求参数
| 位置 | 字段 | 默认/读取方式 |
| --- | --- | --- |
| JSON body | `email` | ''(空值时回退) |
> 表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。
### 参数校验与业务错误
| HTTP | 服务端校验说明 |
| --- | --- |
| 400 | '该邮箱已是当前账号的邮箱' |
| 400 | '邮箱格式不正确' |
| 409 | '该邮箱已被其他账号使用' |
| 429 | '当前网络请求验证码过于频繁,请稍后再试' |
| 429 | f"发送太频繁,请 {60 - (now - row['sent_at'])} 秒后再试" |
| 500 | '邮件服务未配置,请联系管理员' |
| 502 | '邮件发送失败,请稍后重试' |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
### 请求模板
将 `{id}` 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
```bash
curl --request POST 'https://music.20110208.xyz/cm/profile/email/code' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN' \
--header 'Content-Type: application/json' \
--data '{"email": "<email>"}'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
ok | True |
ttl | 300 |
实现定位:backend/cm_server.py:2951。接口参数和返回条件均来自该路由分支。
PUT /cm/profile/password
修改密码:{oldPassword,newPassword} 或 {emailCode,newPassword};邮箱验证码方式保留下线其他设备
权限:Bearer。
参数校验与业务错误
| HTTP | 服务端校验说明 |
|---|---|
| 400 | '原密码错误' |
| 400 | '当前账号未绑定邮箱,无法使用邮箱验证码修改密码' |
| 400 | '新密码长度需 6~64 位' |
| 400 | '请填写原密码或邮箱验证码' |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request PUT 'https://music.20110208.xyz/cm/profile/password' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
ok | True |
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
ok | True |
revoked | removed |
实现定位:backend/cm_server.py:2922。接口参数和返回条件均来自该路由分支。
POST /cm/profile/password/code
向当前账号绑定邮箱发送修改密码验证码(未绑定邮箱返回 400;与找回密码共用 reset: 命名空间)
权限:Bearer。
参数校验与业务错误
| HTTP | 服务端校验说明 |
|---|---|
| 400 | '当前账号未绑定邮箱,请先在设置中绑定邮箱' |
| 429 | f"发送太频繁,请 {60 - (now - row['sent_at'])} 秒后再试" |
| 500 | '邮件服务未配置,请联系管理员' |
| 502 | '邮件发送失败,请稍后重试' |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request POST 'https://music.20110208.xyz/cm/profile/password/code' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
ok | True |
ttl | 300 |
email | cm_passport.mask_email(email) |
实现定位:backend/cm_server.py:2897。接口参数和返回条件均来自该路由分支。
GET /cm/profile/{id}
个人资料 · /profile/{id}
权限:路由未直接调用登录检查;委托处理器可能另行校验,见说明。
请求参数
| 位置 | 字段 | 默认/读取方式 |
|---|---|---|
| path | id | 路径占位符;按业务替换 |
表格列出实际代码读取的字段;get 的默认值不等于业务可省略。必填、长度和取值约束见下方校验及关联专题。
参数校验与业务错误
| HTTP | 服务端校验说明 |
|---|---|
| 404 | '用户不存在' |
说明中的变量表达式表示运行时值;另有统一的认证、频控和上游错误。
请求模板
将 {id} 等占位符和字段值替换为实际数据,令牌只使用你自己的 CurrentMusic 会话。
curl --request GET 'https://music.20110208.xyz/cm/profile/{id}' \
--header 'Authorization: Bearer YOUR_CURRENTMUSIC_TOKEN'
返回结构
以下是实现中直接返回的字段与取值表达式,不是一次真实请求的响应示例。条件分支可能返回不同结构。
HTTP 200
| 字段 | 取值/生成逻辑 |
|---|---|
响应体 | out |
实现定位:backend/cm_server.py:3044。接口参数和返回条件均来自该路由分支。