Bug fix: get_forcetime() returned a data frame with mislabeled columns — values were shifted by one relative to their headers (e.g. time_s held the test id and right_force_n held the time values). The function now indexes the JSON response by its named fields (x$testType$id, x$Time(s), x$RightForce(N), etc.) instead of positional array indices, so each column is populated from the correct vector regardless of field order. The tri-axial force/moment columns are handled the same way.
Improvement: the test name reported in the get_forcetime() success log is now built from the test type name plus any tags present, joined by - (e.g. Countermovement Jump-Morning-PreSeason). The unused stringr dependency was removed.
Bug fix: get_tests() (and the deprecated get_tests_ath(), get_tests_team(), get_tests_group(), get_tests_type()) no longer error with Can't transform a data frame with duplicate names. when an athlete has an external property whose cleaned name collides with a profile column (e.g. an external field "Position" colliding with athlete_position). Duplicate column names produced by cbind are now disambiguated with make.unique() in the internal AthletePrep() helper and again on the assembled output, so both the profile column and the external column are retained (the external copy is suffixed, e.g. athlete_position.1).
Bug fix: get_athletes() applies the same guard — an external property named identically to a core/profile column (e.g. position) is retained as a distinct suffixed column rather than silently masking the profile value.
Bug fix: get_access() now stops on any non-200 response. Previously only 401/403/500 were handled, so other statuses (e.g. a 404 from a regional endpoint that is down) fell through to the success path, leaving the token expiration unset (NA). Unhandled statuses now return an informative error including the status code.
Bug fix: token validation across all get_*() functions is now NA-safe. A missing, empty, or non-numeric stored expiration no longer raises missing value where TRUE/FALSE needed; instead it returns a clear prompt to call get_access(). The per-function check was consolidated into the internal validate_access_token() helper.
Bug fix: monitor_token() no longer loops indefinitely. It stops polling once the token is invalid or expired, and no longer reschedules itself after an error — resolving the repeating An error occurred in monitor_token console output.
AthletePrep internal helper function now correctly handles athletes with missing external property values, including varying keys across athletes. This resolves issues with get_athletes() and get_tests() when external properties are present but not consistently populated across all athletes.Addition of athlete profile fields (image, position, dob, sport, height, lastTestedOn) to get_athletes() returns
Addition of athlete profile fields (athlete_image, athlete_position, athlete_dob, athlete_sport, athlete_height) to get_tests() returns
Bug fix: rewrote external property handling in get_athletes() and AthletePrep() to correctly unnest external value pairs into separate columns, including varying keys across athletes
Bug fix: get_access() now uses the supplied org_name for the Dev region and defaults to v1 instead of dev
Addition of org_name to get_access() parameters.
Improved functionality to get_tests() to accept character strings in the format "YYYY-MM-DD" for from and to
Addition of 'Metric Library' returned from get_metrics()
Changes to get_tests() metric headers. Improved consistency of naming reflective of the metric library
Improved functionality for get_forcetime() to return all test types
Update of get_tests() functionality.
Depreciation of get_tests_... functions.
'teamId' and 'groupId' parameters now accept lists and atomic vectors to go along with single text strings
Addition of logs functionality and customization
Updated documentation
fix to DateTimeParam utility function
updated test files
to parameterget_tests.... Corrected pad_and_condense function in utils.RBug fixes to get_tests_type. Now handles test trials with and without tags specified
Changes to get_tests_type. 'typeId' parameter now accepts strings containing either canonical test Id, test type name, or test type abbreviation. See docs for abbreviations.
Addition of get_tags function. Create data frame of tags within your system, including: id, name, description.
Addition of utils.R file with utility functions to minimize code and increase readability.
get_tests_... function outputs now
include tag Ids, names, and description columns with the prefix 'test_type_tag_'. These can be
found after 'test_type_canonicalId' column.get_tests_... functions to handle NULL externalIdsUpdates to all get_tests_... functions to include filter parameter for 'active' tests. Ability
to include or exclude disabled trials.
Updates to all get_tests_... functions to include 'sync' parameter. Ability
to utilize 'syncFrom' and 'syncTo' in all queries. This allows for more efficient queries and
faster download times when used frequently or to maintain an external database.
Bug fixes to externalId field
get_athlete output to include externalIdbug fixes to get_tests_team and get_tests_group
Changes to column name outputs for get_tests... calls.
bug fixes to get_forcetime