Skip to content

API 参考

REST API 以 /api/v1 为主入口,统一返回:

json
{
  "success": true,
  "data": {}
}

错误响应统一返回:

json
{
  "success": false,
  "error": {
    "code": "ERROR_CODE",
    "message": "Readable message",
    "detail": {}
  }
}

接口分层

WFM 不是单一浏览器 API,实际有四类 HTTP 接口:

层级前缀调用方说明
控制台 API/api/v1浏览器控制台、受信外部调用方主要业务接口,默认需要管理员 Bearer token。
客户端 API/api/clientwfmctl bind只用于客户端一次性绑定,不使用管理员会话 token。
内部 API/api/internalEMQX 等内部组件只允许容器内或可信网络调用,必须带内部共享密钥。
开发 API/api/v0本地开发和自动化测试仅在 WFM_ENABLE_DEV_TEST_API=true 时注册。

MCP 的 HTTP 入口是 /mcp,但 MCP 工具不应绕过业务服务层。MCP 的读写能力应复用控制台 API 背后的同一套服务逻辑。

调用约定

管理员会话

控制台业务 API 默认使用:

http
Authorization: Bearer <admin-session-token>

登录、初始化、健康检查等少量接口可以匿名访问。下载接口还允许使用下载专用 token。

来源限制

正式部署下,后端会按公开访问来源和反向代理后的 Host 做访问限制。浏览器请求需要满足允许来源;无 Origin 的 CLI/curl 请求只允许主来源 Host。开发模式下限制可以放宽。

下载 token

客户端下载产物、配置批量包和快照导出可以使用 5 分钟有效的单文件下载 token。下载 token 只能访问绑定的资源,不能访问其它 API,也不能横向下载其它文件。

业务写入

写接口应遵守同一顺序:

  1. 校验输入和权限。
  2. 在数据库事务内修改业务数据。
  3. 必要时同步 EMQX 或下发 MQTT。
  4. 发布 SSE 刷新事件。
  5. 返回前端可以直接展示或据此刷新页面的结果。

如果某个外部系统暂时不可用,应尽量保持数据库写入语义清晰:能落库的先落库,不能保证一致性的操作必须返回明确错误码。

认证 API

方法路径说明
GET/api/v1/auth/state查询初始化状态和当前会话状态。
POST/api/v1/auth/setup首次初始化管理员密码。
POST/api/v1/auth/login管理员登录,返回 Bearer token。
GET/api/v1/auth/session校验当前 Bearer token。
POST/api/v1/auth/logout前端退出登录接口。
POST/api/v1/auth/password修改管理员密码。

配置 API

方法路径说明
GET/api/v1/configs列出配置。
POST/api/v1/configs创建配置。
GET/api/v1/configs/{config_id}读取配置。
PUT/api/v1/configs/{config_id}更新配置。
DELETE/api/v1/configs/{config_id}删除配置。
GET/api/v1/configs/{config_id}/overview读取配置概览投影。
POST/api/v1/configs/awg/random生成配置级 AmneziaWG 参数。

端点 API

方法路径说明
GET/api/v1/configs/{config_id}/nodes列出配置下端点。
POST/api/v1/configs/{config_id}/nodes创建端点。
GET/api/v1/nodes/{node_id}读取端点。
PUT/api/v1/nodes/{node_id}更新端点。
DELETE/api/v1/nodes/{node_id}删除端点。
POST/api/v1/configs/{config_id}/nodes/suggest-ip推荐虚拟 IP。
POST/api/v1/configs/{config_id}/nodes/validate-ip校验虚拟 IP。
POST/api/v1/nodes/keys/generate生成 WireGuard 密钥对。
POST/api/v1/nodes/keys/derive-public从私钥派生公钥。
POST/api/v1/nodes/awg/random生成端点级 AmneziaWG 参数。

标签 API

方法路径说明
GET/api/v1/configs/{config_id}/tags列出标签和计数。
POST/api/v1/configs/{config_id}/tags创建标签。
POST/api/v1/configs/{config_id}/tags/apply批量给端点应用标签。
DELETE/api/v1/configs/{config_id}/tags/{tag_name}删除配置级标签。
PUT/api/v1/nodes/{node_id}/tags替换端点标签。
DELETE/api/v1/nodes/{node_id}/tags/{tag_name}从端点移除标签。

Mesh API

