github cyberjunky/python-garminconnect 0.3.14
Release 0.3.14

latest release: 0.3.15
4 hours ago

What's Changed

Fixed

  • daily_sleep.avg_respiration_value was aliased to the wrong API field (avgRespirationValue, which never matches a real response) — corrected to averageRespirationValue, so this field now actually populates instead of always being None. lowestRespirationValue/highestRespirationValue were already correct. (#427)
  • set_blood_pressure()'s pulse parameter is now optional (int | None = None) — Garmin Connect's own UI allows saving a blood-pressure entry without a heart-rate value, but the library required one. When omitted, pulse is left out of the outgoing payload entirely rather than sent as a placeholder. (#426, #428)
  • demo.py's local blood-pressure range checks (systolic/diastolic/pulse) didn't match set_blood_pressure()'s own validation ranges, so a value the demo accepted could still be rejected by the API, and vice versa. All three ranges now match the library exactly (systolic 70-260, diastolic 40-150, pulse 20-250).
  • demo.py's category-menu key dispatch checked the pressed key against a hardcoded whitelist string before checking the real menu — any new uppercase option key (most recently [B] for the new "next scheduled workout" option) silently became unreachable, printing "Invalid selection" even though it was a real, listed menu entry. The whitelist is gone; the existing options-dict lookup right below it is now the sole (and already-correct) source of truth, so this class of bug can't recur.

Added

  • New get_next_scheduled_workout() — returns the earliest upcoming calendar-service workout (today or later), checking the current and next calendar month, since get_scheduled_workouts(year, month) already required callers to fetch and merge two months manually for a sensible "what's next" view. Known limitation: this only sees whatever Garmin's calendar-service endpoint has already committed to the visible calendar — for adaptive/Coach training plans, the Garmin Connect app can show upcoming sessions this endpoint doesn't return at all (confirmed live against a real account with an active Coach plan). That fuller view lives behind a different, session-cookie-authenticated API this client doesn't use. Documented on the method. (#429)
  • demo.py: new interactive menu option [B] for get_next_scheduled_workout().

Docs

  • README's "Total API Methods" wording corrected from "unique endpoints" to "methods" — get_next_scheduled_workout() composes two calls to the existing get_scheduled_workouts endpoint rather than adding a new remote endpoint. Method/category counts updated to 146+ across 14 categories.

Don't miss a new python-garminconnect release

NewReleases is sending notifications on new releases.