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.
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
curl "https://apis.io/api/v1/json-schemas/longhorn-volume"
curl "https://apis.io/api/v1/json-schemas?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.