外部API
这些端点设计用于其他应用程序和集成,例如Homepage。它们免除CSRF保护且不使用会话cookie。
身份验证是可选的,默认为关闭。虽然密钥是可选的,客户端可以省略密钥或发送一个:接受并记录有效的匹配范围密钥;忽略错误密钥,请求仍会继续进行。当在API密钥中启用需要API密钥时,将密钥作为?api_key=、X-Api-Key或Authorization: Bearer发送。上传密钥仅在POST /api/upload上工作。读取密钥仅在/api/summary和/api/lastbackup*上工作。查询字符串密钥出现在反向代理访问日志中。
也可以使用IP白名单限制这些路由。当两个列表都关闭时,/api/health和/api/ping保持公开;当启用任一列表时,它们接受管理员或外部列表中的回环和CIDR,并且非回环客户端受到速率限制。
获取总体摘要 - /api/summary
-
端点:
/api/summary -
方法: GET
-
描述: 检索所有服务器上的所有备份操作摘要。
-
响应:
{"totalServers": 3,"totalBackupsRuns": 9,"totalBackups": 9,"totalUploadedSize": 2397229507,"totalStorageUsed": 43346796938,"totalBackupSize": 126089687807,"overdueBackupsCount": 2,"secondsSinceLastBackup": 7200} -
错误响应:
401: 需要密钥时缺少或无效的API密钥403: 密钥范围不是read,或客户端IP不在外部白名单上429: 超出读取API速率限制500: 获取摘要数据时服务器错误
-
备注:
- 在版本0.5.x中,字段
totalBackupedSize被totalBackupSize替换 - 在版本0.7.x中,字段
totalMachines被totalServers替换 - 字段
overdueBackupsCount显示当前过期备份的数量 - 字段
secondsSinceLastBackup显示自上次备份以来的所有服务器时间(以秒为单位) - 如果数据获取失败,则返回带有零值的备用响应
- 注意: 对于内部仪表板使用,请考虑使用
/api/dashboard,它包含此数据以及附加信息
- 在版本0.5.x中,字段
获取最新备份 - /api/lastbackup/:serverId
- 端点:
/api/lastbackup/:serverId - 方法: GET
- 描述: 检索特定服务器的最新备份信息。
- 参数:
serverId: 服务器标识符(ID或名称)
备注
服务器标识符必须进行URL编码。
-
响应:
{"server": {"id": "unique-server-id","name": "Server Name","backup_name": "Backup Name","backup_id": "backup-id","created_at": "2024-03-20T10:00:00Z"},"latest_backup": {"id": "backup-id","server_id": "unique-server-id","name": "Backup Name","date": "2024-03-20T10:00:00Z","status": "Success","warnings": 0,"errors": 0,"messages": 150,"fileCount": 249426,"fileSize": 113395849938,"uploadedSize": 331318892,"duration": "00:38:31","duration_seconds": 2311.6018052,"durationInMinutes": 38.52669675333333,"knownFileSize": 27203688543,"backup_list_count": 10,"messages_array": ["message1", "message2"],"warnings_array": ["warning1"],"errors_array": [],"available_backups": ["v1", "v2", "v3"]},"status": 200} -
错误响应:
401: 需要密钥时缺少或无效的API密钥403: 密钥范围不是read,或客户端IP不在外部白名单上404: 未找到服务器429: 超出读取API速率限制500: 内部服务器错误
-
备注:
- 在版本0.7.x中,响应对象键从
machine更改为server - 服务器标识符可以是ID或名称
- 如果不存在备份,则latest_backup返回null
- 包含缓存控制头以防止缓存
- 在版本0.7.x中,响应对象键从
获取最新备份 - /api/lastbackups/:serverId
- 端点:
/api/lastbackups/:serverId - 方法: GET
- 描述: 检索特定服务器上所有配置备份(例如'文件'、'数据库')的最新备份信息。
- 参数:
serverId: 服务器标识符(ID或名称)
备注
服务器标识符必须进行URL编码。
-
响应:
{"server": {"id": "unique-server-id","name": "Server Name","backup_name": "Default Backup","backup_id": "backup-id","created_at": "2024-03-20T10:00:00Z"},"latest_backups": [{"id": "backup1","server_id": "unique-server-id","name": "Files","date": "2024-03-20T10:00:00Z","status": "Success","warnings": 0,"errors": 0,"messages": 150,"fileCount": 249426,"fileSize": 113395849938,"uploadedSize": 331318892,"duration": "00:38:31","duration_seconds": 2311.6018052,"durationInMinutes": 38.52669675333333,"knownFileSize": 27203688543,"backup_list_count": 10,"messages_array": "[\"message1\", \"message2\"]","warnings_array": "[\"warning1\"]","errors_array": "[]","available_backups": ["v1", "v2", "v3"]},{"id": "backup2","server_id": "unique-server-id","name": "Databases","date": "2024-03-20T11:00:00Z","status": "Success","warnings": 1,"errors": 0,"messages": 75,"fileCount": 125000,"fileSize": 56789012345,"uploadedSize": 123456789,"duration": "00:25:15","duration_seconds": 1515.1234567,"durationInMinutes": 25.25205761166667,"knownFileSize": 12345678901,"backup_list_count": 5,"messages_array": ["message1"],"warnings_array": ["warning1"],"errors_array": [],"available_backups": ["v1", "v2"]}],"backup_jobs_count": 2,"backup_names": ["Files", "Databases"],"status": 200} -
错误响应:
401: 需要密钥时缺少或无效的API密钥403: 密钥范围不是read,或客户端IP不在外部白名单上404: 未找到服务器429: 超出读取API速率限制500: 内部服务器错误
-
备注:
- 在版本0.7.x中,响应对象键从
machine更改为server,字段backup_types_count重命名为backup_jobs_count - 服务器标识符可以是ID或名称
- 返回服务器具有的每个备份作业(backup_name)的最新备份
- 与
/api/lastbackup/:serverId不同,后者仅返回服务器的单个最近备份(独立于备份作业) - 包含缓存控制头以防止缓存
- 在版本0.7.x中,响应对象键从
上传备份数据 - /api/upload
-
端点:
/api/upload -
方法:POST
-
描述:为服务器上传备份操作数据。支持重复备份运行检测并发送通知。
-
请求正文:由 duplicati 发送的 JSON,包含以下选项:
--send-http-json-urls=http://my.local.server:9666/api/upload?api_key=YOUR_UPLOAD_KEY--send-http-log-level=Information--send-http-max-log-lines=500
在早于 2.0.9.106 的 duplicati 版本中,使用 `--send-http-url` 和 `--send-http-result-output-format=Json`。参见 [duplicati 服务器配置](../installation/duplicati-server-configuration.md)。
- **响应**:
```json
{
"success": true
}
- 错误响应:
400:Extra 或 Data 部分缺少必需字段,或 MainOperation 无效401:缺少或无效的 API 密钥(当需要密钥时)403:密钥范围不是upload,或客户端 IP 不在外围允许列表中409:重复备份数据(已忽略)413:请求正文超出配置的上传大小限制(默认 5 MB)429:上传或身份验证失败率限制超出(已设置Retry-After)500:服务器处理备份数据时出错
- 注意事项:
- 仅处理备份操作(MainOperation 必须为 "Backup")
- 验证 Extra 部分中的必需字段:machine-id、machine-name、backup-name、backup-id
- 验证 Data 部分中的必需字段:ParsedResult、BeginTime、Duration
- 自动检测重复备份运行并返回 409 状态
- 在成功插入备份后发送通知(如果已配置)
- 在开发模式下将请求数据记录到项目根目录下的
data目录中的文件以供调试 - 使用事务确保数据一致性