> ## Documentation Index
> Fetch the complete documentation index at: https://www.kitemc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Backend API

<Warning>
  VerifyMC is discontinued. These historical documents remain available for existing users and do not imply active maintenance or current compatibility.
</Warning>

<span id="backend-api" />

<h2 id="api-reference-documentation">
  API Reference Documentation
</h2>

All API endpoints use JSON for request and response bodies. Admin endpoints require `Authorization: Bearer <token>` in the request header.

<h2 id="configuration">
  Configuration
</h2>

<h3 id="get-config">
  Get Config
</h3>

* **Endpoint**: `GET /api/config`
* **Purpose**: Get frontend theme, announcement, auth methods, and other public config info.
* **Permission**: Public

<h2 id="captcha">
  Captcha
</h2>

<h3 id="generate-captcha">
  Generate Captcha
</h3>

* **Endpoint**: `GET /api/captcha/generate`
* **Purpose**: Generate a new graphical captcha image.
* **Permission**: Public

<h2 id="email-verification">
  Email Verification
</h2>

<h3 id="send-verification-code">
  Send Verification Code
</h3>

* **Endpoint**: `POST /api/verify/send`
* **Purpose**: Send a registration verification code to the specified email.
* **Permission**: Public
* **Request Header**: `Content-Type: application/json`
* **Request Parameters**:
  | Field | Type | Required | Description | Example |
  | - | - | - | - | - |
  | email | string | Yes | User email | [user@example.com](mailto:user@example.com) |
  | language | string | No | Language (zh/en) | en |
* **Notes**:
  * Email sending is rate-limited per day/minute to prevent abuse.
  * Email format must comply with RFC standards.

<h2 id="questionnaire">
  Questionnaire
</h2>

<h3 id="get-questionnaire-config">
  Get Questionnaire Config
</h3>

* **Endpoint**: `GET /api/questionnaire/config`
* **Purpose**: Get questionnaire questions and configuration.
* **Permission**: Public

<h3 id="submit-questionnaire">
  Submit Questionnaire
</h3>

* **Endpoint**: `POST /api/questionnaire/submit`
* **Purpose**: Submit questionnaire answers for scoring.
* **Permission**: Public

<h2 id="registration">
  Registration
</h2>

<h3 id="register">
  Register
</h3>

* **Endpoint**: `POST /api/register`
* **Purpose**: User submits verification code and info to register.
* **Permission**: Public
* **Request Header**: `Content-Type: application/json`
* **Request Parameters**:
  | Field | Type | Required | Description |
  | - | - | - | - |
  | email | string | Yes | User email |
  | code | string | Yes | Verification code |
  | username | string | Yes | Player name |
  | language | string | No | Language |
* **Notes**:
  * Verification code is usually valid for 5 minutes.
  * Username and email must be unique.
  * Registration may require admin approval.

<h3 id="check-review-status">
  Check Review Status
</h3>

* **Endpoint**: `GET /api/review/status`
* **Purpose**: Check the review status of a registration.
* **Permission**: Public

<h2 id="user">
  User
</h2>

<h3 id="get-user-status">
  Get User Status
</h3>

* **Endpoint**: `GET /api/user/status`
* **Purpose**: Query the current status of a user.
* **Permission**: Public

<h2 id="authentication">
  Authentication
</h2>

<h3 id="user-login">
  User Login
</h3>

* **Endpoint**: `POST /api/login`
* **Purpose**: User login (non-admin).
* **Permission**: Public

<h3 id="admin-login">
  Admin Login
</h3>

* **Endpoint**: `POST /api/admin/login`
* **Purpose**: Admin login to backend management panel.
* **Permission**: Public
* **Request Header**: `Content-Type: application/json`
* **Request Parameters**:
  | Field | Type | Required | Description |
  | - | - | - | - |
  | username | string | Yes | Player username |
  | password | string | Yes | Player password |
  | language | string | No | Language |
* **Notes**:
  * Admin login verifies against registered player credentials. Only server OPs can access the admin panel.
  * All admin APIs require `Authorization: Bearer <token>` in the header after login.

<h2 id="admin-endpoints">
  Admin Endpoints
</h2>

<h3 id="verify-admin-token">
  Verify Admin Token
</h3>

* **Endpoint**: `GET /api/admin/verify`
* **Purpose**: Verify if the admin token is still valid.
* **Permission**: Admin (token required)

<h3 id="get-user-list">
  Get User List
</h3>

* **Endpoint**: `GET /api/admin/users`
* **Purpose**: Get users with pagination, search, and status filtering.
* **Permission**: Admin (token required)
* **Query Parameters**: `page`, `size`, `search`, `status`

<h3 id="approve-user">
  Approve User
</h3>

* **Endpoint**: `POST /api/admin/user/approve`
* **Purpose**: Approve a pending user's registration.
* **Permission**: Admin (token required)

<h3 id="reject-user">
  Reject User
</h3>

* **Endpoint**: `POST /api/admin/user/reject`
* **Purpose**: Reject a pending user's registration.
* **Permission**: Admin (token required)

<h3 id="delete-user">
  Delete User
</h3>

* **Endpoint**: `POST /api/admin/user/delete`
* **Purpose**: Delete a user from the system.
* **Permission**: Admin (token required)

<h3 id="ban-user">
  Ban User
</h3>

* **Endpoint**: `POST /api/admin/user/ban`
* **Purpose**: Ban a user (change status to banned).
* **Permission**: Admin (token required)

<h3 id="unban-user">
  Unban User
</h3>

* **Endpoint**: `POST /api/admin/user/unban`
* **Purpose**: Unban a user (change status from banned to approved).
* **Permission**: Admin (token required)

<h3 id="change-user-password">
  Change User Password
</h3>

* **Endpoint**: `POST /api/admin/user/password`
* **Purpose**: Change a user's password.
* **Permission**: Admin (token required)

<h3 id="get-audit-logs">
  Get Audit Logs
</h3>

* **Endpoint**: `GET /api/admin/audits`
* **Purpose**: Get audit log records.
* **Permission**: Admin (token required)

<h3 id="sync-authme-data">
  Sync AuthMe Data
</h3>

* **Endpoint**: `POST /api/admin/sync`
* **Purpose**: Trigger AuthMe data synchronization.
* **Permission**: Admin (token required)

<h2 id="discord-integration">
  Discord Integration
</h2>

<h3 id="discord-auth">
  Discord Auth
</h3>

* **Endpoint**: `GET /api/discord/auth`
* **Purpose**: Initiate Discord OAuth2 authorization flow.
* **Permission**: Public

<h3 id="discord-callback">
  Discord Callback
</h3>

* **Endpoint**: `GET /api/discord/callback`
* **Purpose**: Handle Discord OAuth2 callback.
* **Permission**: Public

<h3 id="discord-status">
  Discord Status
</h3>

* **Endpoint**: `GET /api/discord/status`
* **Purpose**: Check Discord linking status for a user.
* **Permission**: Public

<h3 id="discord-unlink">
  Discord Unlink
</h3>

* **Endpoint**: `POST /api/discord/unlink`
* **Purpose**: Unlink a user's Discord account.
* **Permission**: Public

<h2 id="version">
  Version
</h2>

<h3 id="get-version">
  Get Version
</h3>

* **Endpoint**: `GET /api/version`
* **Purpose**: Get the plugin version and check for updates.
* **Permission**: Public

***

> For more APIs and parameters, see the source code or frontend `src/services/api.ts`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.