Skip to content

List volumes in a project.

GET
/v1/projects/{projectId}/compute/volumes
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/projects/example/compute/volumes \
--header 'Authorization: Bearer <token>'
projectId
required
string
/^p-[a-z0-9-]+$/

Volumes.

Media typeapplication/json
object
items
required
Array<object>
object
arn

Canonical Stratum ARN for this volume, for resource-policy targeting.

string
id
required
string
/^vol-[a-z0-9-]+$/
projectId
required
string
/^p-[a-z0-9-]+$/
name
required
string
/^[a-z][a-z0-9-]{1,38}[a-z0-9]$/
displayName
required
string
>= 1 characters <= 100 characters
description
string
sizeBytes
required
integer format: int64
>= 1073741824
storageClass
required
string
driver
string
Allowed values: lvm-thin ceph-rbd
pool
string
region
required
string
availabilityZone
required
string
nodeId
string
state
required
string
Allowed values: creating available attaching attached detaching resizing snapshotting cloning deleting deleted error
stateReason

. Human-readable cause. Set when state is error (e.g. a root-volume clone whose base image never staged within the cold-start deadline: “image base unavailable”), and while deleting when the delete is BLOCKED: the volume still has snapshots (waiting for snapshots snap-… to be deleted), the backing device is still held open, or the backend returned a transient error. A blocked delete is not a failure — the volume stays deleting and the worker re-attempts it about once a minute until the blocker clears (delete the snapshots and it goes); nothing needs re-issuing. Cleared on any other transition.

string
attachedTo
string
attachmentMode
string
Allowed values: rw rwx
sourceSnapshotId
string
sourceImageId
string
tags

AWS-shape resource tags. Freeform UTF-8 keys (1-128 bytes, no leading/trailing whitespace) mapped to freeform UTF-8 values (0-256 bytes). Max 50 tags per resource. Reserved prefixes (stratum.dev/, stratum.platform_health., stratum:, aws:) return 400 RESERVED_NAMESPACE on customer input. PATCH replaces the whole map..

object
<= 50 properties
key
additional properties
string
<= 256 characters
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
deletedAt
string format: date-time
nullable
createdBy
required
string
iopsLimit

The volume’s IOPS ceiling, applied as libvirt on its disk (the lower of this and the instance type’s cap wins). Omitted: the storage class default; above the class maximum: 400. Counts toward the project’s storage.io.iops quota.

integer
>= 1
throughputLimitMbps

The volume’s throughput ceiling in MB/s, like iopsLimit. Counts toward storage.io.mbps.

integer
>= 1
nextPageToken
string
isTruncated

True when the server had more rows than it returned. The response is a valid prefix of the result, not the whole of it.

Without this flag a client at the server’s row ceiling receives a full page and no nextPageToken, which means “this is the complete set” — so data it never saw would be indistinguishable from data that does not exist.

It does not imply a cursor exists. These queries do not all sort on a total order, so a resumable token cannot be minted for them yet. The remedy is to narrow the request (a filter, or a tighter scope), not to page.

boolean

Example

{
"items": [
{
"driver": "lvm-thin",
"state": "creating",
"attachmentMode": "rw"
}
]
}