{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sportstatsapi/json-schema/sportstatsapi-handlers-public-coverage-schema.json",
  "title": "handlers.PublicCoverage",
  "x-generated": "2026-11-10",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sportstatsapi-coverage-api-openapi.yml#/components/schemas/handlers.PublicCoverage",
  "properties": {
    "endpoints": {
      "items": {
        "$ref": "#/$defs/handlers.CoverageEndpoint"
      },
      "type": "array"
    },
    "leagues": {
      "items": {
        "$ref": "#/$defs/database.CoverageLeague"
      },
      "type": "array"
    }
  },
  "type": "object",
  "$defs": {
    "database.CoverageLeague": {
      "properties": {
        "all_sports_pack_only": {
          "description": "AllSportsPackOnly: the sport is sold only in the all-sports pack,\nnever as a one-sport or one-league plan (SportAllPackOnly).",
          "type": "boolean"
        },
        "code": {
          "description": "our league code (l…)",
          "type": "string"
        },
        "country": {
          "type": "string"
        },
        "history": {
          "$ref": "#/$defs/database.History"
        },
        "key": {
          "description": "the website's competition key",
          "type": "string"
        },
        "lineups": {
          "description": "recent matches carry line-ups",
          "type": "boolean"
        },
        "live": {
          "description": "live: scores update while matches are on, and we have seen them\nlive; live_expected: the feed covers it live but no match of it was\nseen in play yet (new or off season since tracking began, 4 Oct\n2026); delayed: final results only, after the match; none: fixtures\nonly so far.",
          "type": "string"
        },
        "name": {
          "type": "string"
        },
        "play_by_play": {
          "description": "recent matches carry play-by-play",
          "type": "boolean"
        },
        "result_delay_min": {
          "description": "median minutes from the expected end of a match to its final result",
          "type": "integer"
        },
        "sport": {
          "type": "string"
        },
        "standings": {
          "type": "boolean"
        },
        "statistics": {
          "description": "recent results: Full, Basic, Scores only",
          "type": "string"
        },
        "updated_at": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "database.History": {
      "properties": {
        "box_scores_from": {
          "description": "match statistics / box score (cricket: scorecard)",
          "type": "string"
        },
        "play_by_play_from": {
          "type": "string"
        },
        "results_from": {
          "type": "string"
        }
      },
      "type": "object"
    },
    "handlers.CoverageEndpoint": {
      "properties": {
        "all_sports_pack_only": {
          "description": "AllSportsPackOnly: the sport is only in the all-sports pack.",
          "type": "boolean"
        },
        "data": {
          "description": "Data: the league coverage field that says whether a league has this\nendpoint's data (live, box_scores, play_by_play, standings, lineups); \"\"\nfor every league.",
          "type": "string"
        },
        "enhanced": {
          "description": "Enhanced: Insights data (briefings, facts, head-to-head), in the paid\nData + Insights plans only, never on Free (middleware.TierInsight).",
          "type": "boolean"
        },
        "feature": {
          "description": "Feature: the plan feature the endpoint needs (insights, play_by_play,\ninjuries); \"\" when every plan of the sport has it.",
          "type": "string"
        },
        "path": {
          "description": "under /api/v1",
          "type": "string"
        },
        "summary": {
          "type": "string"
        }
      },
      "type": "object"
    }
  }
}