{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://tiergauge.com/api/coverage.schema.json",
  "title": "TierGauge coverage gaps feed",
  "description": "Schema for /api/coverage.json. Lists tools that are referenced by other tools (via the `alternatives` field) but that aren't yet seeded into the spine. Each gap is a backlog item.",
  "type": "object",
  "required": ["feed_version", "generated_at", "site", "license", "tools_tracked", "gap_count", "total_references", "gaps"],
  "properties": {
    "$schema": { "type": "string", "format": "uri" },
    "feed_version": { "type": "string" },
    "generated_at": { "type": "string", "format": "date-time" },
    "site": { "type": "string", "format": "uri" },
    "license": { "type": "string" },
    "tools_tracked": { "type": "integer", "minimum": 0 },
    "gap_count": { "type": "integer", "minimum": 0 },
    "total_references": { "type": "integer", "minimum": 0 },
    "gaps": {
      "type": "array",
      "items": {
        "type": "object",
        "required": ["slug", "reference_count", "referenced_by"],
        "properties": {
          "slug": { "type": "string", "minLength": 1 },
          "reference_count": { "type": "integer", "minimum": 1 },
          "referenced_by": {
            "type": "array",
            "items": { "type": "string", "minLength": 1 },
            "minItems": 1
          }
        }
      }
    }
  }
}
