docs-mastodon/content/zh-cn/methods/accounts.md

2365 lines
59 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: accounts API 方法
description: 关于账户和账户资料的方法。
menu:
docs:
weight: 20
name: accounts
parent: methods
identifier: methods-accounts
aliases: [
"/methods/accounts",
"/api/methods/accounts"
]
---
<style>
#TableOfContents ul ul ul {display: none}
</style>
## 注册账户 {#create}
```http
POST /api/v1/accounts HTTP/1.1
```
创建账户记录。返回发起请求的应用的账户访问令牌。应用应保存此令牌以供将来使用,并应等待用户通过点击其电子邮件收件箱中的链接来确认其账户。
OAuth 应用和创建的用户账户之间的关系将被存储。
**返回:** [Token]({{< relref "entities/token" >}})\
**OAuth:** 应用令牌 + `write:accounts`\
**版本历史:**\
2.7.0 - 添加\
3.0.0 - 添加 `reason` 参数\
3.4.0 - 向失败响应添加 `details`\
4.4.0 - 添加 `date_of_birth` 参数
#### 请求
##### 标头
Authorization
: {{<required>}} 提供此标头与 `Bearer <app_token>`,以获得对此 API 方法的访问授权。
##### 表单数据参数
username
: {{<required>}} 字符串。账户所需的用户名。
email
: {{<required>}} 字符串。用于登录的电子邮件地址。
password
: {{<required>}} 字符串。用于登录的密码。
agreement
: {{<required>}} 布尔值。用户是否同意本站规则、条款和政策。应向用户展示这些内容,以便他们在将此参数设置为 TRUE 之前表示同意。
locale
: {{<required>}} 字符串。将发送的确认电子邮件的语言。
reason
: 字符串。若注册需要手动批准,则版主将审查此文本。
date_of_birth
: 字符串 ([Date](/api/datetime-format#date)),若实例有最低年龄要求,则为必填。
#### 响应
##### 200: OK
```json
```
##### 401: Unauthorized
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
`details` 参数包含所有检测到的错误。其结构是一个哈希,键是错误的参数,值是找到的所有错误的数组。
错误响应示例:
```json
{
"error": "Validation failed: Password can't be blank, Username must contain only letters, numbers and underscores, Agreement must be accepted",
"details": {
"password": [
{
"error": "ERR_BLANK",
"description": "can't be blank"
}
],
"username": [
{
"error": "ERR_INVALID",
"description": "must contain only letters, numbers and underscores"
}
],
"agreement": [
{
"error": "ERR_ACCEPTED",
"description": "must be accepted"
}
]
}
}
```
你可能会遇到以下错误:
ERR_BLOCKED
: 当电子邮件提供商不被允许时出现
ERR_UNREACHABLE
: 当电子邮件地址无法通过 DNSMX、A、AAAA解析到任何 IP 时出现
ERR_TAKEN
: 当用户名或电子邮件已被占用时出现
ERR_RESERVED
: 当用户名被保留时出现例如注册使用的用户名为“webmaster”或“admin”
ERR_ACCEPTED
: 当未接受协议时出现
ERR_BLANK
: 当未填写必填项时出现
ERR_INVALID
: 当某一项格式错误时,例如错误的字符或无效的电子邮件地址出现
ERR_TOO_LONG
: 当某一项超过字符数限制时出现
ERR_TOO_SHORT
: 当某一项低于字符数要求时出现
ERR_INCLUSION
: 当某一项的值不是允许的值之一时出现,例如填写了不受支持的语言
##### 429: Rate limited
```json
{
"error": "请求过多"
}
```
---
## 验证账户凭据 {#verify_credentials}
```http
GET /api/v1/accounts/verify_credentials HTTP/1.1
```
测试以确保用户令牌有效。
**返回:** [CredentialAccount]({{< relref "entities/Account#CredentialAccount">}})\
**OAuth:** 用户令牌 + `profile``read:accounts`\
**版本历史:**\
0.0.0 - 添加
4.3.0 - 添加 `profile`
#### 请求
##### 标头
Authorization
: {{<required>}} 提供此标头与 `Bearer <user_token>`,以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
请注意额外的 `source` 属性,该属性在你自己的账户之外不可见。另请注意,纯文本用于 `source` 中,而 HTML 用于其相应的属性,例如 `note``fields`
```json
{
"id": "14715",
"username": "trwnh",
"acct": "trwnh",
"display_name": "infinite love ⴳ",
"locked": false,
"bot": false,
"created_at": "2016-11-24T10:02:12.085Z",
"note": "<p>i have approximate knowledge of many things. perpetual student. (nb/ace/they)</p><p>xmpp/email: a@trwnh.com<br /><a href=\"https://trwnh.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">trwnh.com</span><span class=\"invisible\"></span></a><br />help me live: <a href=\"https://liberapay.com/at\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/at</span><span class=\"invisible\"></span></a> or <a href=\"https://paypal.me/trwnh\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">paypal.me/trwnh</span><span class=\"invisible\"></span></a></p><p>- my triggers are moths and glitter<br />- i have all notifs except mentions turned off, so please interact if you wanna be friends! i literally will not notice otherwise<br />- dm me if i did something wrong, so i can improve<br />- purest person on fedi, do not lewd in my presence<br />- #1 ami cole fan account</p><p>:fatyoshi:</p>",
"url": "https://mastodon.social/@trwnh",
"avatar": "https://files.mastodon.social/accounts/avatars/000/014/715/original/34aa222f4ae2e0a9.png",
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/014/715/original/34aa222f4ae2e0a9.png",
"header": "https://files.mastodon.social/accounts/headers/000/014/715/original/5c6fc24edb3bb873.jpg",
"header_static": "https://files.mastodon.social/accounts/headers/000/014/715/original/5c6fc24edb3bb873.jpg",
"followers_count": 821,
"following_count": 178,
"statuses_count": 33120,
"last_status_at": "2019-11-24T15:49:42.251Z",
"source": {
"privacy": "public",
"sensitive": false,
"language": "",
"note": "i have approximate knowledge of many things. perpetual student. (nb/ace/they)\r\n\r\nxmpp/email: a@trwnh.com\r\nhttps://trwnh.com\r\nhelp me live: https://liberapay.com/at or https://paypal.me/trwnh\r\n\r\n- my triggers are moths and glitter\r\n- i have all notifs except mentions turned off, so please interact if you wanna be friends! i literally will not notice otherwise\r\n- dm me if i did something wrong, so i can improve\r\n- purest person on fedi, do not lewd in my presence\r\n- #1 ami cole fan account\r\n\r\n:fatyoshi:",
"fields": [
{
"name": "Website",
"value": "https://trwnh.com",
"verified_at": "2019-08-29T04:14:55.571+00:00"
},
{
"name": "Sponsor",
"value": "https://liberapay.com/at",
"verified_at": "2019-11-15T10:06:15.557+00:00"
},
{
"name": "Fan of:",
"value": "Punk-rock and post-hardcore (Circa Survive, letlive., La Dispute, THE FEVER 333)Manga (Yu-Gi-Oh!, One Piece, JoJo's Bizarre Adventure, Death Note, Shaman King)Platformers and RPGs (Banjo-Kazooie, Boktai, Final Fantasy Crystal Chronicles)",
"verified_at": null
},
{
"name": "Main topics:",
"value": "systemic analysis, design patterns, anticapitalism, info/tech freedom, theory and philosophy, and otherwise being a genuine and decent wholesome poster. i'm just here to hang out and talk to cool people!",
"verified_at": null
}
],
"follow_requests_count": 0
},
"emojis": [
{
"shortcode": "fatyoshi",
"url": "https://files.mastodon.social/custom_emojis/images/000/023/920/original/e57ecb623faa0dc9.png",
"static_url": "https://files.mastodon.social/custom_emojis/images/000/023/920/static/e57ecb623faa0dc9.png",
"visible_in_picker": true
}
],
"fields": [
{
"name": "Website",
"value": "<a href=\"https://trwnh.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">trwnh.com</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-08-29T04:14:55.571+00:00"
},
{
"name": "Sponsor",
"value": "<a href=\"https://liberapay.com/at\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/at</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-11-15T10:06:15.557+00:00"
},
{
"name": "Fan of:",
"value": "Punk-rock and post-hardcore (Circa Survive, letlive., La Dispute, THE FEVER 333)Manga (Yu-Gi-Oh!, One Piece, JoJo&apos;s Bizarre Adventure, Death Note, Shaman King)Platformers and RPGs (Banjo-Kazooie, Boktai, Final Fantasy Crystal Chronicles)",
"verified_at": null
},
{
"name": "Main topics:",
"value": "systemic analysis, design patterns, anticapitalism, info/tech freedom, theory and philosophy, and otherwise being a genuine and decent wholesome poster. i&apos;m just here to hang out and talk to cool people!",
"verified_at": null
}
]
}
```
##### 401: Unauthorized
若令牌无效或不正确,凭据验证将失败。
```json
{
"error": "The access token is invalid"
}
```
##### 403: Forbidden
你的用户账户当前已禁用,缺少已验证的电子邮件地址或正在等待批准。
```json
{
"error": "Your login is currently disabled"
}
```
```json
{
"error": "Your login is missing a confirmed e-mail address"
}
```
```json
{
"error": "Your login is currently pending approval"
}
```
##### 422: Unprocessable entity
令牌没有授权用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 更新账户凭据 {#update_credentials}
```http
PATCH /api/v1/accounts/update_credentials HTTP/1.1
```
更新用户的显示和偏好设置。
**返回:** 用户自己的 [Account]({{< relref "entities/Account">}}),带有 [`source`]({{< relref "entities/Account#source">}}) 属性\
**OAuth:** 用户令牌 + `write:accounts`\
**版本历史:**\
1.1.1 - 添加\
2.3.0 - 添加 `locked` 参数\
2.4.0 - 添加 `source[privacy,sensitive]` 参数\
2.4.2 - 添加 `source[language]` 参数\
2.7.0 - 添加 `discoverable` 参数\
4.1.0 - 添加 `hide_collections` 参数\
4.2.0 - 添加 `indexable` 参数\
4.4.0 (`mastodon` [API 版本]({{< relref "entities/Instance#api-versions" >}}) 3) - 添加 `attribution_domains` 参数
#### 请求
##### 标头
Authorization
: {{<required>}} 提供此标头与 `Bearer <user_token>`,以获得对此 API 方法的访问授权。
##### 表单数据参数
display_name
: 字符串。用于 profile 的昵称。
note
: 字符串。账户简介。
avatar
: 使用“multipart/form-data”编码的头像图片
header
: 使用“multipart/form-data”编码的横幅图片
locked
: 布尔值。是否需要手动批准关注请求。
bot
: 布尔值。账户是否具有机器人标志。
discoverable
: 布尔值。账户是否应被展示在用户列表中。
hide_collections
: 布尔值。是否隐藏关注者和关注的账户。
indexable
: 布尔值。公开嘟文是否应可供任何人搜索。
attribution_domains[]
: 字符串数组。允许授权该账户的网站域名。
fields_attributes
: 哈希。要设置的个人资料字段。在此哈希中,键是被强制转换为字符串的整数(尽管确切的整数并不重要),值是另一个包含 `name``value` 的哈希。默认情况下,最多 4 个字段。
fields_attributes[:index][name]
: 字符串。个人资料字段的名称。默认情况下,最多 255 个字符。
fields_attributes[:index][value]
: 字符串。个人资料字段的值。默认情况下,最多 255 个字符。
source[privacy]
: 字符串。默认发嘟可见性设置。可以是“public”、“unlisted”或“private”。
source[sensitive]
: 布尔值。是否默认将嘟文标记为敏感。
source[language]
: 字符串。新嘟文默认语言ISO 6391
#### 响应
##### 200: OK
要更新账户字段,你需要参照一下结构构造你的哈希,例如:
```json
{
"fields_attributes": {
"0": {
"name": "Website",
"value": "https://trwnh.com"
},
"1": {
"name": "Sponsor",
"value": "https://liberapay.com/at"
},
// ...
}
}
```
作为查询参数,你的请求可能如下所示:
```http
PATCH https://mastodon.example/api/v1/accounts/update_credentials
?fields_attributes[0][name]=Website
&fields_attributes[0][value]=https://trwnh.com
&fields_attributes[1][name]=Sponsor
&fields_attributes[1][value]=https://liberapay.com/at
&...
```
请注意,整数索引实际上并不重要 - 字段将按提供的顺序填充。 例如:
```json
{
"fields_attributes": {
"420": {
"name": "1st",
"value": "field"
},
"69": {
"name": "2nd",
"value": "field"
},
"1312": {
"name": "3rd",
"value": "field"
},
"-99999999999999999999999999999999": {
"name": "4th",
"value": "field"
},
}
}
```
你应该使用 accounts/verify_credentials首先从 `source` 参数中获取纯文本表示形式,然后允许用户编辑这些纯文本表示形式,然后再通过此 API 提交它们。实例将生成相应的 HTML。
```json
{
"id": "14715",
"username": "trwnh",
"acct": "trwnh",
"display_name": "infinite love ⴳ",
"locked": false,
"bot": false,
"created_at": "2016-11-24T10:02:12.085Z",
"note": "<p>i have approximate knowledge of many things. perpetual student. (nb/ace/they)</p><p>xmpp/email: a@trwnh.com<br /><a href=\"https://trwnh.com\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">trwnh.com</span><span class=\"invisible\"></span></a><br />help me live: <a href=\"https://liberapay.com/at\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/at</span><span class=\"invisible\"></span></a> or <a href=\"https://paypal.me/trwnh\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">paypal.me/trwnh</span><span class=\"invisible\"></span></a></p><p>- my triggers are moths and glitter<br />- i have all notifs except mentions turned off, so please interact if you wanna be friends! i literally will not notice otherwise<br />- dm me if i did something wrong, so i can improve<br />- purest person on fedi, do not lewd in my presence<br />- #1 ami cole fan account</p><p>:fatyoshi:</p>",
"url": "https://mastodon.social/@trwnh",
"avatar": "https://files.mastodon.social/accounts/avatars/000/014/715/original/34aa222f4ae2e0a9.png",
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/014/715/original/34aa222f4ae2e0a9.png",
"header": "https://files.mastodon.social/accounts/headers/000/014/715/original/5c6fc24edb3bb873.jpg",
"header_static": "https://files.mastodon.social/accounts/headers/000/014/715/original/5c6fc24edb3bb873.jpg",
"followers_count": 834,
"following_count": 182,
"statuses_count": 33760,
"last_status_at": "2019-12-01T00:12:08.731Z",
"source": {
"privacy": "public",
"sensitive": false,
"language": "",
"note": "i have approximate knowledge of many things. perpetual student. (nb/ace/they)\r\n\r\nxmpp/email: a@trwnh.com\r\nhttps://trwnh.com\r\nhelp me live: https://liberapay.com/at or https://paypal.me/trwnh\r\n\r\n- my triggers are moths and glitter\r\n- i have all notifs except mentions turned off, so please interact if you wanna be friends! i literally will not notice otherwise\r\n- dm me if i did something wrong, so i can improve\r\n- purest person on fedi, do not lewd in my presence\r\n- #1 ami cole fan account\r\n\r\n:fatyoshi:",
"fields": [
{
"name": "Website",
"value": "https://trwnh.com",
"verified_at": "2019-08-29T04:14:55.571+00:00"
},
{
"name": "Sponsor",
"value": "https://liberapay.com/at",
"verified_at": "2019-11-15T10:06:15.557+00:00"
},
{
"name": "Fan of:",
"value": "Punk-rock and post-hardcore (Circa Survive, letlive., La Dispute, THE FEVER 333)Manga (Yu-Gi-Oh!, One Piece, JoJo's Bizarre Adventure, Death Note, Shaman King)Platformers and RPGs (Banjo-Kazooie, Boktai, Final Fantasy Crystal Chronicles)",
"verified_at": null
},
{
"name": "Main topics:",
"value": "systemic analysis, design patterns, anticapitalism, info/tech freedom, theory and philosophy, and otherwise being a genuine and decent wholesome poster. i'm just here to hang out and talk to cool people!",
"verified_at": null
}
],
"follow_requests_count": 0
},
"emojis": [
{
"shortcode": "fatyoshi",
"url": "https://files.mastodon.social/custom_emojis/images/000/023/920/original/e57ecb623faa0dc9.png",
"static_url": "https://files.mastodon.social/custom_emojis/images/000/023/920/static/e57ecb623faa0dc9.png",
"visible_in_picker": true
}
],
"fields": [
{
"name": "Website",
"value": "<a href=\"https://trwnh.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">trwnh.com</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-08-29T04:14:55.571+00:00"
},
{
"name": "Sponsor",
"value": "<a href=\"https://liberapay.com/at\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">liberapay.com/at</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-11-15T10:06:15.557+00:00"
},
{
"name": "Fan of:",
"value": "Punk-rock and post-hardcore (Circa Survive, letlive., La Dispute, THE FEVER 333)Manga (Yu-Gi-Oh!, One Piece, JoJo&apos;s Bizarre Adventure, Death Note, Shaman King)Platformers and RPGs (Banjo-Kazooie, Boktai, Final Fantasy Crystal Chronicles)",
"verified_at": null
},
{
"name": "Main topics:",
"value": "systemic analysis, design patterns, anticapitalism, info/tech freedom, theory and philosophy, and otherwise being a genuine and decent wholesome poster. i&apos;m just here to hang out and talk to cool people!",
"verified_at": null
}
]
}
```
##### 401: Unauthorized
```json
{
"error": "访问令牌无效"
}
```
##### 422: Unprocessable entity
令牌没有授权用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 获取账户 {#get}
```http
GET /api/v1/accounts/:id HTTP/1.1
```
查看账户信息。
**返回:** [Account]({{< relref "entities/Account">}})\
**OAuth:** 公开\
**版本历史:**\
0.0.0 - 添加\
2.4.0 - 若账户已封禁,则返回 410\
3.3.0 - 返回一个带有 `suspended: true` 的账户,而不是 410
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头与 `Bearer <user_token>`,以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
将返回账户记录。请注意,本站用户的 `acct` 不包括域名。
###### 本站用户
```json
{
"id": "1",
"username": "Gargron",
"acct": "Gargron",
"display_name": "Eugen",
"locked": false,
"bot": false,
"created_at": "2016-03-16T14:34:26.392Z",
"note": "<p>Developer of Mastodon and administrator of mastodon.social. I post service announcements, development updates, and personal stuff.</p>",
"url": "https://mastodon.social/@Gargron",
"avatar": "https://files.mastodon.social/accounts/avatars/000/000/001/original/d96d39a0abb45b92.jpg",
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/000/001/original/d96d39a0abb45b92.jpg",
"header": "https://files.mastodon.social/accounts/headers/000/000/001/original/c91b871f294ea63e.png",
"header_static": "https://files.mastodon.social/accounts/headers/000/000/001/original/c91b871f294ea63e.png",
"followers_count": 318699,
"following_count": 453,
"statuses_count": 61013,
"last_status_at": "2019-11-30T20:02:08.277Z",
"emojis": [],
"fields": [
{
"name": "Patreon",
"value": "<a href=\"https://www.patreon.com/mastodon\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">patreon.com/mastodon</span><span class=\"invisible\"></span></a>",
"verified_at": null
},
{
"name": "Homepage",
"value": "<a href=\"https://zeonfederated.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">zeonfederated.com</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-07-15T18:29:57.191+00:00"
}
]
}
```
###### 外站用户
```json
{
"id": "23634",
"username": "noiob",
"acct": "noiob@awoo.space",
"display_name": "shork",
"locked": false,
"bot": false,
"created_at": "2017-02-08T02:00:53.274Z",
"note": "<p>:ms_rainbow_flag: :ms_bisexual_flag: :ms_nonbinary_flag: <a href=\"https://awoo.space/tags/awoo\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>awoo</span></a>.space <a href=\"https://awoo.space/tags/admin\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>admin</span></a> ~ <a href=\"https://awoo.space/tags/bi\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>bi</span></a> ~ <a href=\"https://awoo.space/tags/nonbinary\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>nonbinary</span></a> ~ compsci student ~ likes video <a href=\"https://awoo.space/tags/games\" class=\"mention hashtag\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">#<span>games</span></a> and weird/ old electronics and will post obsessively about both ~ avatar by <span class=\"h-card\"><a href=\"https://weirder.earth/@dzuk\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>dzuk</span></a></span></p>",
"url": "https://awoo.space/@noiob",
"avatar": "https://files.mastodon.social/accounts/avatars/000/023/634/original/6ca8804dc46800ad.png",
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/023/634/original/6ca8804dc46800ad.png",
"header": "https://files.mastodon.social/accounts/headers/000/023/634/original/256eb8d7ac40f49a.png",
"header_static": "https://files.mastodon.social/accounts/headers/000/023/634/original/256eb8d7ac40f49a.png",
"followers_count": 553,
"following_count": 405,
"statuses_count": 28982,
"last_status_at": "2019-12-01T00:39:57.264Z",
"emojis": [
{
"shortcode": "ms_rainbow_flag",
"url": "https://files.mastodon.social/custom_emojis/images/000/028/691/original/6de008d6281f4f59.png",
"static_url": "https://files.mastodon.social/custom_emojis/images/000/028/691/static/6de008d6281f4f59.png",
"visible_in_picker": true
},
{
"shortcode": "ms_bisexual_flag",
"url": "https://files.mastodon.social/custom_emojis/images/000/050/744/original/02f94a5fca7eaf78.png",
"static_url": "https://files.mastodon.social/custom_emojis/images/000/050/744/static/02f94a5fca7eaf78.png",
"visible_in_picker": true
},
{
"shortcode": "ms_nonbinary_flag",
"url": "https://files.mastodon.social/custom_emojis/images/000/105/099/original/8106088bd4782072.png",
"static_url": "https://files.mastodon.social/custom_emojis/images/000/105/099/static/8106088bd4782072.png",
"visible_in_picker": true
}
],
"fields": [
{
"name": "Pronouns",
"value": "they/them",
"verified_at": null
},
{
"name": "Alt",
"value": "<span class=\"h-card\"><a href=\"https://cybre.space/@noiob\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>noiob</span></a></span>",
"verified_at": null
},
{
"name": "Bots",
"value": "<span class=\"h-card\"><a href=\"https://botsin.space/@darksouls\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>darksouls</span></a></span>, <span class=\"h-card\"><a href=\"https://botsin.space/@nierautomata\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>nierautomata</span></a></span>, code for <span class=\"h-card\"><a href=\"https://botsin.space/@awoobot\" class=\"u-url mention\" rel=\"nofollow noopener noreferrer\" target=\"_blank\">@<span>awoobot</span></a></span>",
"verified_at": null
},
{
"name": "Website",
"value": "<a href=\"http://shork.xyz\" rel=\"nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">http://</span><span class=\"\">shork.xyz</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-11-23T20:25:47.907+00:00"
}
]
}
```
###### 已封禁用户
```json
{
"id": "14",
"username": "stigatle",
"acct": "stigatle@quitter.no",
"display_name": "",
"locked": false,
"bot": false,
"discoverable": false,
"group": false,
"created_at": "2016-03-18T10:04:51.700Z",
"note": "",
"url": "https://quitter.no/stigatle",
"avatar": "https://mastodon.social/avatars/original/missing.png",
"avatar_static": "https://mastodon.social/avatars/original/missing.png",
"header": "https://mastodon.social/headers/original/missing.png",
"header_static": "https://mastodon.social/headers/original/missing.png",
"followers_count": 0,
"following_count": 0,
"statuses_count": 0,
"last_status_at": null,
"suspended": true,
"emojis": [],
"fields": []
}
```
##### 401: Unauthorized
若实例处于白名单模式,且 `Authorization` 标头缺失或无效。
```json
{
"error": "此 API 需要已认证的用户"
}
```
##### 404: Not found
账户不存在。
```json
{
"error": "记录未找到"
}
```
##### 410: Gone
账户已被封禁(版本 2.4.0 起至 3.3.0 止)。
---
## 获取多个账户信息 {#index}
```http
GET /api/v1/accounts HTTP/1.1
```
查看多个账户的信息。
**返回:** [Account]({{< relref "entities/Account">}}) 数组
**OAuth** 公开
**版本历史:**
4.3.0 - 添加
#### 请求
##### 标头
##### 查询参数
id[]
: 字符串数组。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
将返回请求的已验证且已被批准账户的 [Account]({{< relref "entities/Account">}}) 记录。若账户不存在或未确认,返回的记录数可能会少于请求的数量。
使用 `id[]=1&id[]=2` 的调用示例(当 ID 为 2 的账户不存在时):
```json
[
{
"id": "1",
"username": "Gargron",
"acct": "Gargron",
"display_name": "Eugen",
"locked": false,
"bot": false,
"created_at": "2016-03-16T14:34:26.392Z",
"note": "<p>Developer of Mastodon and administrator of mastodon.social. I post service announcements, development updates, and personal stuff.</p>",
"url": "https://mastodon.social/@Gargron",
"avatar": "https://files.mastodon.social/accounts/avatars/000/000/001/original/d96d39a0abb45b92.jpg",
"avatar_static": "https://files.mastodon.social/accounts/avatars/000/000/001/original/d96d39a0abb45b92.jpg",
"header": "https://files.mastodon.social/accounts/headers/000/000/001/original/c91b871f294ea63e.png",
"header_static": "https://files.mastodon.social/accounts/headers/000/000/001/original/c91b871f294ea63e.png",
"followers_count": 318699,
"following_count": 453,
"statuses_count": 61013,
"last_status_at": "2019-11-30T20:02:08.277Z",
"emojis": [],
"fields": [
{
"name": "Patreon",
"value": "<a href=\"https://www.patreon.com/mastodon\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://www.</span><span class=\"\">patreon.com/mastodon</span><span class=\"invisible\"></span></a>",
"verified_at": null
},
{
"name": "Homepage",
"value": "<a href=\"https://zeonfederated.com\" rel=\"me nofollow noopener noreferrer\" target=\"_blank\"><span class=\"invisible\">https://</span><span class=\"\">zeonfederated.com</span><span class=\"invisible\"></span></a>",
"verified_at": "2019-07-15T18:29:57.191+00:00"
}
]
}
]
```
##### 401: Unauthorized
若实例处于白名单模式,且 `Authorization` 标头缺失或无效,则返回此错误。
```json
{
"error": "This API requires an authenticated user"
}
```
---
## 获取账户的嘟文 {#statuses}
```http
GET /api/v1/accounts/:id/statuses HTTP/1.1
```
获取指定账户发布的嘟文。
**返回:** [Status]({{< relref "entities/status">}}) 数组
**OAuth** 公开访问(仅限公开嘟文),或用户令牌 + `read:statuses`(用于访问用户有权查看的私密嘟文)
**版本历史:**
0.0.0 - 添加
1.4.2 - 添加 `only_media``exclude_replies`
1.6.0 - 添加 `pinned`
2.6.0 - 添加 `min_id`
2.7.0 - 添加 `exclude_reblogs` 并允许未经身份验证的使用
2.8.0 - 添加 `tagged` 参数
3.3.0 - 现在可以同时使用 `min_id``max_id`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
##### 查询参数
max_id
: 字符串。返回的所有结果 ID 都将小于此 ID。事实上设置结果的上限。
since_id
: 字符串。返回的所有结果 ID 都将大于此 ID。事实上是设置结果的下限。
min_id
: 字符串。返回紧邻此 ID 之后的新结果。事实上在此 ID 设置游标并向前分页。
limit
: 整数。返回的最大结果数。默认为 20 条嘟文。最多 40 条嘟文。
only_media
: 布尔值。过滤没有附件的嘟文。
exclude_replies
: 布尔值。过滤回复给其他账户的嘟文。
exclude_reblogs
: 布尔值。过滤转嘟。
pinned
: 布尔值。仅筛选置顶的嘟文。默认为 false包含所有嘟文。置顶嘟文在返回结果的顺序中没有特殊优先级。
tagged
: 字符串。筛选使用了特定话题标签的嘟文。
#### 响应
##### 200: OK
```json
[
{
"id": "108880211901672326",
"created_at": "2022-08-24T22:29:46.493Z",
"in_reply_to_id": "108880209317577809",
"in_reply_to_account_id": "103641",
"sensitive": false,
// ...
},
// ...
]
```
##### 401: Unauthorized
若实例处于白名单模式,且 `Authorization` 标头缺失或无效,则返回此错误。
白名单模式的响应示例:
```json
{
"error": "This API requires an authenticated user"
}
```
2.7.0 版本之前的响应示例:
```json
{
"error": "The access token is invalid"
}
```
##### 404: Not found
账户不存在。
```json
{
"error": "Record not found"
}
```
##### 410: Gone
账户已被封禁(版本 2.4.0 起至 3.3.0 止)。
---
## 获取账户的关注者 {#followers}
```http
GET /api/v1/accounts/:id/followers HTTP/1.1
```
获取关注指定账户的用户列表,前提是该账户所有者未隐藏其社交关系网络。
**返回:** [Account]({{< relref "entities/Account">}}) 数组
**OAuth** 公开访问
**版本历史:**
0.0.0 - 添加
3.3.0 - 现在可以同时使用 `min_id``max_id`
4.0.0 - 不再需要应用令牌 + `read:accounts`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
##### 查询参数
max_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
since_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
min_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
limit
: 整数。返回的最大结果数。默认为 40 个账户。最多 80 个账户。
#### 响应
##### 200: OK
limit=2 的输出示例。
```json
[
{
"id": "1020382",
"username": "atul13061987",
"acct": "atul13061987",
"display_name": "",
// ...
},
{
"id": "1020381",
"username": "linuxliner",
"acct": "linuxliner",
"display_name": "",
// ...
}
]
```
由于关注关系 ID 通常不会通过任何 API 响应公开,你需要解析 HTTP `Link` 标头来加载更早或更新的结果。更多信息请参见 [通过 API 响应分页]({{<relref "api/guidelines#pagination">}})。
```http
Link: <https://mastodon.example/api/v1/accounts/14715/followers?limit=2&max_id=7486869>; rel="next", <https://mastodon.example/api/v1/accounts/14715/followers?limit=2&since_id=7489740>; rel="prev"
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失,或者实例处于白名单模式且你的令牌未获得用户授权。
白名单模式的响应示例:
```json
{
"error": "This API requires an authenticated user"
}
```
标头缺失或令牌无效的响应示例:
```json
{
"error": "The access token is invalid"
}
```
##### 404: Not found
账户不存在。
```json
{
"error": "Record not found"
}
```
##### 410: Gone
账户已被封禁(版本 2.4.0 起至 3.3.0 止)。
---
## 获取账户正在关注的用户 {#following}
```http
GET /api/v1/accounts/:id/following HTTP/1.1
```
获取指定账户正在关注的用户列表,前提是该账户所有者未隐藏其社交关系网络。
**返回:** [Account]({{< relref "entities/Account">}}) 数组
**OAuth** 公开访问
**版本历史:**
0.0.0 - 添加
3.3.0 - 现在可以同时使用 `min_id``max_id`
4.0.0 - 不再需要应用令牌 + `read:accounts`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
##### 查询参数
max_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
since_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
min_id
: **内部参数。** 使用 HTTP `Link` 标头进行分页。
limit
: 整数。返回的最大结果数。默认为 40 个账户。最多 80 个账户。
#### 响应
##### 200: OK
limit=2 的输出示例。
```json
[
{
"id": "963410",
"username": "gautambhatia",
"acct": "gautambhatia",
"display_name": "Gautam Bhatia",
// ...
},
{
"id": "1007400",
"username": "seafrog",
"acct": "seafrog@glitterkitten.co.uk",
"display_name": "🐓🦃 Heck Partridge 🤠 🦆",
// ...
]
```
由于关注关系 ID 通常不会通过任何 API 响应公开,你需要解析 HTTP `Link` 标头来加载更早或更新的结果。更多信息请参见 [通过 API 响应分页]({{<relref "api/guidelines#pagination">}})。
```http
Link: <https://mastodon.example/api/v1/accounts/1/followers?limit=2&max_id=7628164>; rel="next", <https://mastodon.example/api/v1/accounts/1/followers?limit=2&since_id=7628165>; rel="prev"
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失,或者实例处于白名单模式且你的令牌未获得用户授权。
白名单模式的响应示例:
```json
{
"error": "This API requires an authenticated user"
}
```
标头缺失或令牌无效的响应示例:
```json
{
"error": "The access token is invalid"
}
```
##### 404: Not found
账户不存在。
```json
{
"error": "Record not found"
}
```
##### 410: Gone
账户已被封禁(版本 2.4.0 起至 3.3.0 止)。
---
## 获取账户的精选话题标签 {#featured_tags}
```http
GET /api/v1/accounts/:id/featured_tags HTTP/1.1
```
获取此账户的精选话题标签。
**返回:** [FeaturedTag]({{< relref "entities/featuredtag">}}) 数组
**OAuth** 公开
**版本历史:**
3.3.0 - 添加
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
```json
[
{
"id": "627",
"name": "nowplaying",
"statuses_count": 36,
"last_status_at": "2019-11-15T07:14:43.524Z"
}
]
```
---
## 获取包含此账户的列表 {#lists}
```http
GET /api/v1/accounts/:id/lists HTTP/1.1
```
获取你已将此账户添加到的用户列表。
**返回:** [List]({{< relref "entities/list">}}) 数组
**OAuth** 用户令牌 + `read:lists`
**版本历史:**
2.1.0 - 添加
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
若该账户属于任何列表,将返回这些列表的实体。若该账户不属于你的任何列表,则返回空数组。
```json
[
{
"id": "13694",
"title": "dev"
}
]
```
```json
[]
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失,或者实例处于白名单模式且你的令牌未获得用户授权。
白名单模式的响应示例:
```json
{
"error": "This API requires an authenticated user"
}
```
标头缺失或令牌无效的响应示例:
```json
{
"error": "The access token is invalid"
}
```
##### 404: Not found
账户不存在。
```json
{
"error": "Record not found"
}
```
##### 410: Gone
账户已被封禁(版本 2.4.0 起至 3.3.0 止)。
##### 422: Unprocessable entity
令牌没有授权用户。
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 关注账户 {#follow}
```http
POST /api/v1/accounts/:id/follow HTTP/1.1
```
关注指定账户。也可用于更新是否显示转嘟或启用通知。
**返回:** [Relationship]({{< relref "entities/relationship">}})
**OAuth** 用户令牌 + `write:follows`
**版本历史:**
0.0.0 - 添加
3.3.0 - 添加 `notify`
3.5.0 - 弃用 `follow` 作用域。现在额外接受 `write`
4.0.0 - 添加 `languages`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
##### 表单数据参数
reblogs
: 布尔值。是否在主页时间线上接收此账户的转嘟?默认为 true。
notify
: 布尔值。当此账户发布嘟文时是否接收通知?默认为 false。
languages[]
: 字符串数组ISO 639-1 双字符语言代码)。根据设置的语言过滤接收到的嘟文。若未提供,你将接收此账户所有语言的嘟文。
#### 响应
##### 200: OK
成功关注,或账户已被关注。
```json
{
"id": "3",
"following": true,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 403: Forbidden
试图关注你屏蔽的或屏蔽你的用户。
```json
{
"error": "This action is not allowed"
}
```
##### 422: Unprocessable entity
令牌没有授权用户。
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 取消关注账户 {#unfollow}
```http
POST /api/v1/accounts/:id/unfollow HTTP/1.1
```
取消关注指定账户。
**返回:** [Relationship]({{< relref "entities/relationship">}})
**OAuth** 用户令牌 + `write:follows`
**版本历史:**
0.0.0 - 添加
3.5.0 - 弃用 `follow` 作用域。现在额外接受 `write`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。数据库中账户的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头并附带 `Bearer <用户令牌>` 以获得对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功取消关注,或账户本未被关注。
```json
{
"id": "3",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 屏蔽账户 {#block}
```http
POST /api/v1/accounts/:id/block HTTP/1.1
```
屏蔽指定的账户。客户端应过滤来自此账户的嘟文(例如,由于主页时间线上的转嘟而收到的嘟文)。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户令牌 + `write:blocks`\
**版本历史:**\
0.0.0 - 添加\
3.5.0 - 弃用了 `follow` 作用域。现在额外接受 `write`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功屏蔽,或账户已被屏蔽
```json
{
"id": "3",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": true,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 解除屏蔽账户 {#unblock}
```http
POST /api/v1/accounts/:id/unblock HTTP/1.1
```
解除对指定账户的屏蔽。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户令牌 + `write:blocks`\
**版本历史:**\
0.0.0 - 添加\
3.5.0 - 弃用了 `follow` 作用域。现在额外接受 `write`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功解除屏蔽,或账户本就未被屏蔽
```json
{
"id": "3",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 隐藏账户 {#mute}
```http
POST /api/v1/accounts/:id/mute HTTP/1.1
```
隐藏指定的账户。客户端应过滤来自此账户的嘟文和通知(例如,由于主页时间线上的转嘟而收到的嘟文)。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户令牌 + `write:mutes`\
**版本历史:**\
0.0.0 - 添加\
3.3.0 - 添加了 `duration`\
3.5.0 - 弃用了 `follow` 作用域。现在额外接受 `write`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
##### 表单数据参数
notifications
: 布尔值。除了嘟文之外是否也隐藏通知?默认为 true。
duration
: 数字。隐藏应持续多长时间(秒)。默认为 0无限期
#### 响应
##### 200: OK
成功隐藏,或账户已被隐藏。请注意,你可以再次调用此 API 方法并设置 `notifications=false` 来更新关系,以便仅隐藏嘟文。
```json
{
"id": "3",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": true,
"muting_notifications": true,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "访问令牌无效"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "此方法需要已认证的用户"
}
```
---
## 解除隐藏账户 {#unmute}
```http
POST /api/v1/accounts/:id/unmute HTTP/1.1
```
解除对指定账户的隐藏。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户令牌 + `write:mutes`\
**版本历史:**\
0.0.0 - 添加\
3.5.0 - 弃用了 `follow` 作用域。现在额外接受 `write`
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功解除隐藏,或账户本就未被隐藏
```json
{
"id": "3",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "访问令牌无效"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "此方法需要已认证的用户"
}
```
---
## 在你的账户页中推荐账户 {#pin}
```http
POST /api/v1/accounts/:id/pin HTTP/1.1
```
将指定账户添加到用户的推荐账户中。(推荐的账户目前显示在用户自己的账户页上公开显示。)
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户令牌 + `write:accounts`\
**版本历史:**\
2.5.0 - 添加\
4.0.0 - 调用此方法现在是幂等的
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功推荐,或目标账户已被推荐。
```json
{
"id": "1",
"following": true,
"showing_reblogs": true,
"notifying": false,
"followed_by": true,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": true
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 403: 禁止访问
令牌缺少必要的范围
```json
{
"error": "This operation exceeds the authorization scope"
}
```
##### 422: Unprocessable entity
你没有关注此账户
```json
{
"error": "Validation failed: You must be already following the person you want to endorse"
}
```
或者,令牌未获得用户授权
```json
{
"error": "This method requires an authenticated user"
}
```
或者4.0 版本之前),该账户可能已被推荐
```json
{
"error": "Duplicate record"
}
```
##### 500: 服务器错误
有时在账户已被推荐时会返回此错误。
---
## 在账户页中取消推荐账户 {#unpin}
```http
POST /api/v1/accounts/:id/unpin HTTP/1.1
```
将指定账户从用户的推荐账户中移除。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户 + `write:accounts`\
**版本历史:**\
2.5.0 - 添加
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
#### 响应
##### 200: OK
成功取消推荐,或账户本就未被推荐
```json
{
"id": "1",
"following": true,
"showing_reblogs": true,
"notifying": false,
"followed_by": true,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 对指定账户设置私人备注 {#note}
```http
POST /api/v1/accounts/:id/note HTTP/1.1
```
对指定账户设置私人备注。
**返回:** [Relationship]({{< relref "entities/relationship">}})\
**OAuth** 用户 + `write:accounts`\
**版本历史:**\
3.2.0 - 添加
#### 请求
##### 路径参数
:id
: {{<required>}} 字符串。账户在数据库中的 ID。
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
##### 表单数据参数
comment
: 字符串。要对该账户设置的备注。提供空字符串或省略此参数以清除当前设置的备注。
#### 响应
##### 200: OK
成功更新账户备注
```json
{
"id": "1",
"following": true,
"showing_reblogs": true,
"notifying": false,
"followed_by": true,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false,
"note": "这是一条备注"
}
```
成功移除账户备注
```json
{
"id": "1",
"following": true,
"showing_reblogs": true,
"notifying": false,
"followed_by": true,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false,
"note": ""
}
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 检查与其他账户的关系 {#relationships}
```http
GET /api/v1/accounts/relationships HTTP/1.1
```
查明是否关注、屏蔽、隐藏了指定账户等。
**返回:** [Relationship]({{< relref "entities/Relationship">}}) 数组\
**OAuth** 用户令牌 + `read:follows`\
**版本历史:**\
0.0.0 - 添加\
4.3.0 - 添加了 `with_suspended` 参数
#### 请求
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
##### 查询参数
id[]
: 字符串数组。检查与所提供的所有账户 ID 的关系。
with_suspended
: 布尔值。是否应返回已封禁用户的关系,默认为 false。
#### 响应
##### 200: OK
使用 `id[]=1&id[]=2` 的示例调用
```json
[
{
"id": "1",
"following": true,
"showing_reblogs": true,
"notifying": false,
"followed_by": true,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
},
{
"id": "2",
"following": false,
"showing_reblogs": false,
"notifying": false,
"followed_by": false,
"blocking": false,
"blocked_by": false,
"muting": false,
"muting_notifications": false,
"requested": false,
"domain_blocking": false,
"endorsed": false
}
]
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 查找熟悉的关注者 {#familiar_followers}
```http
GET /api/v1/accounts/familiar_followers HTTP/1.1
```
获取关注指定账户的所有账户列表,并从中筛选出你关注的账户。
**返回:** [FamiliarFollowers]({{< relref "entities/FamiliarFollowers">}}) 数组\
**OAuth** 用户令牌 + `read:follows`\
**版本历史:**\
3.5.0 - 添加
#### 请求
##### 标头
Authorization
: {{<required>}} 提供此标头,格式为 `Bearer <user_token>`,以获取对此 API 方法的访问授权。
##### 查询参数
id[]
: 字符串数组。查找所提供账户 ID 的熟悉关注者。
#### 响应
##### 200: OK
使用 `id[]=1&id[]=2` 的示例调用
```json
[
{
"id":"1",
"accounts":[
{
"id":"1087990",
"username":"moss",
"acct":"moss@goblin.camp",
// ...
},
{
"id":"1092723",
"username":"vivianrose",
"acct":"vivianrose",
// ...
},
// ...
]
},
{
"id":"2",
"accounts":[]
}
]
```
##### 401: Unauthorized
`Authorization` 标头无效或缺失
```json
{
"error": "The access token is invalid"
}
```
##### 422: Unprocessable entity
令牌没有已授权的用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 搜索匹配的账户 {#search}
```http
GET /api/v1/accounts/search HTTP/1.1
```
通过用户名或昵称搜索匹配的账户。
**返回:** [A此count]({{< relref "entities/Account">}}) 数组
**OAuth 认证:** 用户令牌 + `read:accounts` 权限
**版本历史:**
0.0.0 - 添加
2.8.0 - 添加 `limit``offset``following`
#### 请求
##### 请求头
Authorization
: {{<required>}} (必填)提供此请求头,格式为 `Bearer <user_token>`,以获得对该 API 方法的授权访问权限。
##### 查询参数
q
: {{<required>}} (必填)字符串。账户的搜索查询。
limit
: 整数。最大结果数。默认为 40 个账户。最多 80 个账户。
offset
: 整数。跳过前 n 个结果。
resolve
: 布尔值。尝试 WebFinger 查询。默认为 false。当 `q` 是精确地址时使用此参数。
following
: 布尔值。将搜索范围限制为你关注的用户。默认为 false。
#### 响应
##### 200: OK
匹配用户名或昵称中包含 "trwnh" 的账户
```json
[
{
"id": "14715",
"username": "trwnh",
"acct": "trwnh",
"display_name": "infinite love ⴳ",
// ...
},
{
"id": "418714",
"username": "trwnh",
"acct": "trwnh@pixelfed.social",
"display_name": "Abdullah Tarawneh",
// ...
},
{
"id": "419674",
"username": "trwnh",
"acct": "trwnh@write.as",
"display_name": "trwnh",
// ...
},
// ...
]
```
##### 503: Service Unavailable
`resolve=true` 时,若 user@domain 地址中的域名部分当前不是一个有效的网站,则返回该响应
```json
{
"error": "Remote data could not be fetched"
}
```
---
## 通过 Webfinger 地址查询账户 ID {#lookup}
```http
GET /api/v1/accounts/lookup HTTP/1.1
```
快速查询用户名以查看其是否可用,跳过 WebFinger 解析。
**返回:** [Account]({{< relref "entities/Account">}})
**OAuth 认证:** 公开
**版本历史:**
3.4.0 - 添加
#### 请求
##### 查询参数
acct
: {{<required>}} (必填)字符串。要查询的用户名或 Webfinger 地址。
#### 响应
##### 200: OK
使用 `?acct=trwnh` 的示例调用响应如下:
```json
{
"id": "14715",
"username": "trwnh",
"acct": "trwnh",
"display_name": "infinite love ⴳ",
"locked": false,
// ...
}
```
使用 `?acct=trwnh@pixelfed.social` 的示例调用响应如下:
```json
{
"id": "418714",
"username": "trwnh",
"acct": "trwnh@pixelfed.social",
"display_name": "Abdullah Tarawneh",
"locked": false,
// ...
}
```
##### 404: Not found
用户名或地址未映射到任何账户
```json
{
"error": "记录未找到"
}
```
---
## 身份证明 {{%deprecated%}} {#identity_proofs}
```http
GET /api/v1/accounts/:id/identity_proofs HTTP/1.1
```
**返回:** [IdentityProof]({{< relref "entities/identityproof">}}) 数组
**OAuth 认证:** 用户令牌
**版本历史:**
2.8.0 - 添加
3.5.0 - 弃用。现在返回一个空数组。
#### 请求
##### 路径参数
:id
: {{<required>}} (必填)字符串。数据库中账户的 ID。
#### 响应
##### 200: OK (成功)
```json
[
{
"provider": "Keybase",
"provider_username": "gargron",
"updated_at": "2019-07-21T20:14:39.596Z",
"proof_url": "https://keybase.io/gargron/sigchain#5cfc20c7018f2beefb42a68836da59a792e55daa4d118498c9b1898de7e845690f",
"profile_url": "https://keybase.io/gargron"
}
]
```
##### 404: Not Found
账户不存在
```json
{
"error": "Record not found"
}
```
##### 410: Gone
账户已被暂停(自 2.4.0 版本起,至 3.3.0 版本)
##### 422: Unprocessable Entity
令牌没有对应的授权用户
```json
{
"error": "This method requires an authenticated user"
}
```
---
## 另请参阅
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts_controller.rb" caption="app/controllers/api/v1/accounts_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/credentials_controller.rb" caption="app/controllers/api/v1/accounts/credentials_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/familiar_followers_controller.rb" caption="app/controllers/api/v1/accounts/familiar_followers_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/featured_tags_controller.rb" caption="app/controllers/api/v1/accounts/featured_tags_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/follower_accounts_controller.rb" caption="app/controllers/api/v1/accounts/follower_accounts_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/following_accounts_controller.rb" caption="app/controllers/api/v1/accounts/following_accounts_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/identity_proofs_controller.rb" caption="app/controllers/api/v1/accounts/identity_proofs_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/lists_controller.rb" caption="app/controllers/api/v1/accounts/lists_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/lookup_controller.rb" caption="app/controllers/api/v1/accounts/lookup_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/notes_controller.rb" caption="app/controllers/api/v1/accounts/notes_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/pins_controller.rb" caption="app/controllers/api/v1/accounts/pins_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/relationships_controller.rb" caption="app/controllers/api/v1/accounts/relationships_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/search_controller.rb" caption="app/controllers/api/v1/accounts/search_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/controllers/api/v1/accounts/statuses_controller.rb" caption="app/controllers/api/v1/accounts/statuses_controller.rb" >}}
{{< caption-link url="https://github.com/mastodon/mastodon/blob/main/app/models/account_statuses_filter.rb" caption="app/models/account_statuses_filter.rb" >}}
{{< translation-status-zh-cn raw_title="accounts API methods" raw_link="/methods/accounts/" last_translation_time="2025-04-21" raw_commit="6addd5cf525adec1859f48c52dafcfe1f96e558a">}}