Operation details
GET /v1/admin/control-backup
Signer fingerprint, freeze state, bundles, recent runs and redacted settings
- operationId
getControlBackupStatus- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Responses
getControlBackupStatus Responses| Status | Description |
|---|
200 | Status |
|---|
401 | Authentication required |
|---|
403 | Permission denied |
|---|
What to do on failure
401 Check the credential format and whether it expired or was rotated.403 Check the key scopes, the owner’s current permissions and the tenant scope; never switch to a more privileged account.
↑ Back to list
POST /v1/admin/control-backup/backups
Queue an immediate backup
- operationId
requestControlBackup- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Responses
requestControlBackup Responses| Status | Description |
|---|
202 | Queued run |
|---|
409 | Another backup or migration is queued or running |
|---|
What to do on failure
409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
↑ Back to list
DELETE /v1/admin/control-backup/backups/{backup_id}
Queue deletion of a bundle and its remote copies; body confirm must equal backup_id
- operationId
deleteControlBackup- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Parameters
deleteControlBackup Parameters| Name | In | Type | Required | Description |
|---|
backup_id | path | string | Yes | — |
|---|
Responses
deleteControlBackup Responses| Status | Description |
|---|
202 | Queued |
|---|
400 | Confirmation mismatch |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.
↑ Back to list
GET /v1/admin/control-backup/backups/{backup_id}/restore-commands
Text commands to restore a bundle onto an empty host (nothing is executed)
- operationId
getControlBackupRestoreCommands- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Parameters
getControlBackupRestoreCommands Parameters| Name | In | Type | Required | Description |
|---|
backup_id | path | string | Yes | — |
|---|
Responses
getControlBackupRestoreCommands Responses| Status | Description |
|---|
200 | Commands |
|---|
↑ Back to list
POST /v1/admin/control-backup/host-key
Read an SSH host key fingerprint to pin before a migration
- operationId
fetchControlBackupHostKey- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Responses
fetchControlBackupHostKey Responses| Status | Description |
|---|
200 | Fingerprint |
|---|
502 | Host unreachable |
|---|
↑ Back to list
POST /v1/admin/control-backup/migrations
Queue a migration to an empty new host; confirm must equal host. This control plane stays frozen after success.
- operationId
requestControlMigration- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Responses
requestControlMigration Responses| Status | Description |
|---|
202 | Queued run |
|---|
400 | Invalid target or confirmation mismatch |
|---|
409 | Busy |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
↑ Back to list
POST /v1/admin/control-backup/recovery-kit
Download the backup identity sealed with a passphrase (scrypt) for off-host disaster recovery
- operationId
exportControlBackupRecoveryKit- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Responses
exportControlBackupRecoveryKit Responses| Status | Description |
|---|
200 | Recovery kit JSON |
|---|
400 | Passphrase shorter than 12 characters |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.
↑ Back to list
GET /v1/admin/control-backup/runs/{run_id}
One agent run with its redacted log
- operationId
getControlBackupRun- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Parameters
getControlBackupRun Parameters| Name | In | Type | Required | Description |
|---|
run_id | path | string | Yes | — |
|---|
Responses
getControlBackupRun Responses| Status | Description |
|---|
200 | Run |
|---|
404 | Unknown run |
|---|
What to do on failure
404 The resource does not exist or belongs to another tenant.
↑ Back to list
PUT /v1/admin/control-backup/settings
Replace schedule, retention and off-host targets
- operationId
putControlBackupSettings- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Description (from the contract)
expected_revision must equal settings.revision of the status read (409 control_backup_revision_conflict otherwise). Each target names the saved target it edits in stored_name (absent for a new target, which never inherits stored secrets). Empty secret fields keep the stored value of stored_name; for SFTP only while auth stays the same: a changed auth without a matching new credential is 400 control_backup_auth_changed, and a credential that does not fit auth is 400 control_backup_invalid_private_key / control_backup_invalid_password, with error.details {target, field}.
Responses
putControlBackupSettings Responses| Status | Description |
|---|
200 | Updated status |
|---|
400 | Invalid settings or a refused target credential |
|---|
409 | The settings changed since expected_revision |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
↑ Back to list
POST /v1/admin/control-backup/targets/probe
Write, read back and delete a probe object on the target as on screen (nothing is saved)
- operationId
probeControlBackupTarget- Auth
- Session: the Bearer session of a signed-in control plane user, used by the customer in their own control plane; a plugin must never ask for it.
- Required permissions
The contract has no separate permission annotation; see the description below and the 403 response.
Description (from the contract)
Body {expected_revision, target}. target is merged over the stored settings exactly as a save would (same stored_name and credential rules), then probed.
Responses
probeControlBackupTarget Responses| Status | Description |
|---|
200 | Probe result (ok and a redacted message) |
|---|
400 | Invalid target or a refused credential |
|---|
409 | The settings changed since expected_revision |
|---|
What to do on failure
400 Fix the parameters or body per the field list; do not retry unchanged.409 Read the current state first; a retry of the same operation keeps the original Idempotency-Key and body.
↑ Back to list