Longhorn Backups API
Backup operations for storing volume snapshots to external storage targets such as S3-compatible storage or NFS. Backups can be restored to new volumes for disaster recovery.
Backup operations for storing volume snapshots to external storage targets such as S3-compatible storage or NFS. Backups can be restored to new volumes for disaster recovery.
openapi: 3.1.0
info:
title: Longhorn Manager BackingImages Backups API
description: The Longhorn Manager REST API provides programmatic access to all Longhorn storage management operations. The API follows the Rancher REST API specification and is served by the Longhorn Manager service, typically accessible within a Kubernetes cluster at port 9500 or via the longhorn-backend service. It provides full lifecycle management for volumes, snapshots, backups, nodes, disks, engine images, recurring jobs, and system settings. The API is used by the Longhorn UI and can be accessed directly for automation and integration. The schema is discoverable at /v1/schemas.
version: '1.11'
contact:
name: Longhorn Community
url: https://longhorn.io/community/
servers:
- url: http://{longhornManagerHost}:{longhornManagerPort}
description: Longhorn Manager API server (in-cluster via service or port-forward)
variables:
longhornManagerHost:
default: longhorn-backend
description: Hostname or service name for the Longhorn Manager.
longhornManagerPort:
default: '9500'
description: Port on which Longhorn Manager serves the API.
security:
- bearerAuth: []
tags:
- name: Backups
description: Backup operations for storing volume snapshots to external storage targets such as S3-compatible storage or NFS. Backups can be restored to new volumes for disaster recovery.
paths:
/v1/volumes/{volumeName}?action=snapshotBackup:
post:
operationId: backupSnapshot
summary: Longhorn Back up a snapshot
description: Triggers a backup of a specific snapshot to the configured external backup target (S3 or NFS). The backup is asynchronous; monitor the backup resource to track progress.
tags:
- Backups
parameters:
- $ref: '#/components/parameters/volumeName'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BackupInput'
responses:
'200':
description: Backup initiated.
content:
application/json:
schema:
$ref: '#/components/schemas/Volume'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/backupvolumes:
get:
operationId: listBackupVolumes
summary: Longhorn List backup volumes
description: Returns a list of all backup volumes in the configured backup target. A backup volume contains one or more backups of a Longhorn volume. This endpoint queries the external backup store.
tags:
- Backups
responses:
'200':
description: Backup volume list retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/BackupVolumeCollection'
'401':
$ref: '#/components/responses/Unauthorized'
/v1/backupvolumes/{backupVolumeName}:
get:
operationId: getBackupVolume
summary: Longhorn Get a backup volume
description: Returns details of a specific backup volume from the backup store including the list of available backups and their metadata.
tags:
- Backups
parameters:
- $ref: '#/components/parameters/backupVolumeName'
responses:
'200':
description: Backup volume details retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/BackupVolume'
'401':
$ref: '#/components/responses/Unauthorized'
'404':
$ref: '#/components/responses/NotFound'
/v1/backupvolumes/{backupVolumeName}/backups:
get:
operationId: listBackups
summary: Longhorn List backups for a backup volume
description: Returns a list of all backups stored for a specific backup volume. Each backup corresponds to a snapshot of the source Longhorn volume at the time the backup was created.
tags:
- Backups
parameters:
- $ref: '#/components/parameters/backupVolumeName'
responses:
'200':
description: Backup list retrieved successfully.
content:
application/json:
schema:
$ref: '#/components/schemas/BackupCollection'
'401':
$ref: '#/components/responses/Unauthorized'
components:
schemas:
BackupInput:
type: object
description: Input for backing up a snapshot to external storage.
required:
- name
properties:
name:
type: string
description: Name of the snapshot to back up.
labels:
type: object
description: Labels to apply to the backup.
additionalProperties:
type: string
APIError:
type: object
description: API error response.
properties:
type:
type: string
description: Error type identifier.
status:
type: integer
description: HTTP status code.
code:
type: string
description: Machine-readable error code.
message:
type: string
description: Human-readable error message.
BackupVolume:
type: object
description: A backup volume in the external backup store corresponding to a Longhorn volume.
properties:
id:
type: string
description: Identifier of the backup volume, typically matching the source volume name.
name:
type: string
description: Name of the backup volume.
size:
type: string
description: Total size of all backups in this backup volume.
created:
type: string
description: Timestamp of the first backup.
lastBackupName:
type: string
description: Name of the most recent backup.
lastBackupAt:
type: string
description: Timestamp of the most recent backup.
backingImageName:
type: string
description: Name of the backing image used by the source volume, if any.
Replica:
type: object
description: A Longhorn replica instance storing a copy of volume data on a node.
properties:
name:
type: string
description: Unique name of the replica.
hostId:
type: string
description: Node where this replica is located.
diskID:
type: string
description: Disk on the node where this replica stores data.
diskPath:
type: string
description: File system path on the disk for this replica's data.
dataPath:
type: string
description: Full path to the replica data directory.
mode:
type: string
enum:
- RW
- WO
- ERR
description: Replica mode. RW is read-write; WO is write-only during rebuild; ERR is error state.
running:
type: boolean
description: Whether the replica process is currently running.
failedAt:
type: string
description: Timestamp when the replica last failed, if applicable.
BackupVolumeCollection:
type: object
description: A collection of backup volumes.
properties:
data:
type: array
description: List of backup volume resources.
items:
$ref: '#/components/schemas/BackupVolume'
Volume:
type: object
description: A Longhorn volume representing a block storage device that can be attached to Kubernetes nodes. Longhorn creates a dedicated storage controller and the configured number of replicas across nodes.
properties:
id:
type: string
description: Unique name/identifier of the volume.
name:
type: string
description: Name of the volume.
size:
type: string
description: Size of the volume in bytes as a string.
numberOfReplicas:
type: integer
description: Number of replicas maintained for this volume.
state:
type: string
enum:
- creating
- attached
- detached
- attaching
- detaching
- deleting
description: Current state of the volume.
robustness:
type: string
enum:
- healthy
- degraded
- faulted
- unknown
description: Health state of the volume based on replica status.
frontend:
type: string
enum:
- blockdev
- iscsi
- nvmf
description: Frontend type used to expose the volume to workloads.
accessMode:
type: string
enum:
- rwo
- rwx
description: Volume access mode. rwo is ReadWriteOnce; rwx is ReadWriteMany.
migratable:
type: boolean
description: Whether the volume can be migrated live between nodes.
encrypted:
type: boolean
description: Whether the volume data is encrypted at rest.
dataLocality:
type: string
enum:
- disabled
- best-effort
- strict-local
description: Data locality policy controlling replica placement relative to the attached node.
snapshotDataIntegrity:
type: string
description: Setting for snapshot data integrity checking.
replicaAutoBalance:
type: string
description: Auto-balance policy for replica placement.
currentImage:
type: string
description: Engine image currently in use by this volume.
baseImage:
type: string
description: Backing image used as the base for this volume, if any.
conditions:
type: object
description: Health conditions for the volume.
additionalProperties:
type: object
replicas:
type: array
description: List of replica instances for this volume.
items:
$ref: '#/components/schemas/Replica'
recurringJobSelector:
type: array
description: Recurring jobs assigned to this volume.
items:
type: object
properties:
name:
type: string
description: Name of the recurring job.
isGroup:
type: boolean
description: Whether this is a group reference.
kubernetesStatus:
type: object
description: Kubernetes PVC/PV binding status for this volume.
Backup:
type: object
description: A backup stored in the external backup target for a Longhorn volume snapshot.
properties:
id:
type: string
description: Unique identifier of the backup.
name:
type: string
description: Name of the backup.
snapshotName:
type: string
description: Name of the snapshot this backup was created from.
snapshotCreated:
type: string
description: Timestamp when the source snapshot was created.
created:
type: string
description: Timestamp when the backup was completed.
size:
type: string
description: Size of the backup data in bytes.
labels:
type: object
description: Labels associated with this backup.
additionalProperties:
type: string
url:
type: string
description: URL of this backup in the backup store.
BackupCollection:
type: object
description: A collection of backup resources.
properties:
data:
type: array
description: List of backup resources.
items:
$ref: '#/components/schemas/Backup'
responses:
NotFound:
description: The requested resource was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
Unauthorized:
description: Authentication credentials are missing or invalid.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
BadRequest:
description: The request was malformed or contained invalid parameters.
content:
application/json:
schema:
$ref: '#/components/schemas/APIError'
parameters:
backupVolumeName:
name: backupVolumeName
in: path
required: true
description: Name of the backup volume in the backup store.
schema:
type: string
volumeName:
name: volumeName
in: path
required: true
description: Name of the Longhorn volume.
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: Kubernetes service account token for authenticating with the Longhorn Manager API. Typically passed via the Kubernetes API proxy.
externalDocs:
description: Longhorn Documentation
url: https://longhorn.io/docs/