Interfejs Google Health API udostępnia typy danych do śledzenia odżywiania i nawodnienia użytkownika. Te typy umożliwiają zapisywanie posiłków, odwoływanie się do produktów z bazy danych, śledzenie ilości składników odżywczych i zapisywanie spożycia płynów.
Obsługiwane typy danych
| Typ danych | Dostępne operacje |
Zakres |
|---|---|---|
|
Jedzenie
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Jednostka miary jedzenia
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
Typ rekordu: jedzenie
Zgodne urządzenia
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Zapis nawodnienia
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Dziennik odżywiania
dataType:
nutrition-logfilter parameter: nutrition_log
Typ rekordu: sesja
Zgodne urządzenia
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Dziennik odżywiania
Dziennik odżywiania zawiera informacje o jedzeniu zapisane przez użytkownika. Istnieją 2 sposoby tworzenia dziennika odżywiania, w zależności od rodzaju żywności:
Zidentyfikowane jedzenie: ustaw pole
foodtak, aby odwoływało się do istniejącego zasobu Jedzenie. Polanutrients,energy,energyFromFat,totalCarbohydrate,totalFatifoodDisplayNamesą wypełniane automatycznie na podstawie informacji o powiązanym produkcie spożywczym. Jest to preferowana metoda.Anonimowe jedzenie: ustaw ręcznie pole
foodDisplayNamei podaj wartości dla pólnutrients,energy,energyFromFat,totalCarbohydrateitotalFat. Dzienników odżywiania utworzonych na podstawie anonimowych produktów nie można edytować po utworzeniu.
Tworzenie dziennika odżywiania z anonimowymi produktami spożywczymi
Aby utworzyć wpis logu odżywiania, wyślij żądanie POST do punktu końcowego nutrition-log
dataPoints.
Żądanie
POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json
{
"nutritionLog": {
"interval": {
"startTime": "2026-06-16T18:00:00Z",
"endTime": "2026-06-16T18:30:00Z"
},
"foodDisplayName": "Grilled Chicken Breast",
"mealType": "DINNER",
"energy": {
"kcal": 165
},
"totalCarbohydrate": {
"grams": 0
},
"totalFat": {
"grams": 3.6
},
"nutrients": [
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
},
{
"nutrient": "SODIUM",
"quantity": {
"grams": 0.074
}
}
],
"serving": {
"amount": 1.0
}
}
}Odpowiedź
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"nutritionLog": {
"interval": {
"startTime": "2026-06-16T18:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T18:30:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 18
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 18,
"minutes": 30
}
}
},
"energy": {
"kcal": 165
},
"totalCarbohydrate": {
"grams": 0
},
"totalFat": {
"grams": 3.6
},
"nutrients": [
{
"quantity": {
"grams": 31
},
"nutrient": "PROTEIN"
},
{
"quantity": {
"grams": 0.074
},
"nutrient": "SODIUM"
}
],
"mealType": "DINNER",
"serving": {
"amount": 1
},
"foodDisplayName": "Grilled Chicken Breast"
}
}
}Tworzenie wpisu w dzienniku odżywiania z rozpoznanym jedzeniem
Aby zapisać produkt spożywczy z bazy danych, ustaw pole food tak, aby odwoływało się do zasobu Food. Interfejs API automatycznie wypełnia pola dotyczące wartości odżywczych.
Żądanie
POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json
{
"nutritionLog": {
"interval": {
"startTime": "2026-06-16T12:00:00Z",
"endTime": "2026-06-16T12:30:00Z"
},
"food": "users/me/dataTypes/food/dataPoints/food-id",
"mealType": "LUNCH",
"serving": {
"amount": 1.0,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
}
}
}Odpowiedź
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/nutrition-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"nutritionLog": {
"interval": {
"startTime": "2026-06-16T12:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T12:30:00Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 12,
"minutes": 30
}
}
},
"energy": {
"kcal": 95
},
"energyFromFat": {
"kcal": 3
},
"totalCarbohydrate": {
"grams": 25
},
"totalFat": {
"grams": 0.3
},
"nutrients": [
{
"quantity": {
"grams": 4.4,
"userProvidedUnit": "GRAM"
},
"nutrient": "DIETARY_FIBER"
},
{
"quantity": {
"grams": 19,
"userProvidedUnit": "GRAM"
},
"nutrient": "SUGAR"
},
{
"quantity": {
"grams": 0.5,
"userProvidedUnit": "GRAM"
},
"nutrient": "PROTEIN"
}
],
"mealType": "LUNCH",
"serving": {
"amount": 1,
"foodMeasurementUnit": "users/me/dataTypes/food-measurement-unit/dataPoints/food-measurement-unit-id"
},
"food": "users/user-id/dataTypes/food/dataPoints/food-id",
"foodDisplayName": "Apple"
}
}
}Usuwanie zapisów dotyczących odżywiania
Aby usunąć co najmniej 1 wpis logu odżywiania, wyślij żądanie POST do metody batchDelete z nazwami zasobów wpisów, które chcesz usunąć.
Żądanie:
POST https://health.googleapis.com/v4/users/me/dataTypes/nutrition-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json
{
"names": [
"users/me/dataTypes/nutrition-log/dataPoints/data-point-id"
]
}Pola dziennika odżywiania
Pełną listę pól i opisów znajdziesz w NutritionLog.
Ilość energii
Reprezentuje pomiar energii w kilokaloriach (kcal). Szczegółowe informacje znajdziesz w artykule EnergyQuantity.
{
"kcal": 165
}
Ilość wagowa
Reprezentuje pomiar wagi w gramach. Więcej informacji znajdziesz w artykule WeightQuantity.
{
"grams": 27.3
}
Ilość składnika odżywczego
Reprezentuje konkretny składnik odżywczy i jego zmierzoną ilość. Więcej informacji: NutrientQuantity.
{
"nutrient": "PROTEIN",
"quantity": {
"grams": 31
}
}
Wartości składników odżywczych
Pełną listę obsługiwanych typów składników odżywczych znajdziesz w artykule Nutrient.
Obsługa
Reprezentuje informacje o porcji we wpisie logu odżywiania. Więcej informacji: Serving.
{
"amount": 1.5
}
Wartości typu posiłku
Pełną listę obsługiwanych typów posiłków znajdziesz w artykule MealType.
Jedzenie
Jedzenie to typ danych tylko do odczytu, który reprezentuje produkt spożywczy w bazie danych żywności.
Użyj operacji list i get, aby przeglądać dostępne produkty spożywcze i pobierać informacje o ich wartościach odżywczych.
Wyświetlanie listy produktów spożywczych
Aby wyświetlić listę produktów spożywczych, wyślij żądanie GET do punktu końcowego food dataPoints:
GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints Authorization: Bearer access-token Accept: application/json
Jednostka miary jedzenia
Jednostka miary jedzenia to typ danych tylko do odczytu, który reprezentuje jednostki miary używane do określania porcji jedzenia (np. „filiżanka”, „łyżka” lub „sztuka”).
Lista dostępnych jednostek miary
Aby wyświetlić listę dostępnych jednostek miary:
GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints Authorization: Bearer access-token Accept: application/json
Zapis nawodnienia
Zapis nawodnienia reprezentuje płyn zapisany przez użytkownika. W przeciwieństwie do żywności, która odnosi się do bazy danych żywności i mierzy spożycie składników odżywczych lub energii, wpisy dotyczące nawodnienia śledzą konkretną objętość płynu spożytego w danym przedziale czasu.
Tworzenie zapisu nawodnienia
Aby utworzyć wpis logu nawodnienia, wyślij żądanie POST do punktu końcowego hydration-log
dataPoints. Wszystkie ilości objętości są konwertowane na mililitry w formacie interfejsu API.
Żądanie
POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints
Authorization: Bearer access-token
Content-Type: application/json
{
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"endTime": "2026-06-16T14:00:01Z"
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}Odpowiedź
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T14:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}
}Aktualizowanie zapisu nawodnienia
Aby zaktualizować wpis logu nawodnienia, wyślij żądanie PATCH do punktu końcowego hydration-log
dataPoints z identyfikatorem punktu danych.
Żądanie
PATCH https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints/data-point-id
Authorization: Bearer access-token
Content-Type: application/json
{
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T10:00:00Z",
"endTime": "2026-06-16T10:00:01Z"
},
"amountConsumed": {
"milliliters": 500
}
}
}Odpowiedź
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T10:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T10:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 10
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 10,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500
}
}
}
}Usuwanie zapisanych danych o nawodnieniu
Aby usunąć co najmniej 1 wpis logu nawodnienia, wyślij żądanie POST do metody batchDelete.
Żądanie
POST https://health.googleapis.com/v4/users/me/dataTypes/hydration-log/dataPoints:batchDelete
Authorization: Bearer access-token
Content-Type: application/json
{
"names": [
"users/me/dataTypes/hydration-log/dataPoints/data-point-id"
]
}Odpowiedź
{
"done": true,
"response": {
"@type": "type.googleapis.com/google.devicesandservices.health.v4.BatchDeleteDataPointsResponse",
"dataPoints": [
{
"name": "users/user-id/dataTypes/hydration-log/dataPoints/data-point-id",
"dataSource": {
"recordingMethod": "UNKNOWN",
"application": {
"googleWebClientId": "google-web-client-id"
},
"platform": "GOOGLE_WEB_API"
},
"hydrationLog": {
"interval": {
"startTime": "2026-06-16T14:00:00Z",
"startUtcOffset": "0s",
"endTime": "2026-06-16T14:00:01Z",
"endUtcOffset": "0s",
"civilStartTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14
}
},
"civilEndTime": {
"date": {
"year": 2026,
"month": 6,
"day": 16
},
"time": {
"hours": 14,
"seconds": 1
}
}
},
"amountConsumed": {
"milliliters": 500,
"userProvidedUnit": "FLUID_OUNCE_US"
}
}
}
]
}
}Pola zapisu nawodnienia
Pełną listę pól i opisów znajdziesz w HydrationLog.
Liczba woluminów
Reprezentuje pomiar objętości w mililitrach. Więcej informacji znajdziesz w artykule VolumeQuantity.
{
"milliliters": 250,
"userProvidedUnit": "MILLILITER"
}
Wartości jednostek objętości
Pełną listę obsługiwanych jednostek objętości znajdziesz w artykule VolumeUnit. Typowe wartości to MILLILITER, LITER, CUP_US i FLUID_OUNCE_US.
Wytyczne
- W miarę możliwości używaj rozpoznanych produktów spożywczych. Interfejs API automatycznie wypełnia pola dotyczące wartości odżywczych, co zmniejsza liczbę błędów i zapewnia spójność z bazą danych żywności.
- Dzienników odżywiania utworzonych na podstawie anonimowych danych o żywności nie można aktualizować po utworzeniu. Jeśli chcesz poprawić anonimowy zapis dotyczący posiłku, usuń go i utwórz nowy.
- W przeciwieństwie do anonimowych wpisów dotyczących odżywiania wpisy dotyczące nawodnienia są w pełni modyfikowalne i można je aktualizować po utworzeniu za pomocą żądania
PATCH. - Wszystkie ilości składników odżywczych w tablicy
nutrientssą podane w gramach. - Pola
energyienergyFromFatużywają kilokalorii (kcal) jako jednostki miary. - Interfejs API konwertuje i przechowuje wszystkie ilości nawodnienia w mililitrach. Opcjonalne pole
userProvidedUnitwVolumeQuantityjest używane tylko do wyświetlania dla użytkownika po stronie klienta. - Bezpośrednie żądania HTTP
DELETEdo poszczególnych punktów danychhydration-logzwracają błąd404 Not Found. Aby usunąć te wpisy zasobów, użyj metodybatchDelete. - Zapisy dotyczące nawodnienia używają krótkiego interwału, w którym
startTimeiendTimereprezentują okres, w którym płyn został spożyty.