Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -3837,7 +3837,7 @@ def execute_api_call(api: Garmin, key: str) -> None:
),
# System & Export
"create_health_report": lambda: DataExporter.create_health_report(api),
"remove_tokens": lambda: remove_stored_tokens(),
"remove_tokens": remove_stored_tokens,
"disconnect": lambda: disconnect_api(api),
# GraphQL Queries
"query_garmin_graphql": lambda: query_garmin_graphql_data(api),
Expand Down
31 changes: 31 additions & 0 deletions garminconnect/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -279,6 +279,16 @@ def __init__(

self.garmin_workouts_schedule_url = f"{self.garmin_workouts}/schedule"

self.garmin_nutrition = "/nutrition-service"

self.garmin_connect_nutrition_daily_food_logs = (
f"{self.garmin_nutrition}/food/logs"
)
self.garmin_connect_nutrition_daily_meals = f"{self.garmin_nutrition}/meals"
self.garmin_connect_nutrition_daily_settings = (
f"{self.garmin_nutrition}/settings"
)

self.garmin_connect_delete_activity_url = "/activity-service/activity"

self.garmin_graphql_endpoint = "graphql-gateway/graphql"
Expand Down Expand Up @@ -2594,6 +2604,27 @@ def get_adaptive_training_plan_by_id(self, plan_id: int | str) -> dict[str, Any]
logger.debug("Requesting adaptive training plan details for %s", plan_id)
return self.connectapi(url)

def get_nutrition_daily_food_log(self, cdate: str) -> dict[str, Any]:
"""Return food log summary for 'cdate' format 'YYYY-MM-DD'."""
cdate = _validate_date_format(cdate, "cdate")
url = f"{self.garmin_connect_nutrition_daily_food_logs}/{cdate}"
logger.debug("Requesting nutrition food log data for date %s", cdate)
return self.connectapi(url)

def get_nutrition_daily_meals(self, cdate: str) -> dict[str, Any]:
"""Return meals summary for 'cdate' format 'YYYY-MM-DD'."""
cdate = _validate_date_format(cdate, "cdate")
url = f"{self.garmin_connect_nutrition_daily_meals}/{cdate}"
logger.debug("Requesting nutrition meals data for date %s", cdate)
return self.connectapi(url)

def get_nutrition_daily_settings(self, cdate: str) -> dict[str, Any]:
"""Return nutrition settings for 'cdate' format 'YYYY-MM-DD'."""
cdate = _validate_date_format(cdate, "cdate")
url = f"{self.garmin_connect_nutrition_daily_settings}/{cdate}"
logger.debug("Requesting nutrition settings data for date %s", cdate)
return self.connectapi(url)


class GarminConnectConnectionError(Exception):
"""Raised when communication ended in error."""
Expand Down