Canonical Metadata API

The Metadata API from Canonical — 1 operation(s) for metadata.

Operations 1

GET /1.0/metadata/configuration Get the metadata configuration #

Documentation

Specifications

Other Resources

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/canonical-metadata-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-metadata-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    email: lxd@lists.canonical.com
    name: LXD upstream
    url: https://github.com/canonical/lxd
  description: 'This is the REST API used by all LXD clients.

    Internal endpoints aren''t included in this documentation.


    The LXD API is available over both a local unix+http and remote https API.

    Authentication for local users relies on group membership and access to the unix socket.

    For remote users, the default authentication method is TLS client.'
  license:
    name: AGPL-3.0-only
    url: https://www.gnu.org/licenses/agpl-3.0.en.html
  title: LXD external REST Metadata API
  version: '1.0'
tags:
- name: Metadata
paths:
  /1.0/metadata/configuration:
    get:
      description: Returns the generated LXD metadata configuration in JSON format.
      operationId: metadata_configuration_get
      responses:
        '200':
          description: API endpoints
          content:
            text/plain:
              schema:
                description: Sync response
                properties:
                  metadata:
                    $ref: '#/components/schemas/MetadataConfiguration'
                  status:
                    description: Status description
                    example: Success
                    type: string
                  status_code:
                    description: Status code
                    example: 200
                    type: integer
                  type:
                    description: Response type
                    example: sync
                    type: string
                type: object
        '403':
          $ref: '#/components/responses/Forbidden'
        '500':
          $ref: '#/components/responses/InternalServerError'
      summary: Get the metadata configuration
      tags:
      - Metadata
components:
  schemas:
    MetadataConfiguration:
      properties:
        configs:
          additionalProperties:
            additionalProperties:
              $ref: '#/components/schemas/MetadataConfigurationConfigKeys'
            type: object
          description: Configs contains all server configuration metadata.
          type: object
          x-go-name: Configs
        entities:
          additionalProperties:
            $ref: '#/components/schemas/MetadataConfigurationEntity'
          description: 'Entities contains all authorization related metadata.


            API extension: metadata_configuration_entity_types'
          type: object
          x-go-name: Entities
      title: MetadataConfiguration contains metadata about the LXD server configuration options.
      type: object
      x-go-package: github.com/canonical/lxd/shared/api
    MetadataConfigurationEntityEntitlement:
      properties:
        description:
          description: Description describes the entitlement.
          example: Grants permission to do X, Y, and Z
          type: string
          x-go-name: Description
        name:
          description: Name contains the name of the entitlement.
          example: can_edit
          type: string
          x-go-name: Name
      title: MetadataConfigurationEntityEntitlement contains metadata about a LXD server entitlement.
      type: object
      x-go-package: github.com/canonical/lxd/shared/api
    MetadataConfigurationEntity:
      properties:
        entitlements:
          description: Entitlements contains a list of entitlements that apply to a specific entity type.
          items:
            $ref: '#/components/schemas/MetadataConfigurationEntityEntitlement'
          type: array
          x-go-name: Entitlements
        project_specific:
          description: ProjectSpecific indicates whether the entity is project specific.
          example: true
          type: boolean
          x-go-name: ProjectSpecific
      title: MetadataConfigurationEntity contains metadata about LXD server entities and available entitlements for authorization.
      type: object
      x-go-package: github.com/canonical/lxd/shared/api
    MetadataConfigurationConfigKeys:
      properties:
        keys:
          items:
            additionalProperties:
              $ref: '#/components/schemas/MetadataConfigurationConfigKey'
            type: object
          type: array
          x-go-name: Keys
      title: MetadataConfigurationConfigKeys contains metadata about LXD server configuration options.
      type: object
      x-go-package: github.com/canonical/lxd/shared/api
    MetadataConfigurationConfigKey:
      properties:
        condition:
          description: Condition describes conditions under which the configuration key can be applied.
          example: Virtual machines only
          type: string
          x-go-name: Condition
        defaultdesc:
          description: DefaultDescription contains a description of the configuration key.
          example: A general description of a configuration key
          type: string
          x-go-name: DefaultDescription
        longdesc:
          description: LongDescription contains a long-form description of the configuration key.
          example: A much more in-depth description of the configuration key, including where and how it is used
          type: string
          x-go-name: LongDescription
        managed:
          description: Managed describes whether the configuration key is managed by LXD.
          example: 'yes'
          type: string
          x-go-name: Managed
        required:
          description: Required describes conditions under which the configuration key is required.
          example: On device creation
          type: string
          x-go-name: Required
        scope:
          description: 'Scope describes the cluster member specificity of a configuration key. Options marked with a `global` scope are applied to all cluster members. Options marked with a `local` scope are set on a per-member basis.


            API extension: metadata_configuration_scope'
          example: global
          type: string
          x-go-name: Scope
        shortdesc:
          description: ShortDescription contains a short-form description of the configuration key.
          example: A key for doing X
          type: string
          x-go-name: ShortDescription
        type:
          description: Type describes the type of the key.
          example: Comma delimited CIDR format subnets
          type: string
          x-go-name: Type
      title: MetadataConfigurationConfigKey contains metadata about a LXD server configuration option.
      type: object
      x-go-package: github.com/canonical/lxd/shared/api
  responses:
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            properties:
              error:
                example: not authorized
                type: string
                x-go-name: Error
              error_code:
                example: 403
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            properties:
              error:
                example: internal server error
                type: string
                x-go-name: Error
              error_code:
                example: 500
                format: int64
                type: integer
                x-go-name: ErrorCode
              type:
                example: error
                type: string
                x-go-name: Type
            type: object