跳到主要内容

Dash HTTP API

本文档汇总稳定 HTTP 契约。公开路径、方法和字段语义属于兼容边界:既有语义不在原路径上硬改,新行为通过新增端点或追加字段提供。

基础

  • API 基础路径:/api
  • Dash 只支持根路径部署,不支持在 app.public_url 中配置路径前缀
  • JSON 错误包装:
{ "code": "<string>", "message": "<string>" }

鉴权模型

方式用途
管理员密码POST /api/auth/login
refresh cookie + X-CSRF-TokenPOST /api/auth/refreshPOST /api/auth/logout
Authorization: Bearer <access_token>管理 API 和可选鉴权读取
X-Node-Secret节点上报和节点身份读取

Bearer 可选端点会把缺失、格式错误、过期、已撤销或其他无法通过校验的 Bearer token 当作匿名请求处理。需要管理视图的客户端必须自行区分响应是已鉴权视图还是游客过滤视图。

命名空间

前缀鉴权资源
/api/auth登录用管理员密码;刷新和登出用 refresh cookie + X-CSRF-Token/sessions* 用 BearerPOST /loginPOST /refreshPOST /logout、会话撤销
/api/versionGET /
/api/frontBearer 可选GET /brandGET /metricsGET /groups
/api/metricsBearer 可选;历史指标默认只对已授权用户开放GET /onlineGET /history
/api/statisticsBearer 可选GET /access
/api/statistics/trafficBearer 可选;PATCH /settings 需要 BearerGET /settingsPATCH /settingsGET /ifacesGET /summaryGET /dailyGET /monthly
/api/nodeX-Node-SecretPOST /identityPOST /metricsPOST /static
/api/admin/groupsBearerGET /GET /mapPOST /PATCH /{id}DELETE /{id}
/api/admin/nodesBearerGET /GET /deployPOST /PUT /display-orderPATCH /{id}POST /{id}/upgradeDELETE /{id}
/api/admin/alerts/rulesBearerGET /POST /PATCH /{id}DELETE /{id}
/api/admin/alerts/mountsBearerGET /PUT /
/api/admin/alerts/settingsBearerGET /PUT /
/api/admin/alerts/channelsBearerGET /POST /GET /{id}PUT /{id}PUT /{id}/enabledPOST /{id}/testDELETE /{id}
/api/admin/alerts/channels/telegram/mtprotoBearerPOST /codePOST /verifyPOST /passwordPOST /ping
/api/admin/system/settingsBearerGET /PUT /PATCH /
/api/admin/system/themesBearerGET /POST /uploadPOST /{id}/applyDELETE /{id}

匿名读取

  • /api/front/brand 可匿名读取。
  • /api/front/metrics/api/front/groups 允许匿名读取,但匿名结果只包含游客可见节点。
  • /api/metrics/online 允许匿名读取游客可见节点。
  • /api/metrics/history 默认需要 Bearer。只有 history_guest_access_modeby_node 时,匿名读取才按游客可见节点放开。
  • /api/statistics/access 可匿名读取。
  • /api/statistics/traffic/* 的匿名读取由流量设置控制,并仍受节点游客可见性限制。

管理节点

  • GET /api/admin/nodes/ 包含 traffic_p95_enabledtraffic_cycle_modetraffic_billing_start_daytraffic_billing_anchor_datetraffic_billing_timezonetagsversion
  • tags 始终是字符串数组。
  • version.version 是节点最后上报版本;缺失、非法或低于打包节点版本时,version.is_outdated 为 true。
  • PATCH /api/admin/nodes/{id} 接受 traffic_p95_enabledtags 和节点账期覆盖字段。未提交字段保持不变。
  • tags 接受字符串数组;值会 trim,空值和重复值会被删除,[] 表示清空标签。
  • 非法 tags 返回 400 invalid_tags
  • POST /api/admin/nodes/{id}/upgrade 成功返回 204;打包版本、平台或资产不可用时返回 409

Agent 更新

  • POST /api/node/metrics 成功响应包含 update
  • 无待升级任务时,updatenull
  • 有待升级任务时,update 包含 idversionurlsha256size
  • 待升级任务是易失状态,节点上报目标版本或更新版本后清除。

流量统计

  • GET /api/statistics/traffic/settings 返回 guest_access_modeusage_modecycle_modebilling_start_daybilling_anchor_datebilling_timezonedirection_mode
  • PATCH /api/statistics/traffic/settings 接受局部更新,未知值返回 400 invalid_fields
  • 允许值:
    • guest_access_mode: disabledby_node
    • usage_mode: litebilling
    • cycle_mode: calendar_monthwhmcs_compatibleclamp_to_month_end
    • direction_mode: outbothmax
  • GET /daily 要求 usage_mode=billing,否则返回 409 traffic_daily_requires_billing
  • 只有 p95_statusavailable 时,P95 字段才不是 null

非 API HTTP 路径

路径作用
/theme/active.css当前主题 CSS
/theme/active.json当前主题 manifest;默认主题可能返回 404
/theme/preview/{id}.png主题预览图
/deploy/linux/install.shLinux 节点安装脚本
/deploy/macos/install.shmacOS 节点安装脚本
/deploy/windows/install.ps1Windows 节点安装脚本
/deploy/*打包携带的节点发布资产
/SPA

兼容性规则

  • 既有路径、方法和字段语义保持稳定。
  • 新行为通过新端点或追加字段提供。
  • 需要废弃时先保留旧入口,再新增替代入口。