Client ID(16位数字)与 Secret(32位随机字符串), Secret 仅创建时显示一次。POST /api/external/auth/session, 请求头携带 x-api-client-id 与 x-api-secret, 换取 SESSION(24小时有效, 单会话, 重复换取使旧会话失效)。Authorization: Bearer <SESSION>。除换取 SESSION 外, 所有接口均需 Bearer SESSION。SESSION 有效期 24 小时; 客户端被停用后 SESSION 立即失效。所有响应为 JSON; 错误响应形如 {"error":"..."}。
| 方法 | 路径 | 鉴权 | 说明 |
|---|---|---|---|
| POST | /api/external/auth/session | ID+Secret | 换取 SESSION(唯一使用 ID+Secret 的接口) |
| POST | /api/external/auth/register | SESSION | 插件代玩家注册账号(需邮箱) |
| POST | /api/external/tickets | SESSION | 提交工单(举报/建议/申诉), 返回 id + tracking_token; 可带 server(别名或「分组/子服」) |
| GET | /api/external/tickets/track?token=xxx | SESSION | 按追踪码查工单状态 + 回复, 从提交到结束全程可查 |
| GET | /api/external/all-tickets?server=&status=&type=&page=&limit= | SESSION | 工单列表(可按子服过滤, 分页) |
| GET | /api/external/all-tickets/:id | SESSION | 工单详情(含回复/附件) |
| GET | /api/external/bans?server=&status=&player= | SESSION | 拉取封禁列表 |
| POST | /api/external/bans | SESSION | 新增封禁(可带 server) |
| GET | /api/external/reported-players?server= | SESSION | 被举报人统计 |
| GET | /api/external/servers | SESSION | 服务器列表(含别名) |
| GET | /api/external/stats?server= | SESSION | 工单统计 |
POST /api/external/auth/session +Headers: x-api-client-id: 1234567890123456 + x-api-secret: a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6+
响应:
+{ "session_token": "xxxx...", "expires_in": 86400 }
+ POST /api/external/auth/register
+Authorization: Bearer <SESSION>
+{ "username": "player1", "password": "123456", "email": "p1@example.com", "game_name": "Steve" }
+ 响应: 201 { "message": "注册成功!已自动激活,请登录" }。注册后游戏UID由系统自动生成。
POST /api/external/tickets
+Authorization: Bearer <SESSION>
+{
+ "type": "report",
+ "title": "玩家破坏建筑",
+ "reporter_game_name": "Steve",
+ "target_game_name": "Alex",
+ "target_game_uid": "123456789",
+ "reason": "使用外挂",
+ "description": "在生存服主城附近...",
+ "server": "生存服" // 可选: 别名或「分组/子服」
+}
+ type 取值: report(举报) / suggestion(建议) / appeal(申诉)。
响应:
+201 { "id": 42, "tracking_token": "uuid-...", "server": "生存服" }
+ GET /api/external/tickets/track?token=uuid-...+
响应(含全部回复):
+{ "id": 42, "status": "processing", "replies": [ { "content": "...", "is_staff": true, "created_at": "..." } ] }
+ GET /api/external/bans?server=生存服&status=active
+POST /api/external/bans
+Authorization: Bearer <SESSION>
+{ "player_name": "Alex", "player_uid": "123456789", "reason": "外挂", "type": "ban", "duration": "7d", "server": "生存服" }
+ GET /api/external/all-tickets?server=生存服&status=pending&page=1&limit=20 +GET /api/external/all-tickets/42 +GET /api/external/reported-players?server=生存服 +GET /api/external/servers +GET /api/external/stats?server=生存服+
const API = 'https://你的站点/api/external';
+// 1. 换取 SESSION
+const s = await fetch(API + '/auth/session', { method: 'POST', headers: {
+ 'x-api-client-id': '你的ClientID', 'x-api-secret': '你的Secret' } });
+const { session_token } = await s.json();
+// 2. 提交工单
+await fetch(API + '/tickets', { method: 'POST', headers: {
+ 'Authorization': 'Bearer ' + session_token, 'Content-Type': 'application/json' },
+ body: JSON.stringify({ type: 'report', title: '...', reporter_game_name: 'Steve', reason: '...' }) });
+ 完整 Java(Bukkit/Paper) 示例见仓库 docs/PLUGIN-GUIDE.md。
POST /api/external/auth/session 用 x-api-client-id + x-api-secret 换取 SESSION(24小时有效), 之后所有接口请求头用 Authorization: Bearer <SESSION>。secret 仅创建时显示一次,请立即保存。Client ID + Secret 调 POST /api/external/auth/session 换取 SESSION, 之后所有接口用 Authorization: Bearer <SESSION>。完整说明见右上角「接口文档」。| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/external/auth/session | ID+Secret 换取 SESSION(唯一使用 ID+Secret 的接口) |
| POST | /api/external/auth/register | 插件注册账号(需 SESSION) |
| POST | /api/external/tickets | 提交工单(举报/建议/申诉),返回 id + tracking_token;可带 server(别名或「分组/子服」) |
| GET | /api/external/tickets/track?token=xxx | 按追踪码查工单状态 + 回复,从提交到结束全程可查 |
| GET | /api/external/all-tickets?server=&status=&type=&page=&limit= | 工单列表(可按子服过滤) |
| GET | /api/external/all-tickets/:id | 工单详情(含回复/附件) |
| GET | /api/external/bans?server=&status=&player= | 拉取封禁列表 |
| POST | /api/external/bans | 新增封禁(可带 server) |
| GET | /api/external/reported-players?server= | 被举报人统计 |
| GET | /api/external/servers | 服务器列表(含别名) |
| GET | /api/external/stats?server= | 工单统计 |
| POST | /api/external/clients | 创建客户端(需登录态, 本页操作) |
完整请求/响应示例见 docs/API.md 外部API章节。