Every API here is available over the APIs.io API and to AI agents over MCP.
{
"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