{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/stat-api-com/json-schema/stat-api-com-nflplay-by-plays-schema.json",
  "title": "NFLPlayByPlays",
  "description": "Every individual play of every NFL game — what happened, where on the field, with what result. Includes pass and rush attempts, penalties, special teams, EPA, win probability, and the full game-clock and down-and-distance context.",
  "x-generated": "2026-10-31",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/stat-api-com-openapi.json#/components/schemas/NFLPlayByPlays",
  "properties": {
    "aborted_play": {
      "description": "Play was aborted",
      "type": "boolean"
    },
    "air_epa": {
      "description": "EPA from air yards",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "air_wpa": {
      "description": "WPA from air yards",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "air_yds": {
      "description": "Yards in air (perpendicular to LOS)",
      "type": [
        "integer",
        "null"
      ]
    },
    "assist_tackle": {
      "description": "Assist tackle on play",
      "type": "boolean"
    },
    "assist_tackle_1_player_id": {
      "description": "Assist tackler 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_1_player_name": {
      "description": "Assist tackler 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_1_team": {
      "description": "Assist tackler 1 team",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_2_player_id": {
      "description": "Assist tackler 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_2_player_name": {
      "description": "Assist tackler 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_2_team": {
      "description": "Assist tackler 2 team",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_3_player_id": {
      "description": "Assist tackler 3 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_3_player_name": {
      "description": "Assist tackler 3 name",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_3_team": {
      "description": "Assist tackler 3 team",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_4_player_id": {
      "description": "Assist tackler 4 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_4_player_name": {
      "description": "Assist tackler 4 name",
      "type": [
        "string",
        "null"
      ]
    },
    "assist_tackle_4_team": {
      "description": "Assist tackler 4 team",
      "type": [
        "string",
        "null"
      ]
    },
    "away_coach": {
      "description": "Away team head coach",
      "type": [
        "string",
        "null"
      ]
    },
    "away_score": {
      "description": "Total away points",
      "type": [
        "integer",
        "null"
      ]
    },
    "away_team": {
      "description": "Away team abbreviation",
      "type": [
        "string",
        "null"
      ]
    },
    "away_timeouts_remaining": {
      "description": "Away timeouts remaining",
      "type": [
        "integer",
        "null"
      ]
    },
    "away_wp": {
      "description": "Away team win probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "away_wp_post": {
      "description": "Away WP after play",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "blocked_player_id": {
      "description": "Blocked kick player GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "blocked_player_name": {
      "description": "Blocked kick player name",
      "type": [
        "string",
        "null"
      ]
    },
    "comp_air_epa": {
      "description": "Completion air EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "comp_air_wpa": {
      "description": "Completion air WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "comp_yac_epa": {
      "description": "Completion YAC EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "comp_yac_wpa": {
      "description": "Completion YAC WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "complete_pass": {
      "description": "Pass completed",
      "type": "boolean"
    },
    "cp": {
      "description": "Completion probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "cpoe": {
      "description": "Completion percentage over expected",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "def_wp": {
      "description": "Win probability for defense",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "defensive_extra_point_attempt": {
      "description": "Defense extra point attempt",
      "type": "boolean"
    },
    "defensive_extra_point_conv": {
      "description": "Defense extra point success",
      "type": "boolean"
    },
    "defensive_team_id": {
      "description": "FK to teams table for defensive team",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "defensive_two_point_attempt": {
      "description": "Defense two-point attempt",
      "type": "boolean"
    },
    "defensive_two_point_conv": {
      "description": "Defense two-point conversion success",
      "type": "boolean"
    },
    "defteam": {
      "description": "Defensive team abbreviation",
      "type": [
        "string",
        "null"
      ]
    },
    "defteam_score": {
      "description": "Defense team score at start",
      "type": [
        "integer",
        "null"
      ]
    },
    "defteam_score_post": {
      "description": "Defense team score at end",
      "type": [
        "integer",
        "null"
      ]
    },
    "defteam_timeouts_remaining": {
      "description": "Defensive team timeouts",
      "type": [
        "integer",
        "null"
      ]
    },
    "desc": {
      "description": "Full play description text",
      "type": [
        "string",
        "null"
      ]
    },
    "div_game": {
      "description": "Division game",
      "type": "boolean"
    },
    "down": {
      "description": "Down (1-4)",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive": {
      "description": "Drive number in game",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_end_transition": {
      "description": "How drive ended",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_end_yard_line": {
      "description": "Yard line at drive end",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_ended_with_score": {
      "description": "Drive resulted in score",
      "type": "boolean"
    },
    "drive_first_downs": {
      "description": "First downs gained in drive",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_game_clock_end": {
      "description": "Game clock at drive end",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_game_clock_start": {
      "description": "Game clock at drive start",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_id": {
      "description": "FK to game_drives table",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_inside20": {
      "description": "Drive reached red zone",
      "type": "boolean"
    },
    "drive_play_count": {
      "description": "Number of plays in drive",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_play_id_ended": {
      "description": "Last play_id of drive",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_play_id_started": {
      "description": "First play_id of drive",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_quarter_end": {
      "description": "Quarter when drive ended",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_quarter_start": {
      "description": "Quarter when drive started",
      "type": [
        "integer",
        "null"
      ]
    },
    "drive_real_start_time": {
      "description": "Drive start time (real clock)",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_start_transition": {
      "description": "How possession was obtained",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_start_yard_line": {
      "description": "Yard line at drive start",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_time_of_possession": {
      "description": "Drive time of possession (mm:ss)",
      "type": [
        "string",
        "null"
      ]
    },
    "drive_yds_penalized": {
      "description": "Penalty yards during drive",
      "type": [
        "integer",
        "null"
      ]
    },
    "end_clock_time": {
      "description": "Game clock at play end",
      "type": [
        "string",
        "null"
      ]
    },
    "end_yard_line": {
      "description": "Yard line at play end",
      "type": [
        "string",
        "null"
      ]
    },
    "ep": {
      "description": "Expected points before play",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "epa": {
      "description": "Expected points added",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "extra_point_attempt": {
      "description": "Extra point attempt",
      "type": "boolean"
    },
    "extra_point_prob": {
      "description": "Extra point probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "extra_point_result": {
      "description": "good, failed, blocked, safety, aborted",
      "type": [
        "string",
        "null"
      ]
    },
    "fantasy": {
      "description": "Fantasy designation",
      "type": [
        "string",
        "null"
      ]
    },
    "fantasy_id": {
      "description": "Fantasy identifier",
      "type": [
        "string",
        "null"
      ]
    },
    "fantasy_player_id": {
      "description": "Fantasy designation player ID",
      "type": [
        "string",
        "null"
      ]
    },
    "fantasy_player_name": {
      "description": "Fantasy designation player name",
      "type": [
        "string",
        "null"
      ]
    },
    "fg_prob": {
      "description": "FG probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "field_goal_attempt": {
      "description": "Field goal attempt",
      "type": "boolean"
    },
    "field_goal_result": {
      "description": "made, missed, or blocked",
      "type": [
        "string",
        "null"
      ]
    },
    "first_down": {
      "description": "First down achieved",
      "type": "boolean"
    },
    "first_down_pass": {
      "description": "Passing first down",
      "type": "boolean"
    },
    "first_down_penalty": {
      "description": "First down via penalty",
      "type": "boolean"
    },
    "first_down_rush": {
      "description": "Rushing first down",
      "type": "boolean"
    },
    "fixed_drive": {
      "description": "Manual drive number correction",
      "type": [
        "integer",
        "null"
      ]
    },
    "fixed_drive_result": {
      "description": "Manual drive result correction",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_1_player_id": {
      "description": "Forced fumble player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_1_player_name": {
      "description": "Forced fumble player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_1_team": {
      "description": "Forced fumble team 1",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_2_player_id": {
      "description": "Forced fumble player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_2_player_name": {
      "description": "Forced fumble player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "forced_fumble_player_2_team": {
      "description": "Forced fumble team 2",
      "type": [
        "string",
        "null"
      ]
    },
    "fourth_down_converted": {
      "description": "Fourth down conversion",
      "type": "boolean"
    },
    "fourth_down_failed": {
      "description": "Fourth down failure",
      "type": "boolean"
    },
    "fumble": {
      "description": "Fumble occurred",
      "type": "boolean"
    },
    "fumble_forced": {
      "description": "Fumble was forced",
      "type": "boolean"
    },
    "fumble_lost": {
      "description": "Fumble was lost",
      "type": "boolean"
    },
    "fumble_not_forced": {
      "description": "Fumble was not forced",
      "type": "boolean"
    },
    "fumble_out_of_bounds": {
      "description": "Fumble went OOB",
      "type": "boolean"
    },
    "fumble_recovery_1_player_id": {
      "description": "Recovery player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_1_player_name": {
      "description": "Recovery player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_1_team": {
      "description": "Recovery team 1",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_1_yds": {
      "description": "Recovery yards 1",
      "type": [
        "integer",
        "null"
      ]
    },
    "fumble_recovery_2_player_id": {
      "description": "Recovery player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_2_player_name": {
      "description": "Recovery player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_2_team": {
      "description": "Recovery team 2",
      "type": [
        "string",
        "null"
      ]
    },
    "fumble_recovery_2_yds": {
      "description": "Recovery yards 2",
      "type": [
        "integer",
        "null"
      ]
    },
    "fumbled_1_player_id": {
      "description": "First fumbler GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "fumbled_1_player_name": {
      "description": "First fumbler name",
      "type": [
        "string",
        "null"
      ]
    },
    "fumbled_1_team": {
      "description": "First fumbler team",
      "type": [
        "string",
        "null"
      ]
    },
    "fumbled_2_player_id": {
      "description": "Second fumbler GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "fumbled_2_player_name": {
      "description": "Second fumbler name",
      "type": [
        "string",
        "null"
      ]
    },
    "fumbled_2_team": {
      "description": "Second fumbler team",
      "type": [
        "string",
        "null"
      ]
    },
    "game_half": {
      "description": "Half1, Half2, or Overtime",
      "type": [
        "string",
        "null"
      ]
    },
    "game_id": {
      "description": "FK to games table",
      "format": "int64",
      "type": "integer"
    },
    "game_seconds_remaining": {
      "description": "Seconds remaining in game",
      "type": "integer"
    },
    "game_stadium": {
      "description": "Game stadium name",
      "type": [
        "string",
        "null"
      ]
    },
    "goal_to_go": {
      "description": "Goal-to-go situation",
      "type": "boolean"
    },
    "half_sack_1_player_id": {
      "description": "Half-sack player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "half_sack_1_player_name": {
      "description": "Half-sack player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "half_sack_2_player_id": {
      "description": "Half-sack player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "half_sack_2_player_name": {
      "description": "Half-sack player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "half_seconds_remaining": {
      "description": "Seconds remaining in half",
      "type": "integer"
    },
    "home_coach": {
      "description": "Home team head coach",
      "type": [
        "string",
        "null"
      ]
    },
    "home_opening_kickoff": {
      "description": "Home team had opening kickoff",
      "type": "boolean"
    },
    "home_score": {
      "description": "Total home points",
      "type": [
        "integer",
        "null"
      ]
    },
    "home_team": {
      "description": "Home team abbreviation",
      "type": [
        "string",
        "null"
      ]
    },
    "home_timeouts_remaining": {
      "description": "Home timeouts remaining",
      "type": [
        "integer",
        "null"
      ]
    },
    "home_wp": {
      "description": "Home team win probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "home_wp_post": {
      "description": "Home WP after play",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "id": {
      "description": "Primary Key",
      "format": "int64",
      "type": "integer"
    },
    "incomplete_pass": {
      "description": "Pass incomplete",
      "type": "boolean"
    },
    "interception": {
      "description": "Interception indicator",
      "type": "boolean"
    },
    "interception_player_id": {
      "description": "Interceptor GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "interception_player_name": {
      "description": "Interceptor name",
      "type": [
        "string",
        "null"
      ]
    },
    "jersey_number": {
      "description": "Primary player jersey",
      "type": [
        "integer",
        "null"
      ]
    },
    "kick_distance": {
      "description": "Kick distance in yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "kicker_player_id": {
      "description": "Kicker GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "kicker_player_name": {
      "description": "Kicker name",
      "type": [
        "string",
        "null"
      ]
    },
    "kickoff_attempt": {
      "description": "Kickoff attempt",
      "type": "boolean"
    },
    "kickoff_downed": {
      "description": "Kickoff downed",
      "type": "boolean"
    },
    "kickoff_fair_catch": {
      "description": "Kickoff fair catch",
      "type": "boolean"
    },
    "kickoff_in_endzone": {
      "description": "Kickoff in endzone",
      "type": "boolean"
    },
    "kickoff_inside_twenty": {
      "description": "Kickoff inside 20",
      "type": "boolean"
    },
    "kickoff_out_of_bounds": {
      "description": "Kickoff OOB",
      "type": "boolean"
    },
    "kickoff_returner_player_id": {
      "description": "Kickoff returner GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "kickoff_returner_player_name": {
      "description": "Kickoff returner name",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_interception_player_id": {
      "description": "Lateral after INT GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_interception_player_name": {
      "description": "Lateral after INT name",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_kickoff_returner_player_id": {
      "description": "Lateral kickoff returner GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_kickoff_returner_player_name": {
      "description": "Lateral kickoff returner name",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_punt_returner_player_id": {
      "description": "Lateral punt returner GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_punt_returner_player_name": {
      "description": "Lateral punt returner name",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_receiver_player_id": {
      "description": "Lateral receiver GSIS ID (pass)",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_receiver_player_name": {
      "description": "Lateral receiver name (pass)",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_receiving_yds": {
      "description": "Yards after lateral (pass)",
      "type": [
        "integer",
        "null"
      ]
    },
    "lateral_reception": {
      "description": "Lateral on pass play",
      "type": "boolean"
    },
    "lateral_return": {
      "description": "Lateral on return",
      "type": "boolean"
    },
    "lateral_rush": {
      "description": "Lateral on rush play",
      "type": "boolean"
    },
    "lateral_rusher_player_id": {
      "description": "Lateral receiver GSIS ID (rush)",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_rusher_player_name": {
      "description": "Lateral receiver name (rush)",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_rushing_yds": {
      "description": "Yards after lateral (rush)",
      "type": [
        "integer",
        "null"
      ]
    },
    "lateral_sack_player_id": {
      "description": "Lateral after sack GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "lateral_sack_player_name": {
      "description": "Lateral after sack name",
      "type": [
        "string",
        "null"
      ]
    },
    "location": {
      "description": "Home or Neutral",
      "type": [
        "string",
        "null"
      ]
    },
    "name": {
      "description": "Primary player name (passer or rusher)",
      "type": [
        "string",
        "null"
      ]
    },
    "nfl_api_id": {
      "description": "UUID from NFL API",
      "type": [
        "string",
        "null"
      ]
    },
    "no_huddle": {
      "description": "No-huddle offense",
      "type": "boolean"
    },
    "no_score_prob": {
      "description": "Probability of no score",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "old_game_id": {
      "description": "Legacy NFL game ID format",
      "type": [
        "string",
        "null"
      ]
    },
    "opp_fg_prob": {
      "description": "Opponent FG probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "opp_safety_prob": {
      "description": "Opponent safety probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "opp_td_prob": {
      "description": "Opponent TD probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "order_sequence": {
      "description": "NFL play-ordering column",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "out_of_bounds": {
      "description": "Ran/pushed/sacked out of bounds",
      "type": "boolean"
    },
    "own_kickoff_recovery": {
      "description": "Own kickoff recovery",
      "type": "boolean"
    },
    "own_kickoff_recovery_player_id": {
      "description": "Own kickoff recovery player GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "own_kickoff_recovery_player_name": {
      "description": "Own kickoff recovery player name",
      "type": [
        "string",
        "null"
      ]
    },
    "own_kickoff_recovery_td": {
      "description": "Own kickoff recovery TD",
      "type": "boolean"
    },
    "pass": {
      "description": "Pass play indicator",
      "type": "boolean"
    },
    "pass_attempt": {
      "description": "Pass attempt (includes sacks)",
      "type": "boolean"
    },
    "pass_defense_1_player_id": {
      "description": "Pass defense player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_defense_1_player_name": {
      "description": "Pass defense player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_defense_2_player_id": {
      "description": "Pass defense player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_defense_2_player_name": {
      "description": "Pass defense player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_length": {
      "description": "short or deep",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_location": {
      "description": "left, middle, or right",
      "type": [
        "string",
        "null"
      ]
    },
    "pass_oe": {
      "description": "Dropback percent over expected",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "pass_touchdown": {
      "description": "Passing touchdown",
      "type": "boolean"
    },
    "passer": {
      "description": "Dropback player name (includes scrambles)",
      "type": [
        "string",
        "null"
      ]
    },
    "passer_id": {
      "description": "FK to players table",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "passer_jersey_number": {
      "description": "Passer jersey number",
      "type": [
        "integer",
        "null"
      ]
    },
    "passer_player_id": {
      "description": "Passer GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "passer_player_name": {
      "description": "Passer name",
      "type": [
        "string",
        "null"
      ]
    },
    "passing_yds": {
      "description": "Official passing yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "penalty": {
      "description": "Penalty on play",
      "type": "boolean"
    },
    "penalty_player_id": {
      "description": "Penalized player GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "penalty_player_name": {
      "description": "Penalized player name",
      "type": [
        "string",
        "null"
      ]
    },
    "penalty_team": {
      "description": "Penalized team",
      "type": [
        "string",
        "null"
      ]
    },
    "penalty_type": {
      "description": "Type of penalty",
      "type": [
        "string",
        "null"
      ]
    },
    "penalty_yds": {
      "description": "Penalty yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "play": {
      "description": "Regular play (1) vs special event (0)",
      "type": "boolean"
    },
    "play_clock": {
      "description": "Play clock at snap",
      "type": [
        "integer",
        "null"
      ]
    },
    "play_deleted": {
      "description": "Play was deleted",
      "type": "boolean"
    },
    "play_id": {
      "description": "Numeric play identifier unique to game",
      "type": "string"
    },
    "play_type": {
      "description": "pass, run, punt, field_goal, kickoff, extra_point, qb_kneel, qb_spike, no_play",
      "type": [
        "string",
        "null"
      ]
    },
    "play_type_nfl": {
      "description": "NFL source play type",
      "type": [
        "string",
        "null"
      ]
    },
    "possession_team_id": {
      "description": "FK to teams table for possession team",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "posteam": {
      "description": "Possession team abbreviation",
      "type": [
        "string",
        "null"
      ]
    },
    "posteam_score": {
      "description": "Possession team score at start",
      "type": [
        "integer",
        "null"
      ]
    },
    "posteam_score_post": {
      "description": "Possession team score at end",
      "type": [
        "integer",
        "null"
      ]
    },
    "posteam_timeouts_remaining": {
      "description": "Possession team timeouts",
      "type": [
        "integer",
        "null"
      ]
    },
    "posteam_type": {
      "description": "home or away",
      "type": [
        "string",
        "null"
      ]
    },
    "primary_player_gsis_id": {
      "description": "Primary player GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "punt_attempt": {
      "description": "Punt attempt",
      "type": "boolean"
    },
    "punt_blocked": {
      "description": "Punt blocked",
      "type": "boolean"
    },
    "punt_downed": {
      "description": "Punt downed",
      "type": "boolean"
    },
    "punt_fair_catch": {
      "description": "Punt fair catch",
      "type": "boolean"
    },
    "punt_in_endzone": {
      "description": "Punt in endzone",
      "type": "boolean"
    },
    "punt_inside_twenty": {
      "description": "Punt inside 20",
      "type": "boolean"
    },
    "punt_out_of_bounds": {
      "description": "Punt OOB",
      "type": "boolean"
    },
    "punt_returner_player_id": {
      "description": "Punt returner GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "punt_returner_player_name": {
      "description": "Punt returner name",
      "type": [
        "string",
        "null"
      ]
    },
    "punter_player_id": {
      "description": "Punter GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "punter_player_name": {
      "description": "Punter name",
      "type": [
        "string",
        "null"
      ]
    },
    "qb_dropback": {
      "description": "QB dropback (pass or scramble)",
      "type": "boolean"
    },
    "qb_epa": {
      "description": "QB EPA credit",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "qb_hit": {
      "description": "QB was hit",
      "type": "boolean"
    },
    "qb_hit_1_player_id": {
      "description": "QB hitter GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "qb_hit_1_player_name": {
      "description": "QB hitter name",
      "type": [
        "string",
        "null"
      ]
    },
    "qb_hit_2_player_id": {
      "description": "Second QB hitter GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "qb_hit_2_player_name": {
      "description": "Second QB hitter name",
      "type": [
        "string",
        "null"
      ]
    },
    "qb_kneel": {
      "description": "QB kneel",
      "type": "boolean"
    },
    "qb_scramble": {
      "description": "QB scramble",
      "type": "boolean"
    },
    "qb_spike": {
      "description": "QB spike",
      "type": "boolean"
    },
    "quarter": {
      "description": "Quarter (1-4, 5=OT)",
      "type": "integer"
    },
    "quarter_end": {
      "description": "Binary quarter-end marker",
      "type": "boolean"
    },
    "quarter_seconds_remaining": {
      "description": "Seconds remaining in quarter",
      "type": "integer"
    },
    "receiver": {
      "description": "Targeted receiver name",
      "type": [
        "string",
        "null"
      ]
    },
    "receiver_id": {
      "description": "FK to players table",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "receiver_jersey_number": {
      "description": "Receiver jersey number",
      "type": [
        "integer",
        "null"
      ]
    },
    "receiver_player_id": {
      "description": "Receiver GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "receiver_player_name": {
      "description": "Receiver name",
      "type": [
        "string",
        "null"
      ]
    },
    "receiving_yds": {
      "description": "Official receiving yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "replay_or_challenge": {
      "description": "Replay/challenge occurred",
      "type": "boolean"
    },
    "replay_or_challenge_result": {
      "description": "Replay result",
      "type": [
        "string",
        "null"
      ]
    },
    "result": {
      "description": "Home score - Away score",
      "type": [
        "integer",
        "null"
      ]
    },
    "return_team": {
      "description": "Returning team",
      "type": [
        "string",
        "null"
      ]
    },
    "return_touchdown": {
      "description": "Return touchdown",
      "type": "boolean"
    },
    "return_yds": {
      "description": "Return yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "roof": {
      "description": "dome, outdoors, closed, open",
      "type": [
        "string",
        "null"
      ]
    },
    "run_gap": {
      "description": "end, guard, or tackle",
      "type": [
        "string",
        "null"
      ]
    },
    "run_location": {
      "description": "left, middle, or right",
      "type": [
        "string",
        "null"
      ]
    },
    "rush": {
      "description": "Rush play (no scrambles)",
      "type": "boolean"
    },
    "rush_attempt": {
      "description": "Rushing play indicator",
      "type": "boolean"
    },
    "rush_touchdown": {
      "description": "Rushing touchdown",
      "type": "boolean"
    },
    "rusher_id": {
      "description": "FK to players table",
      "format": "int64",
      "type": [
        "integer",
        "null"
      ]
    },
    "rusher_jersey_number": {
      "description": "Rusher jersey number",
      "type": [
        "integer",
        "null"
      ]
    },
    "rusher_player_id": {
      "description": "Rusher GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "rusher_player_name": {
      "description": "Rusher name",
      "type": [
        "string",
        "null"
      ]
    },
    "rushing_yds": {
      "description": "Official rushing yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "sack": {
      "description": "Sack indicator",
      "type": "boolean"
    },
    "sack_player_id": {
      "description": "Sacker GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "sack_player_name": {
      "description": "Sacker name",
      "type": [
        "string",
        "null"
      ]
    },
    "safety": {
      "description": "Safety scored",
      "type": "boolean"
    },
    "safety_player_id": {
      "description": "Safety scorer GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "safety_player_name": {
      "description": "Safety scorer name",
      "type": [
        "string",
        "null"
      ]
    },
    "safety_prob": {
      "description": "Safety probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "score_differential": {
      "description": "Score gap at play start",
      "type": [
        "integer",
        "null"
      ]
    },
    "score_differential_post": {
      "description": "Score gap at play end",
      "type": [
        "integer",
        "null"
      ]
    },
    "series": {
      "description": "Series counter within game",
      "type": [
        "integer",
        "null"
      ]
    },
    "series_result": {
      "description": "First down, Touchdown, Punt, etc.",
      "type": [
        "string",
        "null"
      ]
    },
    "series_success": {
      "description": "Series resulted in first down or TD",
      "type": "boolean"
    },
    "shotgun": {
      "description": "Shotgun formation",
      "type": "boolean"
    },
    "side_of_field": {
      "description": "Team abbreviation whose side of field",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle": {
      "description": "Solo tackle on play",
      "type": "boolean"
    },
    "solo_tackle_1_player_id": {
      "description": "Solo tackler 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle_1_player_name": {
      "description": "Solo tackler 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle_1_team": {
      "description": "Solo tackler 1 team",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle_2_player_id": {
      "description": "Solo tackler 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle_2_player_name": {
      "description": "Solo tackler 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "solo_tackle_2_team": {
      "description": "Solo tackler 2 team",
      "type": [
        "string",
        "null"
      ]
    },
    "sp": {
      "description": "Scoring play indicator",
      "type": "boolean"
    },
    "special": {
      "description": "Special teams indicator",
      "type": "boolean"
    },
    "special_teams_play": {
      "description": "Special teams play indicator",
      "type": "boolean"
    },
    "spread_line": {
      "description": "Vegas spread line",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "st_play_type": {
      "description": "Type of special teams play",
      "type": [
        "string",
        "null"
      ]
    },
    "stadium": {
      "description": "Stadium name",
      "type": [
        "string",
        "null"
      ]
    },
    "stadium_id": {
      "description": "Stadium ID",
      "type": [
        "integer",
        "null"
      ]
    },
    "start_time": {
      "description": "Kickoff time (eastern)",
      "type": [
        "string",
        "null"
      ]
    },
    "success": {
      "description": "Play success (based on down/distance)",
      "type": [
        "boolean",
        "null"
      ]
    },
    "surface": {
      "description": "Playing surface type",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_for_loss_1_player_id": {
      "description": "TFL player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_for_loss_1_player_name": {
      "description": "TFL player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_for_loss_2_player_id": {
      "description": "TFL player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_for_loss_2_player_name": {
      "description": "TFL player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist": {
      "description": "Tackle with assistance",
      "type": "boolean"
    },
    "tackle_with_assist_1_player_id": {
      "description": "Tackle-assist player 1 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist_1_player_name": {
      "description": "Tackle-assist player 1 name",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist_1_team": {
      "description": "Tackle-assist player 1 team",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist_2_player_id": {
      "description": "Tackle-assist player 2 GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist_2_player_name": {
      "description": "Tackle-assist player 2 name",
      "type": [
        "string",
        "null"
      ]
    },
    "tackle_with_assist_2_team": {
      "description": "Tackle-assist player 2 team",
      "type": [
        "string",
        "null"
      ]
    },
    "tackled_for_loss": {
      "description": "Tackle for loss",
      "type": "boolean"
    },
    "td_player_id": {
      "description": "TD scorer GSIS ID",
      "type": [
        "string",
        "null"
      ]
    },
    "td_player_name": {
      "description": "TD scorer name",
      "type": [
        "string",
        "null"
      ]
    },
    "td_prob": {
      "description": "TD probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "td_team": {
      "description": "Team scoring TD",
      "type": [
        "string",
        "null"
      ]
    },
    "temp": {
      "description": "Temperature",
      "type": [
        "integer",
        "null"
      ]
    },
    "third_down_converted": {
      "description": "Third down conversion",
      "type": "boolean"
    },
    "third_down_failed": {
      "description": "Third down failure",
      "type": "boolean"
    },
    "time": {
      "description": "Game clock at play start (mm:ss)",
      "type": [
        "string",
        "null"
      ]
    },
    "time_of_day": {
      "description": "Play time in UTC",
      "type": [
        "string",
        "null"
      ]
    },
    "timeout": {
      "description": "Timeout called",
      "type": "boolean"
    },
    "timeout_team": {
      "description": "Team calling timeout",
      "type": [
        "string",
        "null"
      ]
    },
    "total": {
      "description": "Home score + Away score",
      "type": [
        "integer",
        "null"
      ]
    },
    "total_away_comp_air_epa": {
      "description": "Cumulative away completion air EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_comp_air_wpa": {
      "description": "Cumulative away completion air WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_comp_yac_epa": {
      "description": "Cumulative away completion YAC EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_comp_yac_wpa": {
      "description": "Cumulative away completion YAC WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_epa": {
      "description": "Cumulative away EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_pass_epa": {
      "description": "Cumulative away passing EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_pass_wpa": {
      "description": "Cumulative away passing WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_raw_air_epa": {
      "description": "Cumulative away raw air EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_raw_air_wpa": {
      "description": "Cumulative away raw air WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_raw_yac_epa": {
      "description": "Cumulative away raw YAC EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_raw_yac_wpa": {
      "description": "Cumulative away raw YAC WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_rush_epa": {
      "description": "Cumulative away rushing EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_rush_wpa": {
      "description": "Cumulative away rushing WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_away_score": {
      "description": "Away score at play start",
      "type": [
        "integer",
        "null"
      ]
    },
    "total_home_comp_air_epa": {
      "description": "Cumulative home completion air EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_comp_air_wpa": {
      "description": "Cumulative home completion air WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_comp_yac_epa": {
      "description": "Cumulative home completion YAC EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_comp_yac_wpa": {
      "description": "Cumulative home completion YAC WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_epa": {
      "description": "Cumulative home EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_pass_epa": {
      "description": "Cumulative home passing EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_pass_wpa": {
      "description": "Cumulative home passing WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_raw_air_epa": {
      "description": "Cumulative home raw air EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_raw_air_wpa": {
      "description": "Cumulative home raw air WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_raw_yac_epa": {
      "description": "Cumulative home raw YAC EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_raw_yac_wpa": {
      "description": "Cumulative home raw YAC WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_rush_epa": {
      "description": "Cumulative home rushing EPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_rush_wpa": {
      "description": "Cumulative home rushing WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "total_home_score": {
      "description": "Home score at play start",
      "type": [
        "integer",
        "null"
      ]
    },
    "total_line": {
      "description": "Vegas total line",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "touchback": {
      "description": "Touchback",
      "type": "boolean"
    },
    "touchdown": {
      "description": "Touchdown scored",
      "type": "boolean"
    },
    "two_point_attempt": {
      "description": "Two-point conversion attempt",
      "type": "boolean"
    },
    "two_point_conv_result": {
      "description": "success, failure, safety, return",
      "type": [
        "string",
        "null"
      ]
    },
    "two_point_conversion_prob": {
      "description": "Two-point conversion probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "vegas_home_wp": {
      "description": "Vegas home win probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "vegas_home_wpa": {
      "description": "Vegas home WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "vegas_wp": {
      "description": "Vegas win probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "vegas_wpa": {
      "description": "Vegas-adjusted WPA",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "weather": {
      "description": "Weather conditions description",
      "type": [
        "string",
        "null"
      ]
    },
    "wind": {
      "description": "Wind speed (mph)",
      "type": [
        "integer",
        "null"
      ]
    },
    "wp": {
      "description": "Win probability for possession team",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "wpa": {
      "description": "Win probability added",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xpass": {
      "description": "Dropback probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xyac_epa": {
      "description": "Expected EPA after catch",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xyac_fd": {
      "description": "First down probability (xYAC)",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xyac_mean_yardage": {
      "description": "Average expected YAC",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xyac_median_yardage": {
      "description": "Median expected YAC",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "xyac_success": {
      "description": "Positive EPA probability",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "yac_epa": {
      "description": "EPA from yards after catch",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "yac_wpa": {
      "description": "WPA from yards after catch",
      "format": "double",
      "type": [
        "number",
        "null"
      ]
    },
    "yard_line": {
      "description": "Yard line number (0-50)",
      "type": [
        "integer",
        "null"
      ]
    },
    "yardline_100": {
      "description": "Yards from opponent endzone (0-100)",
      "type": [
        "integer",
        "null"
      ]
    },
    "yds_after_catch": {
      "description": "YAC yards",
      "type": [
        "integer",
        "null"
      ]
    },
    "yds_gained": {
      "description": "Yards gained on play",
      "type": [
        "integer",
        "null"
      ]
    },
    "ydsnet": {
      "description": "Total net yards on drive",
      "type": [
        "integer",
        "null"
      ]
    },
    "ydstogo": {
      "description": "Yards to first down/goal",
      "type": [
        "integer",
        "null"
      ]
    },
    "yrdln": {
      "description": "Yard line string (e.g., \"KC 25\")",
      "type": [
        "string",
        "null"
      ]
    }
  },
  "required": [
    "id",
    "game_id",
    "play_id",
    "aborted_play",
    "assist_tackle",
    "complete_pass",
    "defensive_extra_point_attempt",
    "defensive_extra_point_conv",
    "defensive_two_point_attempt",
    "defensive_two_point_conv",
    "div_game",
    "drive_ended_with_score",
    "drive_inside20",
    "extra_point_attempt",
    "field_goal_attempt",
    "first_down",
    "first_down_pass",
    "first_down_penalty",
    "first_down_rush",
    "fourth_down_converted",
    "fourth_down_failed",
    "fumble",
    "fumble_forced",
    "fumble_lost",
    "fumble_not_forced",
    "fumble_out_of_bounds",
    "game_seconds_remaining",
    "goal_to_go",
    "half_seconds_remaining",
    "home_opening_kickoff",
    "incomplete_pass",
    "interception",
    "kickoff_attempt",
    "kickoff_downed",
    "kickoff_fair_catch",
    "kickoff_in_endzone",
    "kickoff_inside_twenty",
    "kickoff_out_of_bounds",
    "lateral_reception",
    "lateral_return",
    "lateral_rush",
    "no_huddle",
    "out_of_bounds",
    "own_kickoff_recovery",
    "own_kickoff_recovery_td",
    "pass",
    "pass_attempt",
    "pass_touchdown",
    "penalty",
    "play",
    "play_deleted",
    "punt_attempt",
    "punt_blocked",
    "punt_downed",
    "punt_fair_catch",
    "punt_in_endzone",
    "punt_inside_twenty",
    "punt_out_of_bounds",
    "qb_dropback",
    "qb_hit",
    "qb_kneel",
    "qb_scramble",
    "qb_spike",
    "quarter",
    "quarter_end",
    "quarter_seconds_remaining",
    "replay_or_challenge",
    "return_touchdown",
    "rush",
    "rush_attempt",
    "rush_touchdown",
    "sack",
    "safety",
    "series_success",
    "shotgun",
    "solo_tackle",
    "sp",
    "special",
    "special_teams_play",
    "tackle_with_assist",
    "tackled_for_loss",
    "third_down_converted",
    "third_down_failed",
    "timeout",
    "touchback",
    "touchdown",
    "two_point_attempt"
  ],
  "type": "object"
}