{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ai.torch.tel/docs/capability.schema.json",
  "title": "AI.TORCH device capability descriptor",
  "type": "object",
  "additionalProperties": false,
  "required": ["id", "version", "kind", "availability", "power", "operations"],
  "properties": {
    "id": {"type": "string", "pattern": "^[a-z][a-z0-9_.-]+$"},
    "version": {"type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$"},
    "kind": {"enum": ["sensor", "actuator", "transport", "storage", "ui", "module", "service"]},
    "summary": {"type": "string", "maxLength": 180},
    "availability": {
      "type": "object",
      "required": ["state"],
      "properties": {
        "state": {"enum": ["available", "degraded", "offline", "missing", "permission_required"]},
        "reason": {"type": "string"}
      }
    },
    "power": {
      "type": "object",
      "required": ["class"],
      "properties": {
        "class": {"enum": ["passive", "tiny", "low", "medium", "high", "burst"]},
        "typical_mw": {"type": "number", "minimum": 0},
        "max_duration_s": {"type": "number", "minimum": 0}
      }
    },
    "permissions": {"type": "array", "items": {"type": "string"}, "uniqueItems": true},
    "operations": {
      "type": "object",
      "minProperties": 1,
      "additionalProperties": {
        "type": "object",
        "required": ["mode", "input_schema", "output_schema"],
        "properties": {
          "mode": {"enum": ["read", "invoke", "subscribe"]},
          "summary": {"type": "string"},
          "timeout_ms": {"type": "integer", "minimum": 1},
          "input_schema": {"type": "object"},
          "output_schema": {"type": "object"},
          "errors": {"type": "array", "items": {"type": "string"}}
        }
      }
    }
  }
}
