跳转至

08. 运维与管理接口

1. 用户审批(Admin)

GET /api/approvals/pending

参数:

  • status=0|1|2
  • page
  • limit

返回包含用户基础信息和证书列表(certs)。

PUT /api/approvals/:id/approve

请求:

{ "status": 1, "note": "审核通过" }
  • status=1 通过
  • status=2 拒绝

2. 操作证审批(Admin)

GET /api/certificate-approvals

参数:status=-1|0|1|2、page、limit

PUT /api/operator-certificates/:id/approve

请求:

{ "status": 1, "note": "证件清晰,予以通过" }

3. 中继台与服务器(Admin)

中继台

  • GET /api/relays
  • GET /api/relay/list(兼容)
  • POST /api/relay/create
  • POST /api/relay/update
  • POST /api/relay/delete

中继台请求示例(create/update):

{
  "id": 1,
  "name": "深圳 439.500",
  "up_freq": "431.500",
  "down_freq": "439.500",
  "send_ctss": "88.5",
  "recive_ctss": "88.5",
  "location": "广东省 深圳市 南山区",
  "status": 1,
  "note": "主站"
}

删除请求:

{ "id": 1 }

服务器

  • GET /api/servers
  • GET /api/server/list(兼容)
  • POST /api/server/create
  • POST /api/server/update
  • POST /api/server/delete

删除请求:

{ "id": 2 }

边缘节点

  • GET /api/edge-nodes:节点配置、在线状态、应用层流量和路由同步指标。
  • POST /api/edge-nodes:创建节点并返回仅显示一次的注册凭据。
  • PUT /api/edge-nodes/:id:修改昵称、状态和公开接入点字段。
  • DELETE /api/edge-nodes/:id:永久删除节点,断开在线会话并使已有凭据失效。
  • POST /api/edge-nodes/:id/rotate-credential:轮换长期凭据。
  • POST /api/edge-nodes/:id/revoke-credential:吊销全部节点凭据并断开会话。
  • POST /api/edge-nodes/:id/disconnect:仅重置当前连接,凭据仍可用于重连。

创建和轮换响应包含明文凭据,均设置 Cache-Control: no-store,且凭据只显示 一次。轮换响应的 delivered_online=true 表示在线边缘已将新 identity 持久化 并确认;为 false 时必须人工安装响应中的新凭据。旧凭据只在配置的短时 宽限期内可重连。

4. 操作日志(Admin)

  • GET /api/operatorlog/list
  • GET /api/operatorlog/stats

/list 参数:page、page_size、event_type。节点创建、首次注册、认证失败、 轮换、吊销、禁用和强制下线分别记录独立事件,并保存来源 IP。

5. 幽灵 Session 管理(Admin)

  • GET /api/admin/radio/sessions:返回全部在线幽灵 Session 摘要。
  • DELETE /api/admin/radio/sessions/:session_id:精确断开一个 Session,不影响同账号其他端。

列表响应设置 Cache-Control: no-store。管理响应包含完整 session_id 作为精确操作标识, 但只返回八字符 client_instance_hint,不会返回完整客户端实例 ID、UDP session_tag、 JWT 或网络端点。强制断开会写入 ghost_session_disconnect 操作日志,日志中的 Session 只保留八字符短 ID。

管理页面位于 /admin/radio-sessions,支持按账号/呼号/Session 短 ID 和连接方式筛选, 并提供带确认的单 Session 断开操作。

6. 缓存与实时通信指标(Admin)

  • GET /api/cache/metrics
  • POST /api/cache/metrics/reset
  • POST /api/cache/clear
  • GET /api/udp/metrics:UDP 入站、fan-out、接收者快照、录音、WebSocket 投递、 Ghost Session/包拒绝、频道消息 API 和 socket buffer 指标。

/api/udp/metrics 的主要层级:

  • ghost_sessions:在线 Session/账号、平台与传输分布、订阅量、注册/替换/清理及限额拒绝。
  • ghost_packets:无效 tag、身份不匹配、端点不匹配和注册表状态拒绝。
  • receiver_cache:快照命中/重建、候选目标、端点去重、构建条目和构建耗时。
  • websocket:写队列、丢弃、fan-out 候选、Session 去重和最终投递。
  • message_api:列表/详情请求、HTTP 状态、权限/参数/游标拒绝、查询错误、可见群组、返回行数、音频 URL 授权成功/失败,以及请求/查询耗时累计直方图。

消息耗时直方图使用 query_le_* 和 request_le_* 累计桶,边界为 1ms、5ms、10ms、 25ms、50ms、100ms、250ms、500ms、1s 和 5s;监控系统可据此计算延迟分位。

指标返回示例:

{
  "code": 200,
  "message": "success",
  "data": {
    "l1_hits": 1234,
    "l1_misses": 321,
    "l1_hit_rate": 0.79,
    "total_requests": 1555,
    "invalidations": 42,
    "errors": 0,
    "latency": { "get_avg_ns": 1200, "set_avg_ns": 2400, "del_avg_ns": 1800 },
    "uptime_seconds": 98765
  }
}

7. 公开中继查询(无登录)

GET /api/public/relays?location=广东省

返回:

{ "code": 200, "message": "成功", "data": { "items": [] } }