SportStatsAPI · Schema

dto.BasketballMatchResponse

Sports DataWidgetsWordPressInsightsArtificial IntelligenceMCP

Properties

Name Type Description
away_rankings array
away_team object
file_group string
freshness object Freshness: when the data was last fetched and changed, and whether a live match may be behind (docs/freshness.md); sport match endpoints only.
home_rankings array NCAA (/matches/{id}): each team's AP and NET places before the game
home_team object
id integer
league_gid integer
league_id integer
league_name string
live object Live: the in-play state, only while status_code is live, halftime or intermission.
match_id integer
periods array Periods: the period scores in game order, one shape for every sport ({period, label, home, away}).
quarter_scores object
sport string
start_at string StartAt: start_date and start_time as one RFC 3339 UTC time; null when the time is unknown.
start_date string
start_time string
status string
status_code string StatusCode: the status in one vocabulary for every sport (raw word in status). awaiting_result: still not started with no score, Unknown or stuck in play well after the start (per sport: soccer and ha
timer string
updated_at string UpdatedAt: when this match row last changed (RFC 3339, UTC).
View JSON Schema on GitHub

JSON Schema

sportstatsapi-dto-basketball-match-response-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/sportstatsapi/json-schema/sportstatsapi-dto-basketball-match-response-schema.json",
  "title": "dto.BasketballMatchResponse",
  "x-generated": "2026-11-08",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/sportstatsapi-openapi.json#/components/schemas/dto.BasketballMatchResponse",
  "properties": {
    "away_rankings": {
      "items": {
        "$ref": "#/$defs/dto.TeamRankResponse"
      },
      "type": "array"
    },
    "away_team": {
      "$ref": "#/$defs/dto.TeamInfo"
    },
    "file_group": {
      "type": "string"
    },
    "freshness": {
      "allOf": [
        {
          "$ref": "#/$defs/dto.Freshness"
        }
      ],
      "description": "Freshness: when the data was last fetched and changed, and whether a\nlive match may be behind (docs/freshness.md); sport match endpoints only."
    },
    "home_rankings": {
      "description": "NCAA (/matches/{id}): each team's AP and NET places before the game",
      "items": {
        "$ref": "#/$defs/dto.TeamRankResponse"
      },
      "type": "array"
    },
    "home_team": {
      "$ref": "#/$defs/dto.TeamInfo"
    },
    "id": {
      "type": "integer"
    },
    "league_gid": {
      "type": "integer"
    },
    "league_id": {
      "type": "integer"
    },
    "league_name": {
      "type": "string"
    },
    "live": {
      "allOf": [
        {
          "$ref": "#/$defs/dto.ClockLive"
        }
      ],
      "description": "Live: the in-play state, only while status_code is live, halftime or intermission."
    },
    "match_id": {
      "type": "integer"
    },
    "periods": {
      "description": "Periods: the period scores in game order, one shape for every sport ({period, label, home, away}).",
      "items": {
        "$ref": "#/$defs/dto.Period"
      },
      "type": "array"
    },
    "quarter_scores": {
      "$ref": "#/$defs/dto.QuarterScores"
    },
    "sport": {
      "type": "string"
    },
    "start_at": {
      "description": "StartAt: start_date and start_time as one RFC 3339 UTC time; null when the time is unknown.",
      "type": "string"
    },
    "start_date": {
      "type": "string"
    },
    "start_time": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "status_code": {
      "description": "StatusCode: the status in one vocabulary for every sport (raw word in status).\nawaiting_result: still not started with no score, Unknown or stuck in\nplay well after the start (per sport: soccer and handball 3 hours,\nbasketball, hockey and volleyball 4, american-football 5, baseball 6,\ntennis 24, cricket 12 after the start on its last day; in play: 24 at\nleast): the feed never gave a result; it may still come. Derived when\nanswering: status stays as stored.",
      "enum": [
        "scheduled",
        "live",
        "halftime",
        "intermission",
        "final",
        "final_overtime",
        "final_penalties",
        "postponed",
        "delayed",
        "suspended",
        "abandoned",
        "cancelled",
        "unknown",
        "awaiting_result"
      ],
      "type": "string"
    },
    "timer": {
      "type": "string"
    },
    "updated_at": {
      "description": "UpdatedAt: when this match row last changed (RFC 3339, UTC).",
      "type": "string"
    }
  },
  "type": "object",
  "$defs": {
    "dto.ClockLive": {
      "properties": {
        "clock": {
          "description": "Clock: time left in the period at the latest play-by-play play.",
          "type": "string"
        },
        "clock_source": {
          "enum": [
            "play_by_play"
          ],
          "type": "string"
        },
        "clock_updated_at": {
          "type": "string"
        },
        "down_distance": {
          "type": "string"
        },
        "period": {
          "description": "Period: basketball \"1\"..\"4\" (NCAA halves \"1\", \"2\"), \"OT\" for every\novertime (not numbered by the feed); hockey \"1\"..\"3\", \"OT\", \"OT2\"...,\n\"SO\"; american football \"1\"..\"4\", \"OT\". From the status when the\nlatest play is of an earlier period (no clock then).",
          "type": "string"
        },
        "possession": {
          "description": "American football, after the latest play: the team with the ball\n(home or away; from the play, else its drive) and the next down\n(\"3rd & 10 at 50\"; NFL only).",
          "enum": [
            "home",
            "away"
          ],
          "type": "string"
        },
        "snap_down_distance": {
          "description": "SnapDownDistance: american football without down_distance (FBS): the\ndown at the snap of the latest play, before it was run (\"3rd & 9 at\nUL 47\"), not the next down.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "dto.Freshness": {
      "properties": {
        "last_fetch_at": {
          "description": "LastFetchAt: the last good fetch of the sport's live feed (the sync's\nlive refresh of the provider's today feed, every sport's matches in one file).",
          "type": "string"
        },
        "stale": {
          "description": "Stale: the match is live and its data may be behind; StaleReason says why.",
          "type": "boolean"
        },
        "stale_reason": {
          "description": "feed_not_fetched, state_unchanged, clock_unchanged",
          "type": "string"
        },
        "state_changed_at": {
          "description": "StateChangedAt: the status or the score last changed (null for rows\nnot written since 2026-10-28).",
          "type": "string"
        },
        "updated_at": {
          "description": "UpdatedAt: the row last changed (any field: score, clock, line scores).",
          "type": "string"
        }
      },
      "type": "object"
    },
    "dto.Period": {
      "properties": {
        "away": {
          "type": "integer"
        },
        "cumulative": {
          "description": "Cumulative: soccer FT and ET only: the score after 90 or 120 minutes\n(all goals so far), not the goals scored in that period.",
          "type": "boolean"
        },
        "home": {
          "description": "Home, Away: null when that side is not stored.",
          "type": "integer"
        },
        "label": {
          "type": "string"
        },
        "period": {
          "description": "Period: OT (basketball, hockey, american football) is every overtime\ntogether, so the periods add up to the final after 2OT+.",
          "type": "string"
        }
      },
      "type": "object"
    },
    "dto.QuarterScores": {
      "properties": {
        "ot": {
          "allOf": [
            {
              "$ref": "#/$defs/dto.ScorePair"
            }
          ],
          "description": "OT: every overtime together, as the OT period (after 2OT+ the final minus the regular periods)."
        },
        "q1": {
          "$ref": "#/$defs/dto.ScorePair"
        },
        "q2": {
          "$ref": "#/$defs/dto.ScorePair"
        },
        "q3": {
          "$ref": "#/$defs/dto.ScorePair"
        },
        "q4": {
          "$ref": "#/$defs/dto.ScorePair"
        }
      },
      "type": "object"
    },
    "dto.ScorePair": {
      "properties": {
        "away": {
          "type": "integer"
        },
        "home": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "dto.TeamInfo": {
      "properties": {
        "display_name": {
          "description": "DisplayName: the name to show (accents and case from official sources; a managed club's own name), else name. name stays the data provider's: filters match on it.",
          "type": "string"
        },
        "id": {
          "type": "integer"
        },
        "name": {
          "type": "string"
        },
        "score": {
          "type": "integer"
        }
      },
      "type": "object"
    },
    "dto.TeamRankResponse": {
      "properties": {
        "as_of": {
          "type": "string"
        },
        "poll": {
          "type": "string"
        },
        "rank": {
          "type": "integer"
        }
      },
      "type": "object"
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/sportstatsapi-dto-basketball-match-response"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.