v2 版接口指南
基岩版联机大厅 API v2 文档
基础域名:https://api.miaaoo.com
请求头:Content-Type: application/json
目录
- 1. 概述
- 2. /v2/list(获取房间列表)
- 3. /v2/join(加入房间)
- 4. /v2/account(获取账号信息)
- 5. /refreshFollowers(刷新粉丝缓存)
- 6. 附录:响应码速查
1. 概述
1.1 基础信息
| 项目 | 说明 |
|---|---|
| 基础 URL | https://api.miaaoo.com |
| 请求头 | Content-Type: application/json |
| 响应格式 | JSON |
| 成功状态码 | 2xx |
| 错误状态码 | 4xx、5xx |
1.2 Nginx 映射对照
| 接口 | 对外路径 |
|---|---|
| 房间列表 | GET /v2/list |
| 加入房间 | POST /v2/join |
| 账号信息 | GET /v2/account |
| 刷新粉丝 | GET /refreshFollowers |
2. /v2/list(获取房间列表)
2.1 请求方式
GET https://api.miaaoo.com/v2/list2.2 请求参数
| 参数 | 位置 | 类型 | 必需 | 说明 |
|---|---|---|---|---|
lang | Query | string | 否 | 按世界名称语言筛选。传单个值(?lang=zh)或传多个值(?lang=zh&lang=en)。不传时返回全部房间。 |
2.3 成功响应(HTTP 200)
json
{
"results": [
{
"sessionRef": {
"name": "00000000-0000-0000-0000-000000000000"
},
"ownerXuid": "2535408433750813",
"createTime": "2025-01-01T02:06:09.1234569Z",
"id": "00000000-0000-0000-0000-000000000000",
"customProperties": {
"hostName": "Steven",
"ownerId": "2535408433750813",
"version": "1.21.69",
"worldName": "My World",
"worldType": "Survival",
"protocol": 0,
"MemberCount": 1,
"MaxMemberCount": 30,
"BroadcastSetting": 3,
"isEditorWorld": false,
"isHardcore": false,
"RealmId": "",
"worldNameLang": "zh"
},
"relatedInfo": {
"maxMembersCount": 30,
"membersCount": 1
},
"roomfrom": "6"
}
]
}字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
sessionRef.name | string | 会话 UUID,用于 /v2/join 的 sessionname 参数 |
ownerXuid | string | handle创建者 XUID |
createTime | string | 创建时间(ISO 8601 UTC) |
id | string | handle ID,用于 /v2/join 的 handleid 参数 |
customProperties.hostName | string | 房主名称(纯英文,≤16 字符) |
customProperties.ownerId | string | 房主 XUID(16 位数字字符串) |
customProperties.version | string | 游戏版本号(如 1.21.113) |
customProperties.worldName | string | 世界名称 |
customProperties.worldType | string | 游戏模式:Survival / Creative / Spectator |
customProperties.MemberCount | number | 游戏内当前玩家数 |
customProperties.MaxMemberCount | number | 游戏内最大玩家数 |
customProperties.BroadcastSetting | number | 广播设置:3=好友的好友(可加入)2=仅好友 1=仅邀请 |
customProperties.isEditorWorld | boolean | 是否为编辑器世界 |
customProperties.isHardcore | boolean | 是否为极限模式 |
customProperties.worldNameLang | string | 世界名称的语言代码(如 zh、en),由后端语言检测服务自动识别 |
relatedInfo.maxMembersCount | number | Xbox会话最大成员数 |
relatedInfo.membersCount | number | Xbox会话当前成员数 |
roomfrom | string | 房间来源的账号 ID,用于 /v2/join 的 roomfrom 参数 |
2.4 错误响应
HTTP 500 - Redis 无数据
json
{
"status": "500",
"code": 1,
"message": "No data found for redis.",
"message_zh_CN": "未在redis找到数据。"
}HTTP 500 - 数据格式异常
json
{
"status": "500",
"code": 2,
"message": "Invalid data format.",
"message_zh_CN": "Redis数据格式异常。"
}HTTP 500 - Redis 读取错误
json
{
"status": "500",
"code": 2,
"message": "Error fetching data from Redis.",
"message_zh_CN": "从Redis获取数据时出错。"
}2.5 请求示例
bash
# 获取全部房间
curl https://api.miaaoo.com/v2/list
# 筛选中文房间
curl https://api.miaaoo.com/v2/list?lang=zh
# 筛选中文和英文房间
curl https://api.miaaoo.com/v2/list?lang=zh&lang=en2.6 注意事项
- 数据每 30 秒 由后端定时任务刷新一次,存入 Redis 后 TTL 为 60 秒。
BroadcastSetting为3的房间才能被外部玩家加入。
3. /v2/join(加入房间)
3.1 请求方式
POST https://api.miaaoo.com/v2/join3.2 协议版本
v2 支持两种协议版本:
- 旧版协议(
version: "1.0.0"):向后兼容,内部透传至旧后端处理 - 新版协议(
apiversion: 2):推荐使用,拥有完整的权限校验和自动化流程
3.3 新版协议(apiversion=2,推荐)
请求体
json
{
"apiversion": 2,
"joininformation": {
"addid": "6",
"roomfrom": "6",
"handleid": "00000000-0000-0000-0000-000000000000",
"sessionname": "00000000-0000-0000-0000-000000000000",
"userxuid": "2535408433750813"
}
}字段说明
| 字段 | 类型 | 必需 | 说明 |
|---|---|---|---|
apiversion | number | 是 | 固定为 2 |
joininformation.addid | string | 是 | 发起者已添加哪个账号就输入那个账号在/v2/account中的 ID |
joininformation.roomfrom | string | 是 | 房间数据来源的账号 ID(如 "6"),取自 /v2/list 的 roomfrom |
joininformation.handleid | string | 是 | 目标会话的 handle ID,取自 /v2/list 的 id 字段 |
joininformation.sessionname | string | 是 | 目标会话名称,取自 /v2/list 的 sessionRef.name |
joininformation.userxuid | string | 是 | 发起加入玩家的 16 位 XUID,v2 协议中为必需项 |
3.4 旧版协议(version: "1.0.0",向后兼容)
请求体
json
{
"version": "1.0.0",
"joininformation": {
"addid": "6",
"roomfrom": "6",
"roomid": "00000000-0000-0000-0000-000000000000",
"sessionname": "00000000-0000-0000-0000-000000000000"
},
"invitecontrol": {
"userxuid": "2535408433750813"
}
}注意:旧版协议的
roomid字段对应/list中的id,新版协议的handleid也对应同一字段。只是字段名不同,值相同。
差异
| 项目 | 旧版协议 | 新版协议 |
|---|---|---|
| 版本字段 | version: "1.0.0" | apiversion: 2 |
userxuid | 可选(缺失仍可成功) | 必需(缺失返回 400) |
| 权限校验 | 仅参数格式校验 | 校验 followers + people |
| 处理方式 | 透传至旧后端 | 本后端直接处理 |
| roomid 字段名 | roomid | handleid |
| 支持ID=8的账号 | 不支持 | 支持 |
3.5 响应说明
新版协议成功(HTTP 200)
json
{
"status": "200",
"code": "1",
"message": "Success.",
"message_zh_CN": "成功。"
}新版协议错误码
| HTTP 状态码 | code | 说明 |
|---|---|---|
| 400 | 1 | 缺少 joininformation 或参数不完整 |
| 400 | 2 | addid 或 roomfrom 不允许 |
| 400 | 3 | userxuid 缺失或格式非法(非 16 位数字) |
| 403 | 4 | userxuid 不在任何 followers 缓存中 |
| 404 | 0 | 查询 addid 的会话句柄无结果 |
| 5xx | 0 | 加入流程中 XBL 操作失败 |
| xxx | 5 | 自动添加关注失败 |
旧版协议响应
| 条件 | HTTP 状态码 | code | 说明 |
|---|---|---|---|
| 成功且邀请已发送 | 200 | "2" | userxuid 有效且邀请成功 |
| 成功但无邀请 | 200 | "1" | userxuid 缺失或非法 |
| 参数无效 | 400 | 1 | 缺少必需参数 |
| addid 类型错误 | 400 | 2 | addid/roomid 为 number 类型 |
| 发送邀请失败 | 400 | undefined | Xbox 邀请接口返回错误 |
| 会话不存在 | 404 | undefined | 多人游戏可能未开启 |
| 加入会话失败 | 500 | undefined | PUT session 失败 |
| 服务器错误 | 500 | undefined | 内部错误 |
3.6 请求示例
bash
curl -X POST https://api.miaaoo.com/v2/join \
-H "Content-Type: application/json" \
-d '{
"apiversion": 2,
"joininformation": {
"addid": "8",
"roomfrom": "8",
"handleid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"sessionname": "00000000-0000-0000-0000-000000000000",
"userxuid": "1234567890123456"
}
}'3.7 注意事项
addid和handleid必须为字符串类型,不要以数字类型发送。- 新版协议中
userxuid是必需项,且必须是 16 位纯数字。 - 后端会自动将
userxuid添加到对应账号的关注列表(若尚未关注),以便 Xbox 的"好友的好友"机制生效。所以请用户注意自己账号的粉丝数量不要达到1000上限,以及不要在隐私设置中关闭“允许他人关注我”。
4. /v2/account(获取账号信息)
4.1 请求方式
GET https://api.miaaoo.com/v2/account4.2 请求参数
无。
4.3 成功响应(HTTP 200)
json
[
{
"id": "8",
"name": "MCLobby26",
"canaddfriends": true
}
]字段说明
| 字段 | 类型 | 说明 |
|---|---|---|
id | string | 账号数字 ID,用于 /v2/join 的 addid |
name | string | Xbox Gamertag |
canaddfriends | boolean | 是否可在Xbox关注或在Minecraft中加好友(true 表示可) |
canaddfriends字段命名是为了兼容已有前端的解析,故导致现在看起来意思有点不一样了,以前确实可以在Xbox加好友,但现在后端改了一些机制,从粉丝中获取房间数据。
4.4 错误
正常情况下不会出现错误响应。
4.5 请求示例
bash
curl https://api.miaaoo.com/v2/account5. /refreshFollowers(刷新粉丝缓存)
5.1 请求方式
GET https://api.miaaoo.com/refreshFollowers5.2 请求参数
无。
5.3 功能说明
手动触发后端拉取指定 Xbox 账号的 followers(粉丝)列表,并刷新本地缓存。
5.4 响应状态码
由于后端设计仍有缺陷,请求后请无视响应代码。
| 状态码 | 条件 | 说明 |
|---|---|---|
| 200 | 至少有一个账号重新拉取了 followers | 刷新成功 |
| 206 | 所有账号的缓存都在 10 秒内,无需刷新 | 已是最新 |
| 502 | 至少有一个账号拉取失败 | 部分失败 |
| 500 | 服务器内部错误 | 异常错误 |
5.5 全局限流
由于后端设计仍有缺陷,请求后请无视响应代码。 在 10 秒内 重复调用此接口,后续请求直接返回 206,不会触发真实的 Xbox API 调用。
5.6 请求示例
bash
curl https://api.miaaoo.com/refreshFollowers5.7 注意事项
- 调用此接口不会立即更新房间列表,需要等下次定时任务(每 30 秒)执行后才会体现在
/v2/list中。 - 后端同时有定时任务每 5 分钟则自动刷新,手动调用主要用于调试或即时更新场景。
- 由于后端设计仍有缺陷,请求后请无视响应代码。
6. 附录:响应码速查
全局状态码
| 状态码 | 含义 | 通常原因 |
|---|---|---|
200 | 成功 | 请求处理完成 |
206 | 无需处理 | 缓存未过期或限流跳过 |
400 | 请求参数错误 | 缺少参数、参数格式非法、类型错误 |
403 | 权限不足 | userxuid 不在 followers 中 |
404 | 未找到 | 会话不存在、用户未找到 |
500 | 服务器内部错误 | Redis 异常、XBL API 错误、代码异常 |
502 | 上游服务错误 | refresh 时部分账号拉取失败 |
/v2/join 错误码对照
code | 含义 |
|---|---|
| 0 | 通用内部错误或 XBL 操作失败 |
| 1 | 参数不完整或缺失 |
| 2 | addid / roomfrom 不允许 |
| 3 | userxuid 缺失或格式错误 |
| 4 | userxuid 不在 followers 中 |
| 5 | 自动添加关注失败 |
文档版本:v2.0.0 · 最后更新:2026-06-02