← 控制中心开发者文档下载 OpenAPI 3.0下载接入指南
MIAO · DEVELOPER CENTER

全部 API,一处查阅

基于部署后端逐条核对的接口目录。提供路径、鉴权、参数、返回字段、错误处理及 cURL / JavaScript 示例。

正在读取接口定义…

01 · 快速接入

  1. Base URL 为当前服务器根地址,不要重复拼接 /api。生产环境请配置 HTTPS。
  2. 管理员调用 POST /api/admin/login;审核员调用 POST /api/reviewer/login;普通用户调用 POST /api/client/users/login。
  3. 登录结果中的 data.token 用于对应身份的 Authorization: Bearer <TOKEN>,四类会话令牌不能混用。
  4. 卡密授权流程:签名上报设备 → 管理员启用设备 → validate-card → 卡密 login → heartbeat。validate-card 会激活卡密并增加使用次数,不是纯查询。
  5. 预设流程:注册/登录用户 → multipart 上传 → 审核员 preview / decision → published 与 publicVisible 均为 true 时公开可见。
  6. JSON 响应须同时检查 HTTP 状态与 code === 0;data 允许 null。图片和 .mnd 下载返回二进制,不能调用 response.json()。
{"code":0,"message":"ok","data":null,"timestamp":1788609600000}

timestamp 是 Unix 毫秒;签名 X-Timestamp 是 Unix 秒。大部分日期字段为无时区偏移的服务器本地 ISO 字符串,不要假设 UTC。账号 accountId 是九位字符串,管理路径 id 通常为内部数字主键。

02 · 鉴权与签名

身份传递方式有效期 / 注意
管理员Authorization: Bearer <ADMIN_TOKEN>服务端会话;只适用于 /api/admin
审核员Authorization: Bearer <REVIEWER_TOKEN>12 小时;新登录撤销旧会话
普通用户Authorization: Bearer <USER_TOKEN>3 天;新登录撤销旧会话
卡密会话heartbeat JSON 中的 token默认 24 小时,可由服务端配置;请求仍需签名
客户端签名X-Timestamp + X-Nonce + X-Signature时间误差 ≤300 秒;nonce 至少16字符,不能重用
公开无以各接口标注为准;不表示可以写入管理数据

HMAC-SHA256 规范

raw = timestamp + "\n" + nonce + "\n" + METHOD + "\n" + requestURI
signature = lowercase_hex(HMAC_SHA256(UTF8(CLIENT_SECRET), UTF8(raw)))

METHOD 必须大写;requestURI 只包含路径,不含域名、查询字符串和请求体;末尾不添加换行。每次重试重新生成 nonce。服务端密钥由管理员单独安全分发,文档不包含真实密钥。

Python 可运行签名示例(仅标准库)

03 · WebSocket / STOMP 实时聊天

连接 ,使用 STOMP 1.2(不是 SockJS,也不是直接 JSON WebSocket)。连接后订阅 /topic/chat,收到 MESSAGE 后将 body 解析为 ChatItem。发送消息走 POST /api/client/chat/messages,服务器没有实现 /app 下的发送接口。

CONNECT
accept-version:1.2
host:当前主机
heart-beat:0,0

\0

# 收到 CONNECTED 后发送
SUBSCRIBE
id:chat-0
destination:/topic/chat
ack:auto

\0

上面的 \0 表示真实 NUL 字节。消息创建和置顶会广播;删除/清空消息当前不广播。断线重连后先订阅,再通过 after 游标补拉历史,按消息 id 去重;同一 id 的置顶事件要合并更新。

兼容/安全提示:当前后端 WebSocket 握手和订阅没有用户鉴权,Origin 允许 *;不要通过此通道发布私密内容。HTTP 聊天接口仍需要用户令牌。本次静态 WebUI 更新不改变该行为。

04 · 错误处理与现有边界

05 · 接口目录

文档仅生成示例,不自动执行接口,不读取控制中心的登录令牌。示例值是占位数据,请按实际业务修改。