{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://sakibshuvo.github.io/Entroping/schemas/capture-summary.v1.schema.json",
  "title": "Entroping Capture Summary v1",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schema_version",
    "summary",
    "sessions",
    "methods",
    "hosts",
    "dependency_targets",
    "status_families",
    "redaction_categories"
  ],
  "properties": {
    "schema_version": {
      "const": "entroping.capture-summary.v1"
    },
    "summary": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "total_records",
        "total_sessions",
        "redacted_records",
        "unredacted_records"
      ],
      "properties": {
        "total_records": {"type": "integer", "minimum": 0},
        "total_sessions": {"type": "integer", "minimum": 0},
        "redacted_records": {"type": "integer", "minimum": 0},
        "unredacted_records": {"type": "integer", "minimum": 0}
      }
    },
    "sessions": {
      "type": "array",
      "items": {"$ref": "#/$defs/session"}
    },
    "methods": {
      "type": "array",
      "items": {"$ref": "#/$defs/count"}
    },
    "hosts": {
      "type": "array",
      "items": {"$ref": "#/$defs/count"}
    },
    "dependency_targets": {
      "type": "array",
      "items": {"$ref": "#/$defs/count"}
    },
    "status_families": {
      "type": "array",
      "items": {"$ref": "#/$defs/count"}
    },
    "redaction_categories": {
      "type": "array",
      "items": {"$ref": "#/$defs/count"}
    }
  },
  "$defs": {
    "count": {
      "type": "object",
      "additionalProperties": false,
      "required": ["label", "count"],
      "properties": {
        "label": {"type": "string"},
        "count": {"type": "integer", "minimum": 0}
      }
    },
    "session": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "id",
        "started_at",
        "ended_at",
        "record_count",
        "primary_host",
        "methods",
        "hosts",
        "dependency_targets",
        "status_families",
        "redaction_categories"
      ],
      "properties": {
        "id": {"type": "string", "pattern": "^session-[0-9]{3}$"},
        "started_at": {"type": "string"},
        "ended_at": {"type": "string"},
        "record_count": {"type": "integer", "minimum": 1},
        "primary_host": {"type": "string"},
        "methods": {
          "type": "array",
          "items": {"$ref": "#/$defs/count"}
        },
        "hosts": {
          "type": "array",
          "items": {"$ref": "#/$defs/count"}
        },
        "dependency_targets": {
          "type": "array",
          "items": {"$ref": "#/$defs/count"}
        },
        "status_families": {
          "type": "array",
          "items": {"$ref": "#/$defs/count"}
        },
        "redaction_categories": {
          "type": "array",
          "items": {"$ref": "#/$defs/count"}
        }
      }
    }
  }
}
