פיתוח חוויות של תזונה ושתייה באמצעות Google Health API

‫Google Health API מספק סוגי נתונים למעקב אחרי התזונה וצריכת הנוזלים של המשתמש. הסוגים האלה מאפשרים לתעד ארוחות, לעיין במאכלים ממסד הנתונים של המזון, לעקוב אחרי כמויות של חומרים מזינים ולתעד צריכת נוזלים.

סוגי נתונים נתמכים

טבלה: סוגי נתונים של Google Health API Nutrition
סוג הנתונים פעולות
זמינות
היקף
אוכל
‫dataType: food
filter parameter: food
סוג הרשומה: אוכל
list, get .nutrition.readonly
.nutrition.writeonly
יחידת מידה של מזון
dataType: food-measurement-unit
filter parameter: food_measurement_unit
סוג הרשומה: אוכל

מכשירים תואמים

list, get .nutrition.readonly
.nutrition.writeonly
יומן מאזן הנוזלים
dataType: hydration-log
filter parameter: hydration_log
סוג הרשומה: סשן
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
יומן תזונה
dataType: nutrition-log
filter parameter: nutrition_log
סוג הרשומה: סשן

מכשירים תואמים

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly

יומן תזונה

יומן תזונה מייצג מזון שהמשתמש תיעד. יש שתי דרכים ליצור יומן תזונה, בהתאם לסוג המזון:

  1. מאכל מזוהה: מגדירים את השדה food כך שיפנה למשאב Food קיים. השדות nutrients,‏ energy,‏ energyFromFat,‏ totalCarbohydrate,‏ totalFat ו-foodDisplayName מאוכלסים באופן אוטומטי מהמזון שאליו מפנים. זו השיטה המועדפת.

  2. מזון אנונימי: מגדירים את השדה foodDisplayName באופן ידני ומספקים ערכים ל-nutrients,‏ energy,‏ energyFromFat,‏ totalCarbohydrate ו-totalFat. אי אפשר לערוך יומני תזונה שנוצרו ממאכלים אנונימיים אחרי שהם נוצרו.

יצירת יומן תזונה עם אוכל אנונימי

כדי ליצור רשומה ביומן התזונה, שולחים בקשת POST לנקודת הקצה dataPoints של nutrition-log.

בקשה

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
    }
  }
}

תשובה

{
  "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"
    }
  }
}

יצירת יומן תזונה עם אוכל מזוהה

כדי לתעד פריט מזון ממסד הנתונים של המזון, מגדירים את השדה food כך שיפנה למשאב Food. ה-API מאכלס את השדות של הערכים התזונתיים באופן אוטומטי.

בקשה

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"
    }
  }
}

תשובה

{
  "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"
    }
  }
}

מחיקת יומני תזונה

כדי למחוק רשומה אחת או יותר ביומן התזונה, שולחים בקשת POST ל-method‏ batchDelete עם שמות המשאבים של הרשומות שרוצים להסיר.

בקשה:

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"
  ]
}

שדות ביומן התזונה

לרשימה מלאה של השדות והתיאורים, ראו NutritionLog.

כמות האנרגיה

מייצג מדידת אנרגיה, בקילו-קלוריות (kcal). פרטים נוספים זמינים במאמר EnergyQuantity.

{
  "kcal": 165
}

כמות המשקל

מייצג מדידת משקל בגרמים. מידע נוסף מופיע במאמר WeightQuantity.

{
  "grams": 27.3
}

כמות הרכיב התזונתי

מייצג חומר מזין ספציפי ואת הכמות הנמדדת שלו. מידע נוסף מופיע במאמר NutrientQuantity.

{
  "nutrient": "PROTEIN",
  "quantity": {
    "grams": 31
  }
}

ערכים תזונתיים

רשימה מלאה של סוגי הערכים התזונתיים הנתמכים זמינה במאמר Nutrient.

מוצגת

מייצג את פרטי המנה של רשומה ביומן התזונה. מידע נוסף מופיע במאמר Serving.

{
  "amount": 1.5
}

ערכים של סוג הארוחה

כאןMealType מופיעה רשימה מלאה של סוגי הארוחות הנתמכים.

אוכל

"אוכל" הוא סוג נתונים לקריאה בלבד שמייצג פריט אוכל במסד הנתונים של האוכל. משתמשים בפעולות list ו-get כדי לעיין במאכלים הזמינים ולאחזר את הערכים התזונתיים שלהם.

