MCLTDWhitelistSystem/docs/whitelist-api-en.md

422 lines
7.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

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.

# Whitelist API Documentation
## Base URL
```
https://your_host_url/api/whitelist
```
## Authentication
All endpoints require authentication. Choose one of the following methods:
| Method | Example |
|--------|---------|
| `X-API-Key` header | `-H "X-API-Key: <token>"` |
| `X-API-TOKEN` header | `-H "X-API-TOKEN: <token>"` |
| Query parameter | `?apiKey=<token>` |
| Admin session cookie | Browser login at `/admin/login` |
**Failure response** (HTTP 403):
```json
{"code": 403, "msg": "Permission denied: API Key is invalid or missing", "data": null}
```
## Response Format
All endpoints return the following structure:
```json
{
"code": 200,
"msg": "Success message",
"count": 0,
"data": {}
}
```
| HTTP Status | `code` | Meaning |
|-------------|--------|---------|
| 200 | 200 | Success |
| 200 | 500 | Business error (e.g. player not found, RCON failure) |
| 403 | 403 | Authentication failure |
---
## Endpoints
### 1. Get Whitelist (Approved Players)
```
GET /api/whitelist/list
```
Returns player records (default: approved, status=1).
**Parameters:**
| Name | Type | Required | Default | Description |
|------|------|----------|---------|-------------|
| playerName | String | no | — | Filter by player name (partial match) |
| page | Integer | no | 1 | Page number |
| size | Integer | no | 10 | Items per page |
| all | Boolean | no | false | When `true`, returns all records without pagination |
**Paginated query:**
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/list?page=1&size=10&playerName=Steve"
```
**All records (no pagination):**
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/list?all=true"
```
<details>
<summary>Example response</summary>
```json
{
"code": 200,
"msg": "查询成功",
"count": 42,
"data": [
{
"id": 1,
"playerName": "Steve",
"uuid": "8667ba71b85a4004af54457a9734eed7",
"qq": "123456789",
"status": 1,
"description": "I love this server",
"createTime": "2026-06-01T12:00:00",
"regionCode": 110000,
"regionFullName": "北京市",
"operatorId": 1,
"operatorUsername": "admin",
"operatorNickname": "Admin",
"totalScore": 85,
"emailActive": true
}
]
}
```
</details>
---
### 2. Get Pending Applications
```
GET /api/whitelist/pending
```
Returns paginated list of players awaiting review (status=2).
**Parameters:** Same as `/list` (including `all`).
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/pending?page=1&size=10"
```
---
### 3. Get Rejected Applications
```
GET /api/whitelist/rejected
```
Returns paginated list of rejected players (status=0).
**Parameters:** Same as `/list` (including `all`).
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/rejected?page=1&size=10"
```
---
### 4. Approve Application (Add to Whitelist)
```
POST /api/whitelist/approve/{id}
```
Approves a pending player and adds them to the Minecraft server whitelist via RCON.
When authenticated via API Key, the operator record will be `null`.
**Path Parameters:**
| Name | Type | Description |
|------|------|-------------|
| id | Integer | Player ID |
**Success response:**
```json
{"code": 200, "msg": "已加入白名单", "data": null}
```
**Error response:**
```json
{"code": 500, "msg": "操作失败Rcon连接错误或玩家不存在", "data": null}
```
```bash
curl -X POST -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/approve/1"
```
---
### 5. Reject Application
```
POST /api/whitelist/reject/{id}
```
Rejects an application. Sets status to 0 and notifies via email.
**Path Parameters:** Same as approve.
```bash
curl -X POST -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/reject/1"
```
**Success response:**
```json
{"code": 200, "msg": "已拒绝申请", "data": null}
```
---
### 6. Remove from Whitelist
```
DELETE /api/whitelist/remove/{id}
```
Removes a player from the Minecraft whitelist via RCON and deletes their record.
An email notification is sent.
**Path Parameters:** Player ID.
```bash
curl -X DELETE -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/remove/1"
```
**Success response:**
```json
{"code": 200, "msg": "已从白名单移除", "data": null}
```
---
### 7. Batch Approve
```
POST /api/whitelist/batchApprove
```
Approve multiple applications at once.
**Request Body:**
```json
[1, 2, 3, 5]
```
**Success response:**
```json
{"code": 200, "msg": "成功处理4/4", "data": null}
```
**Partial success response:**
```json
{"code": 200, "msg": "成功处理3/4", "data": null}
```
```bash
curl -X POST -H "Content-Type: application/json" -H "X-API-TOKEN: <token>" \
-d '[1,2,3]' \
"https://whitelist.r3944realms.top/api/whitelist/batchApprove"
```
---
### 8. Batch Reject
```
POST /api/whitelist/batchReject
```
Reject multiple applications at once.
**Request Body:** Same as batchApprove (`[1, 2, 3]`).
```bash
curl -X POST -H "Content-Type: application/json" -H "X-API-TOKEN: <token>" \
-d '[4,5]' \
"https://whitelist.r3944realms.top/api/whitelist/batchReject"
```
**Success response:**
```json
{"code": 200, "msg": "成功处理2/2", "data": null}
```
---
### 9. Batch Remove
```
DELETE /api/whitelist/batchRemove
```
Remove multiple players from whitelist at once.
**Request Body:** `[1, 2, 3]`
```bash
curl -X DELETE -H "Content-Type: application/json" -H "X-API-TOKEN: <token>" \
-d '[1,2]' \
"https://whitelist.r3944realms.top/api/whitelist/batchRemove"
```
**Success response:**
```json
{"code": 200, "msg": "成功移除2/2", "data": null}
```
---
### 10. Whitelist Statistics
```
GET /api/whitelist/stats
```
Returns counts by status.
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/stats"
```
**Response:**
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"approved": 42,
"pending": 5,
"rejected": 10
}
}
```
---
### 11. Check Player Whitelist Status
```
GET /api/whitelist/check/{playerName}
```
Query a player's application status by their Minecraft name.
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/check/Steve"
```
**Response (found):**
```json
{
"code": 200,
"data": {
"exists": true,
"status": 1,
"playerName": "Steve",
"qq": "12345",
"uuid": "8667ba71b85a4004af54457a9734eed7",
"statusText": "已通过"
}
}
```
**Response (not found):**
```json
{
"code": 200,
"data": {
"exists": false
}
}
```
**Status codes:**
| status | statusText |
|--------|------------|
| 0 | 已拒绝 (Rejected) |
| 1 | 已通过 (Approved) |
| 2 | 待审核 (Pending) |
---
### 12. Get Player Score
```
GET /api/whitelist/score/{id}
```
Returns the total exam score for a player.
```bash
curl -H "X-API-TOKEN: <token>" \
"https://whitelist.r3944realms.top/api/whitelist/score/1"
```
**Response:**
```json
{
"code": 200,
"data": {
"playerId": 1,
"totalScore": 85
}
}
```
**Error (not found):**
```json
{"code": 500, "msg": "玩家不存在", "data": null}
```
---
## PlayerInfo Object
| Field | Type | Description |
|-------|------|-------------|
| id | Integer | Player ID |
| playerName | String | Minecraft username |
| uuid | String | Mojang account UUID |
| qq | String | QQ number |
| status | Byte | 0=rejected, 1=approved, 2=pending |
| description | String | Application note |
| createTime | String | Application timestamp (ISO 8601) |
| regionCode | Long | Region postal code |
| regionFullName | String | Full region name (e.g. "北京市") |
| operatorId | Integer | ID of the admin who processed |
| operatorUsername | String | Admin username |
| operatorNickname | String | Admin nickname |
| totalScore | Integer | Total exam score |
| emailActive | Boolean | Whether email is verified |