跳转到内容

API 参考

本文档列出 Admin 服务的所有 HTTP API 端点。

  • Base URL: http://localhost:28081/api
  • 认证: Bearer Token(JWT)
  • Content-Type: application/json
{
"success": true,
"data": { ... }
}
{
"success": false,
"error": "error_code",
"message": "Human-readable error message"
}
{
"success": true,
"data": {
"list": [ ... ],
"total": 100,
"page": 1,
"page_size": 20
}
}
POST /api/auth/otp/send
Content-Type: application/json
{
"email": "admin@example.com"
}

响应:

{
"success": true,
"message": "Verification code sent"
}

错误:

错误码说明
invalid_email邮箱格式无效
email_not_registered邮箱未注册
rate_limited请求过于频繁
cooldown_not_elapsed发送冷却时间未结束
POST /api/auth/otp/verify
Content-Type: application/json
{
"email": "admin@example.com",
"code": "123456"
}

响应:

{
"success": true,
"data": {
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"refresh_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 3600
}
}

错误:

错误码说明
invalid_code验证码错误
code_expired验证码已过期
account_locked账户已锁定
max_attempts_exceeded超过最大验证次数
POST /api/auth/refresh
Content-Type: application/json
{
"refresh_token": "eyJhbGciOiJSUzI1NiIs..."
}

响应:

{
"success": true,
"data": {
"access_token": "eyJhbGciOiJSUzI1NiIs...",
"expires_in": 3600
}
}
POST /api/auth/logout
Authorization: Bearer <access_token>

响应:

{
"success": true
}
GET /api/auth/me
Authorization: Bearer <access_token>

响应:

{
"success": true,
"data": {
"id": "user-uuid",
"email": "admin@example.com",
"name": "管理员",
"roles": [
{ "id": "role-uuid", "name": "admin", "code": "admin" }
]
}
}
POST /api/admin/users
Authorization: Bearer <access_token>
Content-Type: application/json
{
"email": "newadmin@example.com",
"name": "新管理员",
"role_ids": ["role-uuid"]
}

权限: admin:write

GET /api/admin/users?page=1&page_size=20
Authorization: Bearer <access_token>

权限: admin:read

GET /api/admin/users/:id
Authorization: Bearer <access_token>

权限: admin:read

PUT /api/admin/users/:id
Authorization: Bearer <access_token>
Content-Type: application/json
{
"name": "新名称",
"role_ids": ["role-uuid"]
}

权限: admin:write

DELETE /api/admin/users/:id
Authorization: Bearer <access_token>

权限: admin:delete

POST /api/admin/roles
Authorization: Bearer <access_token>
Content-Type: application/json
{
"name": "自定义角色",
"code": "custom_role",
"description": "角色描述"
}

权限: role:write

GET /api/admin/roles
Authorization: Bearer <access_token>

权限: role:read

GET /api/admin/roles/:id
Authorization: Bearer <access_token>

权限: role:read

PUT /api/admin/roles/:id
Authorization: Bearer <access_token>
Content-Type: application/json
{
"name": "新角色名称",
"description": "新描述"
}

权限: role:write

DELETE /api/admin/roles/:id
Authorization: Bearer <access_token>

权限: role:delete

GET /api/admin/roles/:id/permissions
Authorization: Bearer <access_token>

权限: role:read

PUT /api/admin/roles/:id/permissions
Authorization: Bearer <access_token>
Content-Type: application/json
{
"permissions": [
{ "object": "users", "action": "read" },
{ "object": "users", "action": "write" }
]
}

权限: role:write

POST /api/admin/users/:id/roles
Authorization: Bearer <access_token>
Content-Type: application/json
{
"role_ids": ["role-uuid-1", "role-uuid-2"]
}

权限: admin:write

GET /api/admin/users/:id/roles
Authorization: Bearer <access_token>

权限: admin:read

GET /api/rtc-users?page=1&page_size=20
Authorization: Bearer <access_token>

权限: user:read

GET /api/rtc-users/:id
Authorization: Bearer <access_token>

权限: user:read

POST /api/rtc-users/:id/ban
Authorization: Bearer <access_token>
Content-Type: application/json
{
"reason": "违反服务条款",
"duration": 86400
}

权限: user:write

参数:

  • reason:封禁原因
  • duration:封禁时长(秒),不传表示永久封禁
POST /api/rtc-users/:id/unban
Authorization: Bearer <access_token>

权限: user:write

GET /api/rtc-users/:id/devices
Authorization: Bearer <access_token>

权限: user:read

DELETE /api/rtc-users/:user_id/devices/:device_id
Authorization: Bearer <access_token>

权限: user:write

GET /api/rtc-sessions?user_id=:user_id&page=1&page_size=20
Authorization: Bearer <access_token>

权限: session:read

GET /api/rtc-sessions/:id
Authorization: Bearer <access_token>

权限: session:read

DELETE /api/rtc-sessions/:id
Authorization: Bearer <access_token>

权限: session:delete

GET /api/rtc-messages?session_id=:session_id&page=1&page_size=50
Authorization: Bearer <access_token>

权限: message:read

GET /api/server-configs
Authorization: Bearer <access_token>

权限: config:read

GET /api/server-configs/:key
Authorization: Bearer <access_token>

权限: config:read

PUT /api/server-configs/:key
Authorization: Bearer <access_token>
Content-Type: application/json
If-Match: "2024-01-01T00:00:00Z"
{
"value": "new-value"
}

权限: config:write

乐观锁:使用 If-Match 头传入 updated_at 值防止并发冲突

DELETE /api/server-configs/:key
Authorization: Bearer <access_token>

权限: config:write

GET /api/user-configs?user_id=:user_id
Authorization: Bearer <access_token>

权限: config:read

PUT /api/user-configs/:key
Authorization: Bearer <access_token>
Content-Type: application/json
{
"user_id": "user-uuid",
"value": "custom-value"
}

权限: config:write

DELETE /api/user-configs/:key?user_id=:user_id
Authorization: Bearer <access_token>

权限: config:write

GET /api/audit-logs?page=1&page_size=20&resource=config
Authorization: Bearer <access_token>

权限: audit:read

查询参数:

  • resource:资源类型(可选)
  • resource_id:资源 ID(可选)
  • user_id:操作用户 ID(可选)
  • action:操作类型(可选)
GET /api/metrics/query?query=up
Authorization: Bearer <access_token>

权限: metrics:read

GET /api/grafana/d/rtc-agent/rtc-agent
Authorization: Bearer <access_token>

权限: metrics:read

GET /api/jaeger/search?service=rtc-agent
Authorization: Bearer <access_token>

权限: tracing:read

GET /api/pyroscope/
Authorization: Bearer <access_token>

权限: profiling:read

GET /ready

无需认证

正常响应:

{ "status": "ready" }

降级响应:

{
"status": "degraded",
"error": "bootstrap failed — default roles may be missing"
}
资源Action权限代码
管理员readadmin:read
管理员writeadmin:write
管理员deleteadmin:delete
角色readrole:read
角色writerole:write
角色deleterole:delete
RTC 用户readuser:read
RTC 用户writeuser:write
会话readsession:read
会话deletesession:delete
消息readmessage:read
配置readconfig:read
配置writeconfig:write
审计readaudit:read
指标readmetrics:read
追踪readtracing:read
剖析readprofiling:read
错误码HTTP 状态码说明
unauthorized401未认证或 Token 无效
forbidden403无权限访问
not_found404资源不存在
conflict409资源冲突(如乐观锁冲突)
validation_error422请求参数验证失败
rate_limited429请求过于频繁
internal_error500服务器内部错误