Canonical · Schema

Mirror

A repository mirror configuration and status.

CanonicalCloudLinuxOpen SourceUbuntuContainersBare MetalCharmsIdentity

Properties

Name Type Description
name string The resource name of the mirror. Format: "mirrors/{mirror}"
mirrorId string The mirror ID is exposed separately for convenience.
status string The status of the mirror.
lastDownloadDate string The timestamp of the last successful download.
displayName string The human-readable name used to reference this mirror.
archiveRoot string Root of the debian archive (URL). When creating mirrors for repositories that require authentication (such as ESM repos), you can include authentication tokens directly in the URL using the HTTP Basic
distribution string The name of the distribution (subdirectory of `dists`).
architectures array List of architectures to fetch.
components array List of components to fetch.
downloadInstaller boolean Indicates if installer files should be downloaded.
downloadSources boolean Indicates if sources files should be downloaded.
downloadUdebs boolean Indicates if `.udebs` files should be downloaded.
filter string Package query applied to the mirror. Follows the [Reprepro/Aptly language](https://www.aptly.info/doc/feature/query/).
filterWithDeps boolean Indicates if dependencies of matching packages should be included.
skipArchitectureCheck boolean Indicates if the architecture list verification should be skipped.
skipComponentCheck boolean Indicates if the component list verification should be skipped.
preserveSignatures boolean Indicates if the mirror is a signature-preserving mirror.
gpgKey object Optional GPG key to validate the upstream signature.
lastOperation string The most recent long-running operation associated with the mirror.
mirrorType string The type of upstream repository being mirrored.
View JSON Schema on GitHub

JSON Schema

canonical-mirror-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-mirror-schema.json",
  "title": "Mirror",
  "description": "A repository mirror configuration and status.",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/canonical-mirrorservice-api-openapi.yml#/components/schemas/Mirror",
  "required": [
    "displayName",
    "archiveRoot",
    "distribution",
    "architectures",
    "components"
  ],
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The resource name of the mirror.\n Format: \"mirrors/{mirror}\""
    },
    "mirrorId": {
      "readOnly": true,
      "type": "string",
      "description": "The mirror ID is exposed separately for convenience."
    },
    "status": {
      "readOnly": true,
      "type": "string",
      "description": "The status of the mirror."
    },
    "lastDownloadDate": {
      "readOnly": true,
      "type": "string",
      "description": "The timestamp of the last successful download.",
      "format": "date-time"
    },
    "displayName": {
      "type": "string",
      "description": "The human-readable name used to reference this mirror."
    },
    "archiveRoot": {
      "type": "string",
      "description": "Root of the debian archive (URL).\n When creating mirrors for repositories that require authentication (such as ESM repos), you\n can include authentication tokens directly in the URL using the HTTP Basic Authentication\n format, e.g.:\n\n https://bearer:<my-esm-token>@esm.ubuntu.com/infra/ubuntu/\n\n Credentials in the URL are securely handled and scrubbed from API responses for security\n purposes."
    },
    "distribution": {
      "type": "string",
      "description": "The name of the distribution (subdirectory of `dists`)."
    },
    "architectures": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of architectures to fetch."
    },
    "components": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "List of components to fetch."
    },
    "downloadInstaller": {
      "type": "boolean",
      "description": "Indicates if installer files should be downloaded."
    },
    "downloadSources": {
      "type": "boolean",
      "description": "Indicates if sources files should be downloaded."
    },
    "downloadUdebs": {
      "type": "boolean",
      "description": "Indicates if `.udebs` files should be downloaded."
    },
    "filter": {
      "type": "string",
      "description": "Package query applied to the mirror.\n Follows the [Reprepro/Aptly language](https://www.aptly.info/doc/feature/query/)."
    },
    "filterWithDeps": {
      "type": "boolean",
      "description": "Indicates if dependencies of matching packages should be included."
    },
    "skipArchitectureCheck": {
      "type": "boolean",
      "description": "Indicates if the architecture list verification should be skipped."
    },
    "skipComponentCheck": {
      "type": "boolean",
      "description": "Indicates if the component list verification should be skipped."
    },
    "preserveSignatures": {
      "type": "boolean",
      "description": "Indicates if the mirror is a signature-preserving mirror."
    },
    "gpgKey": {
      "allOf": [
        {
          "$ref": "#/$defs/GpgKey"
        }
      ],
      "description": "Optional GPG key to validate the upstream signature."
    },
    "lastOperation": {
      "readOnly": true,
      "type": "string",
      "description": "The most recent long-running operation associated with the mirror."
    },
    "mirrorType": {
      "enum": [
        "MIRROR_TYPE_UNSPECIFIED",
        "UBUNTU_ARCHIVE",
        "UBUNTU_SNAPSHOTS",
        "UBUNTU_PRO",
        "THIRD_PARTY"
      ],
      "type": "string",
      "description": "The type of upstream repository being mirrored.",
      "format": "enum"
    }
  },
  "$defs": {
    "GpgKey": {
      "required": [
        "armor"
      ],
      "type": "object",
      "properties": {
        "armor": {
          "writeOnly": true,
          "type": "string",
          "description": "The GPG key in ASCII armor format."
        },
        "isPrivate": {
          "readOnly": true,
          "type": "boolean",
          "description": "Indicates if the key holds a private component."
        },
        "fingerprint": {
          "readOnly": true,
          "type": "string",
          "description": "The fingerprint of the key."
        }
      },
      "description": "A GPG key resource."
    }
  }
}

Work with this as data

Every JSON Schema 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 schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • 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 JSON Schema
curl "https://apis.io/api/v1/json-schemas/canonical-mirror"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.