Canonical · Schema

Instance

Instance represents a single instance

CanonicalCloudLinuxOpen SourceUbuntuContainersBare MetalCharmsIdentity

Properties

Name Type Description
address string Address is the IP address of the instance
app_id string AppID is the ID of the application the instance is created from. Empty if the instance has not been created from an application.
app_name string AppName is the name of the application the instance is created from. Empty if the instance has not been created from an application.
app_version integer AppVersion is the version of the application the instance is created from. Empty if the instance has not been created from an application.
architecture string Architecture describes the CPU archtitecture the instance is using
base boolean If this is a base instance or not
config object Config summarizes the configuration the instance uses
created_at integer CreatedAt specifies the time at which the instance was created
error_message string ErrorMessage provides an error message when the instance status is set to error.
id string ID of the instance
image_id string ImageID is the ID of the image the instance is created from. Empty if the instance has not been created from an image.
image_version integer ImageVersion is the version of the image the instance is created from. Empty if the instance has not been created from an image.
name string Name of the instance. Typically in the format "ams-".
node string Node the instance is running on
public_address string PublicAddress is the external IP address the instance is accessible on (in most cases the IP of the node it is running on)
resources object
services array Services the instance exposes
status string Status of the instance
status_code object
status_message string StatusMessage describes the current status of the instance
stored_logs array StoredLogs lists log files AMS stores for the instance.
tags array Tags specifies the tags the instance has assigned
type object
View JSON Schema on GitHub

JSON Schema

