通知系统
测试通知 - /api/notifications/test
-
端点:
/api/notifications/test -
方法: POST
-
描述: 发送测试通知(简单、基于模板或电子邮件)以验证通知配置。
-
认证: 需要管理员会话和 CSRF 令牌
-
请求体: 简单测试:
{"type": "simple","ntfyConfig": {"url": "https://ntfy.sh","topic": "test-topic","accessToken": "optional-access-token"}}
模板测试:
{
"type": "template",
"ntfyConfig": {
"url": "https://ntfy.sh",
"topic": "test-topic",
"accessToken": "optional-access-token"
},
"template": {
"title": "Test Title",
"message": "Test message with {variable}",
"priority": "default",
"tags": "test"
}
}
电子邮件测试:
{
"type": "email"
}
-
响应: 简单测试:
{"message": "Test notification sent successfully"}
模板测试:
{
"success": true,
"message": "Test notifications sent successfully via NTFY and Email",
"channels": ["NTFY", "Email"]
}
电子邮件测试:
{
"message": "Test email sent successfully"
}
测试电子邮件内容显示:
- SMTP 服务器主机名和端口
- 连接类型(普通 SMTP、STARTTLS 或直接 SSL/TLS)
- SMTP 认证要求状态
- SMTP 用户名(仅在需要认证时显示)
- 接收者邮箱
- 用于电子邮件的发件人地址和发件人姓名
- 测试时间戳
- 错误响应:
401: 未授权 - 无效会话或 CSRF 令牌400: 需要 NTFY 配置,配置无效或电子邮件未配置500: 发送测试通知失败,包含错误详情
- 注意事项:
- 支持简单测试消息、基于模板的通知和电子邮件测试
- 模板测试使用示例数据替换模板变量
- 在测试消息中包含时间戳
- NTFY 测试使用存储的 NTFY 配置;不使用客户端提供的 NTFY URL
- 存储时使用
accessToken字段进行认证 - 对于模板测试,向 NTFY 和电子邮件(如果已配置)发送通知
- 电子邮件测试需要设置 SMTP 配置
- 测试电子邮件端点在读取 SMTP 配置之前清除请求缓存,确保外部脚本可以更新配置并在测试电子邮件中立即反映出来
- 模板测试和每日摘要立即发送绕过每个备份抑制
预览通知模板 - /api/notifications/preview
- 端点:
/api/notifications/preview - 方法: POST
- 描述: 使用生产 Markdown 渲染器渲染通知模板但不发送。主体包括
kind(success、warning、overdueBackup或dailySummaryEmail)和正在编辑的模板。每日摘要预览使用当前真实快照;其他类型使用确定性示例值。电子邮件 HTML 适用于沙盒 iframe。成功、警告/错误和过期还返回 NTFY 负载(ntfyMessage);任何 GFM 表格标题都被省略,正文行是纯文本。 - 身份验证:需要有效会话和CSRF令牌
检查过期备份 - /api/notifications/check-overdue
-
端点:
/api/notifications/check-overdue -
方法: POST
-
描述: 手动触发过期备份检查并发送通知。
-
身份验证:需要有效的会话和 CSRF 令牌
-
响应:
{"message": "Overdue backup check completed","statistics": {"totalBackupConfigs": 5,"checkedBackups": 5,"overdueBackupsFound": 2,"notificationsSent": 2}} -
错误响应:
500: 检查过期备份失败
-
注意事项:
- 手动触发过期备份检查
- 返回检查过程的统计信息
- 为发现的过期备份发送通知
通知渠道警报 - /api/notification-channel-alerts
-
端点:
/api/notification-channel-alerts -
方法:GET、POST
-
描述:列出已登录管理员未解决的电子邮件和 NTFY 投递失败记录,或清除所列渠道的警报,直到记录新的失败为止。
-
身份验证:需要管理员会话。POST 还需要在
X-CSRF-Token标头中包含 CSRF 令牌。 -
请求体 (POST):
{"channels": ["email", "ntfy"]}
channels 必须包含 email 和 ntfy 中的一个或两个。
-
响应:
{"alerts": [{"channel": "email","error": "SMTP authentication failed","latestTimestamp": "2026-09-23 22:10:00","failureCount": 3,"settingsTab": "email","host": "smtp.gmail.com"}]}
每条警报包含 channel、error(最多 500 个字符)、latestTimestamp、failureCount 和 settingsTab(email 或 ntfy)。电子邮件警报可能包含 host。NTFY 警报可能包含 topic。
- 错误响应:
400INVALID_CONFIGURATION:POST 请求体缺失,或channels为空或包含未知值500INTERNAL_ERROR:读取或清除警报失败
- 注意事项:
- GET 返回对该管理员仍处于失败状态的渠道
- POST 为当前未解决的每个所列渠道记录一次针对该管理员的清除操作,然后返回剩余的警报
- 后续的失败会再次显示该渠道,即使错误文本未更改
- 后续该渠道的成功投递会使其保持隐藏状态
- 清除标记存储在配置中,且不包含机密信息
清除过期时间戳 - /api/notifications/clear-overdue-timestamps
-
端点:
/api/notifications/clear-overdue-timestamps -
方法: POST
-
描述: 清除所有过期备份通知时间戳,允许再次发送通知。
-
身份验证:需要有效的会话和 CSRF 令牌
-
响应:
{"message": "Overdue backup notification timestamps cleared successfully"} -
错误响应:
500: 清除过期备份时间戳失败
-
注意事项:
- 清除所有过期备份通知时间戳
- 允许再次发送通知
- 用于测试通知系统