hoopR 3.0.0
Stability and Test Robustness
- Hardened API-facing tests against live schema drift and intermittent empty payloads.
- Added explicit skip-on-empty guards for lineup and NCAA teams tests to avoid false negatives when upstream endpoints return no rows.
- Updated expected columns for currently active payloads in key NBA endpoints (including
nba_playercareerstats(),nba_playerdashptshotdefend(), andnba_playerprofilev2()). - Improved
nba_playerprofilev2()assertions to validate core columns while tolerating empty optional result sets.
CI and Check Improvements
- Added workflow-level concurrency and explicit permissions to GitHub Actions workflows.
- Clarified optional environment variable usage in CI for live API test toggles.
- Updated package build ignores to exclude local development folders from source checks.
NBA Play-by-Play V3
-
nba_playbyplayv3()function added — dedicated wrapper for the NBA Stats PlayByPlayV3 endpoint. -
nba_pbp()andnba_pbps()now default toversion = "v3"(previously"v2"). Passversion = "v2"to use the previous behavior. -
.v3_to_v2_format()internal helper added — converts V3 play-by-play data to V2-compatible column format with mapped event types, player resolution, and retained V3 shot coordinate columns (x_legacy,y_legacy,shot_distance,shot_result,is_field_goal,points_total,shot_value). -
.build_player_roster()internal helper added — retrieves player roster fromnba_boxscoretraditionalv3()for name-to-ID resolution during V3-to-V2 conversion. -
.players_on_court_v3()internal helper rewritten — now usesnba_gamerotation()stint data with interval mapping for robust on-court player determination (replaces previous substitution-parsing approach). -
nba_pbp()pparameter is now optional (default:NULL) — previously required even when not using progress tracking. - Removed
stringr::str_matchimport from NAMESPACE — V3 clock parsing now uses base R regex functions.
NBA Boxscore Summary V3
-
nba_boxscoresummaryv3()function added — returns a named list of 9 data frames: GameSummary, GameInfo, ArenaInfo, Officials, LineScore, InactivePlayers, LastFiveMeetings, OtherStats, AvailableVideo.
New NBA Stats API Endpoint Wrappers
-
nba_commonteamyears()function added — returns team IDs with their active year ranges. -
nba_dunkscoreleaders()function added — returns dunk tracking data with biomechanics, scores, and style metrics. -
nba_gravityleaders()function added — returns gravity scores measuring how much defensive attention each player draws. -
nba_iststandings()function added — returns In-Season Tournament (NBA Cup) standings. -
nba_scheduleleaguev2int()function added — returns international schedule data with broadcaster information. -
nba_teamandplayersvsplayers()function added — returns team and player lineup comparison stats (5 datasets). -
nba_videoeventsasset()function added — returns video event asset data for a given game event.
ESPN & G-League Functions
-
espn_nba_team_current_roster()function added — returns current team roster from ESPN. -
espn_mbb_team_current_roster()function added — returns current MBB team roster from ESPN. -
nbagl_live_pbp()function added — returns live G-League play-by-play data. -
nbagl_live_boxscore()function added — returns live G-League box score data.
Other Improvements
- Internal
nba_endpoint()registry updated with all V3 boxscore endpoints andboxscoresummaryv3. - Removed deprecated
qsdependency. - Updated GitHub Actions to v4.
- Cleaned up
.Rbuildignoreduplicates. - Added comprehensive
CONTRIBUTING.mdwith naming conventions and test environment documentation. - Moved
furrrandfuturedependencies to Suggests with version requirements for users who want to use parallel features, but not required for core functionality. - Add
lifecycledependency and deprecation warnings for unstable functions/endpoints to guide users to maintained alternatives.
Bug Fixes
- Fixed
df_listnot initialized beforetryCatchin 147 NBA Stats API wrapper functions, preventing crashes on API errors. - Fixed
nba_data_pbp()plays_dfnot initialized beforetryCatch. - Fixed
helper-skip.Rtest guard functions to use proper string comparison (!= "1") instead of numeric comparison (== 0). - Fixed
nba_dunkscoreleaders()HTTP 400 error caused by empty string parameters. - Fixed V3-style data.frame parsing for leader/standings endpoints.
- Fixed
nba_iststandings()nested games column flattening. - Fixed
%||%import for R < 4.4.0 compatibility. - Fixed
datanot initialized beforetryCatchinnba_playbyplayv3()andnba_pbp(), preventing crashes on API errors. - Fixed
nbagl_pbp()to avoid on-court enrichment dependency failures for G-League game IDs by using the stable core play-by-play path. - Fixed NBAGL wrapper defaults for error paths where return objects were not initialized before
tryCatch.
Deprecations
- Deprecated
nba_boxscorefourfactorsv2()in favor ofnba_boxscorefourfactorsv3()due to unstable/partial V2 API responses. - Deprecated
nba_boxscoremiscv2()in favor ofnba_boxscoremiscv3()due to unstable/partial V2 API responses. - Deprecated
nba_boxscorescoringv2()in favor ofnba_boxscorescoringv3()due to unstable/partial V2 API responses. - Deprecated
nba_boxscoreusagev2()in favor ofnba_boxscoreusagev3()due to unstable/partial V2 API responses. - Deprecated
nba_boxscoreplayertrackv2()in favor ofnba_boxscoreplayertrackv3()due to unstable/partial V2 API responses. - Deprecated
nba_boxscorehustlev2()in favor ofnba_hustlestatsboxscore()due to unstable/partial V2 API responses. - Deprecated
nba_homepageleaders()in favor ofnba_leagueleaders()due to unstable/empty endpoint responses. - Deprecated
nba_homepagev2()in favor ofnba_leagueleaders()due to unstable/empty endpoint responses. - Deprecated
nba_leaderstiles()in favor ofnba_leagueleaders()due to unstable/empty endpoint responses. - Deprecated
nba_teamgamestreakfinder()in favor ofnba_teamgamelogs()due to unstable/empty endpoint responses. - Deprecated
nba_teamhistoricalleaders()in favor ofnba_franchiseleaders()due to unstable/empty endpoint responses. - Deprecated
nba_videodetails()in favor ofnba_videodetailsasset()due to unstable/empty endpoint responses. - Deprecated
nba_winprobabilitypbp()in favor ofnba_playbyplayv3()due to unstable/empty endpoint responses. - Deprecated
nba_playercareerbycollege()in favor ofnba_playercareerbycollegerollup()/nba_leaguedashplayerbiostats()due to unstable/empty endpoint responses. - Deprecated
nba_playernextngames()in favor ofnba_playerprofilev2()due to unstable/empty endpoint responses. - Deprecated
nba_scoreboard()in favor ofnba_scoreboardv3()due to unstable/empty endpoint responses. - Deprecated
nba_scoreboardv2()in favor ofnba_scoreboardv3()due to unstable/partial endpoint responses.
Test Improvements
- Converted 400+
expect_equal(colnames())assertions toexpect_in()for subset validation, preventing test failures when APIs add new columns. - Added tests for all new endpoints with column validation and rate limiting.
- Added
skip_ncaa_mbb_test()andskip_ncaa_wbb_test()helpers. - Updated ESPN test expectations for current API responses.
- Updated NBAGL tests to validate NBA Stats-backed return shapes (
nbagl_players()andnbagl_standings()named-list returns, and current schedule/PBP core columns).
hoopR 2.1.0
CRAN release: 2023-11-25
-
load_nba_*()functions now usesportsdataverse-datareleases url instead ofhoopR-datarepository URL -
load_mbb_*()functions now usesportsdataverse-datareleases url instead ofhoopR-datarepository URL -
nba_pbp()andnba_pbps()functions add parameteron_court(defaultTRUE) to return on-court players for each play event, courtesy of @shufinskiy
hoopR 2.0.0
NBA Stats API Live Endpoints
-
nba_live_pbp()function added. -
nba_live_boxscore()function added. -
nba_todays_scoreboard()function added.
NBA Boxscore V3 (and V3-styled) Endpoints Added
-
nba_scoreboardv3()function added. -
nba_boxscoretraditionalv3()function added. -
nba_boxscoreadvancedv3()function added. -
nba_boxscoremiscv3()function added. -
nba_boxscorescoringv3()function added. -
nba_boxscoreusagev3()function added. -
nba_boxscorefourfactorsv3()function added. -
nba_boxscoreplayertrackv3()function added. -
nba_boxscorematchupsv3()function added. -
nba_boxscorehustlev2()function added. -
nba_boxscoredefensivev2()function added.
Other NBA Stats API functions added
-
nba_shotchartlineupdetail()function added. -
nba_synergyplaytypes()function added. -
nba_franchiseleaderswrank()function added. -
nba_videodetailsasset()function added. -
nba_infographicfanduelplayer()function added. -
nba_teams()function added.
Other Functions Added
-
ncaa_mbb_teams()function added.
Proxy Capability Added and Other Notes
- Add rlang dots option for passing
httr::use_proxy()option tonba_*()functions - Returns documentation added for all working NBA Stats API endpoints and ESPN functions
- Tests added for all working NBA Stats API endpoints and ESPN functions, over 1000 tests when run locally
hoopR 1.9.0
- Takes care of tidyselect deprecation of data masking for certain tidyr and dplyr functions.
- Regular minor maintenance on
kp_*functions -
espn_mbb_game_rosters()function added. -
espn_nba_game_rosters()function added.
hoopR 1.8.1
-
espn_mbb_player_stats()function exported properly. -
espn_nba_player_stats()function exported properly. - Fixing headers for
kp_functions.
hoopR 1.8.0
CRAN release: 2022-06-17
-
espn_mbb_player_stats()function added. -
espn_mbb_team_stats()function added. -
espn_nba_player_stats()function added. -
espn_nba_team_stats()function added.
hoopR 1.7.0
-
nba_pbps()function added, courtesy of @papagorgio23. -
nbagl_players()function added, courtesy of @billyfryer. -
nbagl_schedule()function added, courtesy of @billyfryer. -
nbagl_pbp()function added, courtesy of @billyfryer. -
nbagl_standings()function added, courtesy of @billyfryer. -
nba_gamerotation()function added.
hoopR 1.6.0
-
nba_playerindex()function added. -
nba_playerheadshot()function added. -
nba_drafthistory()function added.
hoopR 1.5.0
CRAN release: 2021-11-10
- Major documentation update to include names of returned lists of data frames for all exported NBA Stats API, ESPN API, KenPom, NCAA and Data repository functions.
hoopR 1.4.5
- Add
kp_referee()function
hoopR 1.4.4
- Remove referee ranks from
kp_box()function
hoopR 1.4.1
- Update
teams_linksinternal dataset for 2022 (need a better solve here) - Added
nba_teamsdataset for working with the NBA Stats API
hoopR 1.4.0
-
hoopR::espn_mbb_betting()function added -
hoopR::espn_nba_betting()function added
hoopR 1.3.1
- Fix
kp_winprobfunction, adding runs as third output
hoopR 1.3.0
Add Full Coverage for NBA Stats API
Adding roughly 127 functions
| Function | File Location |
|---|---|
| nba_alltimeleadersgrids | R/nba_stats_leaders.R |
| nba_assistleaders | R/nba_stats_leaders.R |
| nba_assisttracker | R/nba_stats_leaders.R |
| nba_boxscoreadvancedv2 | R/nba_stats_boxscore.R |
| nba_boxscoredefensive | R/nba_stats_boxscore.R |
| nba_boxscorefourfactorsv2 | R/nba_stats_boxscore.R |
| nba_boxscorematchups | R/nba_stats_boxscore.R |
| nba_boxscoremiscv2 | R/nba_stats_boxscore.R |
| nba_boxscoreplayertrackv2 | R/nba_stats_boxscore.R |
| nba_boxscorescoringv2 | R/nba_stats_boxscore.R |
| nba_boxscoresimilarityscore | R/nba_stats_boxscore.R |
| nba_boxscoresummaryv2 | R/nba_stats_boxscore.R |
| nba_boxscoretraditionalv2 | R/nba_stats_boxscore.R |
| nba_boxscoreusagev2 | R/nba_stats_boxscore.R |
| nba_commonallplayers | R/nba_stats_roster.R |
| nba_commonplayerinfo | R/nba_stats_roster.R |
| nba_commonplayoffseries | R/nba_stats_roster.R |
| nba_commonteamroster | R/nba_stats_roster.R |
| nba_cumestatsplayer | R/nba_stats_cume.R |
| nba_cumestatsplayergames | R/nba_stats_cume.R |
| nba_cumestatsteam | R/nba_stats_cume.R |
| nba_cumestatsteamgames | R/nba_stats_cume.R |
| nba_defensehub | R/nba_stats_leaders.R |
| nba_draftboard | R/nba_stats_draft.R |
| nba_draftcombinedrillresults | R/nba_stats_draft.R |
| nba_draftcombinenonstationaryshooting | R/nba_stats_draft.R |
| nba_draftcombineplayeranthro | R/nba_stats_draft.R |
| nba_draftcombinespotshooting | R/nba_stats_draft.R |
| nba_draftcombinestats | R/nba_stats_draft.R |
| nba_fantasywidget | R/nba_stats_lineups.R |
| nba_franchisehistory | R/nba_stats_franchise.R |
| nba_franchiseleaders | R/nba_stats_franchise.R |
| nba_franchiseplayers | R/nba_stats_franchise.R |
| nba_glalumboxscoresimilarityscore | R/nba_stats_boxscore.R |
| nba_homepageleaders | R/nba_stats_leaders.R |
| nba_homepagev2 | R/nba_stats_leaders.R |
| nba_hustlestatsboxscore | R/nba_stats_boxscore.R |
| nba_leaderstiles | R/nba_stats_leaders.R |
| nba_leaguedashlineups | R/nba_stats_lineups.R |
| nba_leaguedashoppptshot | R/nba_stats_league_dash.R |
| nba_leaguedashplayerbiostats | R/nba_stats_league_dash.R |
| nba_leaguedashplayerclutch | R/nba_stats_league_dash.R |
| nba_leaguedashplayerptshot | R/nba_stats_league_dash.R |
| nba_leaguedashplayershotlocations | R/nba_stats_league_dash.R |
| nba_leaguedashplayerstats | R/nba_stats_league_dash.R |
| nba_leaguedashptdefend | R/nba_stats_league_dash.R |
| nba_leaguedashptstats | R/nba_stats_league_dash.R |
| nba_leaguedashptteamdefend | R/nba_stats_league_dash.R |
| nba_leaguedashteamclutch | R/nba_stats_league_dash.R |
| nba_leaguedashteamptshot | R/nba_stats_league_dash.R |
| nba_leaguedashteamshotlocations | R/nba_stats_league_dash.R |
| nba_leaguedashteamstats | R/nba_stats_league_dash.R |
| nba_leaguegamefinder | R/nba_stats_league.R |
| nba_leaguegamelog | R/nba_stats_league.R |
| nba_leaguehustlestatsplayer | R/nba_stats_hustle.R |
| nba_leaguehustlestatsplayerleaders | R/nba_stats_hustle.R |
| nba_leaguehustlestatsteam | R/nba_stats_hustle.R |
| nba_leaguehustlestatsteamleaders | R/nba_stats_hustle.R |
| nba_leagueleaders | R/nba_stats_leaders.R |
| nba_leaguelineupviz | R/nba_stats_lineups.R |
| nba_leagueplayerondetails | R/nba_stats_lineups.R |
| nba_leagueseasonmatchups | R/nba_stats_lineups.R |
| nba_leaguestandings | R/nba_stats_league.R |
| nba_leaguestandingsv3 | R/nba_stats_league.R |
| nba_matchupsrollup | R/nba_stats_lineups.R |
| nba_pbp | R/nba_stats_pbp.R |
| nba_playerawards | R/nba_stats_player.R |
| nba_playercareerbycollege | R/nba_stats_player.R |
| nba_playercareerbycollegerollup | R/nba_stats_player.R |
| nba_playercareerstats | R/nba_stats_player.R |
| nba_playercompare | R/nba_stats_player.R |
| nba_playerdashboardbyclutch | R/nba_stats_player_dash.R |
| nba_playerdashboardbygamesplits | R/nba_stats_player_dash.R |
| nba_playerdashboardbygeneralsplits | R/nba_stats_player_dash.R |
| nba_playerdashboardbylastngames | R/nba_stats_player_dash.R |
| nba_playerdashboardbyopponent | R/nba_stats_player_dash.R |
| nba_playerdashboardbyshootingsplits | R/nba_stats_player_dash.R |
| nba_playerdashboardbyteamperformance | R/nba_stats_player_dash.R |
| nba_playerdashboardbyyearoveryear | R/nba_stats_player_dash.R |
| nba_playerdashptpass | R/nba_stats_player_dash.R |
| nba_playerdashptreb | R/nba_stats_player_dash.R |
| nba_playerdashptshotdefend | R/nba_stats_player_dash.R |
| nba_playerdashptshots | R/nba_stats_player_dash.R |
| nba_playerestimatedmetrics | R/nba_stats_player.R |
| nba_playerfantasyprofile | R/nba_stats_player.R |
| nba_playerfantasyprofilebargraph | R/nba_stats_player.R |
| nba_playergamelog | R/nba_stats_player.R |
| nba_playergamelogs | R/nba_stats_player.R |
| nba_playergamestreakfinder | R/nba_stats_player.R |
| nba_playernextngames | R/nba_stats_player.R |
| nba_playerprofilev2 | R/nba_stats_player.R |
| nba_playervsplayer | R/nba_stats_player.R |
| nba_playoffpicture | R/nba_stats_league.R |
| nba_schedule | R/nba_stats_pbp.R |
| nba_scoreboard | R/nba_stats_scoreboard.R |
| nba_scoreboardv2 | R/nba_stats_scoreboard.R |
| nba_shotchartdetail | R/nba_stats_shotchart.R |
| nba_shotchartleaguewide | R/nba_stats_shotchart.R |
| nba_teamdashboardbyclutch | R/nba_stats_team_dash.R |
| nba_teamdashboardbygamesplits | R/nba_stats_team_dash.R |
| nba_teamdashboardbygeneralsplits | R/nba_stats_team_dash.R |
| nba_teamdashboardbylastngames | R/nba_stats_team_dash.R |
| nba_teamdashboardbyopponent | R/nba_stats_team_dash.R |
| nba_teamdashboardbyshootingsplits | R/nba_stats_team_dash.R |
| nba_teamdashboardbyteamperformance | R/nba_stats_team_dash.R |
| nba_teamdashboardbyyearoveryear | R/nba_stats_team_dash.R |
| nba_teamdashlineups | R/nba_stats_team_dash.R |
| nba_teamdashptpass | R/nba_stats_team_dash.R |
| nba_teamdashptreb | R/nba_stats_team_dash.R |
| nba_teamdashptshots | R/nba_stats_team_dash.R |
| nba_teamdetails | R/nba_stats_team.R |
| nba_teamestimatedmetrics | R/nba_stats_team.R |
| nba_teamgamelog | R/nba_stats_team.R |
| nba_teamgamelogs | R/nba_stats_team.R |
| nba_teamgamestreakfinder | R/nba_stats_team.R |
| nba_teamhistoricalleaders | R/nba_stats_team.R |
| nba_teaminfocommon | R/nba_stats_team.R |
| nba_teamplayerdashboard | R/nba_stats_team.R |
| nba_teamplayeronoffdetails | R/nba_stats_team.R |
| nba_teamplayeronoffsummary | R/nba_stats_team.R |
| nba_teamvsplayer | R/nba_stats_team.R |
| nba_teamyearbyyearstats | R/nba_stats_team.R |
| nba_videodetails | R/nba_stats_video.R |
| nba_videoevents | R/nba_stats_video.R |
| nba_videostatus | R/nba_stats_video.R |
| nba_winprobabilitypbp | R/nba_stats_scoreboard.R |
hoopR 1.2.0
Add schedule loaders
-
hoopR::load_mbb_schedule()function added -
hoopR::load_nba_schedule()function added
hoopR 1.1.0
Add team box score loaders
-
hoopR::load_mbb_team_box()function added -
hoopR::load_nba_team_box()function added
Add player box score loaders
-
hoopR::load_mbb_player_box()function added -
hoopR::load_nba_player_box()function added
hoopR 1.0.4
Add retry
- Adding
httr::retry()to all function calls to more naturally navigate rejected/failed requests from the API.
hoopR 1.0.0
Package renamed to hoopR
To reflect that the package is no longer just a men’s college basketball and KenPom package, but also an NBA package.
Clean names and team returns
- All functions have now been given the
janitor::clean_names()treatment -
hoopR::espn_mbb_teams()has updated the returns to be more identity information related only -
hoopR::espn_nba_teams()to be more identity information related only - All tests were updated
Loading capabilities added to the package
-
hoopR::load_mbb_pbp()andhoopR::update_mbb_db()functions added -
hoopR::load_nba_pbp()andhoopR::update_nba_db()functions added
hoopR 0.4
- Added support for ESPN’s NBA play-by-play endpoints with the addition of the following functions:
-
hoopR::espn_nba_game_all()- a convenience wrapper function around the following three functions (returns the results as a list of three data frames) hoopR::espn_nba_team_box()hoopR::espn_nba_player_box()hoopR::espn_nba_pbp()hoopR::espn_nba_teams()hoopR::espn_nba_scoreboard()
hoopR 0.3.0
Dependencies
-
Rversion 3.5.0 or greater dependency added -
purrrversion 0.3.0 or greater dependency added -
rvestversion 1.0.0 or greater dependency added -
progressrversion 0.6.0 or greater dependency added -
usethisversion 1.6.0 or greater dependency added -
xgboostversion 1.1.0 or greater dependency added -
tidyrversion 1.0.0 or greater dependency added -
stringrversion 1.3.0 or greater dependency added -
tibbleversion 3.0.0 or greater dependency added -
furrrdependency added -
futuredependency added
Test coverage
- Added tests for all KP and ESPN functions
Function Naming Convention Change
- All functions sourced from kenpom.com will start with
kp_as opposed toget_ - Similarly, data and metrics sourced from ESPN will begin with
espn_as opposed tocbb_. Moreover, all references tocbb_have been changed tombb_as appropriate. - Data sourced directly from the NCAA website will start the function with
ncaa_
hoopR 0.2.0-3
- Added support for ESPN’s men’s college basketball play-by-play endpoints with the addition of the following functions:
-
hoopR::espn_mbb_game_all()- a convenience wrapper function around the following three functions (returns the results as a list of three data frames) hoopR::espn_mbb_team_box()hoopR::espn_mbb_player_box()hoopR::espn_mbb_pbp()-
hoopR::espn_mbb_teams()(bumps to v0.2.1) -
hoopR::espn_mbb_conferences()(bumps to v0.2.1) -
hoopR::espn_mbb_scoreboard()(bumps to v0.2.2) -
hoopR::ncaa_mbb_NET_rankings()(bumps to v0.2.3) -
hoopR::espn_mbb_rankings()(bumps to v0.2.3)