רשימת מאכלים

כדי להציג רשימה של מאכלים, שולחים בקשת GET לנקודת הקצה (endpoint) של food dataPoints:

GET https://health.googleapis.com/v4/users/me/dataTypes/food/dataPoints
Authorization: Bearer access-token
Accept: application/json

יחידת מידה של מזון

יחידת מידה של מזון היא סוג נתונים לקריאה בלבד שמייצג יחידות מידה שמשמשות למנות מזון (לדוגמה, "", "כף" או "חתיכה").

רשימה של יחידות המידה הזמינות

כדי להציג רשימה של יחידות המידה הזמינות:

GET https://health.googleapis.com/v4/users/me/dataTypes/food-measurement-unit/dataPoints
Authorization: Bearer access-token
Accept: application/json

יומן מאזן הנוזלים

יומן שתייה מייצג נוזלים שהמשתמש תיעד. בניגוד למזונות, שמתייחסים למסד נתונים של מזון ומודדים את צריכת החומרים המזינים או האנרגיה, רשומות של מאזן נוזלים עוקבות אחר הנפח הספציפי של הנוזלים שנצרכו במהלך פרק זמן נתון.

יצירת יומן שתייה

כדי ליצור רשומה ביומן של צריכת הנוזלים, שולחים בקשת POST לנקודת הקצה (endpoint) hydration-log dataPoints. כל כמויות הנפח מומרות למיליליטרים בפורמט של ה-API.

בקשה

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"
    }
  }
}

תשובה

{
  "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"
      }
    }
  }
}

עדכון של יומן מאזן הנוזלים

כדי לעדכן רשומה ביומן ההידרציה, שולחים בקשת PATCH לנקודת הקצה (endpoint) hydration-log dataPoints עם המזהה של הנקודה על הגרף.

בקשה

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
    }
  }
}

תשובה

{
  "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
      }
    }
  }
}

מחיקת יומני שתייה

כדי למחוק רשומה אחת או יותר ביומן ההידרציה, שולחים בקשת POST ל-method‏ batchDelete.

בקשה

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"
  ]
}

תשובה

{
  "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"
          }
        }
      }
    ]
  }
}

שדות ביומן מאזן הנוזלים

לרשימה מלאה של השדות והתיאורים, ראו HydrationLog.

כמות הנפח

מייצג מדידת נפח, במיליליטרים. מידע נוסף מופיע במאמר VolumeQuantity.

{
  "milliliters": 250,
  "userProvidedUnit": "MILLILITER"
}

ערכים של יחידות נפח

כאןVolumeUnit מופיעה רשימה מלאה של יחידות הנפח הנתמכות. הערכים הנפוצים כוללים את MILLILITER,‏ LITER,‏ CUP_US ו-FLUID_OUNCE_US.

הנחיות

  • כדאי להשתמש במאכלים מזוהים כשאפשר. ה-API מאכלס את שדות הערכים התזונתיים באופן אוטומטי, וכך מצמצם את השגיאות ומבטיח עקביות עם מסד הנתונים של המזון.
  • אי אפשר לעדכן יומני תזונה שנוצרו ממאכלים אנונימיים אחרי שהם נוצרו. אם אתם צריכים לתקן יומן אנונימי של ארוחות, מחקו אותו וצרו יומן חדש.
  • בניגוד ליומני תזונה אנונימיים, רשומות ביומן צריכת הנוזלים ניתנות לשינוי באופן מלא, ואפשר לעדכן אותן אחרי היצירה באמצעות בקשת PATCH.
  • כל הכמויות של רכיבי התזונה במערך nutrients נמדדות בגרמים.
  • השדות energy ו-energyFromFat משתמשים בקילו-קלוריות (kcal) כיחידת המידה.
  • ה-API ממיר את כל כמויות הנוזלים למיליליטרים ושומר אותן. השדה האופציונלי userProvidedUnit ב-VolumeQuantity משמש רק לתצוגה בצד הלקוח שגלויה למשתמשים.
  • בקשות HTTP DELETE ישירות לנקודות נתונים ספציפיות של hydration-log מחזירות את הערך 404 Not Found. כדי להסיר את רשומות המשאבים האלה, משתמשים ב-method‏ batchDelete.
  • ביומני שתייה משתמשים במרווח זמן קצר, שבו startTime ו-endTime מייצגים את פרק הזמן שבו הנוזל נצרך.