Canonical · Schema
Application
Application represents an AMS application
CanonicalCloudLinuxOpen SourceUbuntuContainersBare MetalCharmsIdentity
Properties
| Name | Type | Description |
|---|---|---|
| abi | string | ABI supported by the application |
| addons | array | List of addons enabled for the application |
| boot_package | string | Name of the boot package for the application |
| created_at | integer | Creation UTC timestamp of the application |
| id | string | ID of the application |
| immutable | boolean | Flag to show whether the application can be edited |
| inhibit_auto_updates | boolean | Whether or not to auto update the application's base image |
| instance_type | string | Instance type required by the application |
| name | string | Name of the application |
| node_selector | array | List of tags for filtering the nodes to run the application on |
| parent_image_id | string | Parent image used for the application |
| published | boolean | Whether or not the application is published |
| resources | object | |
| status | string | Current status of the application |
| status_code | object | |
| tags | array | Tags to attach to the application |
| versions | array | List of versions for the application |
| vm | boolean | Whether the application is based on virtual machines or containers |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-application-schema.json",
"title": "Application",
"description": "Application represents an AMS application",
"x-generated": "2026-10-04",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/canonical-applications-api-openapi.yml#/components/schemas/Application",
"type": "object",
"properties": {
"abi": {
"description": "ABI supported by the application",
"type": "string"
},
"addons": {
"description": "List of addons enabled for the application",
"type": "array",
"items": {
"type": "string"
}
},
"boot_package": {
"description": "Name of the boot package for the application",
"type": "string"
},
"created_at": {
"description": "Creation UTC timestamp of the application",
"type": "integer",
"format": "int64"
},
"id": {
"description": "ID of the application",
"type": "string"
},
"immutable": {
"description": "Flag to show whether the application can be edited",
"type": "boolean"
},
"inhibit_auto_updates": {
"description": "Whether or not to auto update the application's base image",
"type": "boolean"
},
"instance_type": {
"description": "Instance type required by the application",
"type": "string"
},
"name": {
"description": "Name of the application",
"type": "string"
},
"node_selector": {
"description": "List of tags for filtering the nodes to run the application on",
"type": "array",
"items": {
"type": "string"
}
},
"parent_image_id": {
"description": "Parent image used for the application",
"type": "string"
},
"published": {
"description": "Whether or not the application is published",
"type": "boolean"
},
"resources": {
"$ref": "#/$defs/ApplicationResources"
},
"status": {
"description": "Current status of the application",
"type": "string",
"enum": [
"initializing",
"unknown",
"ready",
"deleted",
"error"
]
},
"status_code": {
"$ref": "#/$defs/ApplicationStatus"
},
"tags": {
"description": "Tags to attach to the application",
"type": "array",
"items": {
"type": "string"
}
},
"versions": {
"description": "List of versions for the application",
"type": "array",
"items": {
"$ref": "#/$defs/ApplicationVersion"
}
},
"vm": {
"description": "Whether the application is based on virtual machines or containers",
"type": "boolean"
}
},
"$defs": {
"ApplicationAddon": {
"description": "ApplicationAddon describes a specific version of an addon an application version uses",
"type": "object",
"properties": {
"name": {
"description": "Name of the application addon",
"type": "string"
},
"version": {
"description": "Version of the application addon",
"type": "integer",
"format": "int64"
}
}
},
"ApplicationBootstrap": {
"description": "ApplicationBootstrap describes the fields used to configure the application bootstrap",
"type": "object",
"properties": {
"keep": {
"description": "List of files to keep after the bootstrap",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"ApplicationExtraData": {
"description": "ApplicationExtraData represents an extra application data",
"type": "object",
"properties": {
"owner": {
"description": "Owner and group for the files",
"type": "string"
},
"permissions": {
"description": "Unix permissions for the files",
"type": "string"
},
"target": {
"description": "Path to the target file on the android filesystem",
"type": "string"
}
}
},
"ApplicationHooks": {
"description": "ApplicationHooks describes the fields used to configure the hooks of an application",
"type": "object",
"properties": {
"timeout": {
"description": "Time limit to wait for the hook to complete before timing out",
"type": "string"
}
}
},
"ApplicationResources": {
"description": "ApplicationResources describes resources allocated for an application",
"type": "object",
"properties": {
"cpus": {
"description": "Number of CPUs required by the application",
"type": "integer",
"format": "int64"
},
"disk-size": {
"description": "Storage size required by the application",
"type": "string"
},
"gpu-slots": {
"description": "Number of GPU slots required by the application",
"type": "integer",
"format": "int64"
},
"memory": {
"description": "Memory to be assigned to the application",
"type": "string"
},
"vpu-slots": {
"description": "Number of VPU slots required by the application",
"type": "integer",
"format": "int64"
}
}
},
"ApplicationStatus": {
"description": "ApplicationStatus represents the status an application can be in",
"type": "integer",
"format": "int64"
},
"ApplicationVersion": {
"description": "ApplicationVersion describes a single version of an application",
"type": "object",
"properties": {
"addons": {
"description": "List of addons enabled for the version",
"type": "array",
"items": {
"$ref": "#/$defs/ApplicationAddon"
}
},
"boot_activity": {
"description": "Name of the boot package for the version",
"type": "string"
},
"bootstrap": {
"$ref": "#/$defs/ApplicationBootstrap"
},
"created_at": {
"description": "Creation UTC timestamp of the version",
"type": "integer",
"format": "int64"
},
"error_message": {
"description": "Error message in case the application ran into an error",
"type": "string"
},
"extra_data": {
"description": "Extra data to be setup on the instance on application creation",
"type": "object",
"additionalProperties": {
"$ref": "#/$defs/ApplicationExtraData"
}
},
"features": {
"description": "List of features supported by the application",
"type": "array",
"items": {
"type": "string"
}
},
"hooks": {
"$ref": "#/$defs/ApplicationHooks"
},
"manifest_version": {
"description": "Version of the manifest used to create the application",
"type": "string"
},
"number": {
"description": "Version of the application",
"type": "integer",
"format": "int64"
},
"parent_image_id": {
"description": "Parent image used for the application version",
"type": "string"
},
"parent_image_version": {
"description": "Parent image version to use for the application version",
"type": "integer",
"format": "int64"
},
"published": {
"description": "Whether or not the version is published",
"type": "boolean"
},
"required_permissions": {
"description": "Required android application permissions",
"type": "array",
"items": {
"type": "string"
}
},
"services": {
"description": "List of services exposed by the application that should be exposed on the instance",
"type": "array",
"items": {
"$ref": "#/$defs/NetworkServiceSpec"
}
},
"status": {
"description": "Current status of the version",
"type": "string",
"enum": [
"initializing",
"unknown",
"ready",
"deleted",
"error"
]
},
"status_code": {
"$ref": "#/$defs/ImageStatus"
},
"video_encoder": {
"$ref": "#/$defs/VideoEncoderType"
},
"watchdog": {
"$ref": "#/$defs/ApplicationWatchdog"
}
}
},
"ApplicationWatchdog": {
"description": "ApplicationWatchdog describes the fields used to update an application watchdog",
"type": "object",
"properties": {
"allowed-packages": {
"description": "List of android packages to enable the watchdog for",
"type": "array",
"items": {
"type": "string"
}
},
"disabled": {
"description": "Whether or not to enable the watchdog for the application",
"type": "boolean"
}
}
},
"ImageStatus": {
"description": "ImageStatus represents the status of an image",
"type": "integer",
"format": "int64"
},
"NetworkProtocol": {
"description": "NetworkProtocol describes a specific network protocol like TCP or UDP a ContainerService can use",
"type": "string"
},
"NetworkServiceSpec": {
"description": "NetworkServiceSpec is used to define the user defined network services that should be opened on a container",
"type": "object",
"properties": {
"expose": {
"description": "Expose defines wether the service is exposed on the public endpoint of the node\nor if it is only available on the private endpoint. To expose the service set to\ntrue and to false otherwise.",
"type": "boolean"
},
"name": {
"description": "Name gives the container a hint what the exposed port is being used for. This\nallows further tweaks inside the container to expose the service correctly.\nExampe: ssh",
"type": "string"
},
"port": {
"description": "Port is the port the container provides a service on",
"type": "integer",
"format": "int64"
},
"port_end": {
"description": "PortEnd is the end of the port range set for a service. If empty, only a\nsingle port is opened",
"type": "integer",
"format": "int64"
},
"protocols": {
"description": "List of network protocols (tcp, udp) the port should be exposed for",
"type": "array",
"items": {
"$ref": "#/$defs/NetworkProtocol"
}
}
}
},
"VideoEncoderType": {
"description": "VideoEncoderType describes the type of a video encoder is used by an application",
"type": "string"
}
}
}
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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/canonical-application"
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.