Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for LXD external REST Storage API
53 actions
53 updates
phrasing
extends
openapi/canonical-storage-api-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Canonical's API. It is a proposal applied on top of the contract, not a document Canonical publishes.
What the actions change
x-apievangelist-phrasing
Targets 53 · first 16 shown; the file carries all of them
$.info
$.paths['/1.0/storage-pools'].get
$.paths['/1.0/storage-pools'].post
$.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].put
$.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].delete
$.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].patch
$.paths['/1.0/storage-pools/{name}/buckets/{bucketName}/keys/{keyName}'].put
$.paths['/1.0/storage-pools/{name}/buckets/{bucketName}/keys/{keyName}'].delete
$.paths['/1.0/storage-pools/{name}/resources'].get
$.paths['/1.0/storage-pools/{poolName}'].get
$.paths['/1.0/storage-pools/{poolName}'].put
$.paths['/1.0/storage-pools/{poolName}'].delete
$.paths['/1.0/storage-pools/{poolName}'].patch
$.paths['/1.0/storage-pools/{poolName}/buckets'].get
$.paths['/1.0/storage-pools/{poolName}/buckets'].post
$.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}'].get
OpenAPI Overlay
# Generated by API Evangelist (build-phrasing.py). Our phrasing, not observed demand.
overlay: 1.0.0
info:
title: API Evangelist conversational phrasing for LXD external REST Storage API
version: 1.0.0
extends: openapi/canonical-storage-api-openapi.yml
actions:
- target: $.info
update:
x-apievangelist-phrasing:
method: generated
generated: '2026-10-01'
generator: build-phrasing.py
label: Generated by API Evangelist
operations: 52
- target: $.paths['/1.0/storage-pools'].get
update:
x-apievangelist-phrasing:
intent: List storage pool URLs
effect: read
questions:
- Which storage pools exist on my LXD server, just as a list of URLs?
- Can I list the storage pool paths available to one project?
instructions:
- text: List the URLs of every LXD storage pool.
- text: Give me the storage pool URLs visible in project {project}.
slots:
project: query.project
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/storage-pools'].post
update:
x-apievangelist-phrasing:
intent: Create a storage pool
effect: write
questions:
- How do I add a new storage pool to LXD with a specific driver like zfs or btrfs?
- When clustered, do I have to create the pool on each member before the global create?
instructions:
- text: Create a storage pool named {name} using the {driver} driver.
slots:
name: requestBody.name
driver: requestBody.driver
- text: Define pool {name} with driver {driver} on cluster member {target} first.
slots:
name: requestBody.name
driver: requestBody.driver
target: query.target
- text: Add storage pool {name} described as {description}.
slots:
name: requestBody.name
description: requestBody.description
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].put
update:
x-apievangelist-phrasing:
intent: Replace a bucket's configuration
effect: write
questions:
- How do I overwrite all of a bucket's settings at once?
- Will a full bucket update reset config keys I omit?
instructions:
- text: Replace the entire configuration of bucket {bucket} in pool {pool} with {config}.
slots:
bucket: path.bucketName
pool: path.name
config: requestBody.config
- text: Overwrite the bucket settings and set its description to {description}.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a storage bucket
effect: destructive
questions:
- How do I remove an object storage bucket from a pool?
- Can I delete a bucket that belongs to another project?
instructions:
- text: Delete storage bucket {bucket} from pool {pool}.
slots:
bucket: path.bucketName
pool: path.name
- text: Remove the bucket from project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{name}/buckets/{bucketName}'].patch
update:
x-apievangelist-phrasing:
intent: Change some bucket settings
effect: write
questions:
- Can I change only a bucket's size limit without touching other settings?
- How do I edit just the description on an existing bucket?
instructions:
- text: 'Patch only these config keys on bucket {bucket} in pool {pool}: {config}.'
slots:
bucket: path.bucketName
pool: path.name
config: requestBody.config
- text: Update just the bucket description to {description}.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{name}/buckets/{bucketName}/keys/{keyName}'].put
update:
x-apievangelist-phrasing:
intent: Update a bucket access key
effect: write
questions:
- How do I change the role on an existing bucket key?
- Can I rotate the secret of a bucket key I already created?
instructions:
- text: Change the role of key {key} on bucket {bucket} in pool {pool} to {role}.
slots:
key: path.keyName
bucket: path.bucketName
pool: path.name
role: requestBody.role
- text: Rotate the bucket key to access key {access_key} and secret {secret_key}.
slots:
access_key: requestBody.access-key
secret_key: requestBody.secret-key
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{name}/buckets/{bucketName}/keys/{keyName}'].delete
update:
x-apievangelist-phrasing:
intent: Revoke a bucket access key
effect: destructive
questions:
- How do I revoke an access key so it can no longer reach the bucket?
- Can I delete a bucket key in a specific project?
instructions:
- text: Delete access key {key} from bucket {bucket} in pool {pool}.
slots:
key: path.keyName
bucket: path.bucketName
pool: path.name
- text: Revoke the bucket key in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{name}/resources'].get
update:
x-apievangelist-phrasing:
intent: Check storage pool usage
effect: read
questions:
- How much space is used and free in a storage pool?
- Can I check disk and inode usage of a pool on a particular cluster member?
instructions:
- text: Show the capacity and usage figures for storage pool {pool}.
slots:
pool: path.name
- text: Report pool resource usage on cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}'].get
update:
x-apievangelist-phrasing:
intent: Get one storage pool
effect: read
questions:
- What driver and settings does a particular storage pool use?
- Can I look up a single pool's details as seen by one cluster member?
instructions:
- text: Show me the details of storage pool {pool}.
slots:
pool: path.poolName
- text: Get that storage pool's configuration on cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}'].put
update:
x-apievangelist-phrasing:
intent: Replace a storage pool's configuration
effect: write
questions:
- How do I overwrite a storage pool's entire config in one request?
- Does replacing a pool's configuration drop keys I leave out?
instructions:
- text: Replace the whole configuration of storage pool {pool} with {config}.
slots:
pool: path.poolName
config: requestBody.config
- text: Overwrite the pool's config and set its description to {description}.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a storage pool
effect: destructive
questions:
- How do I remove a storage pool I no longer use?
- Can a storage pool be deleted from within a specific project?
instructions:
- text: Delete storage pool {pool}.
slots:
pool: path.poolName
- text: Remove the storage pool in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}'].patch
update:
x-apievangelist-phrasing:
intent: Change some storage pool settings
effect: write
questions:
- Can I tweak just one setting on a storage pool without resending everything?
- How do I update only the description of an existing storage pool?
instructions:
- text: 'Patch storage pool {pool} with only these config keys: {config}.'
slots:
pool: path.poolName
config: requestBody.config
- text: Change just the pool's description to {description}, leaving config alone.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets'].get
update:
x-apievangelist-phrasing:
intent: List bucket URLs in a storage pool
effect: read
questions:
- Which object storage buckets live in a given storage pool?
- Can I list bucket URLs across all projects at once?
instructions:
- text: List the bucket URLs in storage pool {pool}.
slots:
pool: path.poolName
- text: List bucket URLs in the pool for project {project}.
slots:
project: query.project
- text: 'List bucket URLs in the pool across all projects: {all_projects}.'
slots:
all_projects: query.all-projects
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets'].post
update:
x-apievangelist-phrasing:
intent: Create an object storage bucket
effect: write
questions:
- How do I create an S3-style bucket inside an LXD storage pool?
- Can I set a size or other config when creating a new bucket?
instructions:
- text: Create a bucket named {name} in storage pool {pool}.
slots:
name: requestBody.name
pool: path.poolName
- text: Add bucket {name} with config {config} in project {project}.
slots:
name: requestBody.name
config: requestBody.config
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}'].get
update:
x-apievangelist-phrasing:
intent: Get one storage bucket
effect: read
questions:
- What is the configuration and S3 endpoint of a specific bucket?
- Can I look up a single bucket's details in a given project?
instructions:
- text: Show me the details of bucket {bucket} in pool {pool}.
slots:
bucket: path.bucketName
pool: path.poolName
- text: Get the bucket record from project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}/keys'].get
update:
x-apievangelist-phrasing:
intent: List access key URLs for a bucket
effect: read
questions:
- Which access keys have been issued for a bucket?
- Can I get just the key paths for a bucket without the secrets?
instructions:
- text: List the access key URLs for bucket {bucket} in pool {pool}.
slots:
bucket: path.bucketName
pool: path.poolName
- text: Give me the bucket's key URLs in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}/keys'].post
update:
x-apievangelist-phrasing:
intent: Create a bucket access key
effect: write
questions:
- How do I generate a new access key for a storage bucket?
- Can I give a bucket key a read-only role or supply my own secret?
instructions:
- text: Create a key named {name} for bucket {bucket} in pool {pool} with role {role}.
slots:
name: requestBody.name
bucket: path.bucketName
pool: path.poolName
role: requestBody.role
- text: Add bucket key {name} using access key {access_key} and secret {secret_key}.
slots:
name: requestBody.name
access_key: requestBody.access-key
secret_key: requestBody.secret-key
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}/keys/{keyName}'].get
update:
x-apievangelist-phrasing:
intent: Get one bucket access key
effect: read
questions:
- What role and credentials does a particular bucket key have?
- Can I retrieve a single bucket key by name?
instructions:
- text: Reveal the role and credentials of access key {key} on bucket {bucket} in pool {pool}.
slots:
key: path.keyName
bucket: path.bucketName
pool: path.poolName
- text: Look up this single access key of the bucket in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets/{bucketName}/keys?recursion=1'].get
update:
x-apievangelist-phrasing:
intent: List bucket keys with full details
effect: read
questions:
- How do I see every bucket key with its role and credentials in one response?
- Is there an expanded listing of bucket keys instead of URLs?
instructions:
- text: Fetch all keys for bucket {bucket} in pool {pool} as full records including role.
slots:
bucket: path.bucketName
pool: path.poolName
- text: Expand every bucket key's details in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/buckets?recursion=1'].get
update:
x-apievangelist-phrasing:
intent: List buckets in a pool with full details
effect: read
questions:
- How do I get complete bucket records, with config and S3 URL, for a pool?
- Is there a recursive listing that expands each bucket instead of returning paths?
instructions:
- text: Fetch every bucket in pool {pool} as full objects rather than URLs.
slots:
pool: path.poolName
- text: Expand all bucket details in the pool for project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes'].get
update:
x-apievangelist-phrasing:
intent: List volume URLs in a storage pool
effect: read
questions:
- Which storage volumes are in one particular pool?
- Can I filter the volumes in a pool with a filter expression?
instructions:
- text: List the volume URLs in storage pool {pool}.
slots:
pool: path.poolName
- text: List volume URLs in this pool matching filter {filter}.
slots:
filter: query.filter
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes'].post
update:
x-apievangelist-phrasing:
intent: Create a storage volume in a pool
effect: write
questions:
- How do I create a new custom volume in a storage pool?
- Can I create a volume by copying from another volume as the source?
instructions:
- text: Create volume {name} of type {type} in storage pool {pool}.
slots:
name: requestBody.name
type: requestBody.type
pool: path.poolName
- text: Create volume {name} copied from source {source}.
slots:
name: requestBody.name
source: requestBody.source
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}'].get
update:
x-apievangelist-phrasing:
intent: List a pool's volume URLs of one type
effect: read
questions:
- How do I list only the custom volumes, or only image volumes, in a pool?
- Can I get the URLs of one volume type within a single pool?
instructions:
- text: List URLs of {volume_type} volumes in storage pool {pool}.
slots:
volume_type: path.type
pool: path.poolName
- text: List this pool's volume URLs of this type in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}'].post
update:
x-apievangelist-phrasing:
intent: Create a volume via the type-specific path
effect: write
questions:
- Can I create a volume by posting to the path that already names its type?
- How do I create a block content-type volume on the type-specific endpoint?
instructions:
- text: Using the type-specific path, create {volume_type} volume {name} in pool {pool} with content type {content_type}.
slots:
volume_type: path.type
name: requestBody.name
pool: path.poolName
content_type: requestBody.content_type
- text: On the typed volume endpoint, create {name} with config {config}.
slots:
name: requestBody.name
config: requestBody.config
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}'].get
update:
x-apievangelist-phrasing:
intent: Get one storage volume
effect: read
questions:
- What configuration does a specific storage volume have?
- Can I look up one volume's details on a particular cluster member?
instructions:
- text: Show me the details of {volume_type} volume {volume} in pool {pool}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Get the volume record as seen on cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}'].put
update:
x-apievangelist-phrasing:
intent: Replace a volume's configuration
effect: write
questions:
- How do I overwrite all of a storage volume's settings?
- Can a full volume update restore it from a snapshot?
instructions:
- text: Replace the entire config of {volume_type} volume {volume} in pool {pool} with {config}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
config: requestBody.config
- text: Overwrite the volume and restore it from snapshot {restore}.
slots:
restore: requestBody.restore
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}'].post
update:
x-apievangelist-phrasing:
intent: Rename, move or migrate a volume
effect: write
questions:
- How do I rename a storage volume?
- Can I move a volume to a different pool or migrate it to another server?
instructions:
- text: Rename {volume_type} volume {volume} in pool {pool} to {name}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
name: requestBody.name
- text: Move the volume into pool {pool}.
slots:
pool: requestBody.pool
- text: 'Move the volume to project {dest_project}, without its snapshots: {volume_only}.'
slots:
dest_project: requestBody.project
volume_only: requestBody.volume_only
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a storage volume
effect: destructive
questions:
- How do I delete a custom storage volume?
- Can I remove a volume that sits on a specific cluster member?
instructions:
- text: Delete {volume_type} storage volume {volume} from pool {pool}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Remove the volume from cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}'].patch
update:
x-apievangelist-phrasing:
intent: Change some volume settings
effect: write
questions:
- Can I change just the size of a volume without resending its whole config?
- How do I update only a volume's description?
instructions:
- text: 'Patch only these config keys on {volume_type} volume {volume} in pool {pool}: {config}.'
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
config: requestBody.config
- text: Set just the volume description to {description}.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups'].get
update:
x-apievangelist-phrasing:
intent: List volume backup URLs
effect: read
questions:
- Which backups exist for a storage volume?
- Can I list only the backup paths for a volume?
instructions:
- text: List backup URLs for {volume_type} volume {volume} in pool {pool}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: List the volume's backup URLs in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups'].post
update:
x-apievangelist-phrasing:
intent: Back up a storage volume
effect: write
questions:
- How do I create a backup of a custom volume?
- Can I set an expiry and compression algorithm on a volume backup?
instructions:
- text: Create a backup named {name} of {volume_type} volume {volume} in pool {pool}.
slots:
name: requestBody.name
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Back up the volume as {name}, compressed with {compression}, expiring {expires_at}.
slots:
name: requestBody.name
compression: requestBody.compression_algorithm
expires_at: requestBody.expires_at
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups/{backupName}'].get
update:
x-apievangelist-phrasing:
intent: Get one volume backup
effect: read
questions:
- When was a particular volume backup made and when does it expire?
- Can I look up a single volume backup's metadata?
instructions:
- text: Show me backup {backup} of {volume_type} volume {volume} in pool {pool}.
slots:
backup: path.backupName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Get the volume backup record in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups/{backupName}'].post
update:
x-apievangelist-phrasing:
intent: Rename a volume backup
effect: write
questions:
- How do I rename an existing volume backup?
- Can a volume backup be given a new name after it is created?
instructions:
- text: Rename backup {backup} of {volume_type} volume {volume} in pool {pool} to {name}.
slots:
backup: path.backupName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
name: requestBody.name
- text: Give the volume backup in project {project} the new name {name}.
slots:
project: query.project
name: requestBody.name
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups/{backupName}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a volume backup
effect: destructive
questions:
- How do I delete an old volume backup to free space?
- Can I remove a volume backup in a specific project?
instructions:
- text: Delete backup {backup} of {volume_type} volume {volume} in pool {pool}.
slots:
backup: path.backupName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Remove the volume backup in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups/{backupName}/export'].get
update:
x-apievangelist-phrasing:
intent: Download a volume backup file
effect: read
questions:
- How do I download the raw backup file of a storage volume?
- Can I export a volume backup off the server as a tarball?
instructions:
- text: Download the raw file for backup {backup} of {volume_type} volume {volume} in pool {pool}.
slots:
backup: path.backupName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Export the volume backup file from project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/backups?recursion=1'].get
update:
x-apievangelist-phrasing:
intent: List volume backups with full details
effect: read
questions:
- How do I see each volume backup with its creation and expiry dates?
- Is there an expanded view of a volume's backups instead of URLs?
instructions:
- text: Fetch full records for all backups of {volume_type} volume {volume} in pool {pool}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Expand the volume backups with expiry details in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots'].get
update:
x-apievangelist-phrasing:
intent: List volume snapshot URLs
effect: read
questions:
- Which snapshots have been taken of a storage volume?
- Can I list just the snapshot paths for a volume?
instructions:
- text: List snapshot URLs for {volume_type} volume {volume} in pool {pool}.
slots:
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: List the volume's snapshot URLs on cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots'].post
update:
x-apievangelist-phrasing:
intent: Snapshot a storage volume
effect: write
questions:
- How do I take a snapshot of a custom volume?
- Can I make a volume snapshot expire automatically?
instructions:
- text: Take a snapshot named {name} of {volume_type} volume {volume} in pool {pool}.
slots:
name: requestBody.name
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Snapshot the volume as {name}, expiring at {expires_at}.
slots:
name: requestBody.name
expires_at: requestBody.expires_at
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots/{snapshotName}'].get
update:
x-apievangelist-phrasing:
intent: Get one volume snapshot
effect: read
questions:
- What are the details of a particular volume snapshot?
- Can I check when a specific volume snapshot expires?
instructions:
- text: Show me snapshot {snapshot} of {volume_type} volume {volume} in pool {pool}.
slots:
snapshot: path.snapshotName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Get the volume snapshot record in project {project}.
slots:
project: query.project
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots/{snapshotName}'].put
update:
x-apievangelist-phrasing:
intent: Replace a volume snapshot's settings
effect: write
questions:
- How do I overwrite both the description and expiry of a volume snapshot?
- Does a full snapshot update clear the expiry if I leave it out?
instructions:
- text: 'Replace all settings of snapshot {snapshot} on {volume_type} volume {volume} in pool {pool}: description {description}, expiry {expires_at}.'
slots:
snapshot: path.snapshotName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
description: requestBody.description
expires_at: requestBody.expires_at
- text: Fully rewrite the volume snapshot with description {description}.
slots:
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots/{snapshotName}'].post
update:
x-apievangelist-phrasing:
intent: Rename a volume snapshot
effect: write
questions:
- How do I rename a snapshot of a storage volume?
- Can a volume snapshot be migrated to another target?
instructions:
- text: Rename snapshot {snapshot} of {volume_type} volume {volume} in pool {pool} to {name}.
slots:
snapshot: path.snapshotName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
name: requestBody.name
- text: Migrate the volume snapshot using target settings {target_spec}.
slots:
target_spec: requestBody.target
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/storage-pools/{poolName}/volumes/{type}/{volumeName}/snapshots/{snapshotName}'].delete
update:
x-apievangelist-phrasing:
intent: Delete a volume snapshot
effect: destructive
questions:
- How do I delete a volume snapshot I no longer need?
- Can I remove a volume snapshot on a particular cluster member?
instructions:
- text: Delete snapshot {snapshot} of {volume_type} volume {volume} in pool {pool}.
slots:
snapshot: path.snapshotName
volume_type: path.type
volume: path.volumeName
pool: path.poolName
- text: Remove the volume snapshot on cluster member {target}.
slots:
target: query.target
method: generated
generated: '2026-10-01'
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canonical/refs/heads/main/overlays/canonical-storage-api-phrasing-overlay.yaml