该API版本还在测试中,以后可能会做更改。大家如果有任何想法或建议,可以@niedhui 或发邮件给dianhui.nie@gmail.com :)
你可以参考之前的版本。
renjian通过API的方式开放一些应用接口,这篇文档用来介绍renjian目前开放的接口,为希望开发基于renjian服务扩展的工具或应用的开发人员提供技术和文档服务。
除了部分API(如:公共时间线 ( public timeline ) )外,所有的API方法都必须要求用户认证,所有的返回都与认证用户相关。例如,尝试获取一个设置为私密的且不是您的好友的用户信息时,将会返回失败状态。
renjian API力求根据用户特定的请求返回对应特定格式的数据,您可以发现我们提供的API中有一个重要的便利之处,通过简单的更改URI中的文件后缀名,您可以获得您想要的返回结果的格式,这篇文档中将说明每个方法中有哪些格式可以用。
renjian目前支持JSON,XML格式的返回结果。
一些API接受可选和必须的参数,当参数可用时,我们会在接下来的文档中提到这些参数。注意:当传送复杂字串时,请一定先将字串编码为UTF-8格式,并再做一次URL编码 ( Encode )。
除非特意指明,renjian的开放API通过HTTP GET方式的调用,需要提交信息或传送私密消息(如悄悄话)时使用POST方法。
以下将说明API返回的信息格式的组成,一些API将返回与用户请求“内容”相关的信息,而有一些将返回与客户端发送的“HTTP头信息”相关的一些信息。例如,多数支持since参数的方法,同样会对HTTP头中的If-Modified-Since这个 HTTP头感兴趣。需要注意的是,当某些行为既可以通过参数又可以通过HTTP头进行控制时,优先接受通过参数方式设定的值。当请求返回数据时,返回数据的编码统一为UTF-8格式,且我们会将一些外部符号编码为HTML实体(&#number; 或&text)格式。
renjian API会对每次请求返回合适的HTTP状态。例如,当请求一个不存在的用户信息时,API会返回404 Not Found;当一次请求没有被认证并授权时,API会返回401 Not Authorized状态。
注意:
在以前所有的请求URI前面加/v2/,即表示为请求第二版本的API
所有的请求都只支持JSON和XML两种格式,以下不再说明
以前支持通过传cookie来登录,目前所有的v2版本请求都不再支持,只支持通过HttpBasic来验证
在v2版本中,显示用户信息(/v2/users/show/1.xml),查看用户的关注(/v2/statuses/followings/1.xml)和被关注(/v2/statuses/followers/1.xml)列表,返回的用户信息,会多增加一个字段status,表示用户最近的一条status
此处变化较大,主要变化有增加了转发和喜欢的信息,修改了以前stauts的类型的处理,尤其是链接和图片,现在以附件的形式返回,另外还支持通过参数来控制返回的对象
| 基本信息 | |
| id | status的ID |
| text | 文本内容(如果文本内容太长,默认返回的是被截断的内容) |
| source | 来源 |
| truncated | 是否被截断 |
| created_at | 发表日期 |
| relative_date | 相对时间(如,1小时前),此为相对于服务器的时期,可能存在误差,所以客户端最好自己根据created_at自己来计算相对时间 |
| liked | 当前登录用户是否‘喜欢’了该status |
| likers | 喜欢该status的用户名,最多显示5个 |
| liker_count | 喜欢该status的用户总数 |
| forwarded | 当前登录用户是否‘转发’过该status |
| forwarders | 转发过该status的用户名,最多显示5个 |
| forwarder_count | 转发过该status的用户总数 |
| conversation_count | 该status所在会话的status总数 |
| reply_count | 直接回应该status的status总数 |
| conversation_id | 该status所在的会话id,如果不存在,表示没有形成会话 |
| 附件信息 | |
| attachment | 该status所带的"附件",如果没有返回该字段,则表示status没有任何附件 |
| attachment.type | 附件类型,目前只有三种(PICTURE,LINK,MUSIC) |
| attachment.desc | 附件的描述,可做为默认展示用 |
| 附件自定义字段 |
根据type的不同,每个附件所含有的字段也不同
// 附件类型为图片,字段:url, thumbnail
if (attachment.type == 'PICTURE') {
url = "图片地址";
thumbnail = "图片的缩略图地址";
}
// 附件类型为链接,字段:url, title, picture
else if (attachment.type == 'LINK') {
url = "链接的地址"
title = "链接的标题";
picture = "链接的图片(可能不存在)"
}
// 附件类型为音乐,字段:url
else if (attachment.type == 'MUSIC') {
url = "音乐的地址,以后可能会有更多的信息字段"
}
|
| 用户信息, user 发送者的信息(默认情况下,该字段为完整的用户信息) |
| 可能包含其它的status(可能不存在) | |
| forwarded_status | 如果当前status是转发了某条status,则forwared_status表示被转发的那条status(默认情况下,该字段为完整的status信息) |
| replyed_status | 如果当前status是回应了某条status,则forwared_status表示被回应的那条status(默认情况下该字段为完整的status信息) |
| tag信息(可能不存在) | |
| 在请求friends_timeline(我关注)或是recommends_timeline(推荐)时,里面可能返回被圈子推荐的status,这种情况下该被推荐的status会多包含一个字段用来表示tag的信息 | |
| recommended_by_tag | 如果该字段存在,表示此条status是通过圈子推荐过来的 |
| name | 圈子的名称 |
| icon | 圈子的头像(可能不存在) |
| desc | 圈子的描述 |
| certified | 圈子是否为官方认证 |
| following_count | 圈子被多少人关注 |
| 通过参数来控制, 用户可以在请求中加入一些参数来控制返回的status的详细程度,目前支持的参数: | |
| long_text | 当该参数为true时,返回的text字段为长文,默认为false |
| trim_user | 当该参数为true时,返回的用户信息只包含一个id字段,而不是完整的用户信息,默认为false |
| trim_ref | 当该参数为true时,返回的forwarded_status或replyed_status只包含一个id字段,而不是完整的Status信息,默认为false |
| trim_all_entities | 当该参数为true时,相当于trim_user=true&trim_ref |
| trim_html | 当该参数为true时,过滤status中text字段的html标签 |
| name | 圈子的名称 |
| icon | 圈子的头像(可能不存在) |
| desc | 圈子的描述 |
| certified | 圈子是否为官方认证 |
| following_count | 圈子被多少人关注 |
| url | /v2/account/verify_credentials.(xml / json) |
| http方法 | POST |
| 返回 | 如果验证成功,则返回当前登录用户的信息,否则返回的response code 为401 |
| 注意:此方法必须要用POST方法来请求 | |
| url | /v2/account/reg_new.(xml / json) |
| http方法 | POST |
| 参数 | |
| screen_name | 用户名 |
| name | 用户的昵称,可为空 |
| 用户的email | |
| password | 用户的密码 |
| 返回 | 注册成功的用户的信息 |
| url |
/v2/users/show/1.(xml / json) /v2/users/show/niedhui.(xml / json) /v2/users/show.(xml / json)?id=1 /v2/users/show.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 要显示的用户的ID或screen_name |
| 返回 | 注册成功的用户的信息 |
| url |
/v2/friendships/create/1.(xml / json) /v2/friendships/create/niedhui.(xml / json) /v2/friendships/create.(xml / json)?id=1 /v2/friendships/create.(xml / json)?id=niedhui |
| http方法 | POST |
| 参数 | |
| id | 要显示的用户的ID或screen_name |
| 返回 |
成功:则返回被关注的用户的详细信息 失败:response code 可能为404,表示用户不存在,400表示可能已经关注该用户 |
| url |
/v2/friendships/destroy/1.(xml / json) /v2/friendships/destroy/niedhui.(xml / json) /v2/friendships/destroy.(xml / json)?id=1 /v2/friendships/destroy.(xml / json)?id=niedhui |
| http方法 | POST |
| 参数 | |
| id | 要显示的用户的ID或screen_name |
| 返回 |
成功,则返回被关注的用户的详细信息 失败:response code 可能为404,表示用户不存在,400表示可能还没有关注该用户 |
| url | /v2/friendships/exists.(xml / json) |
| http方法 | GET |
| 参数 | |
| user_a | 用户的ID或screen_name |
| user_b | 用户的ID或screen_name |
| 返回 | 成功,<friendships><is_follow>true|false</is_follow></friendships>或者{is_follow:true|false} 失败:response code 可能为404,表示用户不存在 |
| url |
/v2/followings/ids/1.(xml / json) /v2/followings/ids/niedhui.(xml / json) /v2/followings/ids.(xml / json)?id=1 /v2/followings/ids.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 要查看的用户的id或screen_name |
| 返回 | id列表 |
| url |
/v2/followers/ids/1.(xml / json) /v2/followers/ids/niedhui.(xml / json) /v2/followers/ids.(xml / json)?id=1 /v2/followers/ids.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 要查看的用户的id或screen_name |
| 返回 | id列表 |
| url |
/v2/statuses/followings/1.(xml / json) /v2/statuses/followings/niedhui.(xml / json) /v2/statuses/followings.(xml / json)?id=1 /v2/statuses/followings.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 要查看的用户的id或screen_name |
| count | 每页多少条(默认返回100条) |
| page | 第几页 |
| 返回 | 用户列表 |
| url |
/v2/statuses/followers/1.(xml / json) /v2/statuses/followers/niedhui.(xml / json) /v2/statuses/followers.(xml / json)?id=1 /v2/statuses/followers.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | id 要查看的用户的id或screen_name |
| count | 每页多少条(默认返回100条) |
| page | 第几页 |
| 返回 | 用户列表 |
| url |
/v2/blocks/create/1.(xml / json) /v2/blocks/create/niedhui.(xml / json) /v2/blocks/create.(xml / json)?id=1 /v2/blocks/create.(xml / json)?id=niedhui |
| http方法 | POST |
| 参数 | |
| id | 要拉到黑名单的用户的ID或screen_name |
| 返回 |
成功: 被拉到黑名单的用户的详细信息 失败: 404-用户不存在。400-之前已经把该用户拉到了黑名单 |
| url |
/v2/blocks/destory/1.(xml / json) /v2/blocks/destory/niedhui.(xml / json) /v2/blocks/destory.(xml / json)?id=1 /v2/blocks/destory.(xml / json)?id=niedhui |
| http方法 | POST |
| 参数 | |
| id | unblock的用户的ID或screen_name |
| 返回 |
成功: 被拉到黑名单的用户的详细信息 失败: 404-用户不存在。400-之前已经把该用户拉到了黑名单 |
| url |
/v2/statuses/friends_timeline/1.(xml / json) /v2/statuses/friends_timeline/niedhui.(xml / json) /v2/statuses/friends_timeline.(xml / json)?id=1 /v2/statuses/friends_timeline.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 用户的ID或screen_name |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| url | /v2/statuses/public_timeline.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| url |
/v2/statuses/user_timeline/1.(xml / json) /v2/statuses/user_timeline/niedhui.(xml / json) /v2/statuses/user_timeline.(xml / json)?id=1 /v2/statuses/user_timeline.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 用户的ID或screen_name |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| type?(参数名待定) | 目前允许的值为:PICTURE/LINK/MUSIC |
| 返回 | statuses的列表 |
| url |
/v2/statuses/mentions/1.(xml / json) /v2/statuses/mentions/niedhui.(xml / json) /v2/statuses/mentions.(xml / json)?id=1 /v2/statuses/mentions.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 用户的ID或screen_name |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| 说明 | 我关注的人的转发的列表+我关注的圈子的列表 |
| url | /v2/statuses/recommends.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| url |
/v2/statuses/likes/1.(xml / json) /v2/statuses/likes/niedhui.(xml / json) /v2/statuses/likes.(xml / json)?id=1 /v2/statuses/likes.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 用户的ID或screen_name |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| url |
/v2/statuses/forwards/1.(xml / json) /v2/statuses/forwards/niedhui.(xml / json) /v2/statuses/forwards.(xml / json)?id=1 /v2/statuses/forwards.(xml / json)?id=niedhui |
| http方法 | GET |
| 参数 | |
| id | 用户的ID或screen_name |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的statuses(不包含since_id) |
| max_id | 指定返回的stautses中最大的status的id(不包含max_id) |
| 返回 | statuses的列表 |
| url |
/v2/statuses/show/10.(xml / json) /v2/statuses/show.(xml / json)?id=10 |
| http方法 | GET |
| 参数 | |
| id | 要显示的status的id |
| 返回 |
成功: status的详细信息 失败: 404-要查看的status不存在 |
| url |
/v2/statuses/destroy/10.(xml / json) /v2/statuses/destroy.(xml / json)?id=10 |
| http方法 | POST/DELETE |
| 参数 | |
| id | 要删除的status的id |
| 返回 |
成功: 删除的status的详细信息 失败: 404-要查看的status不存在; 400-该status不属于当前操作者 |
| url | /v2/statuses/create.(xml / json) |
| http方法 | POST |
| 参数 | |
| text | |
| source | |
| reply_to | 回应 |
| forward_to | 转发 |
| status_type | 类型,PICTURE/LINK/MUSIC |
| url | 链接地址,图片地址,音乐地址 |
| thumbnail | 链接对应的图片(如果为图片类型,由服务器端负责生成小图) |
| title | 链接对应的TITLE |
| picture | 上传文件,需是multipart |
| 返回 | 新生成的status的详细信息 |
| url |
/v2/statuses/like/10.(xml / json) /v2/statuses/like.(xml / json)?id=10 |
| http方法 | POST |
| 参数 | |
| id | 要喜欢的status的id |
| 返回 | 要喜欢的status的详细信息 |
| url |
/v2/statuses/unlike/10.(xml / json) /v2/statuses/unlike.(xml / json)?id=10 |
| http方法 | POST |
| 参数 | |
| id | 取消喜欢的status的id |
| 返回 | 取消喜欢的status的详细信息 |
| url |
/v2/statuses/forward/10.(xml / json) /v2/statuses/forward.(xml / json)?id=10 |
| http方法 | POST |
| 参数 | |
| id | 要转发status的ID |
| text | 转发时附带的文字 |
| source | 来源 |
| 返回 | 新生成的status的详细信息 |
| url | /v2/direct_messages/new.(xml / json) |
| http方法 | POST |
| 参数 | |
| text | 悄悄话的内容 |
| user | 要发送给哪个人 |
| 返回 |
成功: 新生成的悄悄话的详细信息 失败: 404-用户不存在; 400-该用户还没有关注你 |
| url |
/v2/direct_messages/destroy/100.(xml / json) /v2/direct_messages/destroy.(xml / json)?id=100 |
| http方法 | POST/DELETE |
| 参数 | |
| id | 要删除的悄悄话的ID |
| 返回 |
成功: 被删除的悄悄话的详细信息 失败: 404-指定的ID的悄悄话不存在;400-指定的ID对应的悄悄话不属于当前用户 |
| url | /v2/direct_messages/receive.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | 悄悄话的列表 |
| url | /v2/direct_messages/sent.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | 悄悄话的列表 |
| url | /v2/conversations/my_following_conversations.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | 会话列表(按有最新回复的排序) |
| url | /v2/conversations/my_conversations.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | 会话列表(按有最新回复的排序) |
| url |
/v2/conversations/show_by_status/10.(xml / json) /v2/conversations/show_by_status.(xml / json)?id=10 |
| http方法 | GET |
| 参数 | |
| id | status的id |
| count: | 指定获取的最大数目,不能超过500。 |
| page: | 可选参数,默认为第一页,分页显示使用,只能是数字。1代表第一页,2代表第二页。 |
| show_all: | 可选参数,如果这个参数为true,则返回会话里所有的status,忽略page和count参数。 |
| since_id: | 若提供此参数,则仅返回消息Id值大于since_id指定值的消息。 |
| 返回 | 会话中的status列表 |
| url | /v2/tag/tag_timeline/tagName.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | status 列表 |
| url | /v2/tag/tag_essence_timeline/tagName.(xml / json) |
| http方法 | GET |
| 参数 | |
| page | 第几页 |
| count | 每页多少条 |
| since_id | 指定返回从哪个ID以后的DM(不包含since_id) |
| max_id | 指定返回的悄悄话中最大的DM的id(不包含max_id) |
| 返回 | status 列表 |
| url |
/v2/tag/user_admins/1.(xml / json) /v2/tag/user_admins/niedhui.(xml / json) /v2/tag/user_admins.(xml / json)?id=1 /v2/tag/user_admins.(xml / json)?id=niedhui |
| http方法 | GET |
| 返回 | tag列表 |
| url | /v2/tag/user_followings/1.(xml / json) /v2/tag/user_followings/niedhui.(xml / json) /v2/tag/user_followings.(xml / json)?id=1 /v2/tag/user_followings.(xml / json)?id=niedhui |
| http方法 | GET |
| 返回 | tag列表 |
| url |
/v2/tag/follow/tagName.(xml / json) 注:tagName为圈子名称 如 http://api.renjian.com/v2/tag/follow/ipad.ftl |
| http方法 | POST |
| 返回 | tag的详细信息 |
| url | /v2/tag/unfollow/tagName.(xml / json) 注:tagName为圈子名称 |
| http方法 | POST |
| 返回 | tag的详细信息 |
| url | /v2/tag/followers/tagName.(xml / json) 注:tagName为圈子名称 |
| http方法 | GET |
| 返回 | 关注这个圈子的人的列表 |
| url |
/v2/statuses/stick/10.(xml / json) /v2/statuses/stick.(xml / json)?id=10 |
| http方法 | POST |
| 返回 | stick status |
| url |
/v2/statuses/hide_stick/10.(xml / json) /v2/statuses/hide_stick.(xml / json)?id=10 |
| http方法 | POST |
| 返回 | {"status": "OK","request": "/v2/statuses/hide_stick/10.json"} |
| url |
/v2/statuses/sticks.(xml / json) |
| http方法 | GET |
| 返回 | stick status列表 |
如果某些字段的值为null,返回的数据中会忽略该字段
| id: | message的id |
| sender_id: | 发送人的ID |
| text: | 发送的内容 |
| recipient_id: | 接收人的ID |
| created_at: | 发送时间(unix time) |
| sender_screen_name: | 发送人的screen name |
| recipient_screen_name: | 接收人的screen name |
| sender: | 发送人的详细信息 |
| recipient: | 接收人的详细信息 |
| id: | 用户ID |
| name: | 用户的昵称 |
| screen_name: | 用户名 |
| gender: | 用户的性别(0表示未知,1表示男,2表示女) |
| description: | 用户的描述 |
| profile_image_url: | 用户的头像 |
| protected: | 用户是否设定保护更新 |
| created_at: | 用户的注册日期(unix time) |
| followers_count: | followers的数量 |
| following_count: | followeing的数量 |
| favourites_count: | 收藏的数量 |
| 如果当前用户为认证用户,将多返回两个字段: | |
| is_followed_me: | 请求的用户是否关注当前用户:0为不关注 |
| is_following: | 当前用户是否关注请求的用户:0 为不关注 |
| id: | 会话的Id |
| last_status_id: | 会话最后一条status的id |
| text: | 会话的文本内容(第一条status的text) |
| unread_count: | 该会话未读status数 |
| owner: | 会话的发起者(拥有者) |
| id | status的ID |
| text | 文本内容(如果文本内容太长,默认返回的是被截断的内容) |
| source | 来源 |
| truncated | 是否被截断 |
| created_at | 发表日期 |
| relative_date | 相对时间(如,1小时前),此为相对于服务器的时期,可能存在误差,所以客户端最好自己根据created_at自己来计算相对时间 |
| liked | 当前登录用户是否‘喜欢’了该status |
| likers | 喜欢该status的用户名,最多显示5个 |
| liker_count | 喜欢该status的用户总数 |
| forwarded | 当前登录用户是否‘转发’过该status |
| forwarders | 转发过该status的用户名,最多显示5个 |
| forwarder_count | 转发过该status的用户总数 |
| conversation_count | 该status所在会话的status总数 |
| reply_count | 直接回就该status的status总数 |
| conversation_id | 该status所在的会话id,如果不存在,表示没有形成会话 |
| attachment | 该status所带的"附件",如果没有返回该字段,则表示status没有任何附件 |
| attachment.type | 附件类型,目前只有三种(PICTURE,LINK,MUSIC) |
| attachment.desc | 附件的描述,可做为默认展示用 |
| 附件自定义字段 |
根据type的不同,每个附件所含有的字段也不同
// 附件类型为图片,字段:url, thumbnail
if (attachment.type == 'PICTURE') {
url = "图片地址";
thumbnail = "图片的缩略图地址";
}
// 附件类型为链接,字段:url, title, picture
else if (attachment.type == 'LINK') {
url = "链接的地址"
title = "链接的标题";
picture = "链接的图片(可能不存在)"
}
// 附件类型为音乐,字段:url
else if (attachment.type == 'MUSIC') {
url = "音乐的地址,以后可能会有更多的信息字段"
}
|
| 在请求friends_timeline(我关注)或是recommends_timeline(推荐)时,里面可能返回被圈子推荐的status,这种情况下该被推荐的status会多包含一个字段用来表示tag的信息 | |
| ecommended_by_tag | 如果该字段存在,表示此条status是通过圈子推荐过来的 |
| name | 圈子的名称 |
| icon | 圈子的头像(可能不存在) |
| desc | 圈子的描述 |
| certified | 圈子是否为官方认证 |
| following_count | 圈子被多少人关注 |
| id | 置顶的ID |
| user | 置顶的用户 |
| status | 被置顶的status |
| created_at | 置顶的时间 |