Skip to content

REST API 参考

manager 暴露单个 REST API,根在 /apiweb/ 里的 SPA 调它;你可以用任何 HTTP client 直接调。没有 GraphQL,没有给应用流量用的 gRPC(gRPC 只用于 manager 内部的 geminio tunnel)。

这一页是路由目录,不是手写的 swagger spec。真理之源:cmd/ongrid/main.go (chi.Router 挂载)和 internal/manager/server/*/http.go(按 BC 的 handler)。 点进 handler 看精确的请求/响应结构字段。

约定

  • base path:每条路由前缀 /api。所以 GET /v1/edgeshttps://<manager>/api/v1/edges 访问。
  • 版本:所有路由在 /v1/ 下。没有 /v2/。向后不兼容的改动走 feature flag 或新路由。
  • 认证Authorization: Bearer ... 里的 bearer JWT。公开路由(登录、 refresh、注册、IM webhook、Prometheus 的 auth_request 探针)跳过中间件。 下面 "公开" 表里列。
  • 角色adminuserviewer。写路由需要 admin(或相关 casbin 动作如 edge:* / write);读路由接受任何已认证角色。viewer 能 chat 但 agent 的工具包被过滤到 ClassSafe。见 ADR-022 三角色 RBAC
  • 错误:JSON {"error":"code","message":"human text"}。code 是稳定枚举 (not_foundinvalid_argumentunauthorizedforbiddenconflict)。
  • content type:除非明说,每个请求和响应都是 application/json (流式 chat 是 SSE,日志/链路摄入是 OTLP-protobuf 或 Loki-JSON)。

公开路由(无认证)

方法路径用途
GET/healthzliveness 探针
GET/readyzreadiness 探针
GET/internal/auth/dataplane-verify日志/链路摄入的 nginx auth_request 探针
POST/api/v1/auth/loginemail+密码 换 JWT
POST/api/v1/auth/refreshrefresh token 换新 access token
POST/api/v1/auth/register自助注册(按 config 卡)
GET/api/v1/prometheus/authGrafana 嵌入的 nginx auth_request 探针
POST/api/v1/im/feishu/events飞书入站回调;webhook 签名就是认证

已认证路由

iam(users、orgs、sessions)

方法路径角色来源
GET/v1/versionanycmd/ongrid/main.go(内联)
GET/v1/meanyinternal/iam/server/http.go
GET/v1/selfanyinternal/iam/server/http.go
GET/v1/usersany列用户
POST/v1/usersadmin建用户
PATCH/v1/users/{id}admin更新用户(name、email)
PATCH/v1/users/{id}/passwordself 或 admin改密
PATCH/v1/users/{id}/roleadmin改角色(admin/user/viewer)
DELETE/v1/users/{id}admin删用户
GET/v1/orgsany列组织
POST/v1/orgsadmin建组织
PATCH/v1/orgs/{id}admin更新组织
DELETE/v1/orgs/{id}admin删组织
GET/v1/orgs/{id}/membersany列成员
POST/v1/orgs/{id}/membersadmin加成员
PATCH/v1/orgs/{id}/members/{user_id}admin改成员角色
DELETE/v1/orgs/{id}/members/{user_id}admin删成员

edge(tunnel 连接的 agent)

方法路径角色描述
POST/v1/edgesedge:*建 edge,发 access+secret key
GET/v1/edgesany列 edge
GET/v1/edges/{id}any取 edge 详情
DELETE/v1/edges/{id}edge:*删 edge
POST/v1/edges/{id}/rotate-secretedge:*轮换 secret key
POST/v1/edges/{id}/upgradeedge:*触发远程 agent 升级,显式 URL+sha256
POST/v1/edges/{id}/upgrade-packageedge:*一键 bundle 升级(ADR-024)
GET/v1/edges/{id}/processesany只读进程列表(按需 RPC)
GET/v1/edges/{id}/pluginsany列 edge 配置 + 活的插件(含健康)
PUT/v1/edges/{id}/plugins/{name}edge:plugin启用/禁用 + 调插件
GET/v1/integrations/plugin-countsany全局插件启用/禁用计数(给首页 tile)

device(host 实体,跟 tunnel 状态解耦)

方法路径角色描述
GET/v1/devicesany列 host 设备
GET/v1/devices/{id}any取设备详情
PATCH/v1/devices/{id}device:*更新显示名、tag
DELETE/v1/devices/{id}device:*删设备
PATCH/v1/devices/{id}/rolesdevice:*派角色(dbwebcache……)
GET/v1/devices/{id}/edgesany当前代表这台设备的 edge
GET/v1/devices/{device_id}/shellwebshell开 WebSSH 流(websocket 升级)

topology(带类型 CMDB)

方法路径角色描述
GET/v1/topology/node-typesany列 node 类型 schema
POST/v1/topology/node-typestopology:*建 node 类型
GET/v1/topology/node-types/{name}any取一个 node 类型
DELETE/v1/topology/node-types/{name}topology:*删 node 类型
GET/v1/topology/nodesany列 node(按 type、tag 过滤)
POST/v1/topology/nodestopology:*建 node
GET/v1/topology/nodes/{id}any取 node
PATCH/v1/topology/nodes/{id}topology:*更新 node
DELETE/v1/topology/nodes/{id}topology:*删 node
GET/v1/topology/relation-typesany列 relation 类型 schema
POST/v1/topology/relation-typestopology:*建 relation 类型
GET/v1/topology/relation-types/{name}any取一个 relation 类型
DELETE/v1/topology/relation-types/{name}topology:*删 relation 类型
GET/v1/topology/relationsany列边(relation)
POST/v1/topology/relationstopology:*建 relation
GET/v1/topology/relations/{id}any取 relation
PATCH/v1/topology/relations/{id}topology:*更新 relation
DELETE/v1/topology/relations/{id}topology:*删 relation

alert(规则、incident、通道)

方法路径角色描述
GET/v1/alert-rulesany列规则
POST/v1/alert-rulesalert:*建规则
GET/v1/alert-rules/{id}any取规则
PUT/v1/alert-rules/{id}alert:*替换规则
DELETE/v1/alert-rules/{id}alert:*删规则
POST/v1/alert-rules/{id}/enabledalert:*翻 enabled flag
POST/v1/alert-rules/previewalert:*用当前数据对规则定义做 dry-run
GET/v1/alerts/incidentsany列 incident(过滤:status、severity、scope)
GET/v1/alerts/incidents/{id}any取 incident
GET/v1/alerts/incidents/{id}/eventsany事件 timeline
POST/v1/alerts/incidents/{id}/ackany确认
POST/v1/alerts/incidents/{id}/resolveany标 resolved
POST/v1/alerts/incidents/{id}/silenceany静默 N 小时
GET/v1/alerts/incidents/{id}/investigationany取 AI 生成的调查报告
POST/v1/alerts/incidents/{id}/investigationany触发或重跑调查
GET/v1/alerts/runtime-infoanyevaluator 节奏 + 上次周期统计
GET/v1/notification-channelsany列通道
POST/v1/notification-channelschannel:*建通道
GET/v1/notification-channels/{id}any取通道
PUT/v1/notification-channels/{id}channel:*替换通道
DELETE/v1/notification-channels/{id}channel:*删通道
POST/v1/notification-channels/{id}/testchannel:*发一条合成通知

规则的 JSON 形状见 告警规则 schema

aiops(chat、agent、model)

方法路径角色描述
GET/v1/agentsany列 agent persona
GET/v1/agents/{name}any取 persona 详情
DELETE/v1/agents/{name}agent:*删内置 / 磁盘 persona(罕见;通常只 custom 可删)
POST/v1/agents/customagent:*建用户定义的 persona
PATCH/v1/agents/custom/{name}agent:*更新用户 persona
DELETE/v1/agents/custom/{name}agent:*删用户 persona
GET/v1/chat/sessionsany列会话
POST/v1/chat/sessionsany建会话
PATCH/v1/chat/sessions/{id}any改名 / 给会话打 tag
DELETE/v1/chat/sessions/{id}any删会话
GET/v1/chat/sessions/{id}/messagesany消息历史
POST/v1/chat/sessions/{id}/messagesany发消息(非流式,返最终 reply)
POST/v1/chat/sessions/{id}/messages/streamany发消息(SSE 流 token + tool 调用事件)
GET/v1/aiops/modelsany可用 provider + 模型(按已配 API key 卡)
POST/v1/aiops/query-translateanyLLM 辅助的 PromQL / LogQL / TraceQL 组合
GET/v1/aiops/mentions/searchany@edge@device@dashboard 提及的自动补全
GET/v1/usage/todayany当前 UTC 日的 token 用量

markdown frontmatter 形状见 Agent persona 格式

knowledge(RAG、vault、repo、上传)

方法路径角色描述
GET/v1/knowledge/docsany列文档(tree)
POST/v1/knowledge/docsknowledge:*建文档
GET/v1/knowledge/docs/{id}any取文档
PATCH/v1/knowledge/docs/{id}knowledge:*改文档正文
PATCH/v1/knowledge/docs/{id}/moveknowledge:*移到另一路径
DELETE/v1/knowledge/docs/{id}knowledge:*删文档
GET/v1/knowledge/pathsany列 path 节点(给 tree)
GET/v1/knowledge/reposany列 Git repo
POST/v1/knowledge/reposknowledge:*注册 repo
DELETE/v1/knowledge/repos/{id}knowledge:*删 repo
POST/v1/knowledge/repos/{id}/syncknowledge:*触发重新同步
POST/v1/knowledge/uploadknowledge:*上传 .md / .txt / .pdf / .docx(经 docextract 解析)
GET/v1/knowledge/searchanyRAG 查询(返 chunk + score)
POST/v1/knowledge/vault/syncknowledge:*重拉内置 vault from GitHub
GET/v1/knowledge/ssh-identitiesknowledge:*列 Git 认证用的 SSH key
POST/v1/knowledge/ssh-identitiesknowledge:*注册已有 SSH key
POST/v1/knowledge/ssh-identities/generateknowledge:*生成新密钥对(私钥从不离开服务端)
PATCH/v1/knowledge/ssh-identities/{id}knowledge:*改身份(name、comment)
DELETE/v1/knowledge/ssh-identities/{id}knowledge:*删身份

skill(工具包内省)

方法路径角色描述
GET/v1/skillsany列技能(manager scope + edge scope)
GET/v1/skills/{key}any取技能详情(schema、description、scope、class)
POST/v1/skills/{key}/executeskill:*直接执行技能(测试 / 调试)

磁盘 skill.json 形状见 Skill manifest

logs / traces(只读代理)

方法路径角色描述
GET/v1/logs/query_rangeany代理 LogQL query_range
GET/v1/logs/labelsany代理 label 名
GET/v1/logs/labels/{name}/valuesany代理 label 值
GET/v1/traces/searchany代理 TraceQL /api/search
GET/v1/traces/{trace_id}any按 ID 取一条 trace
GET/v1/traces/tags/{tag}/valuesany代理 /api/search/tag/.../values

monitor(dashboard / 面板)

方法路径角色描述
GET/v1/monitor/panelsany列面板
POST/v1/monitor/panelsmonitor:*建面板
PATCH/v1/monitor/panels/{id}monitor:*改面板
DELETE/v1/monitor/panels/{id}monitor:*删面板
GET/v1/observability/dashboards/{uid}anyrender-ready Grafana dashboard JSON

metric(按 edge 指标快照)

方法路径角色描述
GET/v1/edges/{id}/metricsany最新的闭合集主机指标快照

prometheus(admin)

方法路径角色描述
POST/v1/prometheus/launchadmin(重新)启动内嵌 Prometheus
POST/v1/prometheus/query_rangeanyLLM 工具面的 query_range(返规范化的 matrix)

imbridge(chat 面 —— Slack / Telegram / 飞书 / 钉钉 / 企业微信)

方法路径角色描述
GET/v1/im/appsany列已连 IM app
POST/v1/im/appsim:*注册 IM app
GET/v1/im/apps/{id}any取 app
PUT/v1/im/apps/{id}im:*更新 app
DELETE/v1/im/apps/{id}im:*删 app
POST/v1/im/apps/{id}/revealadmin显示被掩码的 secret

marketplace(技能包)

方法路径角色描述
GET/v1/marketplace/registriesany列配置的 registry
GET/v1/marketplace/installedany列已装 pack
POST/v1/marketplace/installmarketplace:*从 registry 装 pack
DELETE/v1/marketplace/installed/{pack_id}marketplace:*卸载 pack

setting(系统设置:集成、默认、secret)

方法路径角色描述
GET/v1/system-settingsany列可见设置
PUT/v1/system-settings/{category}/{key}adminupsert 设置
DELETE/v1/system-settings/{category}/{key}admin删设置
GET/v1/system-settings/{category}/{key}/revealadmin显示被掩码的 secret

integration(连通性测试)

方法路径角色描述
POST/v1/integrations/grafana/syncadmin同步 dashboard + datasource
POST/v1/integrations/grafana/testadmin测 Grafana 连接
POST/v1/integrations/llm/invalidateadmin失效缓存 LLM client(强制重读 API key)
POST/v1/integrations/loki/testadmin测 Loki 连接
POST/v1/integrations/prom/testadmin测 Prometheus 连接
POST/v1/integrations/tempo/testadmin测 Tempo 连接
POST/v1/integrations/websearch/testadmin测 SearXNG / web-search 后端

webshell(基于 tunnel 的交互 shell)

方法路径角色描述
GET/v1/devices/{device_id}/shellwebshell开 WebSocket 升级的 SSH 流
GET/v1/webshell/sessionsany列活会话
DELETE/v1/webshell/sessions/{id}webshellkill 一个会话

audit(admin 日志)

方法路径角色描述
GET/v1/admin/audit-logsadmin全租户审计链路(HLD-010)

分页

列表 endpoint 用不透明 cursor:

text
GET /v1/edges?limit=50&cursor=eyJpZCI6MTAwMH0

响应带 {"items":[...], "next_cursor":"...", "total":...}next_cursor 在最后一页为空。

限流

开源构建里没有全局限流。LLM 预算门(ONGRID_LLM_DAILY_TOKEN_LIMIT)约束 chat 流量 —— 其他每个 endpoint 取决于你在 manager 前放了什么(nginx、你 自己的网关)。

版本

GET /v1/version 返回 {"manager_version":"vX.Y.Z"}。SPA 读它来标记 agent 版本跟 manager 漂移的 edge。给升级工具用。

另见