Skip to content

Releases: NodeJSmith/otf-api

otf-api: v0.19.0

10 May 23:14
cc711b2

Choose a tag to compare

0.19.0 (2026-05-10)

⚠ BREAKING CHANGES

  • cancel_booking no longer accepts BookingV2 objects and cancel_booking_new no longer accepts Booking objects.

Code Refactoring

  • comprehensive code quality cleanup from WTF audit (#130) (2271881)

otf-api: v0.18.0

10 May 15:31
73dc041

Choose a tag to compare

0.18.0 (2026-05-10)

⚠ BREAKING CHANGES

  • TotalBodyWeight renamed to TotalBodyWater, total_body_weight field renamed to total_body_water, total_body_weight_details renamed to total_body_water_details, OutsideSchedulingWindowError now inherits from BookingError instead of OtfError

Documentation

  • complete documentation overhaul with MkDocs-Material (#127) (daef89e)

otf-api: v0.17.0

09 May 03:43
bde64b8

Choose a tag to compare

0.17.0 (2026-05-09)

Features

  • add diagnostic logging for silent failures and empty API responses (#119) (bc4e853)
  • bookings: detect waitlisted V2 bookings via waitlist_position field (#125) (461b517)

Bug Fixes

  • cancel_booking crash on BookingV2 and missing class_uuid in get_workout_from_booking (#124) (f525d1a)

otf-api: v0.16.0

28 Apr 12:35
8346056

Choose a tag to compare

0.16.0 (2026-04-28)

⚠ BREAKING CHANGES

  • removed deprecated flat methods on Otf class (e.g., otf.book_class()). Use the domain-scoped API instead (e.g., otf.bookings.book_class()).

Features

  • add field validators and relative descriptor properties to BodyCompositionData (0c1b489)
  • add PII anonymization pipeline with real-time capture mode (#109) (c2c381e)
  • api.py, auth.py: add refresh callback functionality to handle token refresh events (e4dacc2)
  • api.py: add exclude_checkedin parameter to get_bookings method to filter out checked-in bookings (d7fcf32)
  • api.py: add filtering by day of week and start time for class retrieval (96d20e0)
  • api.py: add home_studio_uuid parameter to Otf class for better user context management (f03b6a5)
  • api.py: add hydrate method to Otf class to create instances from a dictionary (8577ad1)
  • api.py: add logging and print statement when starting background token refresh task (12b6f9f)
  • api.py: add main function to initialize Otf instance using env vars (c1d9315)
  • api.py: add methods to get booking by class and booking UUID for better booking management (6094072)
  • api.py: add new exceptions for booking errors to improve error handling (6094072)
  • api.py: add optional device_key parameter to hydrate method to allow more flexible instantiation (c5e2560)
  • api.py: add print statement to debug background task for refreshing token (a8f04ac)
  • api.py: add retry logic to _get_performance_summary_raw to handle intermittent None responses (82e9fb0)
  • api.py: add support for refresh_token and device_key in Otf class initialization (04c4294)
  • api.py: add support for token-based authentication and background token refresh (554e968)
  • api.py: add support for user object and refresh callback in Otf class (a081fe2)
  • api.py: add user parameter to Otf class constructor to allow passing a user object (7508b09)
  • api.py: enhance class booking and cancellation with additional checks and error handling (6094072)
  • api.py: extend Api.create method to support token-based authentication (85185eb)
  • api: add class and coach rating functionality (1032df1)
  • api: implement async context manager methods in Otf class to automatically handle session lifecycle (ed4f287)
  • api: implement get_studios_by_geo as alias for search_studios_by_geo (ed4f287)
  • auth.py, user.py: add has_cached_credentials method to check for cached credentials (ed4f287)
  • auth.py: add check_token method to verify and optionally renew access tokens (30faeb6)
  • auth.py: add class methods for creating OtfCognito instances from tokens and login credentials (80a64ac)
  • auth.py: add device key support to OtfCognito class for enhanced security (a938c06)
  • auth.py: add koji_person_id field to IdClaimsData model to include custom identifier (0c1b489)
  • auth.py: add logging for token refresh to improve debugging and monitoring (1192201)
  • auth.py: add logging to track token refresh process (63c2199)
  • auth.py: add logging when clearing device key to improve traceability (101f195)
  • auth.py: add method to create User instance from an id token (554e968)
  • auth.py: add methods to check and retrieve username from cache file (4647b55)
  • auth.py: add model_config to OtfUser to allow arbitrary types in pydantic model (11d3869)
  • auth.py: add OtfCognito class to handle device metadata and token renewal (9e9de81)
  • auth.py: add property and setter for device_key with logging for security (1538fec)
  • auth.py: add validation for refresh_callback to ensure it is a callable function with one argument (15a4dd4)
  • auth: add get_tokens method to OtfUser class to retrieve tokens (c520e39)
  • base.py: add item getter methods to OtfBaseModel for flexible key access (0282e67)
  • bookings.py: add book and cancel commands to manage class bookings (b0f9f70)
  • bookings.py: add BookingStatusCli enum for CLI-friendly booking statuses (0282e67)
  • bookings.py: add interactive booking cancellation feature to improve user experience (5095e6b)
  • bookings.py: add interactive booking options for studio UUIDs, date range, class type, day of week, and start time (96d20e0)
  • bookings.py: integrate OtfClassTimeMixin into OtfClass for time-related properties (0282e67)
  • bookings.py: update BookingList to include new class time columns (0282e67)
  • bookings: add methods to BookingStatus and StudioStatus enums for case-insensitive lookups and listing all statuses (4647b55)
  • bookings: add to_table method to BookingList for rich table representation (4647b55)
  • cancel_booking: add new response model for cancel booking (195e4da)
  • classes_api: add class_type and exclude_cancelled filters to get_classes method (ffc1cee)
  • classes_api: add filtering by date range and limit to get_classes method (76a358a)
  • classes_api: integrate booking status to mark classes as booked (ffc1cee)
  • classes.py: add ClassType and ClassTypeCli enums for class type management (0282e67)
  • classes.py: add DoW enum for day of week filtering and case-insensitive matching ([96d20e0](https://github.com/NodeJSmith/otf-api/co...
Read more

v0.15.4

08 Aug 15:45
4bd7010

Choose a tag to compare

What's Changed

  • Fix/improve sorting by @NodeJSmith in #105
    • Improve sorting by adding multiple sort keys
    • remove filter that removed no-booking-id bookings, as these were only filtered out due to lack of updated_at field

Full Changelog: v0.15.3...v0.15.4

v0.15.3

27 Jul 16:21
aab9c4b

Choose a tag to compare

What's Changed

  • update logic to allow returning workouts even if HR monitor data missing by @NodeJSmith in #103

Full Changelog: v0.15.2...v0.15.3

v0.15.2

26 Jul 20:49
fa9def4

Choose a tag to compare

What's Changed

  • closes #100
  • add more logging, especially where filtering/removal of records happens
  • add logic to dump raw response if OTF_LOG_RAW_RESPONSE env var is set to true
    • only logging at DEBUG level so need to have that set too, which can be done with OTF_LOG_LEVEL env var
  • add coloredlogs package to make logs easier to read
  • remove headers from request log
  • change log format structure slightly, use % formatting
  • change some log lines to use % to avoid calling methods/converting to string when not logging at that level
  • relax data type on PerformanceMetric class, remove custom parsing, was not useful

Full Changelog: v0.15.1...v0.15.2

v0.15.1

26 Jul 19:18
987769e

Choose a tag to compare

What's Changed

Full Changelog: v0.15.0...v0.15.1

v0.15.0

17 Jul 03:26
e16682b

Choose a tag to compare

What's Changed

Full Changelog: v0.14.1...v0.15.0

v0.14.1

20 Jun 14:53
d3f20c6

Choose a tag to compare

What's Changed

  • Fix/improve idp id clients by making them cached properties, remove get/set state dunders by @NodeJSmith in #97

Full Changelog: v0.14.0...v0.14.1