LXD REST API

The REST API used by every LXD client. LXD is Canonical's system container and virtual machine manager; the API is available over a local unix+http socket and over remote https, authenticated by TLS client certificate, OIDC identity, or unix group membership for local users. Canonical publishes the full contract as a Swagger 2.0 document with 169 paths, 333 operations and 236 schema definitions — the largest and most complete API contract in the Canonical portfolio. Capability discovery is through the api_extensions[] array on GET /1.0 rather than a path version bump; the path has been /1.0 since 2016.

Operations 334

Showing the first 250 of 334. The full set is in the contract, and via get_provider_operations.

GET / Get the supported API endpoints #
GET /1.0 Get the server environment and configuration #
PATCH /1.0 Partially update the server configuration #
PUT /1.0 Update the server configuration #
GET /1.0/auth/groups Get the groups #
POST /1.0/auth/groups Create a new authorization group #
DELETE /1.0/auth/groups/{groupName} Delete the authorization group #
GET /1.0/auth/groups/{groupName} Get the authorization group #
PATCH /1.0/auth/groups/{groupName} Partially update the authorization group #
POST /1.0/auth/groups/{groupName} Rename the authorization group #
PUT /1.0/auth/groups/{groupName} Update the authorization group #
GET /1.0/auth/groups?recursion=1 Get the groups #
GET /1.0/auth/identities Get the identities #
GET /1.0/auth/identities/bearer Get the bearer identities #
POST /1.0/auth/identities/bearer Add a bearer identity. #
DELETE /1.0/auth/identities/bearer/{nameOrID}/token Revoke a bearer identity token. #
POST /1.0/auth/identities/bearer/{nameOrID}/token Issue a token for a bearer identity. #
DELETE /1.0/auth/identities/bearer/{nameOrIdentifier} Delete the bearer identity #
GET /1.0/auth/identities/bearer/{nameOrIdentifier} Get the bearer identity #
PATCH /1.0/auth/identities/bearer/{nameOrIdentifier} Partially update the bearer identity #
PUT /1.0/auth/identities/bearer/{nameOrIdentifier} Update the bearer identity #
GET /1.0/auth/identities/bearer?recursion=1 Get the bearer identities #
GET /1.0/auth/identities/current Get the current identity #
GET /1.0/auth/identities/oidc Get the OIDC identities #
DELETE /1.0/auth/identities/oidc/{nameOrIdentifier} Delete the OIDC identity #
GET /1.0/auth/identities/oidc/{nameOrIdentifier} Get the OIDC identity #
PATCH /1.0/auth/identities/oidc/{nameOrIdentifier} Partially update the OIDC identity #
PUT /1.0/auth/identities/oidc/{nameOrIdentifier} Update the OIDC identity #
GET /1.0/auth/identities/oidc?recursion=1 Get the OIDC identities #
GET /1.0/auth/identities/tls Get the TLS identities #
POST /1.0/auth/identities/tls Add a TLS identity. #
DELETE /1.0/auth/identities/tls/{nameOrIdentifier} Delete the TLS identity #
GET /1.0/auth/identities/tls/{nameOrIdentifier} Get the TLS identity #
PATCH /1.0/auth/identities/tls/{nameOrIdentifier} Partially update the TLS identity #
PUT /1.0/auth/identities/tls/{nameOrIdentifier} Update the TLS identity #
POST /1.0/auth/identities/tls?public Add a TLS identity #
GET /1.0/auth/identities/tls?recursion=1 Get the TLS identities #
GET /1.0/auth/identities?recursion=1 Get the identities #
GET /1.0/auth/identity-provider-groups Get the identity provider groups #
POST /1.0/auth/identity-provider-groups Create a new identity provider group #
DELETE /1.0/auth/identity-provider-groups/{idpGroupName} Delete the identity provider group #
GET /1.0/auth/identity-provider-groups/{idpGroupName} Get the identity provider group #
PATCH /1.0/auth/identity-provider-groups/{idpGroupName} Partially update the identity provider group #
POST /1.0/auth/identity-provider-groups/{idpGroupName} Rename the identity provider group #
PUT /1.0/auth/identity-provider-groups/{idpGroupName} Update the identity provider group #
GET /1.0/auth/identity-provider-groups?recursion=1 Get the groups #
GET /1.0/auth/oidc-sessions Get OIDC session URLs #
DELETE /1.0/auth/oidc-sessions/{id} Delete an OIDC session #
GET /1.0/auth/oidc-sessions/{id} Get the OIDC session #
GET /1.0/auth/oidc-sessions?recursion=1 Get the OIDC sessions #
GET /1.0/auth/permissions Get the permissions #
GET /1.0/auth/permissions?recursion=1 Get the permissions #
GET /1.0/certificates Get the trusted certificates #
POST /1.0/certificates Add a trusted certificate #
DELETE /1.0/certificates/{fingerprint} Delete the trusted certificate #
GET /1.0/certificates/{fingerprint} Get the trusted certificate #
PATCH /1.0/certificates/{fingerprint} Partially update the trusted certificate #
PUT /1.0/certificates/{fingerprint} Update the trusted certificate #
POST /1.0/certificates?public Add a trusted certificate #
GET /1.0/certificates?recursion=1 Get the trusted certificates #
GET /1.0/cluster Get the cluster configuration #
PUT /1.0/cluster Update the cluster configuration #
PUT /1.0/cluster/certificate Update the certificate for the cluster #
GET /1.0/cluster/groups Get the cluster groups #
POST /1.0/cluster/groups Create a cluster group. #
DELETE /1.0/cluster/groups/{name} Delete the cluster group. #
GET /1.0/cluster/groups/{name} Get the cluster group #
PATCH /1.0/cluster/groups/{name} Update the cluster group #
POST /1.0/cluster/groups/{name} Rename the cluster group #
PUT /1.0/cluster/groups/{name} Update the cluster group #
GET /1.0/cluster/groups?recursion=1 Get the cluster groups #
POST /1.0/cluster/links Add a cluster link #
POST /1.0/cluster/links/{name} Rename the cluster link #
GET /1.0/cluster/members Get the cluster members #
POST /1.0/cluster/members Request a join token #
DELETE /1.0/cluster/members/{name} Delete the cluster member #
GET /1.0/cluster/members/{name} Get the cluster member #
PATCH /1.0/cluster/members/{name} Partially update the cluster member #
POST /1.0/cluster/members/{name} Rename the cluster member #
PUT /1.0/cluster/members/{name} Update the cluster member #
GET /1.0/cluster/members/{name}/state Get state of the cluster member #
POST /1.0/cluster/members/{name}/state Evacuate or restore a cluster member #
GET /1.0/cluster/members?recursion=1 Get the cluster members #
GET /1.0/events Get the event stream #
GET /1.0/images Get the images #
POST /1.0/images Add an image #
DELETE /1.0/images/{fingerprint} Delete the image #
GET /1.0/images/{fingerprint} Get the image #
PATCH /1.0/images/{fingerprint} Partially update the image #
PUT /1.0/images/{fingerprint} Update the image #
GET /1.0/images/{fingerprint}/export Get the raw image file(s) #
POST /1.0/images/{fingerprint}/export Make LXD push the image to a remote server #
GET /1.0/images/{fingerprint}/export?public Get the raw image file(s) #
POST /1.0/images/{fingerprint}/refresh Refresh an image #
POST /1.0/images/{fingerprint}/secret Generate secret for retrieval of the image by an untrusted client #
GET /1.0/images/{fingerprint}?public Get the public image #
GET /1.0/images/aliases Get the image aliases #
POST /1.0/images/aliases Add an image alias #
DELETE /1.0/images/aliases/{name} Delete the image alias #
GET /1.0/images/aliases/{name} Get the image alias #
PATCH /1.0/images/aliases/{name} Partially update the image alias #
POST /1.0/images/aliases/{name} Rename the image alias #
PUT /1.0/images/aliases/{name} Update the image alias #
GET /1.0/images/aliases/{name}?public Get the public image alias #
GET /1.0/images/aliases?recursion=1 Get the image aliases #
GET /1.0/images?public Get the public images #
POST /1.0/images?public Add an image #
GET /1.0/images?public&recursion=1 Get the public images #
GET /1.0/images?recursion=1 Get the images #
GET /1.0/instances Get the instances #
POST /1.0/instances Create a new instance #
PUT /1.0/instances Bulk instance state update #
DELETE /1.0/instances/{name} Delete an instance #
GET /1.0/instances/{name} Get the instance #
PATCH /1.0/instances/{name} Partially update the instance #
POST /1.0/instances/{name} Rename or move/migrate an instance #
PUT /1.0/instances/{name} Update the instance #
GET /1.0/instances/{name}/backups Get the backups #
POST /1.0/instances/{name}/backups Create a backup #
DELETE /1.0/instances/{name}/backups/{backup} Delete a backup #
GET /1.0/instances/{name}/backups/{backup} Get the backup #
POST /1.0/instances/{name}/backups/{backup} Rename a backup #
GET /1.0/instances/{name}/backups/{backup}/export Get the raw backup file(s) #
GET /1.0/instances/{name}/backups?recursion=1 Get the backups #
DELETE /1.0/instances/{name}/console Clear the console log #
GET /1.0/instances/{name}/console Get console log #
POST /1.0/instances/{name}/console Connect to console #
POST /1.0/instances/{name}/exec Run a command #
DELETE /1.0/instances/{name}/files Delete a file #
GET /1.0/instances/{name}/files Get a file #
HEAD /1.0/instances/{name}/files Get metadata for a file #
POST /1.0/instances/{name}/files Create or replace a file #
GET /1.0/instances/{name}/logs Get the log files #
GET /1.0/instances/{name}/logs/{filename} Get the log file #
GET /1.0/instances/{name}/logs/exec-output Get the exec record-output files #
DELETE /1.0/instances/{name}/logs/exec-output/{filename} Delete the exec record-output file #
GET /1.0/instances/{name}/logs/exec-output/{filename} Get the exec-output log file #
GET /1.0/instances/{name}/metadata Get the instance image metadata #
PATCH /1.0/instances/{name}/metadata Partially update the image metadata #
PUT /1.0/instances/{name}/metadata Update the image metadata #
DELETE /1.0/instances/{name}/metadata/templates Delete a template file #
GET /1.0/instances/{name}/metadata/templates Get the template file names or a specific #
POST /1.0/instances/{name}/metadata/templates Create or replace a template file #
POST /1.0/instances/{name}/rebuild Rebuild an instance #
GET /1.0/instances/{name}/sftp Get the instance SFTP connection #
GET /1.0/instances/{name}/snapshots Get the snapshots #
POST /1.0/instances/{name}/snapshots Create a snapshot #
DELETE /1.0/instances/{name}/snapshots/{snapshot} Delete a snapshot #
GET /1.0/instances/{name}/snapshots/{snapshot} Get the snapshot #
PATCH /1.0/instances/{name}/snapshots/{snapshot} Partially update snapshot #
POST /1.0/instances/{name}/snapshots/{snapshot} Rename or move/migrate a snapshot #
PUT /1.0/instances/{name}/snapshots/{snapshot} Update snapshot #
GET /1.0/instances/{name}/snapshots?recursion=1 Get the snapshots #
GET /1.0/instances/{name}/state Get the runtime state #
PUT /1.0/instances/{name}/state Change the state #
GET /1.0/instances/{name}/uefi-vars Get the instance's UEFI variables #
PUT /1.0/instances/{name}/uefi-vars Set the instance's UEFI variables #
GET /1.0/instances/{name}?recursion=1 Get the instance #
GET /1.0/instances?recursion=1 Get the instances #
GET /1.0/instances?recursion=2 Get the instances #
GET /1.0/metadata/configuration Get the metadata configuration #
GET /1.0/metrics Get metrics #
GET /1.0/network-acls Get the network ACLs #
POST /1.0/network-acls Add a network ACL #
DELETE /1.0/network-acls/{name} Delete the network ACL #
GET /1.0/network-acls/{name} Get the network ACL #
PATCH /1.0/network-acls/{name} Partially update the network ACL #
POST /1.0/network-acls/{name} Rename the network ACL #
PUT /1.0/network-acls/{name} Update the network ACL #
GET /1.0/network-acls/{name}/log Get the network ACL log #
GET /1.0/network-acls?recursion=1 Get the network ACLs #
GET /1.0/network-allocations Get the network allocations in use (`network`, `network-forward`, `load-balancer`, `uplink` and `instance`) #
GET /1.0/network-zones Get the network zones #
POST /1.0/network-zones Add a network zone #
DELETE /1.0/network-zones/{zone} Delete the network zone #
GET /1.0/network-zones/{zone} Get the network zone #
PATCH /1.0/network-zones/{zone} Partially update the network zone #
PUT /1.0/network-zones/{zone} Update the network zone #
GET /1.0/network-zones/{zone}/records Get the network zone records #
POST /1.0/network-zones/{zone}/records Add a network zone record #
DELETE /1.0/network-zones/{zone}/records/{name} Delete the network zone record #
GET /1.0/network-zones/{zone}/records/{name} Get the network zone record #
PATCH /1.0/network-zones/{zone}/records/{name} Partially update the network zone record #
PUT /1.0/network-zones/{zone}/records/{name} Update the network zone record #
GET /1.0/network-zones/{zone}/records?recursion=1 Get the network zone records #
GET /1.0/network-zones?recursion=1 Get the network zones #
GET /1.0/networks Get the networks #
POST /1.0/networks Add a network #
DELETE /1.0/networks/{name} Delete the network #
GET /1.0/networks/{name} Get the network #
PATCH /1.0/networks/{name} Partially update the network #
POST /1.0/networks/{name} Rename the network #
PUT /1.0/networks/{name} Update the network #
GET /1.0/networks/{name}/leases Get the DHCP leases #
GET /1.0/networks/{name}/state Get the network state #
GET /1.0/networks/{networkName}/forwards Get the network address forwards #
POST /1.0/networks/{networkName}/forwards Add a network address forward #
DELETE /1.0/networks/{networkName}/forwards/{listenAddress} Delete the network address forward #
GET /1.0/networks/{networkName}/forwards/{listenAddress} Get the network address forward #
PATCH /1.0/networks/{networkName}/forwards/{listenAddress} Partially update the network address forward #
PUT /1.0/networks/{networkName}/forwards/{listenAddress} Update the network address forward #
GET /1.0/networks/{networkName}/forwards?recursion=1 Get the network address forwards #
GET /1.0/networks/{networkName}/load-balancer-pools List network load balancer pools #
POST /1.0/networks/{networkName}/load-balancer-pools Add a network load balancer pool #
DELETE /1.0/networks/{networkName}/load-balancer-pools/{poolName} Delete a network load balancer pool #
GET /1.0/networks/{networkName}/load-balancer-pools/{poolName} Get a network load balancer pool #
PUT /1.0/networks/{networkName}/load-balancer-pools/{poolName} Update a network load balancer pool #
GET /1.0/networks/{networkName}/load-balancer-pools/{poolName}/state Get the state of a network load balancer pool #
GET /1.0/networks/{networkName}/load-balancers Get the network address of load balancers #
POST /1.0/networks/{networkName}/load-balancers Add a network load balancer #
DELETE /1.0/networks/{networkName}/load-balancers/{listenAddress} Delete the network address load balancer #
GET /1.0/networks/{networkName}/load-balancers/{listenAddress} Get the network address load balancer #
PATCH /1.0/networks/{networkName}/load-balancers/{listenAddress} Partially update the network address load balancer #
PUT /1.0/networks/{networkName}/load-balancers/{listenAddress} Update the network address load balancer #
GET /1.0/networks/{networkName}/load-balancers?recursion=1 Get the network address load balancers #
GET /1.0/networks/{networkName}/peers Get the network peers #
POST /1.0/networks/{networkName}/peers Add a network peer #
DELETE /1.0/networks/{networkName}/peers/{peerName} Delete the network peer #
GET /1.0/networks/{networkName}/peers/{peerName} Get the network peer #
PATCH /1.0/networks/{networkName}/peers/{peerName} Partially update the network peer #
PUT /1.0/networks/{networkName}/peers/{peerName} Update the network peer #
GET /1.0/networks/{networkName}/peers?recursion=1 Get the network peers #
GET /1.0/networks?recursion=1 Get the networks #
GET /1.0/operations Get the operations #
DELETE /1.0/operations/{id} Cancel the operation #
GET /1.0/operations/{id} Get the operation state #
GET /1.0/operations/{id}/wait Wait for the operation #
GET /1.0/operations/{id}/wait?public Wait for the operation #
GET /1.0/operations/{id}/websocket Get the websocket stream #
GET /1.0/operations/{id}/websocket?public Get the websocket stream #
GET /1.0/operations?recursion=1 Get the operations #
GET /1.0/placement-groups Get the placement groups #
POST /1.0/placement-groups Add a placement group #
DELETE /1.0/placement-groups/{name} Delete the placement group #
GET /1.0/placement-groups/{name} Get the placement group #
PATCH /1.0/placement-groups/{name} Partially update the placement group #
POST /1.0/placement-groups/{name} Rename a placement group #
PUT /1.0/placement-groups/{name} Update the placement group #
GET /1.0/placement-groups?recursion=1 Get the placement groups #
GET /1.0/profiles Get the profiles #
POST /1.0/profiles Add a profile #
DELETE /1.0/profiles/{name} Delete the profile #
GET /1.0/profiles/{name} Get the profile #

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/lxd-rest-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

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.

