Canonical · Schema

ApplicationPatch

ApplicationPatch represents the fields a user can modify

CanonicalCloudLinuxOpen SourceUbuntuContainersBare MetalCharmsIdentity

Properties

Name Type Description
addons array List of addons enabled for the application
boot_activity string Name of the boot package for the version
bootstrap object
features array List of features supported by the application
hooks object
image string Base image id or name to use for the applicaiton
inhibit_auto_updates boolean Whether or not to auto update the application's base image
instance-type string Instance type to use for the application
manifest_version string Version of the manifest used to create the application
node_selector array List of tags for filtering the nodes to run the application on
required_permissions array Required android application permissions
resources object
services array List of services exposed by the application that should be expose on the instance For application version update, changing those values would trigger a new application version creation
tags array Tags to attach to the application
video_encoder object
watchdog object
View JSON Schema on GitHub

JSON Schema

canonical-application-patch-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-application-patch-schema.json",
  "title": "ApplicationPatch",
  "description": "ApplicationPatch represents the fields a user can modify",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/canonical-applications-api-openapi.yml#/components/schemas/ApplicationPatch",
  "type": "object",
  "properties": {
    "addons": {
      "description": "List of addons enabled for the application",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "boot_activity": {
      "description": "Name of the boot package for the version",
      "type": "string"
    },
    "bootstrap": {
      "$ref": "#/$defs/ApplicationBootstrap"
    },
    "features": {
      "description": "List of features supported by the application",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "hooks": {
      "$ref": "#/$defs/ApplicationHooks"
    },
    "image": {
      "description": "Base image id or name to use for the applicaiton",
      "type": "string"
    },
    "inhibit_auto_updates": {
      "description": "Whether or not to auto update the application's base image",
      "type": "boolean"
    },
    "instance-type": {
      "description": "Instance type to use for the application",
      "type": "string"
    },
    "manifest_version": {
      "description": "Version of the manifest used to create the application",
      "type": "string"
    },
    "node_selector": {
      "description": "List of tags for filtering the nodes to run the application on",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "required_permissions": {
      "description": "Required android application permissions",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "resources": {
      "$ref": "#/$defs/ApplicationResourcesPost"
    },
    "services": {
      "description": "List of services exposed by the application that should be expose on the instance\nFor application version update, changing those values would trigger a new application version creation",
      "type": "array",
      "items": {
        "$ref": "#/$defs/NetworkServiceSpec"
      }
    },
    "tags": {
      "description": "Tags to attach to the application",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "video_encoder": {
      "$ref": "#/$defs/VideoEncoderType"
    },
    "watchdog": {
      "$ref": "#/$defs/ApplicationWatchdog"
    }
  },
  "$defs": {
    "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"
          }
        }
      }
    },
    "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"
        }
      }
    },
    "ApplicationResourcesPost": {
      "description": "ApplicationResourcesPost represents the fields used to update an application resource",
      "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"
        }
      }
    },
    "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"
        }
      }
    },
    "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.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/canonical-application-patch"
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.