{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://meet-still.app/schemas/plugin-snapshot-v1.schema.json",
  "title": "Still full metadata snapshot v1",
  "type": "object", "additionalProperties": false,
  "required": ["protocolVersion", "pluginID", "connectionID", "revision", "observedAt", "expiresAt", "isSample", "facts"],
  "properties": {
    "protocolVersion": { "const": 1 },
    "pluginID": { "type": "string", "maxLength": 96 },
    "connectionID": { "type": "string", "format": "uuid" },
    "revision": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
    "observedAt": { "type": "string", "format": "date-time", "maxLength": 40 },
    "expiresAt": { "type": "string", "format": "date-time", "maxLength": 40 },
    "isSample": { "type": "boolean" },
    "facts": { "type": "array", "maxItems": 4, "items": { "oneOf": [
      { "type": "object", "additionalProperties": false, "required": ["widgetID", "kind", "windows"],
        "properties": {
          "widgetID": { "type": "string" }, "kind": { "const": "quota" },
          "windows": { "type": "array", "minItems": 1, "maxItems": 2, "items": {
            "type": "object", "additionalProperties": false, "required": ["minutes", "usedPercent"],
            "properties": {
              "minutes": { "type": "integer", "minimum": 1, "maximum": 44640 },
              "usedPercent": { "type": "number", "minimum": 0, "maximum": 100 },
              "resetsAt": { "type": ["string", "null"], "format": "date-time" }
            }
          } }
        }
      },
      { "type": "object", "additionalProperties": false, "required": ["widgetID", "kind", "state", "count"],
        "properties": {
          "widgetID": { "type": "string" }, "kind": { "const": "agentActivity" },
          "state": { "enum": ["working", "attentionRequested", "completed", "interrupted", "failed", "unknown"] },
          "count": { "type": "integer", "minimum": 0, "maximum": 64 }
        }
      }
    ] } }
  }
}