OpenAPI Specification

canonical-lxd-rest-api-openapi.yml Raw ↑
definitions:
    AuthGroup:
        properties:
            access_entitlements:
                description: AccessEntitlements represents the entitlements that are granted to the requesting user on the attached entity.
                example:
                    - can_view
                    - can_edit
                items:
                    type: string
                type: array
                x-go-name: AccessEntitlements
            description:
                description: Description is a short description of the group.
                example: Viewers of instance c1 in the default project
                type: string
                x-go-name: Description
            identities:
                additionalProperties:
                    items:
                        type: string
                    type: array
                description: Identities is a map of authentication method to slice of identity identifiers.
                type: object
                x-go-name: Identities
            identity_provider_groups:
                description: |-
                    IdentityProviderGroups are a list of groups from the IdP whose mapping
                    includes this group.
                example:
                    - sales
                    - operations
                items:
                    type: string
                type: array
                x-go-name: IdentityProviderGroups
            name:
                description: Name is the name of the group.
                example: default-c1-viewers
                type: string
                x-go-name: Name
            permissions:
                description: Permissions are a list of permissions.
                items:
                    $ref: '#/definitions/Permission'
                type: array
                x-go-name: Permissions
        title: AuthGroup is the type for a LXD group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    AuthGroupPost:
        properties:
            name:
                description: Name is the name of the group.
                example: default-c1-viewers
                type: string
                x-go-name: Name
        title: AuthGroupPost is used for renaming a group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    AuthGroupPut:
        properties:
            description:
                description: Description is a short description of the group.
                example: Viewers of instance c1 in the default project
                type: string
                x-go-name: Description
            permissions:
                description: Permissions are a list of permissions.
                items:
                    $ref: '#/definitions/Permission'
                type: array
                x-go-name: Permissions
        title: AuthGroupPut contains the editable fields of a group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    AuthGroupsPost:
        properties:
            description:
                description: Description is a short description of the group.
                example: Viewers of instance c1 in the default project
                type: string
                x-go-name: Description
            name:
                description: Name is the name of the group.
                example: default-c1-viewers
                type: string
                x-go-name: Name
            permissions:
                description: Permissions are a list of permissions.
                items:
                    $ref: '#/definitions/Permission'
                type: array
                x-go-name: Permissions
        title: AuthGroupsPost is used for creating a new group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    Certificate:
        description: Certificate represents a LXD certificate
        properties:
            access_entitlements:
                description: AccessEntitlements represents the entitlements that are granted to the requesting user on the attached entity.
                example:
                    - can_view
                    - can_edit
                items:
                    type: string
                type: array
                x-go-name: AccessEntitlements
            certificate:
                description: |-
                    The certificate itself, as PEM encoded X509 certificate

                    API extension: certificate_self_renewal
                example: X509 PEM certificate
                type: string
                x-go-name: Certificate
            fingerprint:
                description: SHA256 fingerprint of the certificate
                example: fd200419b271f1dc2a5591b693cc5774b7f234e1ff8c6b78ad703b6888fe2b69
                readOnly: true
                type: string
                x-go-name: Fingerprint
            name:
                description: Name associated with the certificate
                example: castiana
                type: string
                x-go-name: Name
            projects:
                description: |-
                    List of allowed projects (applies when restricted)

                    API extension: certificate_project
                example:
                    - default
                    - foo
                    - bar
                items:
                    type: string
                type: array
                x-go-name: Projects
            restricted:
                description: |-
                    Whether to limit the certificate to listed projects

                    API extension: certificate_project
                example: true
                type: boolean
                x-go-name: Restricted
            type:
                description: Usage type for the certificate
                example: client
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    CertificateAddToken:
        properties:
            addresses:
                description: The addresses of the server
                example:
                    - 10.98.30.229:8443
                items:
                    type: string
                type: array
                x-go-name: Addresses
            client_name:
                description: The name of the new client
                example: user@host
                type: string
                x-go-name: ClientName
            expires_at:
                description: The token's expiry date.
                example: "2021-03-23T17:38:37.753398689-04:00"
                format: date-time
                type: string
                x-go-name: ExpiresAt
            fingerprint:
                description: The fingerprint of the network certificate
                example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436
                type: string
                x-go-name: Fingerprint
            secret:
                description: The random join secret
                example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd
                type: string
                x-go-name: Secret
            type:
                description: |-
                    Type is an indicator for which API (certificates or identities) to send the token.

                    API extension: access_management_tls
                example: Client certificate
                type: string
                x-go-name: Type
        title: CertificateAddToken represents the fields contained within an encoded certificate add token.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    CertificatePut:
        description: CertificatePut represents the modifiable fields of a LXD certificate
        properties:
            certificate:
                description: |-
                    The certificate itself, as PEM encoded X509 certificate

                    API extension: certificate_self_renewal
                example: X509 PEM certificate
                type: string
                x-go-name: Certificate
            name:
                description: Name associated with the certificate
                example: castiana
                type: string
                x-go-name: Name
            projects:
                description: |-
                    List of allowed projects (applies when restricted)

                    API extension: certificate_project
                example:
                    - default
                    - foo
                    - bar
                items:
                    type: string
                type: array
                x-go-name: Projects
            restricted:
                description: |-
                    Whether to limit the certificate to listed projects

                    API extension: certificate_project
                example: true
                type: boolean
                x-go-name: Restricted
            type:
                description: Usage type for the certificate
                example: client
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    CertificatesPost:
        description: CertificatesPost represents the fields of a new LXD certificate
        properties:
            certificate:
                description: |-
                    The certificate itself, as base64 encoded X509 PEM certificate

                    API extension: certificate_self_renewal
                example: base64 encoded X509 PEM certificate
                type: string
                x-go-name: Certificate
            name:
                description: Name associated with the certificate
                example: castiana
                type: string
                x-go-name: Name
            password:
                description: |-
                    Server trust password (used to add an untrusted client, deprecated, use trust_token)

                    Deprecated: Use TrustToken.
                example: blah
                type: string
                x-deprecated: true
                x-go-name: Password
            projects:
                description: |-
                    List of allowed projects (applies when restricted)

                    API extension: certificate_project
                example:
                    - default
                    - foo
                    - bar
                items:
                    type: string
                type: array
                x-go-name: Projects
            restricted:
                description: |-
                    Whether to limit the certificate to listed projects

                    API extension: certificate_project
                example: true
                type: boolean
                x-go-name: Restricted
            token:
                description: |-
                    Whether to create a certificate add token

                    API extension: certificate_token
                example: true
                type: boolean
                x-go-name: Token
            trust_token:
                description: |-
                    Trust token (used to add an untrusted client)

                    API extension: explicit_trust_token
                example: blah
                type: string
                x-go-name: TrustToken
            type:
                description: Usage type for the certificate
                example: client
                type: string
                x-go-name: Type
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    Cluster:
        properties:
            enabled:
                description: Whether clustering is enabled
                example: true
                type: boolean
                x-go-name: Enabled
            member_config:
                description: |-
                    List of member configuration keys (used during join)

                    API extension: clustering_join
                example: []
                items:
                    $ref: '#/definitions/ClusterMemberConfigKey'
                type: array
                x-go-name: MemberConfig
            server_name:
                description: Name of the cluster member answering the request
                example: lxd01
                type: string
                x-go-name: ServerName
        title: Cluster represents high-level information about a LXD cluster.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterCertificatePut:
        description: ClusterCertificatePut represents the certificate and key pair for all members in a LXD Cluster
        properties:
            cluster_certificate:
                description: The new certificate (X509 PEM encoded) for the cluster
                example: X509 PEM certificate
                type: string
                x-go-name: ClusterCertificate
            cluster_certificate_key:
                description: The new certificate key (X509 PEM encoded) for the cluster
                example: X509 PEM certificate key
                type: string
                x-go-name: ClusterCertificateKey
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterGroup:
        properties:
            description:
                description: The description of the cluster group
                example: amd64 servers
                type: string
                x-go-name: Description
            members:
                description: List of members in this group
                example:
                    - node1
                    - node3
                items:
                    type: string
                type: array
                x-go-name: Members
            name:
                description: The new name of the cluster group
                example: group1
                type: string
                x-go-name: Name
            used_by:
                description: |-
                    UsedBy is a list or LXD entity URLs that reference the cluster group.

                    API extension: clustering_groups_used_by
                items:
                    type: string
                type: array
                x-go-name: UsedBy
        title: ClusterGroup represents a cluster group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterGroupPost:
        properties:
            name:
                description: The new name of the cluster group
                example: group1
                type: string
                x-go-name: Name
        title: ClusterGroupPost represents the fields required to rename a cluster group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterGroupPut:
        properties:
            description:
                description: The description of the cluster group
                example: amd64 servers
                type: string
                x-go-name: Description
            members:
                description: List of members in this group
                example:
                    - node1
                    - node3
                items:
                    type: string
                type: array
                x-go-name: Members
        title: ClusterGroupPut represents the modifiable fields of a cluster group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterGroupsPost:
        properties:
            description:
                description: The description of the cluster group
                example: amd64 servers
                type: string
                x-go-name: Description
            members:
                description: List of members in this group
                example:
                    - node1
                    - node3
                items:
                    type: string
                type: array
                x-go-name: Members
            name:
                description: The new name of the cluster group
                example: group1
                type: string
                x-go-name: Name
        title: ClusterGroupsPost represents the fields available for a new cluster group.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLink:
        properties:
            access_entitlements:
                description: AccessEntitlements represents the entitlements that are granted to the requesting user on the attached entity.
                example:
                    - can_view
                    - can_edit
                items:
                    type: string
                type: array
                x-go-name: AccessEntitlements
            config:
                additionalProperties:
                    type: string
                description: Cluster link configuration map (refer to doc/clustering.md).
                example:
                    user.*: ""
                type: object
                x-go-name: Config
            description:
                description: Description of the cluster link.
                example: Backup LXD cluster
                type: string
                x-go-name: Description
            name:
                description: Name of the cluster link.
                example: lxd02
                type: string
                x-go-name: Name
            type:
                description: Type of cluster link.
                example: bidirectional
                type: string
                x-go-name: Type
            used_by:
                description: |-
                    UsedBy is a list of LXD entity URLs that reference the cluster link.

                    API extension: cluster_links_used_by
                example:
                    - /1.0/replicators/my-replicator?project=default
                items:
                    type: string
                type: array
                x-go-name: UsedBy
        title: ClusterLink represents high-level information about a cluster link.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinkCertificate:
        description: |-
            It is returned when creating a pending public cluster link, and its fingerprint must be submitted
            back as ClusterLinksPost.Fingerprint to confirm and pin the certificate.
        properties:
            fingerprint:
                description: SHA-256 fingerprint of the certificate.
                example: a1b2c3d4..
                type: string
                x-go-name: Fingerprint
        title: ClusterLinkCertificate represents a remote cluster certificate fetched for user verification.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinkMemberState:
        properties:
            address:
                description: Address at which the cluster member can be reached.
                example: 10.0.0.1:8443
                type: string
                x-go-name: Address
            server_name:
                description: Name of the cluster member.
                example: lxd01
                type: string
                x-go-name: ServerName
            status:
                description: Cluster member's status.
                example: Active
                type: string
                x-go-name: Status
        title: ClusterLinkMemberState represents the state of a cluster member on a linked cluster.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinkPost:
        properties:
            name:
                description: Name of the cluster link.
                example: lxd02
                type: string
                x-go-name: Name
        title: ClusterLinkPost represents the fields available for renaming a cluster link.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinkPut:
        properties:
            config:
                additionalProperties:
                    type: string
                description: Cluster link configuration map (refer to doc/clustering.md).
                example:
                    user.*: ""
                type: object
                x-go-name: Config
            description:
                description: Description of the cluster link.
                example: Linked cluster
                type: string
                x-go-name: Description
        title: ClusterLinkPut represents the modifiable fields of a cluster link.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinkState:
        properties:
            cluster_link_members:
                description: ClusterLinkMembers represents the state of cluster members on a linked cluster.
                example:
                    - address: 10.0.0.1:8443
                      server_name: lxd01
                      status: Active
                    - address: 10.0.0.2:8443
                      server_name: lxd02
                      status: Unreachable
                items:
                    $ref: '#/definitions/ClusterLinkMemberState'
                type: array
                x-go-name: ClusterLinkMembersState
        title: ClusterLinkState represents the state of a linked cluster.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterLinksPost:
        properties:
            auth_groups:
                description: List of auth groups this cluster link belongs to.
                example:
                    - foo
                    - bar
                items:
                    type: string
                type: array
                x-go-name: AuthGroups
            cluster_certificate:
                description: The certificate (X509 PEM encoded) for the linked cluster. This is included in server-side POST requests to activate the pending cluster link on the linked cluster that generated the trust token.
                example: X509 PEM certificate
                type: string
                x-go-name: ClusterCertificate
            config:
                additionalProperties:
                    type: string
                description: Cluster link configuration map (refer to doc/clustering.md).
                example:
                    user.*: ""
                type: object
                x-go-name: Config
            description:
                description: Description of the cluster link.
                example: Linked cluster
                type: string
                x-go-name: Description
            fingerprint:
                description: |-
                    Fingerprint of the remote cluster's certificate, echoed back to confirm a pending public
                    cluster link. It must match the fingerprint returned when the pending link was created; the
                    certificate itself is not resubmitted, as the server pins the copy it already holds.
                    API extension: cluster_links_public.
                example: a1b2c3d4..
                type: string
                x-go-name: Fingerprint
            name:
                description: Name of the cluster.
                example: lxd02
                type: string
                x-go-name: Name
            remote_address:
                description: |-
                    RemoteAddress is the address of the remote cluster, used for public links. It is the address
                    contacted when creating a pending public cluster link, and is required for that request only.
                    Confirming the link pins the address recorded when the pending link was created, so the link
                    always points at the address that was verified; setting this field on a confirm request is
                    rejected.
                example: 10.0.0.1:8443
                type: string
                x-go-name: RemoteAddress
            trust_token:
                description: |-
                    TrustToken for creating a cluster link. This is included in requests to create an active cluster link on the local cluster and activate a pending cluster link on the linked cluster.
                    API extension: explicit_trust_token
                type: string
                x-go-name: TrustToken
            type:
                description: |-
                    Type of the cluster link.
                    Currently only "bidirectional" is supported.
                example: bidirectional
                type: string
                x-go-name: Type
        title: ClusterLinksPost represents the fields available for a new cluster link.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterMember:
        properties:
            architecture:
                description: |-
                    The primary architecture of the cluster member

                    API extension: clustering_architecture
                example: x86_64
                type: string
                x-go-name: Architecture
            config:
                additionalProperties:
                    type: string
                description: |-
                    Additional configuration information

                    API extension: clustering_config
                example:
                    scheduler.instance: all
                type: object
                x-go-name: Config
            database:
                description: Whether the cluster member is a database server (database-leader, database-voter, or database-standby)
                example: true
                type: boolean
                x-go-name: Database
            description:
                description: |-
                    Cluster member description

                    API extension: clustering_description
                example: AMD Epyc 32c/64t
                type: string
                x-go-name: Description
            failure_domain:
                description: |-
                    Name of the failure domain for this cluster member

                    API extension: clustering_failure_domains
                example: rack1
                type: string
                x-go-name: FailureDomain
            groups:
                description: |-
                    List of cluster groups this member belongs to

                    API extension: clustering_groups
                example:
                    - group1
                    - group2
                items:
                    type: string
                type: array
                x-go-name: Groups
            message:
                description: Additional status information
                example: fully operational
                type: string
                x-go-name: Message
            roles:
                description: |-
                    List of roles held by this cluster member

                    API extension: clustering_roles
                example:
                    - database
                items:
                    type: string
                type: array
                x-go-name: Roles
            server_name:
                description: Name of the cluster member
                example: lxd01
                type: string
                x-go-name: ServerName
            status:
                description: Current status
                example: Online
                type: string
                x-go-name: Status
            url:
                description: URL at which the cluster member can be reached
                example: https://10.0.0.1:8443
                type: string
                x-go-name: URL
        title: ClusterMember represents the a LXD node in the cluster.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterMemberConfigKey:
        description: |-
            The Value field is empty when getting clustering information with GET
            1.0/cluster, and should be filled by the joining node when performing a PUT
            1.0/cluster join request.
        properties:
            description:
                description: A human friendly description key
                example: '"source" property for storage pool "local"'
                type: string
                x-go-name: Description
            entity:
                description: The kind of configuration key (network, storage-pool, ...)
                example: storage-pool
                type: string
                x-go-name: Entity
            key:
                description: The name of the key
                example: source
                type: string
                x-go-name: Key
            name:
                description: The name of the object requiring this key
                example: local
                type: string
                x-go-name: Name
            value:
                description: The value on the answering cluster member
                example: /dev/sdb
                type: string
                x-go-name: Value
        title: |-
            ClusterMemberConfigKey represents a single config key that a new member of
            the cluster is required to provide when joining.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterMemberJoinToken:
        properties:
            addresses:
                description: The addresses of existing online cluster members
                example:
                    - 10.98.30.229:8443
                items:
                    type: string
                type: array
                x-go-name: Addresses
            expires_at:
                description: The token's expiry date.
                example: "2021-03-23T17:38:37.753398689-04:00"
                format: date-time
                type: string
                x-go-name: ExpiresAt
            fingerprint:
                description: The fingerprint of the network certificate
                example: 57bb0ff4340b5bb28517e062023101adf788c37846dc8b619eb2c3cb4ef29436
                type: string
                x-go-name: Fingerprint
            secret:
                description: The random join secret.
                example: 2b2284d44db32675923fe0d2020477e0e9be11801ff70c435e032b97028c35cd
                type: string
                x-go-name: Secret
            server_name:
                description: The name of the new cluster member
                example: lxd02
                type: string
                x-go-name: ServerName
        title: ClusterMemberJoinToken represents the fields contained within an encoded cluster member join token.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterMemberPost:
        properties:
            server_name:
                description: The new name of the cluster member
                example: lxd02
                type: string
                x-go-name: ServerName
        title: ClusterMemberPost represents the fields required to rename a LXD node.
        type: object
        x-go-package: github.com/canonical/lxd/shared/api
    ClusterMemberPut:
        description: ClusterMemberPut represents the modifiable fields of a LXD cluster member
        properties:
            config:
                additionalProperties:
                    type: string
                description: |-
                    Additional configuration information

                    API extension: clustering_config
                example:
                    scheduler.instance: all
                type: object
                x-go-name: Config
            description:
                description: |-
                    Cluster member description

                    API extension: clustering_description
                example: AMD Epyc 32c/64t
                type: string
                x-go-name: Description
            failure_domain:
                description: |-
                    Name of the failure domain for this cluster member

                    API extension: clustering_failure_domains
                example: rack1
                type: string
                x-go-name: FailureDomain
            groups:
                description: |-
                    List of cluster groups this member belongs to

                    API extension: clustering_groups
                example:
                    - group1
                    - group2


# --- truncated at 32 KB (783 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canonical/refs/heads/main/openapi/canonical-lxd-rest-api-openapi.yml