MethodPathSummaryAuth
GET/v1/admin/control-backupSigner fingerprint, freeze state, bundles, recent runs and redacted settingsSession
POST/v1/admin/control-backup/backupsQueue an immediate backupSession
DELETE/v1/admin/control-backup/backups/{backup_id}Queue deletion of a bundle and its remote copies; body confirm must equal backup_idSession
GET/v1/admin/control-backup/backups/{backup_id}/restore-commandsText commands to restore a bundle onto an empty host (nothing is executed)Session
POST/v1/admin/control-backup/host-keyRead an SSH host key fingerprint to pin before a migrationSession
POST/v1/admin/control-backup/migrationsQueue a migration to an empty new host; confirm must equal host. This control plane stays frozen after success.Session
POST/v1/admin/control-backup/recovery-kitDownload the backup identity sealed with a passphrase (scrypt) for off-host disaster recoverySession
GET/v1/admin/control-backup/runs/{run_id}One agent run with its redacted logSession
PUT/v1/admin/control-backup/settingsReplace schedule, retention and off-host targetsSession
POST/v1/admin/control-backup/targets/probeWrite, read back and delete a probe object on the target as on screen (nothing is saved)Session

Contract file:api/control-native-backup.openapi.yaml

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
StatusDescription
200Status
401Authentication required
403Permission 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
StatusDescription
202Queued run
409Another 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
NameInTypeRequiredDescription
backup_idpathstringYes—

Responses

deleteControlBackup Responses
StatusDescription
202Queued
400Confirmation 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
NameInTypeRequiredDescription
backup_idpathstringYes—

Responses

getControlBackupRestoreCommands Responses
StatusDescription
200Commands

↑ 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
StatusDescription
200Fingerprint
502Host 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
StatusDescription
202Queued run
400Invalid target or confirmation mismatch
409Busy

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
StatusDescription
200Recovery kit JSON
400Passphrase 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
NameInTypeRequiredDescription
run_idpathstringYes—

Responses

getControlBackupRun Responses
StatusDescription
200Run
404Unknown 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
StatusDescription
200Updated status
400Invalid settings or a refused target credential
409The 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
StatusDescription
200Probe result (ok and a redacted message)
400Invalid target or a refused credential
409The 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