REST API 参考
NeoMind 后端用 Axum 提供 REST API。本文给出面向集成商的 API 总览:OpenAPI 规范与工具链、base URL、认证、统一响应格式、各业务域端点分组。
入口
| 项 | 值 |
|---|---|
| Base URL | http://<SERVER_IP>:9375/api |
| 交互式 API 控制台 | http://<SERVER_IP>:9375/api/docs(Scalar,可浏览可调试) |
| OpenAPI 3 规范 | GET /api/docs/openapi.json(截至 1.2.2:360 个操作、284 个路径、142 个 schema) |
| 路由清单(机器可读,含鉴权类) | GET /api/docs/routes.json |
| 端点定义(源码) | crates/neomind-api/src/server/router.rs |
| 默认端口 | 9375(可用 --port 或 NEOMIND_PORT 环境变量改) |
所有端点路径以
/api开头。下文的端点列表都省略/api前缀。
OpenAPI 规范与工具链
自 0.9.24 起(0.9.x 为旧平台版本线,现版本为 1.2.x,下同),OpenAPI 3.0 规范覆盖全部 REST 操作——所有非通配操作带完整注解(其余 4 个是通配路由,见下文"诚实边界"),全部 schema 注册、$ref 全部可解析(截至 1.2.2:360 个操作、142 个 schema)。这意味着你可以直接把规范导入任何标准工具,或生成强类型客户端。
下载规范文件
curl -o neomind-openapi.json http://<SERVER_IP>:9375/api/docs/openapi.json
约 230 KB。规范由 CI 漂移测试守护:每个注解路径必须真实存在于路由表,注解与实现不会悄悄脱节。
在线控制台(Scalar)
浏览器打开 /api/docs 即用,无需安装任何东西:
- 左侧按业务域 tag 分组(devices、rules、agents、dashboards……共 39 组),点开展开每个端点的参数、请求体 schema 与响应码说明;
- 点击任一端点 → Try it out → 填参数/请求体 → Execute,右侧直接看到真实响应(含响应头与耗时);
- 鉴权:规范本身不内嵌 security 定义(鉴权类见下表,端点粒度的权威来源是
routes.json),调试受保护端点时需手动加请求头——在控制台的请求参数区给该请求添加 HeaderX-API-Key: <你的key>(或Authorization: Bearer <JWT>); - 控制台右上角可导出规范文件(OpenAPI JSON)。
导入 Apifox / Postman
Apifox(推荐国内团队):
- 项目设置 → 导入数据 → 选 OpenAPI/Swagger;
- 数据源选"URL"填
http://<SERVER_IP>:9375/api/docs/openapi.json(或用上面下载的文件); - 导入后所有端点、请求体结构、枚举值直接可用,可在 Apifox 环境变量里配
X-API-Key批量鉴权。
Postman:Import → 支持直接粘贴该 URL 或拖入文件,效果相同。
生成强类型客户端
# 安装一次
npm install @openapitools/openapi-generator-cli -g
# TypeScript + axios 客户端
openapi-generator-cli generate \
-i neomind-openapi.json -g typescript-axios -o src/api-generated
# Python 客户端
openapi-generator-cli generate \
-i neomind-openapi.json -g python -o ./neomind-client
生成物包含每个端点的函数、全部请求/响应类型定义(含枚举与必填约束)。前端项目也可用 orval(npx orval --input neomind-openapi.json --output src/api.ts --client axios)生成 React Query 钩子。
鉴权类速查(来自 routes.json)
| 类 | 含义 | 请求头 |
|---|---|---|
public | 无需鉴权 | 无 |
jwt-or-api-key | Web 会话 或 API Key 均可 | X-API-Key: <key> 或 Authorization: Bearer <jwt> |
jwt-only | 仅管理员 JWT,API Key 不适用 | Authorization: Bearer <jwt> |
webhook / ws / debug | 特殊通道(签名校验 / WebSocket 升级) | 见各端点说明 |
对某个端点拿不准时:GET /api/docs/routes.json 里每个条目都带 method、path、auth 三个字段。
诚实边界(规范里没有的东西)
- 4 个通配路由(
GET /api/images/*path、GET /api/docs/*rest、GET /api/extensions/:id/assets/*asset_path、ANY /api/share/:token/proxy/*path)无法用 OpenAPI 路径模板表达——它们只在routes.json里; - 鉴权元数据不在规范内(见上表);
- 长任务接口(
builtin-llm/download、upload-model、import-local)单次调用可能占用连接数分钟到数十分钟,代码生成客户端时建议单独设置超时。
认证
两种鉴权方式: