API 参考
API 参考
Section titled “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 }}认证 API
Section titled “认证 API”发送 OTP 验证码
Section titled “发送 OTP 验证码”POST /api/auth/otp/sendContent-Type: application/json
{ "email": "admin@example.com"}响应:
{ "success": true, "message": "Verification code sent"}错误:
| 错误码 | 说明 |
|---|---|
invalid_email | 邮箱格式无效 |
email_not_registered | 邮箱未注册 |
rate_limited | 请求过于频繁 |
cooldown_not_elapsed | 发送冷却时间未结束 |
验证 OTP 并登录
Section titled “验证 OTP 并登录”POST /api/auth/otp/verifyContent-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 | 超过最大验证次数 |
刷新 Token
Section titled “刷新 Token”POST /api/auth/refreshContent-Type: application/json
{ "refresh_token": "eyJhbGciOiJSUzI1NiIs..."}响应:
{ "success": true, "data": { "access_token": "eyJhbGciOiJSUzI1NiIs...", "expires_in": 3600 }}POST /api/auth/logoutAuthorization: Bearer <access_token>响应:
{ "success": true}获取当前用户信息
Section titled “获取当前用户信息”GET /api/auth/meAuthorization: Bearer <access_token>响应:
{ "success": true, "data": { "id": "user-uuid", "email": "admin@example.com", "name": "管理员", "roles": [ { "id": "role-uuid", "name": "admin", "code": "admin" } ] }}管理员用户 API
Section titled “管理员用户 API”POST /api/admin/usersAuthorization: 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=20Authorization: Bearer <access_token>权限: admin:read
GET /api/admin/users/:idAuthorization: Bearer <access_token>权限: admin:read
PUT /api/admin/users/:idAuthorization: Bearer <access_token>Content-Type: application/json
{ "name": "新名称", "role_ids": ["role-uuid"]}权限: admin:write
DELETE /api/admin/users/:idAuthorization: Bearer <access_token>权限: admin:delete
角色管理 API
Section titled “角色管理 API”POST /api/admin/rolesAuthorization: Bearer <access_token>Content-Type: application/json
{ "name": "自定义角色", "code": "custom_role", "description": "角色描述"}权限: role:write
GET /api/admin/rolesAuthorization: Bearer <access_token>权限: role:read
GET /api/admin/roles/:idAuthorization: Bearer <access_token>权限: role:read
PUT /api/admin/roles/:idAuthorization: Bearer <access_token>Content-Type: application/json
{ "name": "新角色名称", "description": "新描述"}权限: role:write
DELETE /api/admin/roles/:idAuthorization: Bearer <access_token>权限: role:delete
获取角色权限
Section titled “获取角色权限”GET /api/admin/roles/:id/permissionsAuthorization: Bearer <access_token>权限: role:read
设置角色权限
Section titled “设置角色权限”PUT /api/admin/roles/:id/permissionsAuthorization: Bearer <access_token>Content-Type: application/json
{ "permissions": [ { "object": "users", "action": "read" }, { "object": "users", "action": "write" } ]}权限: role:write
用户角色分配 API
Section titled “用户角色分配 API”分配用户角色
Section titled “分配用户角色”POST /api/admin/users/:id/rolesAuthorization: Bearer <access_token>Content-Type: application/json
{ "role_ids": ["role-uuid-1", "role-uuid-2"]}权限: admin:write
获取用户角色
Section titled “获取用户角色”GET /api/admin/users/:id/rolesAuthorization: Bearer <access_token>权限: admin:read
RTC 用户 API
Section titled “RTC 用户 API”RTC 用户列表
Section titled “RTC 用户列表”GET /api/rtc-users?page=1&page_size=20Authorization: Bearer <access_token>权限: user:read
RTC 用户详情
Section titled “RTC 用户详情”GET /api/rtc-users/:idAuthorization: Bearer <access_token>权限: user:read
POST /api/rtc-users/:id/banAuthorization: Bearer <access_token>Content-Type: application/json
{ "reason": "违反服务条款", "duration": 86400}权限: user:write
参数:
reason:封禁原因duration:封禁时长(秒),不传表示永久封禁
POST /api/rtc-users/:id/unbanAuthorization: Bearer <access_token>权限: user:write
获取用户设备
Section titled “获取用户设备”GET /api/rtc-users/:id/devicesAuthorization: Bearer <access_token>权限: user:read
删除用户设备
Section titled “删除用户设备”DELETE /api/rtc-users/:user_id/devices/:device_idAuthorization: Bearer <access_token>权限: user:write
会话管理 API
Section titled “会话管理 API”GET /api/rtc-sessions?user_id=:user_id&page=1&page_size=20Authorization: Bearer <access_token>权限: session:read
GET /api/rtc-sessions/:idAuthorization: Bearer <access_token>权限: session:read
DELETE /api/rtc-sessions/:idAuthorization: Bearer <access_token>权限: session:delete
消息管理 API
Section titled “消息管理 API”GET /api/rtc-messages?session_id=:session_id&page=1&page_size=50Authorization: Bearer <access_token>权限: message:read
系统配置 API
Section titled “系统配置 API”列出所有配置
Section titled “列出所有配置”GET /api/server-configsAuthorization: Bearer <access_token>权限: config:read
获取单个配置
Section titled “获取单个配置”GET /api/server-configs/:keyAuthorization: Bearer <access_token>权限: config:read
PUT /api/server-configs/:keyAuthorization: Bearer <access_token>Content-Type: application/jsonIf-Match: "2024-01-01T00:00:00Z"
{ "value": "new-value"}权限: config:write
乐观锁:使用 If-Match 头传入 updated_at 值防止并发冲突
删除配置覆盖
Section titled “删除配置覆盖”DELETE /api/server-configs/:keyAuthorization: Bearer <access_token>权限: config:write
用户配置 API
Section titled “用户配置 API”获取用户配置
Section titled “获取用户配置”GET /api/user-configs?user_id=:user_idAuthorization: Bearer <access_token>权限: config:read
设置用户配置
Section titled “设置用户配置”PUT /api/user-configs/:keyAuthorization: Bearer <access_token>Content-Type: application/json
{ "user_id": "user-uuid", "value": "custom-value"}权限: config:write
删除用户配置
Section titled “删除用户配置”DELETE /api/user-configs/:key?user_id=:user_idAuthorization: Bearer <access_token>权限: config:write
审计日志 API
Section titled “审计日志 API”审计日志列表
Section titled “审计日志列表”GET /api/audit-logs?page=1&page_size=20&resource=configAuthorization: Bearer <access_token>权限: audit:read
查询参数:
resource:资源类型(可选)resource_id:资源 ID(可选)user_id:操作用户 ID(可选)action:操作类型(可选)
可观测性代理 API
Section titled “可观测性代理 API”Prometheus 代理
Section titled “Prometheus 代理”GET /api/metrics/query?query=upAuthorization: Bearer <access_token>权限: metrics:read
Grafana 代理
Section titled “Grafana 代理”GET /api/grafana/d/rtc-agent/rtc-agentAuthorization: Bearer <access_token>权限: metrics:read
Jaeger 代理
Section titled “Jaeger 代理”GET /api/jaeger/search?service=rtc-agentAuthorization: Bearer <access_token>权限: tracing:read
Pyroscope 代理
Section titled “Pyroscope 代理”GET /api/pyroscope/Authorization: Bearer <access_token>权限: profiling:read
GET /ready无需认证
正常响应:
{ "status": "ready" }降级响应:
{ "status": "degraded", "error": "bootstrap failed — default roles may be missing"}| 资源 | Action | 权限代码 |
|---|---|---|
| 管理员 | read | admin:read |
| 管理员 | write | admin:write |
| 管理员 | delete | admin:delete |
| 角色 | read | role:read |
| 角色 | write | role:write |
| 角色 | delete | role:delete |
| RTC 用户 | read | user:read |
| RTC 用户 | write | user:write |
| 会话 | read | session:read |
| 会话 | delete | session:delete |
| 消息 | read | message:read |
| 配置 | read | config:read |
| 配置 | write | config:write |
| 审计 | read | audit:read |
| 指标 | read | metrics:read |
| 追踪 | read | tracing:read |
| 剖析 | read | profiling:read |
| 错误码 | HTTP 状态码 | 说明 |
|---|---|---|
unauthorized | 401 | 未认证或 Token 无效 |
forbidden | 403 | 无权限访问 |
not_found | 404 | 资源不存在 |
conflict | 409 | 资源冲突(如乐观锁冲突) |
validation_error | 422 | 请求参数验证失败 |
rate_limited | 429 | 请求过于频繁 |
internal_error | 500 | 服务器内部错误 |