管理员运营 API

管理员日常运营工具:用户管理、渠道健康监控、审计日志查询、草稿保存等。

---

鉴权

所有接口都需要 baozi 管理员身份(OIDC 登录 + admin role)。

---

1. 查询用户列表

GET /api/admin/users

查询参数

参数 类型 默认 说明
limit number 20 最多返回条数
offset number 0 跳过条数
search string - 按 username / email 模糊搜索

响应 200

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 42,
        "username": "zhangsan",
        "email": "zhangsan@example.com",
        "tier": "pro",
        "quota_remaining": 18500,
        "created_at": 1730000000000,
        "last_login_at": 1730000000000
      }
    ],
    "total": 1
  }
}

---

2. 查询某用户的所有 Token

GET /api/admin/user-tokens/:username

响应 200

{
  "success": true,
  "data": {
    "user": { "id": 42, "username": "zhangsan" },
    "tokens": [
      {
        "id": 123,
        "name": "my-app-key",
        "key_preview": "sk-baozi-xxxxxx...xxxx",
        "status": 1,
        "created_at": 1730000000000
      }
    ]
  }
}

---

3. 渠道健康检查

GET /api/admin/channels

列出 baozi 后端对接的所有 LLM 渠道(OpenAI / Anthropic / 国产模型等)。

响应 200

{
  "success": true,
  "data": [
    {
      "id": 1,
      "name": "OpenAI 官方",
      "base_url": "https://api.openai.com/v1",
      "enabled": true,
      "model_count": 12,
      "last_health_check_at": 1730000000000,
      "last_health_status": "ok"
    }
  ]
}

POST /api/admin/channels/test

测试某渠道连通性(只发 1 个轻量请求,不会消耗生产 quota)。

请求 body

字段 类型 必填 说明
channel_id number 渠道 ID

响应 200

{
  "success": true,
  "data": {
    "channel_id": 1,
    "status": "ok",
    "latency_ms": 234,
    "tested_at": 1730000000000
  }
}

错误码

HTTP code 含义
502 CHANNEL_UNREACHABLE 渠道不可达
504 CHANNEL_TIMEOUT 渠道超时

---

4. 审计日志

GET /api/admin/audit-logs

查询管理员操作审计记录。

查询参数

参数 类型 默认 说明
limit number 50 最多返回条数
offset number 0 跳过条数
action string - 过滤:grant_quota / refund_purchase / create_user / ...
admin_user_id number - 过滤特定管理员
target_user_id number - 过滤被操作的用户

响应 200

{
  "success": true,
  "data": {
    "items": [
      {
        "id": 9876,
        "admin_user_id": 1,
        "admin_username": "admin",
        "action": "grant_quota",
        "target_user_id": 42,
        "payload": { "quota": 10000, "reason": "客服补偿" },
        "request_ip": "1.2.3.4",
        "created_at": 1730000000000
      }
    ],
    "total": 1
  }
}

---

5. 健康检查

GET /api/admin/health

baozi 内部依赖(DB / Redis / 上游)的综合健康状态。

响应 200

{
  "success": true,
  "data": {
    "status": "ok",
    "components": {
      "database": "ok",
      "cache": "ok",
      "upstream_default": "ok"
    },
    "checked_at": 1730000000000
  }
}

---

6. 场景映射

GET /api/admin/scene-mapping

查询"用户场景 → 推荐套餐"的映射规则(用于前端智能推荐)。

POST /api/admin/scene-mapping

创场景映射规则。

请求 body

字段 类型 必填 说明
scene string 场景 ID(如 daily_chat / code_plan
package_id string 推荐套餐 ID
priority number 推荐优先级(数字大=优先)

---

7. 草稿

用于前端临时保存"创建套餐 / 创建兑换码"等表单内容,避免误关丢失。

POST /api/admin/drafts

存草稿。

请求 body

字段 类型 必填 说明
kind string 草稿类型:package / tier / redemption / redemption_batch
payload object 草稿内容

GET /api/admin/drafts

列出我的草稿。

PUT /api/admin/drafts/:id

更新草稿。

DELETE /api/admin/drafts/:id

删草稿。

---

8. 管理员手动建用户

POST /api/admin/create-user

请求 body

字段 类型 必填 说明
username string 用户名
email string 邮箱
tier string 初始 tier:free / pro / enterprise

---

联系 baozi

文档不全?发邮件到 support@ohoooho.com 或在飞书群里 @ 闲云。