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.
View Overlay File View on GitHub Overlay Specification

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

Raw ↑
# 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'