Longhorn · Schema
Longhorn Volume
Schema for Longhorn distributed block storage volumes. Longhorn volumes provide persistent block storage for Kubernetes workloads with automatic replication, snapshots, and backup to external storage targets.
BackupBlock StorageCloud-NativeIncubatingKubernetesPersistentVolumes
Properties
| Name | Type | Description |
|---|---|---|
| name | string | Unique name for the volume within the Longhorn namespace. |
| size | string | Size of the volume in bytes as a string, e.g. '10737418240' for 10 GiB. |
| numberOfReplicas | integer | Number of data replicas maintained across Longhorn nodes. Higher values increase durability but consume more storage. |
| state | string | Current lifecycle state of the volume. |
| robustness | string | Health status of the volume based on replica availability and data integrity. |
| frontend | string | Frontend protocol used to expose the volume to workloads. blockdev is the most common. |
| accessMode | string | Volume access mode. rwo is ReadWriteOnce for a single pod; rwx is ReadWriteMany for multiple pods. |
| dataLocality | string | Data locality policy. disabled places replicas freely; best-effort prefers the attached node; strict-local forces one replica on the attached node. |
| replicaAutoBalance | string | Automatic rebalancing policy for distributing replicas evenly across nodes. |
| encrypted | boolean | Whether the volume data is encrypted at rest using the configured encryption secret. |
| migratable | boolean | Whether the volume supports live migration between nodes. |
| backingImage | string | Name of a backing image to use as pre-populated base data for this volume. |
| currentImage | string | Longhorn engine image currently in use by this volume. |
| nodeSelector | array | Node tags to restrict which nodes can host replicas of this volume. |
| diskSelector | array | Disk tags to restrict which disks can host replicas of this volume. |
| recurringJobSelector | array | Recurring jobs and groups assigned to this volume for automated operations. |
| replicas | array | List of replica instances maintaining copies of this volume's data. |
| conditions | object | Map of named health conditions for the volume. |
| kubernetesStatus | object | Kubernetes PVC and PV binding status for this volume. |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://longhorn.io/schemas/volume.json",
"title": "Longhorn Volume",
"description": "Schema for Longhorn distributed block storage volumes. Longhorn volumes provide persistent block storage for Kubernetes workloads with automatic replication, snapshots, and backup to external storage targets.",
"type": "object",
"required": ["name", "size"],
"properties": {
"name": {
"type": "string",
"description": "Unique name for the volume within the Longhorn namespace.",
"minLength": 1,
"maxLength": 63,
"pattern": "^[a-z0-9][a-z0-9\\-\\.]*[a-z0-9]$"
},
"size": {
"type": "string",
"description": "Size of the volume in bytes as a string, e.g. '10737418240' for 10 GiB.",
"pattern": "^[0-9]+$"
},
"numberOfReplicas": {
"type": "integer",
"minimum": 1,
"maximum": 20,
"default": 3,
"description": "Number of data replicas maintained across Longhorn nodes. Higher values increase durability but consume more storage."
},
"state": {
"type": "string",
"enum": ["creating", "attached", "detached", "attaching", "detaching", "deleting"],
"description": "Current lifecycle state of the volume."
},
"robustness": {
"type": "string",
"enum": ["healthy", "degraded", "faulted", "unknown"],
"description": "Health status of the volume based on replica availability and data integrity."
},
"frontend": {
"type": "string",
"enum": ["blockdev", "iscsi", "nvmf"],
"default": "blockdev",
"description": "Frontend protocol used to expose the volume to workloads. blockdev is the most common."
},
"accessMode": {
"type": "string",
"enum": ["rwo", "rwx"],
"default": "rwo",
"description": "Volume access mode. rwo is ReadWriteOnce for a single pod; rwx is ReadWriteMany for multiple pods."
},
"dataLocality": {
"type": "string",
"enum": ["disabled", "best-effort", "strict-local"],
"default": "disabled",
"description": "Data locality policy. disabled places replicas freely; best-effort prefers the attached node; strict-local forces one replica on the attached node."
},
"replicaAutoBalance": {
"type": "string",
"enum": ["ignored", "disabled", "least-effort", "best-effort"],
"description": "Automatic rebalancing policy for distributing replicas evenly across nodes."
},
"encrypted": {
"type": "boolean",
"default": false,
"description": "Whether the volume data is encrypted at rest using the configured encryption secret."
},
"migratable": {
"type": "boolean",
"default": false,
"description": "Whether the volume supports live migration between nodes."
},
"backingImage": {
"type": "string",
"description": "Name of a backing image to use as pre-populated base data for this volume."
},
"currentImage": {
"type": "string",
"description": "Longhorn engine image currently in use by this volume."
},
"nodeSelector": {
"type": "array",
"description": "Node tags to restrict which nodes can host replicas of this volume.",
"items": {
"type": "string",
"description": "Node tag name."
}
},
"diskSelector": {
"type": "array",
"description": "Disk tags to restrict which disks can host replicas of this volume.",
"items": {
"type": "string",
"description": "Disk tag name."
}
},
"recurringJobSelector": {
"type": "array",
"description": "Recurring jobs and groups assigned to this volume for automated operations.",
"items": { "$ref": "#/$defs/RecurringJobRef" }
},
"replicas": {
"type": "array",
"description": "List of replica instances maintaining copies of this volume's data.",
"items": { "$ref": "#/$defs/Replica" }
},
"conditions": {
"type": "object",
"description": "Map of named health conditions for the volume.",
"additionalProperties": { "$ref": "#/$defs/Condition" }
},
"kubernetesStatus": {
"$ref": "#/$defs/KubernetesStatus",
"description": "Kubernetes PVC and PV binding status for this volume."
}
},
"$defs": {
"Replica": {
"type": "object",
"description": "A Longhorn replica storing a copy of volume data on a specific node and disk.",
"properties": {
"name": {
"type": "string",
"description": "Unique name of the replica instance."
},
"hostId": {
"type": "string",
"description": "Kubernetes node name where this replica is located."
},
"diskID": {
"type": "string",
"description": "Disk identifier on the node where this replica's data is stored."
},
"dataPath": {
"type": "string",
"description": "Full file system path to the replica data directory on the node."
},
"mode": {
"type": "string",
"enum": ["RW", "WO", "ERR"],
"description": "Replica mode. RW means fully operational; WO means write-only during rebuilding; ERR means the replica has failed."
},
"running": {
"type": "boolean",
"description": "Whether the replica process is currently running."
},
"failedAt": {
"type": "string",
"description": "Timestamp when the replica last failed, if applicable."
}
}
},
"Snapshot": {
"type": "object",
"description": "A point-in-time snapshot of a Longhorn volume.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Unique name of the snapshot within the volume."
},
"created": {
"type": "string",
"description": "Timestamp when the snapshot was created."
},
"size": {
"type": "string",
"description": "Storage consumed by this snapshot in bytes as a string."
},
"parent": {
"type": "string",
"description": "Name of the parent snapshot in the chain."
},
"removed": {
"type": "boolean",
"description": "Whether this snapshot has been marked for removal."
},
"usercreated": {
"type": "boolean",
"description": "Whether this snapshot was created manually. False indicates a system-created snapshot."
},
"labels": {
"type": "object",
"description": "Labels applied to this snapshot.",
"additionalProperties": {
"type": "string",
"description": "Label value."
}
}
}
},
"RecurringJobRef": {
"type": "object",
"description": "Reference to a recurring job or group assigned to a volume.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Name of the recurring job or group."
},
"isGroup": {
"type": "boolean",
"description": "Whether this reference is to a group rather than an individual job."
}
}
},
"RecurringJob": {
"type": "object",
"description": "A Longhorn recurring job for scheduling automated snapshot or backup operations.",
"required": ["name", "task", "cron", "retain"],
"properties": {
"name": {
"type": "string",
"description": "Unique name of the recurring job.",
"maxLength": 63
},
"task": {
"type": "string",
"enum": [
"snapshot",
"snapshot-force-create",
"snapshot-cleanup",
"snapshot-delete",
"backup",
"backup-force-create",
"filesystem-trim"
],
"description": "Type of operation this recurring job performs."
},
"cron": {
"type": "string",
"description": "Cron expression defining the schedule, e.g. '0 2 * * *' for 2:00 AM daily."
},
"retain": {
"type": "integer",
"minimum": 0,
"description": "Number of snapshots or backups to retain. Older items are automatically deleted."
},
"concurrency": {
"type": "integer",
"minimum": 1,
"default": 1,
"description": "Maximum number of volumes to process simultaneously when this job fires."
},
"labels": {
"type": "object",
"description": "Labels to apply to snapshots or backups created by this job.",
"additionalProperties": {
"type": "string",
"description": "Label value."
}
},
"groups": {
"type": "array",
"description": "Group names this job belongs to. Volumes assigned to the group will be processed.",
"items": {
"type": "string",
"description": "Group name."
}
}
}
},
"Node": {
"type": "object",
"description": "A Longhorn storage node participating in the cluster.",
"required": ["name"],
"properties": {
"name": {
"type": "string",
"description": "Node identifier, matching the Kubernetes node name."
},
"allowScheduling": {
"type": "boolean",
"description": "Whether new replicas can be scheduled on this node."
},
"evictionRequested": {
"type": "boolean",
"description": "Whether replica eviction has been requested for this node."
},
"tags": {
"type": "array",
"description": "Tags applied to this node for workload placement affinity.",
"items": {
"type": "string",
"description": "Tag value."
}
},
"disks": {
"type": "object",
"description": "Map of disk configurations on this node keyed by disk name.",
"additionalProperties": { "$ref": "#/$defs/DiskSpec" }
},
"conditions": {
"type": "object",
"description": "Health conditions for the node.",
"additionalProperties": { "$ref": "#/$defs/Condition" }
}
}
},
"DiskSpec": {
"type": "object",
"description": "Configuration for a disk available for Longhorn replica storage.",
"required": ["path"],
"properties": {
"path": {
"type": "string",
"description": "File system path to the disk or directory used for Longhorn storage."
},
"allowScheduling": {
"type": "boolean",
"description": "Whether new replicas can be scheduled on this disk."
},
"evictionRequested": {
"type": "boolean",
"description": "Whether eviction of replicas from this disk has been requested."
},
"storageReserved": {
"type": "integer",
"minimum": 0,
"description": "Storage in bytes reserved for non-Longhorn use on this disk."
},
"tags": {
"type": "array",
"description": "Tags for disk affinity in volume and replica placement.",
"items": {
"type": "string",
"description": "Tag value."
}
}
}
},
"Condition": {
"type": "object",
"description": "A health condition for a Longhorn resource.",
"properties": {
"status": {
"type": "string",
"enum": ["True", "False", "Unknown"],
"description": "Status of the condition."
},
"reason": {
"type": "string",
"description": "Machine-readable reason for the condition."
},
"message": {
"type": "string",
"description": "Human-readable message for the condition."
},
"lastProbeTime": {
"type": "string",
"description": "Timestamp of the last condition probe."
},
"lastTransitionTime": {
"type": "string",
"description": "Timestamp of the last condition transition."
}
}
},
"KubernetesStatus": {
"type": "object",
"description": "Kubernetes PVC and PV binding status for a Longhorn volume.",
"properties": {
"pvName": {
"type": "string",
"description": "Name of the Kubernetes PersistentVolume bound to this Longhorn volume."
},
"pvStatus": {
"type": "string",
"description": "Status of the PersistentVolume."
},
"pvcName": {
"type": "string",
"description": "Name of the Kubernetes PersistentVolumeClaim using this volume."
},
"namespace": {
"type": "string",
"description": "Namespace of the PVC."
},
"lastPVCRefAt": {
"type": "string",
"description": "Timestamp when the PVC was last bound."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/longhorn-volume"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.