{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://docs.switchboard.audio/schemas/switchboard-object.json",
  "title": "Switchboard Object",
  "description": "Base shape shared by every Switchboard object instance: the SDK singleton, extensions, engines, graphs, and nodes.",
  "type": "object",
  "required": ["type", "subtype"],
  "properties": {
    "id": {
      "description": "Identifier of the object within its parent scope. May be omitted when the object is referenced by URI alone.",
      "type": "string",
      "minLength": 1
    },
    "uri": {
      "description": "Fully-qualified path to the object (e.g. `switchboard.engine1.graph1.node1`).",
      "type": "string",
      "minLength": 1
    },
    "type": {
      "description": "The kind of Switchboard object.",
      "type": "string",
      "enum": ["switchboard", "engine", "graph", "node", "extension"]
    },
    "subtype": {
      "description": "The specific variant within the kind (e.g. `Switchboard.AudioPlayer` for a node).",
      "type": "string",
      "minLength": 1
    },
    "configuration": {
      "description": "Construction-time parameters, keyed by parameter name.",
      "type": "object",
      "additionalProperties": true
    },
    "properties": {
      "description": "Runtime properties, keyed by property name.",
      "type": "object",
      "additionalProperties": true
    }
  }
}