canonical-instance-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-instance-schema.json",
  "title": "Instance",
  "description": "Instance represents a single instance",
  "x-generated": "2026-10-04",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/canonical-instances-api-openapi.yml#/components/schemas/Instance",
  "type": "object",
  "properties": {
    "address": {
      "description": "Address is the IP address of the instance",
      "type": "string"
    },
    "app_id": {
      "description": "AppID is the ID of the application the instance is created from. Empty if the\ninstance has not been created from an application.",
      "type": "string"
    },
    "app_name": {
      "description": "AppName is the name of the application the instance is created from. Empty if the\ninstance has not been created from an application.",
      "type": "string"
    },
    "app_version": {
      "description": "AppVersion is the version of the application the instance is created from. Empty if the\ninstance has not been created from an application.",
      "type": "integer",
      "format": "int64"
    },
    "architecture": {
      "description": "Architecture describes the CPU archtitecture the instance is using",
      "type": "string"
    },
    "base": {
      "description": "If this is a base instance or not",
      "type": "boolean"
    },
    "config": {
      "description": "Config summarizes the configuration the instance uses",
      "type": "object",
      "properties": {
        "boot_activity": {
          "description": "BootActivity specifies the Android activity which is started by default",
          "type": "string"
        },
        "boot_package": {
          "description": "BootPackage specifies the Android application package name which is started by default",
          "type": "string"
        },
        "devmode": {
          "description": "DevMode specifies if development mode has been turned on for the instance",
          "type": "boolean"
        },
        "disable_watchdog": {
          "description": "DisableWatchdog defines whether the watchdog is disabled",
          "type": "boolean"
        },
        "display": {
          "type": "object",
          "properties": {
            "density": {
              "description": "Density is the piel density of the virtual display",
              "type": "integer",
              "format": "int64"
            },
            "fps": {
              "description": "FPS is the frame rate of the virtual display",
              "type": "integer",
              "format": "int64"
            },
            "height": {
              "description": "Height is the height of the virtual display",
              "type": "integer",
              "format": "int64"
            },
            "width": {
              "description": "Width is the width of the virtual display",
              "type": "integer",
              "format": "int64"
            }
          }
        },
        "enable_streaming": {
          "description": "EnableStreaming specifies if streaming should be enabled for the instance or not",
          "type": "boolean"
        },
        "metrics_server": {
          "description": "MetricsServer specifies a metrics server the instance will use",
          "type": "string"
        },
        "platform": {
          "description": "Platform specifies the Anbox platform the instance is running with",
          "type": "string"
        }
      }
    },
    "created_at": {
      "description": "CreatedAt specifies the time at which the instance was created",
      "type": "integer",
      "format": "int64"
    },
    "error_message": {
      "description": "ErrorMessage provides an error message when the instance status is set to error.",
      "type": "string"
    },
    "id": {
      "description": "ID of the instance",
      "type": "string"
    },
    "image_id": {
      "description": "ImageID is the ID of the image the instance is created from. Empty if the\ninstance has not been created from an image.",
      "type": "string"
    },
    "image_version": {
      "description": "ImageVersion is the version of the image the instance is created from. Empty if the\ninstance has not been created from an image.",
      "type": "integer",
      "format": "int64"
    },
    "name": {
      "description": "Name of the instance. Typically in the format \"ams-<ID>\".",
      "type": "string"
    },
    "node": {
      "description": "Node the instance is running on",
      "type": "string"
    },
    "public_address": {
      "description": "PublicAddress is the external IP address the instance is accessible on (in most\ncases the IP of the node it is running on)",
      "type": "string"
    },
    "resources": {
      "$ref": "#/$defs/InstanceResources"
    },
    "services": {
      "description": "Services the instance exposes",
      "type": "array",
      "items": {
        "$ref": "#/$defs/InstanceService"
      }
    },
    "status": {
      "description": "Status of the instance",
      "type": "string"
    },
    "status_code": {
      "$ref": "#/$defs/InstanceStatus"
    },
    "status_message": {
      "description": "StatusMessage describes the current status of the instance",
      "type": "string"
    },
    "stored_logs": {
      "description": "StoredLogs lists log files AMS stores for the instance.",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "tags": {
      "description": "Tags specifies the tags the instance has assigned",
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "type": {
      "$ref": "#/$defs/InstanceType"
    }
  },
  "$defs": {
    "InstanceResources": {
      "description": "InstanceResources represents resources assigned to an instance",
      "type": "object",
      "properties": {
        "cpus": {
          "description": "CPUs cores assigned to the instance",
          "type": "integer",
          "format": "int64"
        },
        "disk-size": {
          "description": "DiskSize specifies the amount of storage assigned to the instance in bytes",
          "type": "integer",
          "format": "int64"
        },
        "gpu-slots": {
          "description": "GPUSlots specifies the number of GPU slots the instance got allocated",
          "type": "integer",
          "format": "int64"
        },
        "memory": {
          "description": "Memory assigned to the instance in bytes",
          "type": "integer",
          "format": "int64"
        },
        "vpu-slots": {
          "description": "VPUSlots specifies the number of VPU slots the instance",
          "type": "integer",
          "format": "int64"
        }
      }
    },
    "InstanceService": {
      "description": "While NetworkServiceSpec defines what the user requests, InstanceService is what is actually\nopened on the instance.",
      "type": "object",
      "title": "InstanceService describes a single service the instance exposes to the outside world.",
      "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 instance a hint what the exposed port is being used for. This\nallows further tweaks inside the instance to expose the service correctly.",
          "type": "string"
        },
        "node_port": {
          "description": "NodePort is the port used on the LXD node to map to the service port\nIf left empty the node port is automatically selected.",
          "type": "integer",
          "format": "int64"
        },
        "node_port_end": {
          "description": "NodePortEnd, if specified, denotes the end of the port range on the node starting\nat NodePort",
          "type": "integer",
          "format": "int64"
        },
        "port": {
          "description": "Port is the port the instance provides a service on",
          "type": "integer",
          "format": "int64"
        },
        "port_end": {
          "description": "PortEnd, if specified, denotes the end of the port range starting at Port",
          "type": "integer",
          "format": "int64"
        },
        "protocols": {
          "description": "List of network protocols (tcp, udp) the port should be exposed for",
          "type": "array",
          "items": {
            "$ref": "#/$defs/NetworkProtocol"
          }
        }
      }
    },
    "InstanceStatus": {
      "description": "InstanceStatus represents the status a instance can be in",
      "type": "integer",
      "format": "int64"
    },
    "InstanceType": {
      "description": "InstanceType describes the type of an instance (container, vm)",
      "type": "string"
    },
    "NetworkProtocol": {
      "description": "NetworkProtocol describes a specific network protocol like TCP or UDP a ContainerService can use",
      "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-instance"
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.