{
  "v1_player_props": [
    "passing_yards",
    "passing_attempts",
    "passing_completions",
    "passing_tds",
    "passing_interceptions",
    "rushing_yards",
    "rush_attempts",
    "receiving_yards",
    "receptions",
    "rush_receiving_yards",
    "anytime_td"
  ],
  "v1_team_markets": [
    "moneyline",
    "spread",
    "game_total",
    "team_total"
  ],
  "deferred_markets": [
    "kicker",
    "defense_special_teams"
  ],
  "odds_api": {
    "sport_key": "americanfootball_nfl",
    "regions": "us",
    "odds_format": "american",
    "v1_market_count": 15,
    "featured_endpoint_keys": [
      "h2h",
      "spreads",
      "totals"
    ],
    "event_odds_endpoint_keys": [
      "team_totals",
      "player_pass_yds",
      "player_pass_attempts",
      "player_pass_completions",
      "player_pass_tds",
      "player_pass_interceptions",
      "player_rush_yds",
      "player_rush_attempts",
      "player_reception_yds",
      "player_receptions",
      "player_rush_reception_yds",
      "player_anytime_td"
    ],
    "v1_player_prop_keys": [
      "player_pass_yds",
      "player_pass_attempts",
      "player_pass_completions",
      "player_pass_tds",
      "player_pass_interceptions",
      "player_rush_yds",
      "player_rush_attempts",
      "player_reception_yds",
      "player_receptions",
      "player_rush_reception_yds",
      "player_anytime_td"
    ],
    "v1_team_market_keys": [
      "h2h",
      "spreads",
      "totals",
      "team_totals"
    ],
    "deferred_provider_markets": {
      "kickers": "player_field_goals, player_kicking_points, player_pats",
      "dst_or_defense": "player_sacks, player_solo_tackles, player_tackles_assists",
      "first_last_td": "player_1st_td, player_last_td",
      "longest_markets": "player_pass_longest_completion, player_reception_longest, player_rush_longest",
      "alternate_lines": "alternate_* and *_alternate markets are V1.5/V2"
    },
    "markets": [
      {
        "market": "moneyline",
        "api_key": "h2h",
        "endpoint": "odds",
        "market_type": "featured",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "spread",
        "api_key": "spreads",
        "endpoint": "odds",
        "market_type": "featured",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "game_total",
        "api_key": "totals",
        "endpoint": "odds",
        "market_type": "featured",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "team_total",
        "api_key": "team_totals",
        "endpoint": "event_odds",
        "market_type": "additional",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "passing_yards",
        "api_key": "player_pass_yds",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "passing_attempts",
        "api_key": "player_pass_attempts",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "passing_completions",
        "api_key": "player_pass_completions",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "passing_tds",
        "api_key": "player_pass_tds",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "passing_interceptions",
        "api_key": "player_pass_interceptions",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "rushing_yards",
        "api_key": "player_rush_yds",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "rush_attempts",
        "api_key": "player_rush_attempts",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "receiving_yards",
        "api_key": "player_reception_yds",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "receptions",
        "api_key": "player_receptions",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "rush_receiving_yards",
        "api_key": "player_rush_reception_yds",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": ""
      },
      {
        "market": "anytime_td",
        "api_key": "player_anytime_td",
        "endpoint": "event_odds",
        "market_type": "player_prop",
        "v1_supported": true,
        "notes": "High-variance yes/no market; handled outside normal yardage baby-line logic."
      }
    ],
    "source": "The Odds API betting markets documentation",
    "source_url": "https://the-odds-api.com/sports-odds-data/betting-markets.html",
    "live_enablement_allowed": false
  },
  "notes": [
    "Kickers and defense/special teams are deferred out of V1.",
    "Team markets are Lean / Review / No Play only until validated.",
    "Alt lines and SGP handling are post-V1."
  ]
}