basePath: / definitions: controllers.AdvancedStatsResponse: properties: data: items: $ref: '#/definitions/models.PlayerAdvancedStat' type: array pagination: properties: page: type: integer pageSize: type: integer pages: type: integer total: type: integer type: object type: object controllers.GameResponseDTO: properties: arena: type: string boxScoreUrl: type: string date: type: string gameDuration: type: string gameId: type: string homePts: type: integer homeTeam: type: string id: type: integer isPlayoff: type: boolean lineScores: items: $ref: '#/definitions/controllers.LineScoreDTO' type: array playerGameAdvStats: items: $ref: '#/definitions/controllers.PlayerGameAdvStatDTO' type: array playerGameBasicStats: items: $ref: '#/definitions/controllers.PlayerGameBasicStatDTO' type: array startTimeET: type: string teamGameAdvStats: items: $ref: '#/definitions/controllers.TeamGameAdvStatDTO' type: array teamGameBasicStats: items: $ref: '#/definitions/controllers.TeamGameBasicStatDTO' type: array visitorPts: type: integer visitorTeam: type: string type: object controllers.GamesResponse: properties: data: items: $ref: '#/definitions/controllers.GameResponseDTO' type: array pagination: properties: page: type: integer pageSize: type: integer pages: type: integer total: type: integer type: object type: object controllers.LineScoreDTO: properties: ot1: type: integer ot2: type: integer ot3: type: integer q1: type: integer q2: type: integer q3: type: integer q4: type: integer team: description: Abbreviation type: string total: type: integer type: object controllers.PlayerGameAdvStatDTO: properties: astPercent: type: number blkPercent: type: number bpm: type: number dRtg: type: integer drbPercent: type: number efgPercent: type: number fTr: type: number mp: type: string oRtg: type: integer orbPercent: type: number playerId: type: string playerName: type: string stlPercent: type: number team: description: Abbreviation type: string threePAr: type: number tovPercent: type: number trbPercent: type: number tsPercent: type: number usgPercent: type: number type: object controllers.PlayerGameBasicStatDTO: properties: ast: type: integer blk: type: integer drb: type: integer fg: type: integer fgPercent: type: number fga: type: integer ft: type: integer ftPercent: type: number fta: type: integer gmSc: type: number mp: type: string orb: type: integer pf: type: integer playerId: type: string playerName: type: string plusMinus: type: integer pts: type: integer status: type: string stl: type: integer team: description: Abbreviation type: string threeP: type: integer threePPercent: type: number threePa: type: integer tov: type: integer trb: type: integer type: object controllers.TeamGameAdvStatDTO: properties: astPercent: type: number blkPercent: type: number dRtg: type: number drbPercent: type: number efgPercent: type: number fTr: type: number oRtg: type: number orbPercent: type: number stlPercent: type: number team: description: Abbreviation type: string threePAr: type: number tovPercent: type: number trbPercent: type: number tsPercent: type: number type: object controllers.TeamGameBasicStatDTO: properties: ast: type: integer blk: type: integer drb: type: integer fg: type: integer fgPercent: type: number fga: type: integer ft: type: integer ftPercent: type: number fta: type: integer orb: type: integer pf: type: integer pts: type: integer stl: type: integer team: description: Abbreviation type: string threeP: type: integer threePPercent: type: number threePa: type: integer tov: type: integer trb: type: integer type: object models.PlayerAdvancedStat: properties: age: type: integer assistPercent: type: number blockPercent: type: number box: type: number defensiveBox: type: number defensiveRBPercent: type: number defensiveWS: type: number ftr: type: number games: type: integer id: type: integer isPlayoff: type: boolean minutesPlayed: type: integer offensiveBox: type: number offensiveRBPercent: type: number offensiveWS: type: number per: type: number playerId: type: string playerName: type: string position: type: string season: type: integer stealPercent: type: number team: type: string threePAR: type: number totalRBPercent: type: number tsPercent: type: number turnoverPercent: type: number usagePercent: type: number vorp: type: number winShares: type: number winSharesPer: type: number type: object models.PlayerShotChart: properties: date: type: string distanceFt: type: integer id: description: Auto‑increment primary key — works in SQLite and any other DB. type: integer lead: type: boolean left: type: integer opponent: type: string opponentTeamScore: type: integer playerId: description: ────────── "identity" columns (the dedup key) ────────── type: string playerName: description: ────────── the rest of the payload ────────── type: string qtr: type: string result: type: boolean season: type: integer shotType: type: string team: type: string teamScore: type: integer timeRemaining: type: string top: type: integer type: object info: contact: {} description: Stats service, now with public access! title: NBA_Go API version: "1.0" paths: /api/games: get: description: Returns a paginated list of games with optional filters and included associations. parameters: - description: Filter by date (YYYY-MM-DD) in: query name: date type: string - description: Filter by team abbreviation (e.g., LAL) in: query name: team type: string - description: Filter by a specific Game ID in: query name: gameId type: string - description: Filter for playoff games in: query name: isPlayoff type: boolean - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: pageSize type: integer - default: date description: Field to sort by (e.g., date) in: query name: sortBy type: string - default: false description: Sort ascending in: query name: ascending type: boolean - description: Comma-separated list of associations to include (e.g., lineScores,playerGameBasicStats,teamGameAdvStats) in: query name: include type: string produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/controllers.GamesResponse' "400": description: Bad Request schema: additionalProperties: type: string type: object "500": description: Internal Server Error schema: additionalProperties: type: string type: object summary: Get game data tags: - Games /api/playeradvancedstats: get: consumes: - application/json description: Returns filtered and paginated player advanced stats parameters: - description: Season (e.g., 2025) in: query name: season type: integer - description: Team abbreviation (e.g., MIL) in: query name: team type: string - description: Player ID (e.g., greenaj01) in: query name: playerId type: string - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: pageSize type: integer - default: winShares description: Field to sort by in: query name: sortBy type: string - default: false description: Sort ascending in: query name: ascending type: boolean - description: Whether playoffs? in: query name: isPlayoff type: boolean produces: - application/json responses: "200": description: OK schema: $ref: '#/definitions/controllers.AdvancedStatsResponse' "500": description: Internal Server Error schema: additionalProperties: type: string type: object summary: Get player advanced stats tags: - PlayerStats x-order: 2 /api/playershotchart: get: consumes: - application/json description: Returns a paginated list of shot-chart points, optionally filtered by various parameters. parameters: - description: Page number for pagination (defaults to 1) in: query name: page type: integer - description: Player ID (e.g., hardeja01) in: query name: playerId type: string - description: Season (e.g., 2023) in: query name: season type: integer - description: Game date (e.g., Oct 17, 2018) in: query name: date type: string - description: Quarter (e.g., 1st Qtr) in: query name: qtr type: string - description: Shot result (true for made, false for missed) in: query name: result type: boolean - description: Shot type (e.g., 2-pointer) in: query name: shot_type type: string - description: Opponent team (e.g., NOP) in: query name: opponent type: string produces: - application/json responses: "200": description: OK schema: items: $ref: '#/definitions/models.PlayerShotChart' type: array "500": description: Internal Server Error schema: additionalProperties: type: string type: object summary: Get shot-chart data tags: - PlayerShotChart x-order: 3 /api/playertotals: get: consumes: - application/json description: Filter and paginate player totals parameters: - description: Season (e.g. 2000) in: query name: season type: integer - description: Team abbreviation (e.g. LAL) in: query name: team type: string - description: Player ID (e.g. greenac01) in: query name: playerId type: string - default: 1 description: Page number in: query name: page type: integer - default: 20 description: Page size in: query name: pageSize type: integer - description: Field to sort by (e.g. points, assists) in: query name: sortBy type: string - description: Sort ascending (default false) in: query name: ascending type: boolean - description: Whether the stats are for playoffs in: query name: isPlayoff type: boolean produces: - application/json responses: "200": description: OK schema: additionalProperties: true type: object "500": description: Internal Server Error schema: additionalProperties: type: string type: object summary: Get player total stats tags: - PlayerTotals x-order: 1 schemes: - https - http swagger: "2.0" tags: - name: Games - name: PlayerTotals - name: PlayerStats - name: PlayerShotChart