方法路径说明
GET/api/v1/configs/{config_id}/peer-links列出 Mesh 对。
GET/api/v1/configs/{config_id}/nodes/{node_id}/mesh-workspace读取端点 Mesh 工作区。
GET/api/v1/configs/{config_id}/nodes/{node_id}/peer-link-draft生成 Mesh 对草稿。
POST/api/v1/configs/{config_id}/peer-links创建双向 Mesh 对。
PUT/api/v1/peer-links/{group_id}更新双向 Mesh 对。
DELETE/api/v1/peer-links/{group_id}删除双向 Mesh 对。
POST/api/v1/peer-links/psk/generate生成 PSK。
POST/api/v1/configs/{config_id}/mesh/validate校验 Mesh。
POST/api/v1/configs/{config_id}/mesh/quick-generate快速组网,删除并重建 Mesh 对。
GET/api/v1/configs/{config_id}/nodes/{node_id}/wg-preview预览生成的 WG/AWG 配置。

配置应用与端点控制 API

方法路径说明
GET/api/v1/configs/{config_id}/sync-status读取配置下所有端点同步态。
GET/api/v1/configs/{config_id}/nodes/{node_id}/sync-status读取单端点同步态。
GET/api/v1/configs/{config_id}/nodes/{node_id}/applied-conf读取已应用配置文本。
PUT/api/v1/configs/{config_id}/nodes/{node_id}/applied-conf保存应用配置文本。
POST/api/v1/configs/{config_id}/nodes/{node_id}/sync同步单端点。
POST/api/v1/configs/{config_id}/sync-all同步配置下所有可同步端点。
GET/api/v1/configs/{config_id}/endpoint/runtime-snapshot读取运行态快照。
GET/api/v1/configs/{config_id}/nodes/{node_id}/endpoint/status读取端点运行状态。
POST/api/v1/configs/{config_id}/nodes/{node_id}/bind-command创建客户端绑定命令。
POST/api/v1/configs/{config_id}/nodes/{node_id}/reset-client重置客户端绑定和 MQTT 凭据。
GET/api/v1/configs/{config_id}/nodes/{node_id}/endpoint/logs读取端点控制日志。
POST/api/v1/configs/{config_id}/nodes/{node_id}/endpoint/control发送 startstoppush_configwg_show
POST/api/v1/configs/{config_id}/endpoint/probe-batch批量探测端点。

工具 API

方法路径说明
GET/api/v1/tools/download/client-options读取客户端构建选项。
POST/api/v1/tools/download/client-artifacts/build构建或获取客户端产物。
GET/api/v1/tools/download/client-artifacts/{artifact_id}下载客户端产物。
GET/api/v1/tools/download/config-bulk/options读取配置批量下载选项。
POST/api/v1/tools/download/config-bulk/package生成配置批量下载包。
GET/api/v1/tools/download/config-bulk/{package_id}下载配置批量包。
GET/api/v1/tools/port-forwards/configs/{config_id}列出端口转发规则。
POST/api/v1/tools/port-forwards/configs/{config_id}创建端口转发规则。
PUT/api/v1/tools/port-forwards/{rule_id}/enabled启用或禁用端口转发规则。
DELETE/api/v1/tools/port-forwards/{rule_id}删除端口转发规则。

备份 API

方法路径说明
POST/api/v1/backups/snapshot创建快照。
GET/api/v1/backups/list列出快照。
GET/api/v1/backups/download/{snapshot_id}下载快照。
GET/api/v1/backups/export/{snapshot_id}导出快照。
POST/api/v1/backups/restore/{snapshot_id}恢复快照。
POST/api/v1/backups/upload上传导入快照。
POST/api/v1/backups/import上传导入快照。
DELETE/api/v1/backups/{snapshot_id}删除快照。
PUT/api/v1/backups/{snapshot_id}/note更新快照备注。

设置与系统 API

方法路径说明
GET/api/v1/settings/ui读取界面设置。
PUT/api/v1/settings/ui更新界面设置。
GET/api/v1/settings/mqtt读取客户端 MQTT 接入地址。
PUT/api/v1/settings/mqtt更新客户端 MQTT 接入地址。
POST/api/v1/settings/mqtt/reset重置为环境变量默认值。
POST/api/v1/settings/mqtt/test测试 MQTT 接入配置。
POST/api/v1/settings/password修改管理员密码。
GET/api/v1/system/health健康检查。
GET/api/v1/system/timezone读取时区。
GET/api/v1/system/status读取系统状态。
GET/api/v1/events/streamSSE 实时事件流。

客户端和内部 API

方法路径说明
POST/api/client/bind客户端使用绑定 token 换取 profile、MQTT 凭据和配置。
POST/api/internal/emqx/authzEMQX HTTP AuthZ 回调,仅内部使用。
POST/api/v0/dev/reset-bootstrap开发测试接口,仅 WFM_ENABLE_DEV_TEST_API=true 时注册。