{"referee":{"id":61,"refereeKey":"john-butler","name":"John Butler","jerseyNumber":"30","officialId":"1628951"},"queryMode":"All Roles","assignmentCounts":{"total":4,"byRole":{"Alternate":2,"Umpire":1,"Crew Chief":1}},"recentAssignmentsRaw":[{"gameId":"0042500135","gameDate":"2026-04-29","matchup":"TOR @ CLE","role":"Alternate","source":"nba_api_v2","sourceUrl":null,"createdAt":"2026-05-07T01:40:55Z","updatedAt":"2026-05-07T01:40:55Z"},{"gameId":"0042500103","gameDate":"2026-04-25","matchup":"DET @ ORL","role":"Alternate","source":"nba_api_v2","sourceUrl":null,"createdAt":"2026-05-07T01:42:23Z","updatedAt":"2026-05-07T01:42:23Z"},{"gameId":"0042500122","gameDate":"2026-04-20","matchup":"ATL @ NYK","role":"Crew Chief","source":"nba_api_v2","sourceUrl":null,"createdAt":"2026-05-07T01:45:42Z","updatedAt":"2026-05-07T01:45:42Z"},{"gameId":"0022501193","gameDate":"2026-04-12","matchup":"CHI @ DAL","role":"Umpire","source":"espn","sourceUrl":null,"createdAt":"2026-05-07T01:49:16Z","updatedAt":"2026-05-07T01:49:16Z"}],"recentGamesReturnedByPage":[{"gameId":"0042500135","date":"2026-04-29","matchup":"TOR @ CLE","awayTeamAbbr":"TOR","homeTeamAbbr":"CLE","awayScore":120,"homeScore":125,"selectedRefereeRole":"Alternate","crew":[{"refereeId":5,"refereeKey":"scott-foster","name":"Scott Foster","jerseyNumber":"48","displayName":"Scott Foster #48","role":"Crew Chief","officialId":"1162","profileUrl":null},{"refereeId":29,"refereeKey":"sean-wright","name":"Sean Wright","jerseyNumber":"4","displayName":"Sean Wright #4","role":"Referee","officialId":"2882","profileUrl":null},{"refereeId":26,"refereeKey":"gediminas-petraitis","name":"Gediminas Petraitis","jerseyNumber":"50","displayName":"Gediminas Petraitis #50","role":"Umpire","officialId":"204058","profileUrl":null},{"refereeId":61,"refereeKey":"john-butler","name":"John Butler","jerseyNumber":"30","displayName":"John Butler #30","role":"Alternate","officialId":"1628951","profileUrl":null}],"metrics":{"totalFouls":37,"awayFouls":21,"homeFouls":16,"foulDifferential":-5,"totalFta":53,"awayFta":25,"homeFta":28,"ftaDifferential":3,"technicalFouls":0,"offensiveFouls":4,"shootingFouls":22,"looseBallFouls":1,"flagrantFouls":0,"clutchFouls":0,"clutchFta":null,"awayFtr":0.263,"homeFtr":0.346,"foulsPer100":null}},{"gameId":"0042500103","date":"2026-04-25","matchup":"DET @ ORL","awayTeamAbbr":"DET","homeTeamAbbr":"ORL","awayScore":105,"homeScore":113,"selectedRefereeRole":"Alternate","crew":[{"refereeId":1,"refereeKey":"tony-brothers","name":"Tony Brothers","jerseyNumber":"25","displayName":"Tony Brothers #25","role":"Crew Chief","officialId":"1146","profileUrl":null},{"refereeId":15,"refereeKey":"nick-buchert","name":"Nick Buchert","jerseyNumber":"3","displayName":"Nick Buchert #3","role":"Referee","officialId":"202007","profileUrl":null},{"refereeId":24,"refereeKey":"mitchell-ervin","name":"Mitchell Ervin","jerseyNumber":"27","displayName":"Mitchell Ervin #27","role":"Umpire","officialId":"203591","profileUrl":null},{"refereeId":61,"refereeKey":"john-butler","name":"John Butler","jerseyNumber":"30","displayName":"John Butler #30","role":"Alternate","officialId":"1628951","profileUrl":null}],"metrics":{"totalFouls":49,"awayFouls":25,"homeFouls":24,"foulDifferential":-1,"totalFta":57,"awayFta":24,"homeFta":33,"ftaDifferential":9,"technicalFouls":1,"offensiveFouls":6,"shootingFouls":22,"looseBallFouls":6,"flagrantFouls":2,"clutchFouls":0,"clutchFta":null,"awayFtr":0.282,"homeFtr":0.371,"foulsPer100":null}},{"gameId":"0042500122","date":"2026-04-20","matchup":"ATL @ NYK","awayTeamAbbr":"ATL","homeTeamAbbr":"NYK","awayScore":107,"homeScore":106,"selectedRefereeRole":"Crew Chief","crew":[{"refereeId":61,"refereeKey":"john-butler","name":"John Butler","jerseyNumber":"30","displayName":"John Butler #30","role":"Crew Chief","officialId":"1628951","profileUrl":null},{"refereeId":17,"refereeKey":"karl-lane","name":"Karl Lane","jerseyNumber":"77","displayName":"Karl Lane #77","role":"Referee","officialId":"202026","profileUrl":null},{"refereeId":16,"refereeKey":"zach-zarba","name":"Zach Zarba","jerseyNumber":"15","displayName":"Zach Zarba #15","role":"Umpire","officialId":"2534","profileUrl":null},{"refereeId":97,"refereeKey":"mousa-dagher","name":"Mousa Dagher","jerseyNumber":"28","displayName":"Mousa Dagher #28","role":"Alternate","officialId":"1628159","profileUrl":null}],"metrics":{"totalFouls":null,"awayFouls":null,"homeFouls":null,"foulDifferential":null,"totalFta":null,"awayFta":null,"homeFta":null,"ftaDifferential":null,"technicalFouls":2,"offensiveFouls":10,"shootingFouls":21,"looseBallFouls":5,"flagrantFouls":0,"clutchFouls":0,"clutchFta":null,"awayFtr":null,"homeFtr":null,"foulsPer100":null}},{"gameId":"0022501193","date":"2026-04-12","matchup":"CHI @ DAL","awayTeamAbbr":"CHI","homeTeamAbbr":"DAL","awayScore":128,"homeScore":149,"selectedRefereeRole":"Umpire","crew":[{"refereeId":63,"refereeKey":"marat-kogut","name":"Marat Kogut","jerseyNumber":"32","displayName":"Marat Kogut #32","role":"Crew Chief","officialId":"201245","profileUrl":null},{"refereeId":12,"refereeKey":"ben-taylor","name":"Ben Taylor","jerseyNumber":"46","displayName":"Ben Taylor #46","role":"Referee","officialId":"202049","profileUrl":null},{"refereeId":61,"refereeKey":"john-butler","name":"John Butler","jerseyNumber":"30","displayName":"John Butler #30","role":"Umpire","officialId":"1628951","profileUrl":null}],"metrics":{"totalFouls":44,"awayFouls":20,"homeFouls":24,"foulDifferential":4,"totalFta":46,"awayFta":19,"homeFta":27,"ftaDifferential":8,"technicalFouls":null,"offensiveFouls":null,"shootingFouls":null,"looseBallFouls":null,"flagrantFouls":null,"clutchFouls":null,"clutchFta":null,"awayFtr":0.179,"homeFtr":0.27,"foulsPer100":null}}],"tables":{"totalGames":244,"completedGames":235,"gamesWithAnyAssignments":99,"completedGamesWithoutAssignments":136},"possibleDuplicateRefereeRows":[{"id":46,"referee_key":"john-goble","name":"John Goble","jersey_number":"10","official_id":"101284","source":"nba_api_v2"}],"roleBreakdownInSample":{"Alternate":2,"Crew Chief":1,"Umpire":1},"diagnosis":{"status":"INSUFFICIENT_ASSIGNMENTS","reason":"Only 4 assignment row(s) exist for this referee. 136 completed games in DB have no referee assignments at all. Run POST /api/referees/sync-assignments to backfill historical games."}}