Backup API
Backup / restore, backup groups, retention, backup FUSE mounts, mount
sessions, container-volume mounts, async operation streaming, and stack
rollback. Routes are split across router.go, router_mounts.go,
router_volumes.go, and the backup/mount subpackage, all mounted on the
backup module’s chi router.
Hand-maintained notes against modules/backup/*.go (+ backup/mount/router.go). Route inventory (generated): routes.md and mount sessions. Response models (generated): response-models/backup.md.
Backup lifecycle (shc.backup.*)
Section titled “Backup lifecycle (shc.backup.*)”| Method | Path |
|---|---|
POST | /api/method/shc.backup.create |
POST | /api/method/shc.backup.create_async |
POST | /api/method/shc.backup.detect_snapshot |
GET | /api/method/shc.backup.export/{backup_id} |
POST | /api/method/shc.backup.import |
POST | /api/method/shc.backup.restore |
POST | /api/method/shc.backup.restore_async |
POST | /api/method/shc.backup.restore_from_file |
POST | /api/method/shc.backup.restore_from_file_async |
POST | /api/method/shc.backup.recover |
POST | /api/method/shc.backup.recover_async |
POST | /api/method/shc.backup.verify/{backup_id} |
POST | /api/method/shc.backup.sync |
shc.backup.detect_snapshot requires platform:manage — it discloses host filesystem topology, so it takes the same admin gate as the mount routes below. Every other route in this table is open to any authenticated caller. Per-route permissions are listed authoritatively in the generated route reference.
Backup groups (consistency groups)
Section titled “Backup groups (consistency groups)”| Method | Path |
|---|---|
POST | /api/method/shc.backup.group |
GET | /api/method/shc.backup.group_manifest/{consistency_id} |
POST | /api/method/shc.backup.restore_group/{consistency_id} |
POST | /api/method/shc.backup.ungroup/{group_id} |
Backup resource (/api/resource/Backup)
Section titled “Backup resource (/api/resource/Backup)”| Method | Path |
|---|---|
GET | /api/resource/Backup |
GET | /api/resource/Backup/{backup_id} |
GET | /api/resource/Backup/{backup_id}/manifest |
DELETE | /api/resource/Backup/{backup_id} |
Retention (shc.backup.retention.*)
Section titled “Retention (shc.backup.retention.*)”These routes share the
shc.backup.retention.*URL namespace but are registered by theretentionmodule, not the backup module.
| Method | Path |
|---|---|
GET | /api/method/shc.backup.retention.get |
POST | /api/method/shc.backup.retention.set |
POST | /api/method/shc.backup.retention.reset |
POST | /api/method/shc.backup.retention.preview |
POST | /api/method/shc.backup.retention.apply |
retention.preview reports which snapshots a policy WOULD forget without
deleting anything; retention.apply executes the forget/prune.
Backup schedule (shc.backup.schedule.*)
Section titled “Backup schedule (shc.backup.schedule.*)”| Method | Path |
|---|---|
GET / POST | /api/method/shc.backup.schedule.list |
POST | /api/method/shc.backup.schedule.get |
POST | /api/method/shc.backup.schedule.set |
POST | /api/method/shc.backup.schedule.unset |
Stack rollback (shc.stack.rollback*)
Section titled “Stack rollback (shc.stack.rollback*)”Rollback to a prior backup point — registered by the backup module because it drives the restore machinery.
| Method | Path |
|---|---|
POST | /api/method/shc.stack.rollback |
POST | /api/method/shc.stack.rollback.list |
Async operation streaming (shc.operation.*)
Section titled “Async operation streaming (shc.operation.*)”Long-running backup/restore/recover operations return an operation_id;
follow progress with these routes. Streaming is Server-Sent Events — see
SSE streaming.
| Method | Path |
|---|---|
GET | /api/method/shc.operation.stream/{operation_id} |
GET | /api/method/shc.operation.state/{operation_id} |
Backup FUSE mounts (shc.backup.*, admin)
Section titled “Backup FUSE mounts (shc.backup.*, admin)”Mount a restic snapshot read-only for browsing. Require platform:manage.
| Method | Path | Purpose |
|---|---|---|
POST | /api/method/shc.backup.mount | Mount a snapshot read-only |
POST | /api/method/shc.backup.umount | Unmount a mounted snapshot |
GET | /api/method/shc.backup.mounts | List active snapshot mounts |
Mount sessions (shc.mount.*)
Section titled “Mount sessions (shc.mount.*)”Interactive FUSE mount-session filesystem surface, registered by the
backup/mount subpackage. {session_id} identifies a live session.
| Method | Path | Purpose |
|---|---|---|
POST | /api/method/shc.mount.create | Create mount session |
GET | /api/method/shc.mount.list | List live sessions |
GET | /api/method/shc.mount.subscribe/{session_id} | SSE change feed — pins the session |
POST | /api/method/shc.mount.ping/{session_id} | Keep-alive (refresh the sliding TTL) |
DELETE | /api/method/shc.mount.{session_id} | Close mount session |
GET | /api/method/shc.mount.{session_id}/stat | File/directory metadata (incl. symlink_target) |
GET | /api/method/shc.mount.{session_id}/read | Read file bytes (base64) |
GET | /api/method/shc.mount.{session_id}/readdir | List directory contents |
GET | /api/method/shc.mount.{session_id}/changes | List pending (uncommitted) changes |
PUT | /api/method/shc.mount.{session_id}/write | Write bytes (writable only) |
POST | /api/method/shc.mount.{session_id}/create | Create file (writable only) |
POST | /api/method/shc.mount.{session_id}/mkdir | Create directory (writable only) |
POST | /api/method/shc.mount.{session_id}/rename | Rename/move (writable only) |
POST | /api/method/shc.mount.{session_id}/chmod | Change permissions (writable only) |
POST | /api/method/shc.mount.{session_id}/symlink | Create symbolic link (writable only) |
POST | /api/method/shc.mount.{session_id}/commit | Commit changes → new backup |
POST | /api/method/shc.mount.{session_id}/discard | Discard pending changes |
DELETE | /api/method/shc.mount.{session_id}/rmdir | Remove directory (writable only) |
DELETE | /api/method/shc.mount.{session_id}/unlink | Delete file (writable only) |
Container-volume mounts (shc.volume.*, shc.pod.mount, admin)
Section titled “Container-volume mounts (shc.volume.*, shc.pod.mount, admin)”Mount live container/stack volumes. Require platform:manage.
| Method | Path | Purpose |
|---|---|---|
POST | /api/method/shc.volume.mount | Mount a stack volume |
POST | /api/method/shc.volume.umount | Unmount a stack volume |
GET | /api/method/shc.volume.mounts | List active volume mounts |
POST | /api/method/shc.pod.mount | Mount a container’s volumes |
Selected details
Section titled “Selected details”POST /api/method/shc.backup.create
Section titled “POST /api/method/shc.backup.create”- source:
modules/backup/router.go
POST /api/method/shc.backup.create_async
Section titled “POST /api/method/shc.backup.create_async”- async accept — poll/stream via
shc.operation.stream/{operation_id}. - source:
modules/backup/router.go
POST /api/method/shc.backup.restore_from_file
Section titled “POST /api/method/shc.backup.restore_from_file”- summary: synchronous restore from an uploaded/local backup file (async variant:
shc.backup.restore_from_file_async). - source:
modules/backup/router.go
POST /api/method/shc.backup.restore_group/{consistency_id}
Section titled “POST /api/method/shc.backup.restore_group/{consistency_id}”- summary: restore all members of a consistency group together.
- source:
modules/backup/router.go