InterConnectServer / docs /openapi.yaml
GitHub Actions
Sync from GitHub (excluding README)
6d43d9c
openapi: 3.0.0
info:
title: InterConnect-Server API
version: 1.0.0
description: |
InterConnect-Server 是一个 Minecraft WebSocket API 服务器,提供 API Key 管理、事件广播、服务器命令等功能。
权限说明:
- **Admin Key**: `mc_admin_` 前缀,拥有完整管理权限。
- **Regular Key**: `mc_key_` 前缀,可查看/管理关联的 Server Key,发送服务器命令。
- **Server Key**: `mc_server_` 前缀,仅用于插件/Mod 配置,用于认证和事件上报。
servers:
- url: http://localhost:8000
description: 本地服务器
components:
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: 使用 API Key 进行认证 (Bearer Token)
schemas:
ApiKey:
type: object
properties:
id:
type: string
format: uuid
name:
type: string
description:
type: string
keyPrefix:
type: string
enum: [mc_admin_, mc_key_, mc_server_]
keyType:
type: string
enum: [admin, regular, server]
serverId:
type: string
nullable: true
regularKeyId:
type: string
nullable: true
createdAt:
type: string
format: date-time
lastUsed:
type: string
format: date-time
nullable: true
isActive:
type: boolean
ApiKeyWithSecret:
allOf:
- $ref: '#/components/schemas/ApiKey'
- type: object
properties:
key:
type: string
description: 原始 API Key,仅在创建时返回一次
CreateKeyRequest:
type: object
required: [name]
properties:
name:
type: string
description:
type: string
key_type:
type: string
enum: [regular, admin]
default: regular
server_id:
type: string
CreateServerKeyRequest:
type: object
required: [name, regular_key_id]
properties:
name:
type: string
description:
type: string
server_id:
type: string
regular_key_id:
type: string
Event:
type: object
required: [event_type, server_name, timestamp, data]
properties:
event_type:
type: string
description: 事件类型 (e.g., player_join, player_leave, message, ai_chat)
server_name:
type: string
timestamp:
type: string
format: date-time
data:
type: object
description: 事件具体数据
CommandRequest:
type: object
required: [command]
properties:
command:
type: string
server_id:
type: string
description: Admin Key 需要/可以指定
AiConfig:
type: object
properties:
apiUrl:
type: string
modelId:
type: string
apiKey:
type: string
description: 部分隐藏的 API Key
enabled:
type: boolean
systemPrompt:
type: string
createdAt:
type: string
format: date-time
updatedAt:
type: string
format: date-time
AiConfigUpdateRequest:
type: object
properties:
api_url:
type: string
model_id:
type: string
api_key:
type: string
enabled:
type: boolean
system_prompt:
type: string
AiChatRequest:
type: object
required: [message]
properties:
message:
type: string
player_name:
type: string
server_id:
type: string
paths:
/health:
get:
summary: 健康检查
description: 获取服务器状态和统计信息
security: []
responses:
'200':
description: 服务器正常
content:
application/json:
schema:
type: object
properties:
status:
type: string
timestamp:
type: string
active_ws:
type: integer
keys_total:
type: integer
admin_active:
type: integer
server_active:
type: integer
regular_active:
type: integer
/manage/keys:
get:
summary: 获取所有 API Key
description: 获取所有 API Key 列表 (仅 Admin)
security:
- bearerAuth: []
responses:
'200':
description: 成功
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ApiKey'
'403':
description: 权限不足
post:
summary: 创建 API Key
description: 创建新的 Admin Regular Key (创建 Regular Key 会自动附带一个 Server Key)
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateKeyRequest'
responses:
'201':
description: 创建成功
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ApiKeyWithSecret'
- type: object
properties:
regularKey:
$ref: '#/components/schemas/ApiKeyWithSecret'
serverKey:
$ref: '#/components/schemas/ApiKeyWithSecret'
/manage/keys/{key_id}:
get:
summary: 获取 API Key 详情
security:
- bearerAuth: []
parameters:
- in: path
name: key_id
schema:
type: string
required: true
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKey'
'404':
description: 未找到
delete:
summary: 删除 API Key
description: Admin 可操作,不能删除自己
security:
- bearerAuth: []
parameters:
- in: path
name: key_id
schema:
type: string
required: true
responses:
'204':
description: 删除成功
'400':
description: 无法删除(如试图删除自己)
/manage/keys/{key_id}/activate:
patch:
summary: 激活 API Key
description: Admin 可激活任意 Key,Regular 仅可激活关联的 Server Key
security:
- bearerAuth: []
parameters:
- in: path
name: key_id
schema:
type: string
required: true
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
message:
type: string
/manage/keys/{key_id}/deactivate:
patch:
summary: 停用 API Key
description: Admin 可停用任意 Key,Regular 仅可停用关联的 Server Key
security:
- bearerAuth: []
parameters:
- in: path
name: key_id
schema:
type: string
required: true
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
message:
type: string
/manage/keys/server-keys:
get:
summary: 获取 Server Key 列表
description: Admin 获取所有 Server Key,Regular 获取关联的 Server Key
security:
- bearerAuth: []
responses:
'200':
description: 成功
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ApiKey'
post:
summary: 创建 Server Key
description: 为指定的 Regular Key 创建新的 Server Key (仅 Admin)
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateServerKeyRequest'
responses:
'201':
description: 创建成功
content:
application/json:
schema:
$ref: '#/components/schemas/ApiKeyWithSecret'
'400':
description: 参数错误
'404':
description: Regular Key 不存在
/api/events:
post:
summary: 发送事件
description: 发送 Minecraft 事件并广播给所有 WebSocket 连接
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/Event'
responses:
'200':
description: 成功广播
/api/server/info:
get:
summary: 获取服务器信息
security:
- bearerAuth: []
parameters:
- in: query
name: server_id
schema:
type: string
description: Admin 需要
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
server_id:
type: string
status:
type: string
online_players:
type: integer
/api/server/command:
post:
summary: 发送服务器命令
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CommandRequest'
responses:
'200':
description: 命令发送成功
'403':
description: 禁止的命令
/api/ai/config:
get:
summary: 获取 AI 配置 (Admin)
security:
- bearerAuth: []
responses:
'200':
description: 成功
content:
application/json:
schema:
$ref: '#/components/schemas/AiConfig'
post:
summary: 创建 AI 配置 (Admin)
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiConfigUpdateRequest'
responses:
'201':
description: 创建成功
patch:
summary: 更新 AI 配置 (Admin)
security:
- bearerAuth: []
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AiConfigUpdateRequest'
responses:
'200':
description: 更新成功
delete:
summary: 删除 AI 配置 (Admin)
security:
- bearerAuth: []
responses:
'204':
description: 删除成功
/api/ai/config/test:
post:
summary: 测试 AI 连接 (Admin)
security:
- bearerAuth: []
responses:
'200':
description: 连接成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
message:
type: string
/api/ai/chat:
post:
summary: AI 聊天
description: 发送消息给 AI 并获取回复
security:
- bearerAuth: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AiChatRequest'
responses:
'200':
description: 成功
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
reply:
type: string
model:
type: string