Anbox Cloud AMS API

The external REST API of the Anbox Management Service (AMS), the control plane of Canonical's Anbox Cloud product for running Android at scale. Covers applications, images, instances, nodes, addons, containers and configuration across 46 paths and 72 operations. AMS is built on the LXD codebase and inherits its response envelope and asynchronous operation model.

Operations 72

GET /1.0/ Get the status and features supported by the service #
GET /1.0/addons Get a list of addons #
POST /1.0/addons Create a new addon #
GET /1.0/addons/{name} Get an addon #
DELETE /1.0/addons/{name} Delete an addon #
PATCH /1.0/addons/{name} Update an addon with a new package #
DELETE /1.0/addons/{name}/{version} Delete an addon version #
GET /1.0/addons?recursion=1 Get a list of addons expanded #
GET /1.0/applications Get a list of applications #
POST /1.0/applications Create a new application #
DELETE /1.0/applications Delete multiple applications #
GET /1.0/applications/{id} Get information about an application #
DELETE /1.0/applications/{id} Delete an application #
PATCH /1.0/applications/{id} Update an application with a new package #
PATCH /1.0/applications/{id}/ Update an applications's metadata #
GET /1.0/applications/{id}/manifest Get an application's manifest #
GET /1.0/applications/{id}/{version} Get information about an application's specific version #
DELETE /1.0/applications/{id}/{version} Delete a version of an application #
PATCH /1.0/applications/{id}/{version} Update a specific version of an application #
GET /1.0/applications/{id}/{version}/manifest Get the manifest for a specific version of an application #
GET /1.0/applications?recursion=1 Get a list of applications with expanded object definitions #
GET /1.0/certificates Get a list of certificates #
POST /1.0/certificates Add a new client certificate #
GET /1.0/certificates/{fingerprint} Get the information about a certificate #
DELETE /1.0/certificates/{fingerprint} Delete a client's trusted certificate #
GET /1.0/certificates?recursion=1 Get a list of expanded certificates #
GET /1.0/config Get the current configuration of the service #
PATCH /1.0/config Update service configuration #
GET /1.0/containers Get a list of containers #
POST /1.0/containers Create a new container instance #
DELETE /1.0/containers Delete multiple containers. #
GET /1.0/containers/{id} Get information about a specific container instance. #
DELETE /1.0/containers/{id} Delete a specific container #
PATCH /1.0/containers/{id} Update the state of a specific container instance #
POST /1.0/containers/{id}/exec Execute a command in a container #
GET /1.0/containers/{id}/logs Get a list of collected log files for the container #
GET /1.0/containers/{id}/logs/{name} Retrieve a specific log file stored for the container #
GET /1.0/containers?recursion=1 Get a list of containers #
GET /1.0/events Listen to events for changes in AMS #
GET /1.0/images Get a list of images #
POST /1.0/images Import an image #
POST /1.0/images/ Upload a package to create an image #
GET /1.0/images/{id_or_name} Get information about an image #
DELETE /1.0/images/{id} Delete an image #
PATCH /1.0/images/{id} Update an image with a new package to upload #
PATCH /1.0/images/{id}/ Update an image's metadata #
DELETE /1.0/images/{id}/{version} Delete an image version #
GET /1.0/images?recursion=1 Get the list of images expanded #
GET /1.0/instances Get a list of instances #
POST /1.0/instances Create a new instance #
DELETE /1.0/instances Delete multiple instances. #
GET /1.0/instances/{id_or_name} Get information about a specific instance instance. #
DELETE /1.0/instances/{id_or_name} Delete a specific instance #
PATCH /1.0/instances/{id_or_name} Update the state of a specific instance instance #
POST /1.0/instances/{id_or_name}/exec Execute a command in a instance #
GET /1.0/instances/{id_or_name}/logs Get a list of collected log files for the instance #
GET /1.0/instances/{id_or_name}/logs/{name} Retrieve a specific log file stored for the instance #
GET /1.0/instances?recursion=1 Get a list of instances #
GET /1.0/nodes Get a list of nodes #
POST /1.0/nodes Create a node #
GET /1.0/nodes/{name} Get information about a node #
DELETE /1.0/nodes/{name} Delete a node #
PATCH /1.0/nodes/{name} Update a node #
GET /1.0/nodes?recursion=1 Get a list of nodes #
GET /1.0/operations Get a list of operations #
GET /1.0/operations/{uuid} Get the current status of an operation #
DELETE /1.0/operations/{uuid} Cancel an operation #
GET /1.0/operations/{uuid}/wait Wait for an operation to complete #
GET /1.0/operations/{uuid}/websocket Get the websocket connection to monitor operation #
GET /1.0/operations?recursion=1 Get a list of expanded operations #
GET /1.0/tasks Get a list of tasks #
GET /1.0/version Get the current version for the service #

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/anbox-cloud-ams-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-anbox-cloud-ams-api-openapi.json Raw ↑
{
  "swagger": "2.0",
  "info": {
    "description": "The Anbox Management Service (AMS) external REST API is the REST API used by\nall AMS clients. Note that internal endpoints are not included in this\ndocumentation.\n\nThe AMS API is available over both a local unix+http and a remote https API.\nAuthentication for local users relies on group membership and access to the\nunix socket. For remote users, the default authentication method is TLS client\ncertificates.",
    "title": "AMS external REST API",
    "version": "1.0"
  },
  "paths": {
    "/1.0/": {
      "get": {
        "description": "This endpoint returns the service status and its supported API extensions.\nIt also returns whether the connection is trusted or not.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "service"
        ],
        "summary": "Get the status and features supported by the service",
        "operationId": "service_get",
        "responses": {
          "200": {
            "description": "Current config for the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/NoMetaSyncResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "$ref": "#/definitions/ServiceStatus"
                }
              }
            }
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/addons": {
      "get": {
        "description": "This endpoint returns a list of addons in AMS.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Get a list of addons",
        "operationId": "addons_get",
        "parameters": [
          {
            "enum": [
              0,
              1
            ],
            "type": "integer",
            "default": 0,
            "description": "Expand the returned resource definition",
            "name": "recursion",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/CollectionResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "description": "List of endpoints",
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": "[\n  \"/1.0/addons/foo\",\n  \"/1.0/addons/bar\"\n]"
                }
              }
            }
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "post": {
        "description": "This enpoint creates a new addon by uploading a package with the addon\nmanifest and hooks. The package format must be bzip2 or zip archive.\n\nRequired Extensions:\n`zip_archive_support`: To use the zip format, the server must have the extension.",
        "consumes": [
          "application/octet-stream"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Create a new addon",
        "operationId": "addons_post",
        "parameters": [
          {
            "type": "string",
            "description": "SHA-256 fingerprint of package e.g b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
            "name": "X-AMS-Fingerprint",
            "in": "header"
          },
          {
            "type": "string",
            "description": "JSON encoded byte string of addon details e.g { \"name\": \"my-addon\" }",
            "name": "X-AMS-Request",
            "in": "header",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "409": {
            "$ref": "#/responses/ErrorAlreadyExists"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/addons/{name}": {
      "get": {
        "description": "This endpoint gets the information of an addon stored in AMS.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Get an addon",
        "operationId": "addon_get",
        "parameters": [
          {
            "type": "string",
            "description": "Name of the addon to retrieve",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/NoMetaSyncResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "$ref": "#/definitions/Addon"
                }
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "delete": {
        "description": "This endpoint deletes an addon stored in AMS.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Delete an addon",
        "operationId": "addon_delete",
        "parameters": [
          {
            "type": "string",
            "description": "Name of the addon to delete",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "patch": {
        "description": "This endpoint updates an addon's metadata and creates a new addon version\nfor it.",
        "consumes": [
          "application/octet-stream"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Update an addon with a new package",
        "operationId": "addon_patch",
        "parameters": [
          {
            "type": "string",
            "description": "SHA-256 fingerprint of addon payload e.g b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
            "name": "X-AMS-Fingerprint",
            "in": "header"
          },
          {
            "type": "string",
            "description": "Json encoded byte string of addon details e.g {}",
            "name": "X-AMS-Request",
            "in": "header",
            "required": true
          },
          {
            "type": "string",
            "description": "Name of the addon to update",
            "name": "name",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            },
            "headers": {
              "Etag": {
                "type": "string",
                "description": "E-Tag of the resource"
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/addons/{name}/{version}": {
      "delete": {
        "description": "This endpoint deletes a specific version of an addon.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Delete an addon version",
        "operationId": "addon_version_delete",
        "parameters": [
          {
            "type": "string",
            "description": "Name of the addon whose version needs to be deleted",
            "name": "name",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Version of the addon to delete",
            "name": "version",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/addons?recursion=1": {
      "get": {
        "description": "This endpoint returns a list of available addons in the cluster.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "addons"
        ],
        "summary": "Get a list of addons expanded",
        "operationId": "addons_get_recursion1",
        "parameters": [
          {
            "enum": [
              0,
              1
            ],
            "type": "integer",
            "default": 0,
            "description": "Expand the returned resource definition",
            "name": "recursion",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/CollectionResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "type": "array",
                  "items": {
                    "$ref": "#/definitions/Addon"
                  }
                }
              }
            }
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/applications": {
      "get": {
        "description": "This endpoint returns a list of available applications.",
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Get a list of applications",
        "operationId": "applications_get",
        "parameters": [
          {
            "type": "integer",
            "default": 0,
            "description": "Index to start listing the records",
            "name": "offset",
            "in": "query"
          },
          {
            "type": "integer",
            "default": -1,
            "description": "Limit the number of returned records",
            "name": "limit",
            "in": "query"
          },
          {
            "enum": [
              0,
              1
            ],
            "type": "integer",
            "default": 0,
            "description": "Expand the returned resource definition",
            "name": "recursion",
            "in": "query"
          },
          {
            "type": "string",
            "example": "btavtegj1qm58qg7ru50",
            "description": "Filter applications by id. This is an exact match for the string.",
            "name": "id",
            "in": "query"
          },
          {
            "type": "string",
            "example": "my-app",
            "description": "Filter applications by name. This is an exact match for the string.",
            "name": "name",
            "in": "query"
          },
          {
            "type": "string",
            "example": "a2.3",
            "description": "Filter applications by their instance_type.",
            "name": "instance_type",
            "in": "query"
          },
          {
            "enum": [
              "initializing",
              "ready",
              "error",
              "deleted"
            ],
            "type": "string",
            "example": "initializing",
            "description": "Filter applications by status.",
            "name": "status",
            "in": "query"
          },
          {
            "type": "string",
            "example": "com.foo.bar",
            "description": "Filter applications by their boot package.",
            "name": "boot_package",
            "in": "query"
          },
          {
            "type": "boolean",
            "example": false,
            "description": "Filter immutable applications.",
            "name": "immutable",
            "in": "query"
          },
          {
            "type": "boolean",
            "example": false,
            "description": "Filter applications with automatic updates enabled.",
            "name": "inhibit_auto_updates",
            "in": "query"
          },
          {
            "type": "boolean",
            "example": false,
            "description": "Filter published applications.",
            "name": "published",
            "in": "query"
          },
          {
            "type": "string",
            "example": "gms,ssh",
            "description": "Filter applications by their attached addon names.",
            "name": "addons",
            "in": "query"
          },
          {
            "type": "string",
            "example": "x86_64",
            "description": "Filter applications by their supported ABI architecture.",
            "name": "abi",
            "in": "query"
          },
          {
            "type": "string",
            "example": "created_by=anbox,foo,bar",
            "description": "Filter applications by tags.",
            "name": "tags",
            "in": "query"
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/CollectionResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "description": "List of endpoints",
                  "type": "array",
                  "items": {
                    "type": "string"
                  },
                  "example": "[\n  \"/1.0/applications/foo\",\n  \"/1.0/applications/bar\"\n]"
                }
              }
            }
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "post": {
        "description": "This endpoint creates a new application in AMS using a manifest file. The\npayload to upload must be a tarball compressed with bzip2 or a zip archive.\nAlso it must contain a **manifest.yaml** file which declares the basic\ninformation for the creation of the application.\n\nRequired Extensions:\n`zip_archive_support`: To use the zip format, the server must have the extension.\nTo support the following syntax in the application **manifest.yaml** file, the\nserver requires the corresponding extensions:\n Manifest Key     | Required Extension                 |\n ---------------- | -----------------------------------|\n resources        | application_resource_customization |\n watchdog         | application_watchdog_settings      |\n services         | application_services_configuration |\n version          | application_manifest_version       |\n video-encoder    | application_gpu_encoder            |",
        "consumes": [
          "application/octet-stream"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Create a new application",
        "operationId": "application_post",
        "parameters": [
          {
            "type": "boolean",
            "default": false,
            "description": "Whether the application is based on a virtual machine or a container",
            "name": "vm",
            "in": "query"
          },
          {
            "type": "string",
            "description": "SHA-256 fingerprint of the payload e.g b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
            "name": "X-AMS-Fingerprint",
            "in": "header"
          },
          {
            "type": "file",
            "description": "A tarball or zip file",
            "name": "upfile",
            "in": "formData",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "delete": {
        "description": "This endpoint deletes multiple applications. If the deletion of a single application\nfails the operation is aborted and an error is returned.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Delete multiple applications",
        "operationId": "applications_delete",
        "parameters": [
          {
            "description": "List of applications to delete",
            "name": "details",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ApplicationsDelete"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "500": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/applications/{id}": {
      "get": {
        "description": "This endpoint gets the information about an application stored in AMS.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Get information about an application",
        "operationId": "application_get",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "schema": {
              "type": "object",
              "allOf": [
                {
                  "$ref": "#/definitions/NoMetaSyncResponse"
                }
              ],
              "properties": {
                "metadata": {
                  "$ref": "#/definitions/Application"
                }
              }
            },
            "headers": {
              "Etag": {
                "type": "string",
                "description": "E-Tag of the resource"
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "delete": {
        "description": "This endpoint deletes an application and its versions from AMS.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Delete an application",
        "operationId": "application_delete",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "403": {
            "$ref": "#/responses/ErrorForbidden"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "patch": {
        "description": "This endpoint updates an application with a new package of format bzip2 or\nzip by uploading a new package to replace/update the existing package.\n\nRequired Extensions:\n`zip_archive_support`: To use the zip format, the server must have the extension.",
        "consumes": [
          "application/octet-stream"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Update an application with a new package",
        "operationId": "application_patch_upload",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "string",
            "description": "SHA-256 fingerprint of application e.g b94d27b9934d3e08a52e52d7da7dabfac484efe37a5380ee9088f7ace2efcde9",
            "name": "X-AMS-Fingerprint",
            "in": "header"
          },
          {
            "type": "file",
            "description": "A tarball or zip file",
            "name": "upfile",
            "in": "formData",
            "required": true
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/applications/{id}/": {
      "patch": {
        "description": "This endpoint updates an applications's metadata only but not the package.\nChanging the following fields will lead to the creation of a new application\nversion:\n\n   SUPPORTED UPDATE FIELD  |   WILL CREATE A NEW APPLICATION VERSION   |\n ------------------------- | ----------------------------------------- |\n   image                   |   no                                      |\n   instance-type           |   no                                      |\n   tags                    |   no                                      |\n   addons                  |   no                                      |\n   resources               |   no                                      |\n   inhibit_auto_updates    |   no                                      |\n   services                |   yes                                     |\n   watchdog                |   yes                                     |\n   boot_activity           |   yes                                     |\n   required_permissions    |   yes                                     |\n   video_encoder           |   yes                                     |\n   manifest_version        |   yes                                     |\n\nRequired Extensions:\n`application_partial_updates`: To use those fields that would create a new\napplication version on application update.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Update an applications's metadata",
        "operationId": "application_patch_meta",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application to update",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "description": "Details of the attributes to update",
            "name": "details",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ApplicationPatch"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            },
            "headers": {
              "Etag": {
                "type": "string",
                "description": "E-Tag of the resource"
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/applications/{id}/manifest": {
      "get": {
        "description": "This endpoint gets the latest application manifest file.\n\nRequired Extensions:\n`application_manifest_download`: The use of this API requires this extension",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Get an application's manifest",
        "operationId": "application_manifest_get",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application to retrieve",
            "name": "id",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "headers": {
              "X-AMS-ManifestSha256": {
                "type": "string",
                "description": "SHA-256 of the manifest file"
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "403": {
            "$ref": "#/responses/ErrorForbidden"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      }
    },
    "/1.0/applications/{id}/{version}": {
      "get": {
        "description": "This endpoint gets the information of a specific version of an application.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Get information about an application's specific version",
        "operationId": "application_version_get",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Version of the application",
            "name": "version",
            "in": "path",
            "required": true
          }
        ],
        "responses": {
          "200": {
            "description": "Success response of the service",
            "headers": {
              "X-AMS-ManifestSha256": {
                "type": "string",
                "description": "SHA-256 of the version manifest file"
              }
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "403": {
            "$ref": "#/responses/ErrorForbidden"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "delete": {
        "description": "This endpoint deletes a specific version of an application.",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Delete a version of an application",
        "operationId": "application_version_delete",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Version of the application",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "description": "Details for the application version to delete",
            "name": "details",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ApplicationVersionDelete"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definitions/OperationResponse"
            }
          },
          "400": {
            "$ref": "#/responses/ErrorBadRequest"
          },
          "403": {
            "$ref": "#/responses/ErrorForbidden"
          },
          "404": {
            "$ref": "#/responses/ErrorNotFound"
          },
          "default": {
            "$ref": "#/responses/InternalServerError"
          }
        }
      },
      "patch": {
        "description": "This endpoint updates the information of a specific version of an application.\n\nRequired Extensions:\n`application_image_export`: The use of this API requires this extension",
        "consumes": [
          "application/json"
        ],
        "produces": [
          "application/json"
        ],
        "tags": [
          "applications"
        ],
        "summary": "Update a specific version of an application",
        "operationId": "application_version_patch",
        "parameters": [
          {
            "type": "string",
            "description": "Id of the application",
            "name": "id",
            "in": "path",
            "required": true
          },
          {
            "type": "integer",
            "description": "Version of the application",
            "name": "version",
            "in": "path",
            "required": true
          },
          {
            "description": "Details for the application version to update",
            "name": "details",
            "in": "body",
            "schema": {
              "$ref": "#/definitions/ApplicationVersionPatch"
            }
          }
        ],
        "responses": {
          "202": {
            "description": "Success response of the service",
            "schema": {
              "$ref": "#/definition

# --- truncated at 32 KB (225 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/canonical/refs/heads/main/openapi/canonical-anbox-cloud-ams-api-openapi.json