{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/canonical/main/json-schema/canonical-connection-status-schema.json", "title": "ConnectionStatus", "description": "The overall connection status of plugs and slots on the system.", "x-generated": "2026-10-04", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/canonical-interfaces-api-openapi.yml#/components/schemas/ConnectionStatus", "type": "object", "properties": { "established": { "type": "array", "description": "A list of connections that are currently established.", "items": { "$ref": "#/$defs/Connection" } }, "undesired": { "type": "array", "description": "A list of connections that have been manually disconnected.", "items": { "$ref": "#/$defs/Connection" } }, "plugs": { "type": "array", "description": "A list of all available plugs.", "items": { "$ref": "#/$defs/Plug" } }, "slots": { "type": "array", "description": "A list of all available slots.", "items": { "$ref": "#/$defs/Slot" } } }, "$defs": { "Connection": { "type": "object", "description": "Represents a connection between a specific plug and slot.", "properties": { "slot": { "$ref": "#/$defs/SlotRef" }, "plug": { "$ref": "#/$defs/PlugRef" }, "interface": { "type": "string", "description": "The name of the interface governing the connection." }, "manual": { "type": "boolean", "description": "True if the connection was established manually." }, "gadget": { "type": "boolean", "description": "True if the connection is defined by the gadget snap." }, "slot-attrs": { "type": "object", "additionalProperties": true, "description": "A map of the slot's attributes.\nThese are negotiated by and belong to the connection." }, "plug-attrs": { "type": "object", "additionalProperties": true, "description": "A map of the plug's attributes.\nThese are negotiated by and belong to the connection." } } }, "Plug": { "type": "object", "description": "Detailed information about a plug.", "properties": { "snap": { "type": "string", "description": "The name of the snap providing the plug." }, "plug": { "type": "string", "description": "The name of the plug itself." }, "interface": { "type": "string", "description": "The interface name for the plug." }, "attrs": { "type": "object", "additionalProperties": true, "description": "A static map of the plug's attributes.\nThese are attributes that belong to the plug" }, "apps": { "type": "array", "items": { "type": "string" }, "description": "A list of apps associated with this plug." }, "label": { "type": "string", "description": "The display label for the plug." }, "connections": { "type": "array", "items": { "$ref": "#/$defs/SlotRef" }, "description": "A list of slots this plug is connected to." } } }, "PlugRef": { "type": "object", "description": "A reference to a specific plug.", "properties": { "snap": { "type": "string", "description": "The name of the snap providing the plug." }, "plug": { "type": "string", "description": "The name of the plug." } } }, "Slot": { "type": "object", "description": "Detailed information about a slot.", "properties": { "snap": { "type": "string", "description": "The name of the snap providing the slot." }, "slot": { "type": "string", "description": "The name of the slot itself." }, "interface": { "type": "string", "description": "The interface name for the slot." }, "attrs": { "type": "object", "additionalProperties": true, "description": "A static map of the slot's attributes.\nThese are attributes that belong to the slot" }, "apps": { "type": "array", "items": { "type": "string" }, "description": "A list of apps associated with this slot." }, "label": { "type": "string", "description": "The display label for the slot." }, "connections": { "type": "array", "items": { "$ref": "#/$defs/PlugRef" }, "description": "A list of plugs connected to this slot." } } }, "SlotRef": { "type": "object", "description": "A reference to a specific slot.", "properties": { "snap": { "type": "string", "description": "The name of the snap providing the slot." }, "slot": { "type": "string", "description": "The name of the slot." } } } } }