本文按本项目当前调用的 Xboard V2 管理 API 整理。接口属于 Xboard 后端;不同分支或版本可能有差异。请求字段以目标实例对应的 Controller / FormRequest 校验为准。本表中的方法表示本管理端实际使用的方法;个别 Xboard 路由声明为
any,所以也可能接受其他 HTTP 方法。
- Xboard 服务根地址:
https://your-xboard.example,不含结尾路径斜杠。 - API 前缀:
/api/v2。 - 管理 API 前缀:
/api/v2/{admin_path}。其中admin_path是 Xboard 设置的安全后台路径,按普通路径段传入。 - 登录接口不带管理员安全路径:
POST /api/v2/passport/auth/login。 - 登录成功后使用响应中的
data.auth_data作为Authorization请求头的完整值。当前 Xboard 返回值自身已带Bearer前缀,不要再重复拼接。 - 登录响应中的
data.is_admin必须为true。令牌有有效期;过期、撤销或非管理员通常会得到 HTTP 403。
const origin = 'https://your-xboard.example'
const adminPath = 'your-admin-path'
const loginResponse = await fetch(`${origin}/api/v2/passport/auth/login`, {
method: 'POST',
headers: {
Accept: 'application/json',
'Content-Type': 'application/json',
},
body: JSON.stringify({ email: 'admin@example.invalid', password: 'replace-me' }),
})
const login = await loginResponse.json()
if (!loginResponse.ok || login.data?.is_admin !== true) {
throw new Error(login.message || '管理员登录失败')
}
const usersResponse = await fetch(
`${origin}/api/v2/${encodeURIComponent(adminPath)}/user/fetch?current=1&pageSize=25`,
{
headers: {
Accept: 'application/json',
Authorization: login.data.auth_data,
},
},
)
if (!usersResponse.ok) throw new Error(`用户列表请求失败:HTTP ${usersResponse.status}`)
const usersPage = await usersResponse.json()
console.log(usersPage.data) // 当前 Xboard 分页响应中的当前页记录示例凭据不可用。开发时应从环境变量或本地秘密管理器读取凭据;不要提交密码、令牌或真实管理员路径。生产连接应使用 HTTPS。
- JSON 写请求使用
Content-Type: application/json,并将参数放在 JSON body。 - GET 查询参数放在 URL query。分页常见参数为
current和pageSize;过滤参数采用 Xboard 的filter[index][id]/filter[index][value]形式。不同接口支持的过滤字段不完全相同。 - 用户邮箱过滤示例:
/user/fetch?current=1&pageSize=25&filter[0][id]=email&filter[0][value]=demo%40example.invalid。订单号过滤示例把字段名换成trade_no。 - ZIP 上传接口使用
multipart/form-data,文件字段名为file;让 HTTP 客户端自动生成 multipart boundary。 - 下载接口返回文件流,不应按 JSON 解析:
user/dumpCSV、gift-card/export-codes;coupon/generate批量生成和gift-card/generate-codes启用 CSV 参数时也可能返回文件。主题/插件包上传使用theme/upload、plugin/upload。 - 破坏性或会改变站点状态的接口使用 POST;调用前确认目标实例和参数。
大多数成功接口使用如下信封:
{
"status": "success",
"message": "Success",
"data": {},
"error": null
}失败时通常为 status: "fail",详细信息见 message / error,并可能使用非 2xx HTTP 状态。管理员鉴权中间件返回的 403 可能是简化结构(例如 {"message":"Unauthorized"})。
分页接口使用 Laravel 风格的分页结构,当前 Xboard 的 paginate() 直接返回该结构,而非统一信封:
{
"total": 125,
"current_page": 1,
"per_page": 25,
"last_page": 5,
"data": []
}列表接口也可能直接在标准信封的 data 中返回数组。请按接口实际响应判断,不要假定所有列表都带分页字段。
浏览器直接请求时,Xboard 的 CORS 配置需允许管理端来源、Authorization、Content-Type 和 OPTIONS 预检请求。跨域失败通常表现为浏览器的网络错误,而不是可读取的 JSON 错误响应。
| 方法 | 路径 | 参数 | 说明 |
|---|---|---|---|
| POST | /api/v2/passport/auth/login |
JSON:email、password |
返回 data.auth_data、data.is_admin;该路径不包含管理员安全路径 |
除登录接口外,以下路径均以 /api/v2/{admin_path}/ 为前缀。工作台确认 表示本项目 API 工作台发送前是否弹出二次确认;它不代表接口只读或无风险。POST 接口仍须先核实参数与目标实例。具体字段请查看对应 Xboard Controller / FormRequest;页面覆盖和兼容差异见 MIGRATION.md。
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/order/fetch | 订单列表 | 否 | — |
| POST | /api/v2/{admin_path}/order/detail | 订单详情 | 否 | — |
| POST | /api/v2/{admin_path}/order/update | 更新订单 | 否 | — |
| POST | /api/v2/{admin_path}/order/assign | 分配订单 | 是 | — |
| POST | /api/v2/{admin_path}/order/paid | 标记已支付 | 是 | — |
| POST | /api/v2/{admin_path}/order/cancel | 取消订单 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/plan/fetch | 套餐列表 | 否 | — |
| POST | /api/v2/{admin_path}/plan/save | 保存套餐 | 是 | — |
| POST | /api/v2/{admin_path}/plan/update | 更新套餐状态 | 是 | — |
| POST | /api/v2/{admin_path}/plan/sort | 排序套餐 | 是 | — |
| POST | /api/v2/{admin_path}/plan/drop | 删除套餐 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/ticket/fetch | 工单列表 | 否 | — |
| POST | /api/v2/{admin_path}/ticket/reply | 回复工单 | 是 | — |
| POST | /api/v2/{admin_path}/ticket/close | 关闭工单 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/notice/fetch | 公告列表 | 否 | — |
| POST | /api/v2/{admin_path}/notice/save | 保存公告 | 是 | — |
| POST | /api/v2/{admin_path}/notice/update | 更新公告(后端未实现);当前路由对应的控制器方法缺失 | 否 | 后端缺失 |
| POST | /api/v2/{admin_path}/notice/show | 显示 / 隐藏 | 是 | — |
| POST | /api/v2/{admin_path}/notice/sort | 排序公告 | 是 | — |
| POST | /api/v2/{admin_path}/notice/drop | 删除公告 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/user/fetch | 用户列表 | 否 | — |
| GET | /api/v2/{admin_path}/user/getUserInfoById | 用户详情 | 否 | — |
| POST | /api/v2/{admin_path}/user/update | 更新用户 | 是 | — |
| POST | /api/v2/{admin_path}/user/generate | 生成用户 | 是 | — |
| POST | /api/v2/{admin_path}/user/ban | 封禁 / 解封 | 是 | — |
| POST | /api/v2/{admin_path}/user/resetSecret | 重置订阅密钥 | 是 | — |
| POST | /api/v2/{admin_path}/user/setInviteUser | 设置邀请关系(后端未实现);当前路由对应的控制器方法缺失 | 否 | 后端缺失 |
| POST | /api/v2/{admin_path}/user/sendMail | 发送邮件 | 是 | — |
| POST | /api/v2/{admin_path}/user/dumpCSV | 导出 CSV | 否 | — |
| POST | /api/v2/{admin_path}/user/destroy | 删除用户 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/knowledge/fetch | 文章列表 | 否 | — |
| GET | /api/v2/{admin_path}/knowledge/getCategory | 分类列表 | 否 | — |
| POST | /api/v2/{admin_path}/knowledge/save | 保存文章 | 是 | — |
| POST | /api/v2/{admin_path}/knowledge/show | 显示 / 隐藏 | 是 | — |
| POST | /api/v2/{admin_path}/knowledge/sort | 排序文章 | 是 | — |
| POST | /api/v2/{admin_path}/knowledge/drop | 删除文章 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/coupon/fetch | 优惠券列表 | 否 | — |
| POST | /api/v2/{admin_path}/coupon/generate | 生成优惠券 | 是 | — |
| POST | /api/v2/{admin_path}/coupon/show | 显示 / 隐藏 | 是 | — |
| POST | /api/v2/{admin_path}/coupon/update | 更新优惠券 | 是 | — |
| POST | /api/v2/{admin_path}/coupon/drop | 删除优惠券 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/gift-card/templates | 卡片模板 | 否 | — |
| POST | /api/v2/{admin_path}/gift-card/create-template | 创建模板 | 是 | — |
| POST | /api/v2/{admin_path}/gift-card/update-template | 更新模板 | 是 | — |
| POST | /api/v2/{admin_path}/gift-card/delete-template | 删除模板 | 是 | — |
| GET | /api/v2/{admin_path}/gift-card/codes | 卡密列表 | 否 | — |
| POST | /api/v2/{admin_path}/gift-card/generate-codes | 生成卡密 | 是 | — |
| POST | /api/v2/{admin_path}/gift-card/toggle-code | 启用 / 停用卡密 | 是 | — |
| GET | /api/v2/{admin_path}/gift-card/export-codes | 导出卡密 | 否 | — |
| POST | /api/v2/{admin_path}/gift-card/update-code | 更新卡密 | 是 | — |
| POST | /api/v2/{admin_path}/gift-card/delete-code | 删除卡密 | 是 | — |
| GET | /api/v2/{admin_path}/gift-card/usages | 使用记录 | 否 | — |
| GET | /api/v2/{admin_path}/gift-card/statistics | 统计 | 否 | — |
| GET | /api/v2/{admin_path}/gift-card/types | 卡类型 | 否 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/payment/fetch | 支付方式列表 | 否 | — |
| GET | /api/v2/{admin_path}/payment/getPaymentMethods | 支付插件列表 | 否 | — |
| POST | /api/v2/{admin_path}/payment/getPaymentForm | 获取支付表单 | 否 | — |
| POST | /api/v2/{admin_path}/payment/save | 保存支付方式 | 是 | — |
| POST | /api/v2/{admin_path}/payment/show | 显示 / 隐藏 | 是 | — |
| POST | /api/v2/{admin_path}/payment/sort | 排序支付方式 | 是 | — |
| POST | /api/v2/{admin_path}/payment/drop | 删除支付方式 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/server/manage/getNodes | 节点列表 | 否 | — |
| POST | /api/v2/{admin_path}/server/manage/save | 保存节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/update | 更新节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/sort | 排序节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/copy | 复制节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/batchUpdate | 批量更新节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/batchDelete | 批量删除节点 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/resetTraffic | 重置节点流量 | 是 | — |
| POST | /api/v2/{admin_path}/server/manage/batchResetTraffic | 批量重置流量 | 是 | — |
| GET | /api/v2/{admin_path}/server/manage/generateEchKey | 生成 ECH 密钥 | 否 | — |
| POST | /api/v2/{admin_path}/server/manage/drop | 删除节点 | 是 | — |
| GET | /api/v2/{admin_path}/server/group/fetch | 节点分组 | 否 | — |
| POST | /api/v2/{admin_path}/server/group/save | 保存分组 | 是 | — |
| POST | /api/v2/{admin_path}/server/group/drop | 删除分组 | 是 | — |
| GET | /api/v2/{admin_path}/server/route/fetch | 线路列表 | 否 | — |
| POST | /api/v2/{admin_path}/server/route/save | 保存线路 | 是 | — |
| POST | /api/v2/{admin_path}/server/route/drop | 删除线路 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/server/machine/fetch | 机器列表 | 否 | — |
| POST | /api/v2/{admin_path}/server/machine/save | 保存机器 | 是 | — |
| GET | /api/v2/{admin_path}/server/machine/getToken | 获取机器令牌 | 否 | — |
| POST | /api/v2/{admin_path}/server/machine/resetToken | 重置机器令牌 | 是 | — |
| GET | /api/v2/{admin_path}/server/machine/installCommand | 安装命令 | 否 | — |
| GET | /api/v2/{admin_path}/server/machine/nodes | 关联节点 | 否 | — |
| GET | /api/v2/{admin_path}/server/machine/history | 历史记录 | 否 | — |
| POST | /api/v2/{admin_path}/server/machine/drop | 删除机器 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/stat/getOverride | 运营概览 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getStats | 流量统计 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getOrder | 订单统计 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getStatUser | 用户统计 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getRanking | 排行榜(后端未实现);当前路由对应的控制器方法缺失 | 否 | 后端缺失 |
| GET | /api/v2/{admin_path}/stat/getTrafficRank | 节点流量排名 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getServerLastRank | 节点今日排名 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getServerYesterdayRank | 节点昨日排名 | 否 | — |
| GET | /api/v2/{admin_path}/stat/getStatRecord | 统计记录 | 否 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/traffic-reset/logs | 重置记录 | 否 | — |
| GET | /api/v2/{admin_path}/traffic-reset/stats | 重置统计 | 否 | — |
| GET | /api/v2/{admin_path}/traffic-reset/user/{userId}/history | 用户重置历史 | 否 | — |
| POST | /api/v2/{admin_path}/traffic-reset/reset-user | 重置用户流量 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/config/fetch | 读取站点配置 | 否 | — |
| POST | /api/v2/{admin_path}/config/save | 保存站点配置 | 是 | — |
| GET | /api/v2/{admin_path}/config/getEmailTemplate | 邮件模板 | 否 | — |
| GET | /api/v2/{admin_path}/config/getThemeTemplate | 主题模板 | 否 | — |
| POST | /api/v2/{admin_path}/config/setTelegramWebhook | 设置 Telegram Webhook | 是 | — |
| POST | /api/v2/{admin_path}/config/testSendMail | 测试邮件 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/mail/template/list | 模板列表 | 否 | — |
| GET | /api/v2/{admin_path}/mail/template/get | 读取模板 | 否 | — |
| POST | /api/v2/{admin_path}/mail/template/save | 保存模板 | 是 | — |
| POST | /api/v2/{admin_path}/mail/template/reset | 重置模板 | 是 | — |
| POST | /api/v2/{admin_path}/mail/template/test | 测试发送 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/system/getSystemStatus | 系统状态 | 否 | — |
| GET | /api/v2/{admin_path}/system/getQueueStats | 队列统计 | 否 | — |
| GET | /api/v2/{admin_path}/system/getQueueWorkload | 队列负载 | 否 | — |
| GET | /api/v2/{admin_path}/system/getQueueMasters | Horizon 主进程 | 否 | — |
| GET | /api/v2/{admin_path}/system/getHorizonFailedJobs | 失败任务 | 否 | — |
| GET | /api/v2/{admin_path}/system/getAuditLog | 审计日志 | 否 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/theme/getThemes | 主题列表 | 否 | — |
| POST | /api/v2/{admin_path}/theme/getThemeConfig | 读取主题配置 | 否 | — |
| POST | /api/v2/{admin_path}/theme/saveThemeConfig | 保存主题配置 | 是 | — |
| POST | /api/v2/{admin_path}/theme/upload | 上传主题包 | 是 | — |
| POST | /api/v2/{admin_path}/theme/delete | 删除主题 | 是 | — |
| 方法 | 路径 | 用途 | 工作台确认 | 后端状态 |
|---|---|---|---|
| GET | /api/v2/{admin_path}/plugin/types | 插件类型 | 否 | — |
| GET | /api/v2/{admin_path}/plugin/getPlugins | 插件列表 | 否 | — |
| GET | /api/v2/{admin_path}/plugin/config | 读取插件配置 | 否 | — |
| POST | /api/v2/{admin_path}/plugin/config | 更新插件配置 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/upload | 上传插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/install | 安装插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/uninstall | 卸载插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/enable | 启用插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/disable | 停用插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/upgrade | 升级插件 | 是 | — |
| POST | /api/v2/{admin_path}/plugin/delete | 删除插件 | 是 | — |
notice/update、user/setInviteUser、stat/getRanking:当前 Xboard AdminRoute 声明了路由,但对应控制器没有实现方法;调用会失败,需要先修复后端。system/getQueueMasters:当前路由直接指向 Laravel Horizon 控制器,可能受 Horizon 自己的授权检查影响并返回 403。不要通过公开 Horizon 面板绕过授权。- 支付方式、插件配置、节点协议参数等接口的请求字段取决于安装的插件、协议和 Xboard 版本,需从目标后端返回的 schema / 表单定义读取。
- 所有管理 API 使用管理员权限。对用户删除、支付确认、流量重置、节点/插件变更等操作应采用最小权限、二次确认,并优先在隔离测试实例验证。
- API 请求、错误解析、会话令牌处理:
src/App.vue - 模块接口目录与 HTTP 方法:
src/features.js - 接口工作台:
src/components/ApiWorkbench.vue - 功能页面、迁移顺序与已知差异:
../MIGRATION.md