跳到主要内容

API 参考

交互式 API 以 /api 为根路径。大多数端点接受用户 JWT 或 API Key;Agent 协议使用节点专用 Token。公开探针和一次性安装器在文末单列。

认证

用户 JWT

通过 POST /api/auth/login 获取 JWT,并作为 Bearer Token 发送:

curl -H "Authorization: Bearer $BACKUPX_TOKEN" \
https://backup.example.com/api/backup/tasks

根据账号和系统设置,登录过程还可能要求邮件或短信 OTP、TOTP、恢复码、可信设备 Token 或 WebAuthn。

API Key

管理员可在控制台或通过 POST /api/api-keys 创建 API Key。明文 bax_... 只返回一次。

curl -H "X-Api-Key: $BACKUPX_API_KEY" \
https://backup.example.com/api/dashboard/stats

也支持 Authorization: Bearer bax_...。API Key 带有 adminoperatorviewer 角色,可禁用并可设置有效期。

Agent Token

Agent 协议 Handler 从 X-Agent-Token 验证节点 Token。它不是用户凭据,不能用于交互式资源 API。

权限标记

下表使用这些标记:

标记所需权限
公开不需要 JWT 或 API Key;安装路由仍要求一次性 Token
已认证任意 vieweroperatoradmin
运维operatoradmin
管理员admin
Agent有效的节点专用 Agent Token

viewer 可使用读取端点,但不能浏览节点文件系统;operator 可以执行和修改备份资源;admin 还可管理用户、API Key、设置、节点、安装令牌和节点 Token 轮换。角色不满足时返回 HTTP 403。

认证与账号安全

方法端点权限说明
GET/api/auth/setup/status公开查询是否需要创建首个管理员
POST/api/auth/setup公开系统无用户时创建首个管理员
POST/api/auth/login公开完成密码或 MFA 登录并获取 JWT
POST/api/auth/otp/send公开发送已配置的登录 OTP
POST/api/auth/webauthn/login/options公开开始通行密钥登录
POST/api/auth/logout已认证确认登出;客户端必须丢弃无状态 JWT
GET/api/auth/profile已认证读取当前账号
PUT/api/auth/password已认证修改当前账号密码
POST/api/auth/2fa/setup已认证准备 TOTP 注册
POST/api/auth/2fa/enable已认证验证后启用 TOTP
POST/api/auth/2fa/recovery-codes已认证重新生成恢复码
DELETE/api/auth/2fa已认证停用 TOTP
PUT/api/auth/otp/config已认证更新 OTP 登录配置
POST/api/auth/webauthn/register/options已认证开始注册通行密钥
POST/api/auth/webauthn/register/finish已认证完成通行密钥注册
GET/api/auth/webauthn/credentials已认证列出通行密钥
DELETE/api/auth/webauthn/credentials/:id已认证删除通行密钥
GET/api/auth/trusted-devices已认证列出可信设备
DELETE/api/auth/trusted-devices/:id已认证撤销可信设备

账号安全端点应使用交互式 JWT,不应使用自动化 API Key。

系统与存储目标

方法端点权限说明
GET/api/system/info已认证版本与系统信息
GET/api/system/update-check已认证检查可用 Release
GET/api/storage-targets已认证存储目标列表
POST/api/storage-targets运维创建目标
POST/api/storage-targets/test运维测试未保存配置
GET/api/storage-targets/rclone/backends已认证可用 rclone 后端
POST/api/storage-targets/google-drive/auth-url运维开始 Google Drive 授权
POST/api/storage-targets/google-drive/complete运维完成 Google Drive 授权
GET/api/storage-targets/google-drive/callback已认证处理 OAuth 回调
GET/api/storage-targets/:id已认证读取目标
PUT/api/storage-targets/:id运维更新目标
DELETE/api/storage-targets/:id运维删除目标
PUT/api/storage-targets/:id/star运维切换收藏
POST/api/storage-targets/:id/test运维测试已保存目标
GET/api/storage-targets/:id/usage已认证读取已记录用量
GET/api/storage-targets/:id/google-drive/profile已认证读取已连接 Google Drive 账号

备份任务

方法端点权限说明
GET/api/backup/tasks已认证任务列表
GET/api/backup/tasks/tags已认证任务标签
GET/api/backup/tasks/export已认证下载全部任务 JSON,或用 ?ids=1,2 选择任务
POST/api/backup/tasks/import运维导入任务,最大 1 MiB
POST/api/backup/tasks/batch/toggle运维批量启用或停用
POST/api/backup/tasks/batch/delete运维批量删除
POST/api/backup/tasks/batch/run运维批量执行
GET/api/backup/tasks/:id已认证读取任务
POST/api/backup/tasks运维创建任务
PUT/api/backup/tasks/:id运维更新任务
DELETE/api/backup/tasks/:id运维删除任务
PUT/api/backup/tasks/:id/toggle运维启用或停用
POST/api/backup/tasks/:id/run运维触发备份
POST/api/backup/tasks/:id/verify运维从任务触发验证

任务导出会主动排除数据库密码与存储凭据,适合迁移和审阅,不是完整控制面备份。

备份与恢复记录

