Returns the list of configuration backups stored for the system, together with aggregate usage counters. Backups are produced by the appliance itself (see collect ingest endpoint) and consumed here read-only.
Each entry carries size, sha256, and uploaded_at. The
peer IP observed at ingest is intentionally not exposed: on
traffic that transits the translation proxy the recorded value
would be the proxy's IP, and even when it is accurate it is a
reconnaissance aid for higher-tier admins.
Access is gated by the same RBAC rules as GET /systems/{id}:
the caller must belong to the organization that currently owns
the system. After a cross-org reassignment, the new owner sees
the full backup list and the previous owner loses visibility.
GET
/systems/{id}/backups
curl \
--request GET 'https://api.your-domain.com/api/systems/sys_123456789/backups' \
--header "Authorization: Bearer $ACCESS_TOKEN"
Response examples (200)
{
"code": 200,
"message": "backups retrieved successfully",
"data": {
"backups": [
{
"id": "01934fab-bc33-7890-a1b2-c3d4e5f6a7b8.tar.gz",
"filename": "daily-backup-2026-04-12.tar.gz",
"size": 82944000,
"sha256": "3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b",
"mimetype": "application/gzip",
"uploaded_at": "2026-04-12T02:15:00Z"
}
],
"quota_used_bytes": 314572800,
"slots_used": 4
}
}
Response examples (401)
{
"code": 401,
"message": "invalid token",
"data": {}
}
Response examples (403)
{
"code": 403,
"message": "insufficient permissions",
"data": {}
}
Response examples (404)
{
"code": 400,
"message": "validation failed",
"data": {
"type": "validation_error",
"errors": [
{
"key": "username",
"message": "required",
"value": "string"
}
]
}
}