List cluster-state recovery points (newest first).
curl --request GET \ --url 'https://stratum.example.com/v1/backup/admin/recovery-points?scope=cluster-state' \ --header 'Authorization: Bearer <token>'Cedar action backup:Read. One item per backup attempt
running/succeeded/failed — with the bundle name on the target, size,
checksum, and the capture manifest. prunedAt marks bundles that
retention has already deleted (row kept as history, bundle gone).
scope=volume lists per-volume tenant-data backups instead
including those whose volume row was deleted (the manifest’s source
carries the original volume’s name/size/class), so they can be found
and restored into a new volume via restore-to-new-volume.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Query Parameters
Section titled “Query Parameters”cluster-state (default) or volume.
Responses
Section titled “Responses”Recovery point list.
List envelope for GET /v1/backup/admin/recovery-points.
object
One backup attempt (v1); cluster-state or per-volume.
object
Rp-… identifier.
What this recovery point backs up (adds volume).
The backed-up resource for scope=volume (a vol- id); absent for cluster-state.
Bundle file name on the target (stratum-backup-…tar.age).
What a bundle contains — readable without decrypting it. Also embedded as manifest.json inside the bundle.
object
object
One captured artifact. sizeBytes -1 marks an optional item that was absent at capture time (recorded, not shipped).
object
The source volume a per-volume bundle was taken from — recorded at backup time so a NEW volume can be created from the bundle after the original row is gone. Absent on cluster-state bundles and on volume bundles produced before. sizeBytes is the plaintext image size (the source volume’s provisioned size), not the ciphertext size.
object
Hex sha256 of the plaintext image (pre-compression), recorded at backup time; restore verifies the imported bytes against it and rolls back on mismatch. Empty on older bundles.
True when the source volume was LUKS-encrypted under its own key (lvm-thin volume encryption). The bundle then holds ciphertext that only the source volume’s key opens: it restores in place onto that volume, and a restore into a new volume is refused. Absent on plaintext volumes and on older bundles.
Why the backup failed (status failed), for a person.
A failed volume backup’s stable refusal code, for a
client to branch on: BACKUP_UNSUPPORTED (the volume’s driver cannot
export) or VOLUME_NOT_ON_THIS_NODE (a node-local lvm-thin volume on
another node than the control plane that ran the backup, e.g. a plan
run on the leader). Absent for any other failure.
Owning project for plan-produced points; absent on admin points.
Producing backup plan (bp-…); absent on admin points.
Containing backup vault (bv-…); absent on admin points.
Set once retention deleted the bundle; the row stays as history.
How the bundle was produced (/854): full = standalone raw export; base = an incremental chain’s root; diff = an increment that only restores together with its ancestors. Absent means full.
The recovery point this diff builds on (chain lineage,); only set for diff points. Walk it to the base to render a chain.
Number of segments (base through this point) the point’s restore applies. 1 for full/base. Single-point reads only; compute chains client-side on lists via parentRpId.
Summed bundle bytes across the chain (base + diffs up to this point). Single-point reads only.
Example
{ "items": [ { "scope": "cluster-state", "status": "running", "backupKind": "full" } ]}Bad request.
object
The findings of a rejected IAM policy document (custom and resource policies).
One finding of a rejected IAM policy document. A rejection lists every finding, so the author fixes the document in one round trip.
object
The finding, e.g. INVALID_DOCUMENT, UNKNOWN_ACTION, ACTION_NOT_APPLICABLE.
Index of the statement at fault; -1 for the document as a whole.
The offending action, where one is at fault (ACTION_NOT_APPLICABLE).
Field errors, for codes that carry them: each problem at its field
(see FieldError). Documented on the responses that set it, e.g.
approveNodeJoin’s INVALID_INPUT and JOIN_APPROVAL_REFUSED.
Absent otherwise.
One field’s problem, the stage-2 installer API’s shape.
field is the field’s path, message what is wrong with it.
object
The field’s path, e.g. links[0].interface, disks[1].confirm,
mgmt.address or role; empty for the whole request.
Structured facts about the refusal, for codes that carry them. The
shape is fixed per code and documented on the response that answers
it, e.g. IMAGE_POOL_MISMATCH (see ImagePoolMismatchDetails) and
IMAGE_IN_USE. Absent for codes that carry none.
object
Example
{ "issues": [ { "code": "ACTION_NOT_APPLICABLE", "action": "compute:CreateVpc" } ]}