Skip to content

通知管理 API

Novu 通知服务管理路由,提供 Novu 连接状态查询、管理员凭据加密存储和 auto-login 跳转功能。

基础路径

/admin/novu

认证方式

使用 combinedAuth + adminAudit 中间件。仅支持 JWT Bearer Token 认证,且需要 site:admin 权限。

Authorization: Bearer <jwt_token>

端点列表

GET /admin/novu/status

获取 Novu 服务状态。检查 Novu API 健康状态、Dashboard URL 配置、凭据保存状态和加密配置状态。

请求参数

无。

响应格式

json
{
  "apiHealthy": true,
  "apiUrl": "https://novu-api.example.com",
  "dashboardUrl": "https://novu-dashboard.example.com",
  "credentialsSaved": true,
  "encryptionConfigured": true
}

响应字段说明

字段类型说明
apiHealthybooleanNovu API 是否健康(通过 /v1/health-check 检测)
apiUrlstringNovu API URL(来自环境变量 NOVU_API_URL
dashboardUrlstringNovu Dashboard URL(来自环境变量 NOVU_DASHBOARD_URL
credentialsSavedboolean管理员凭据是否已保存到 site_settings
encryptionConfiguredbooleanEXTERNAL_TOKEN_SECRET 是否已配置(用于加密存储凭据)

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
500查询凭据状态失败

POST /admin/novu/credentials

保存 Novu 管理员凭据(加密存储)。保存前会先调用 Novu Login API 验证凭据有效性,验证通过后使用 EXTERNAL_TOKEN_SECRET 加密存储到 site_settings 表。

请求参数(Body)

字段类型必填说明
emailstringNovu 管理员邮箱
passwordstringNovu 管理员密码

响应格式

json
{
  "success": true
}

错误码

HTTP 状态码说明
400缺少 email 或 password / 认证失败(邮箱或密码错误) / Novu 返回错误
403仅支持 JWT 认证 / 缺少 site:admin 权限
500EXTERNAL_TOKEN_SECRET 未配置 / NOVU_API_URL 未配置 / 保存凭据失败 / Novu API 连接超时

DELETE /admin/novu/credentials

删除已保存的 Novu 管理员凭据。同时清除进程内存中的 token 缓存。

请求参数

无。

响应格式

json
{
  "success": true
}

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
500删除凭据失败

POST /admin/novu/auto-login

自动登录 Novu Dashboard。读取加密存储的凭据,调用 Novu Login API 获取 JWT token,返回 Dashboard URL 和 token 供前端跳转使用。

token 会在进程内存中缓存,避免每次请求都调用 Novu Login API。缓存的 token 在过期前或被 Novu API 判定失效前有效。

请求参数

无。

响应格式

成功(获取到 token):

json
{
  "dashboardUrl": "https://novu-dashboard.example.com",
  "token": "eyJhbGciOiJIUzI1NiIs..."
}

降级(登录失败但返回 Dashboard URL):

json
{
  "dashboardUrl": "https://novu-dashboard.example.com",
  "fallback": true,
  "reason": "认证失败:邮箱或密码错误"
}

响应字段说明

字段类型说明
dashboardUrlstringNovu Dashboard URL
tokenstringNovu JWT token(登录成功时返回)
fallbackboolean是否为降级模式(登录失败但仍返回 Dashboard URL)
reasonstring降级原因说明

错误码

HTTP 状态码说明
403仅支持 JWT 认证 / 缺少 site:admin 权限
404未保存 Novu 管理员凭据
500NOVU_API_URL 未配置 / NOVU_DASHBOARD_URL 未配置 / EXTERNAL_TOKEN_SECRET 未配置 / 查询凭据失败 / 凭据解密失败

环境变量依赖

变量说明
NOVU_API_URLNovu API 地址
NOVU_DASHBOARD_URLNovu Dashboard 地址
EXTERNAL_TOKEN_SECRET凭据加密密钥

源码

  • 路由文件apps/backend/src/routes/admin/novu.ts
  • 加密工具apps/backend/src/utils/encryption.ts

AI Workflow Editor