方法端点权限说明
GET/api/backup/records已认证列出并筛选备份记录
POST/api/backup/records/batch-delete运维批量删除记录
GET/api/backup/records/:id已认证读取备份记录
GET/api/backup/records/:id/logs/stream已认证通过 SSE 输出日志
GET/api/backup/records/:id/download已认证下载产物
GET/api/backup/records/:id/contents已认证浏览支持类型的产物内容
POST/api/backup/records/:id/restore运维启动恢复
POST/api/backup/records/:id/replicate运维复制已有产物
POST/api/backup/records/:id/verify运维验证已有产物
PUT/api/backup/records/:id/lock运维设置保留锁
DELETE/api/backup/records/:id运维删除记录及受管产物
GET/api/restore/records已认证恢复记录列表
GET/api/restore/records/:id已认证恢复记录详情
GET/api/restore/records/:id/logs/stream已认证恢复日志 SSE
GET/api/replication/records已认证复制记录列表
GET/api/replication/records/:id已认证复制记录详情
GET/api/verify/records已认证验证记录列表
GET/api/verify/records/:id已认证验证记录详情
GET/api/verify/records/:id/logs/stream已认证验证日志 SSE

模板、报表与仪表盘

方法端点权限说明
GET/api/task-templates已认证任务模板列表
GET/api/task-templates/:id已认证读取任务模板
POST/api/task-templates运维创建模板
PUT/api/task-templates/:id运维更新模板
DELETE/api/task-templates/:id运维删除模板
POST/api/task-templates/:id/apply运维从模板创建任务
GET/api/reports/compliance已认证合规证据
GET/api/reports/compliance/export已认证导出合规 CSV
GET/api/dashboard/stats已认证汇总统计
GET/api/dashboard/timeline已认证最近活动
GET/api/dashboard/sla已认证RPO 与 SLA 状态
GET/api/dashboard/cluster已认证集群概览
GET/api/dashboard/breakdown已认证任务与记录分布
GET/api/dashboard/node-performance已认证节点性能

通知、设置与管理

方法端点权限说明
GET/api/notifications已认证通知渠道列表
GET/api/notifications/:id已认证读取渠道
POST/api/notifications运维创建渠道
PUT/api/notifications/:id运维更新渠道
DELETE/api/notifications/:id运维删除渠道
POST/api/notifications/test运维测试未保存配置
POST/api/notifications/:id/test运维测试已保存渠道
GET/api/settings已认证读取系统设置
PUT/api/settings管理员更新系统设置
GET/api/users管理员用户列表
POST/api/users管理员创建用户
PUT/api/users/:id管理员更新用户
POST/api/users/:id/2fa/reset管理员重置用户第二因素
DELETE/api/users/:id管理员删除用户
GET/api/api-keys管理员API Key 列表,不返回明文
POST/api/api-keys管理员创建 API Key,明文仅返回一次
PUT/api/api-keys/:id/toggle管理员启用或停用 API Key
DELETE/api/api-keys/:id管理员撤销 API Key

审计、事件、搜索与发现

方法端点权限说明
GET/api/audit-logs已认证列出并筛选审计记录
GET/api/audit-logs/export已认证导出审计记录
GET/api/events/stream已认证通过 SSE 输出实时应用事件
GET/api/search已认证搜索支持的资源
POST/api/database/discover已认证按提供的连接信息发现数据库

节点

方法端点权限说明
GET/api/nodes已认证节点列表
GET/api/nodes/:id已认证节点详情
GET/api/nodes/:id/fs/list运维浏览所选节点文件系统
POST/api/nodes管理员创建节点
POST/api/nodes/batch管理员批量创建最多 50 个节点
PUT/api/nodes/:id管理员更新节点
DELETE/api/nodes/:id管理员删除未被引用的节点
POST/api/nodes/:id/install-tokens管理员创建一次性安装器
GET/api/nodes/:id/install-script-preview管理员预览安装材料
POST/api/nodes/:id/rotate-token管理员轮换长期节点 Token

Agent 协议

这些路由供 backupx agent 使用,Handler 内部通过节点 Token 认证。

方法端点权限说明
POST/api/agent/heartbeatAgent上报心跳与节点状态
POST/api/agent/commands/pollAgent领取待执行命令
POST/api/agent/commands/:id/resultAgent上报命令结果
GET/api/agent/tasks/:idAgent获取可执行任务规格
POST/api/agent/records/:idAgent追加日志或更新备份状态
PUT/api/agent/records/:id/artifacts/:targetIdAgent向 Master 流式中转产物
GET/api/agent/restores/:id/specAgent获取恢复指令
GET/api/agent/restores/:id/artifactAgent流式读取恢复产物
POST/api/agent/restores/:idAgent更新恢复状态
GET/api/v1/agent/selfAgent安装时校验节点身份

公开运维与安装路由

方法端点权限说明
GET/health公开存活检查
GET/api/health公开带 API 前缀的存活别名
GET/ready公开SQLite 就绪检查
GET/api/ready公开带 API 前缀的就绪别名
GET/metrics公开Prometheus 指标
GET/install/:token公开消费一次性 Agent 安装令牌
GET/api/install/:token公开带 API 前缀的安装路由
GET/install/:token/compose.yml公开生成 Docker Agent Compose
GET/api/install/:token/compose.yml公开带 API 前缀的 Docker Compose 路由

探针与指标应只对监控网段开放。安装 Token 是单次、限时秘密,不能写入公开日志。

响应格式

大多数 JSON 成功响应为:

{
"code": "OK",
"message": "success",
"data": {}
}

错误使用 HTTP 4xx 或 5xx,并带稳定业务码:

{
"code": "BACKUP_TASK_NOT_FOUND",
"message": "备份任务不存在"
}

客户端应按 HTTP 状态和 code 分支,不要依赖本地化的 message

产物下载、任务 JSON 导出、审计或合规导出、安装器响应和 /metrics 使用各自原生 Content-Type,不使用 JSON Envelope。日志与事件流使用 text/event-stream,反向代理必须关闭响应缓冲。