Canonical · OpenAPI Overlay 1.0.0
API Evangelist conversational phrasing for LXD external REST Cluster API
15 actions
15 updates
phrasing
extends
openapi/canonical-cluster-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 15
$.info
$.paths['/1.0/cluster'].get
$.paths['/1.0/cluster'].put
$.paths['/1.0/cluster/certificate'].put
$.paths['/1.0/cluster/groups'].post
$.paths['/1.0/cluster/members'].get
$.paths['/1.0/cluster/members'].post
$.paths['/1.0/cluster/members/{name}'].get
$.paths['/1.0/cluster/members/{name}'].put
$.paths['/1.0/cluster/members/{name}'].post
$.paths['/1.0/cluster/members/{name}'].delete
$.paths['/1.0/cluster/members/{name}'].patch
$.paths['/1.0/cluster/members/{name}/state'].get
$.paths['/1.0/cluster/members/{name}/state'].post
$.paths['/1.0/cluster/members?recursion=1'].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 Cluster API
version: 1.0.0
extends: openapi/canonical-cluster-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: 14
- target: $.paths['/1.0/cluster'].get
update:
x-apievangelist-phrasing:
intent: Get the LXD cluster configuration
effect: read
questions:
- Is clustering enabled on my LXD server and what is its configuration?
- Where can I see the current LXD cluster settings?
instructions:
- text: Show the current LXD cluster configuration.
- text: Check whether this LXD server is clustered and with what settings.
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster'].put
update:
x-apievangelist-phrasing:
intent: Replace the LXD cluster configuration
effect: write
questions:
- How do I enable clustering on an LXD server or join it to an existing cluster?
- Can I set the server name and cluster address for LXD clustering in one call?
instructions:
- text: Enable LXD clustering with server name {server_name}.
slots:
server_name: requestBody.server_name
- text: Join this server to the LXD cluster at {cluster_address} using join token {cluster_token}.
slots:
cluster_address: requestBody.cluster_address
cluster_token: requestBody.cluster_token
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster/certificate'].put
update:
x-apievangelist-phrasing:
intent: Replace the cluster certificate
effect: write
questions:
- How do I rotate the TLS certificate used by my whole LXD cluster?
- Does replacing the cluster certificate reload LXD on every member?
instructions:
- text: Replace the LXD cluster certificate with {cert} and key {key}.
slots:
cert: requestBody.cluster_certificate
key: requestBody.cluster_certificate_key
- text: Install a new cluster-wide certificate {cert} on every LXD member.
slots:
cert: requestBody.cluster_certificate
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster/groups'].post
update:
x-apievangelist-phrasing:
intent: Create a cluster group
effect: write
questions:
- Can I group some LXD cluster members together for placement?
- How do I create a named cluster group with chosen members?
instructions:
- text: Create cluster group {name} containing members {members}.
slots:
name: requestBody.name
members: requestBody.members
- text: Add a new LXD cluster group {name} described as {description}.
slots:
name: requestBody.name
description: requestBody.description
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster/members'].get
update:
x-apievangelist-phrasing:
intent: List cluster member URLs
effect: read
questions:
- Which servers are members of my LXD cluster?
- What are the URLs of every LXD cluster member?
instructions:
- text: List the URLs of all LXD cluster members.
- text: Show which servers belong to this cluster.
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster/members'].post
update:
x-apievangelist-phrasing:
intent: Request a join token for a new member
effect: write
questions:
- How do I get a join token so a new server can join the LXD cluster?
- What do I need before adding another machine to my cluster?
instructions:
- text: Create a cluster join token for new server {server_name}.
slots:
server_name: requestBody.server_name
- text: Generate a token so {server_name} can join this LXD cluster.
slots:
server_name: requestBody.server_name
method: generated
generated: '2026-09-26'
- target: $.paths['/1.0/cluster/members/{name}'].get
update:
x-apievangelist-phrasing:
intent: Get one cluster member
effect: read
questions:
- Can I see the roles and failure domain of a single LXD cluster member?
- Where do I look up the configuration of one cluster member?
instructions:
- text: Show the details of the named cluster member.
- text: Get the roles and groups of one specific LXD cluster member.
- text: Get the roles, groups and address of member {member}.
slots:
member: path.name
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}'].put
update:
x-apievangelist-phrasing:
intent: Replace a cluster member's configuration
effect: write
questions:
- How do I overwrite all settings of one LXD cluster member?
- Can I set a member's failure domain, roles and groups in one full update?
instructions:
- text: Replace the cluster member's configuration with roles {roles} and groups {groups}.
slots:
roles: requestBody.roles
groups: requestBody.groups
- text: Set the whole member config, putting it in failure domain {failure_domain}.
slots:
failure_domain: requestBody.failure_domain
- text: Replace the full configuration of cluster member {member} with roles {roles}.
slots:
member: path.name
roles: requestBody.roles
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}'].post
update:
x-apievangelist-phrasing:
intent: Rename a cluster member
effect: write
questions:
- Can I rename a server that is already in my LXD cluster?
- How do I change a cluster member's name?
instructions:
- text: Rename the cluster member to {server_name}.
slots:
server_name: requestBody.server_name
- text: Give this LXD cluster member the new name {server_name}.
slots:
server_name: requestBody.server_name
- text: Rename cluster member {member} to {server_name}.
slots:
member: path.name
server_name: requestBody.server_name
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}'].delete
update:
x-apievangelist-phrasing:
intent: Remove a member from the cluster
effect: destructive
questions:
- How do I remove a server from my LXD cluster?
- What happens to a machine when it is deleted from the cluster?
instructions:
- text: Remove the named member from the LXD cluster.
- text: Delete this server from the cluster membership.
- text: Kick server {member} out of this cluster.
slots:
member: path.name
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}'].patch
update:
x-apievangelist-phrasing:
intent: Update some settings of a cluster member
effect: write
questions:
- Can I change just the description of an LXD cluster member without resending everything?
- Is there a partial update for a member's roles?
instructions:
- text: Change only the description of the cluster member to {description}.
slots:
description: requestBody.description
- text: Patch the member's roles to {roles}, leaving other settings untouched.
slots:
roles: requestBody.roles
- text: Patch cluster member {member} so only its description becomes {description}.
slots:
member: path.name
description: requestBody.description
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}/state'].get
update:
x-apievangelist-phrasing:
intent: Get a cluster member's state
effect: read
questions:
- What is the current state of one LXD cluster member?
- Can I check whether a cluster member is evacuated?
instructions:
- text: Show the state of the named cluster member.
- text: Check if this LXD member is currently evacuated or online.
- text: Check whether member {member} is online or evacuated.
slots:
member: path.name
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members/{name}/state'].post
update:
x-apievangelist-phrasing:
intent: Evacuate or restore a cluster member
effect: write
questions:
- How do I evacuate all instances off an LXD cluster member before maintenance?
- Can I bring an evacuated cluster member back into service?
instructions:
- text: Run the {action} action on the cluster member.
slots:
action: requestBody.action
- text: Evacuate the member using mode {mode}, forcing it if needed ({force}).
slots:
mode: requestBody.mode
force: requestBody.force
- text: Evacuate cluster member {member} using action {action}.
slots:
member: path.name
action: requestBody.action
method: generated
generated: '2026-10-01'
- target: $.paths['/1.0/cluster/members?recursion=1'].get
update:
x-apievangelist-phrasing:
intent: List cluster members with full details
effect: read
questions:
- Can I get every LXD cluster member's full record in one call rather than just URLs?
- Which request returns expanded cluster member objects?
instructions:
- text: List all cluster members with their full details expanded.
- text: Show every LXD member's status, roles and address in one response.
method: generated
generated: '2026-09-26'