Google Health API ile Beslenme ve Sıvı Tüketimi Deneyimleri Geliştirme

Google Health API, kullanıcının beslenme ve sıvı tüketimini takip etmek için veri türleri sağlar. Bu türler; öğünleri kaydetmenize, gıda veritabanındaki yiyeceklere başvurmanıza, besin miktarlarını takip etmenize ve sıvı alımını kaydetmenize olanak tanır.

Desteklenen veri türleri

Tablo: Google Health API beslenme veri türleri
Veri türü Kullanılabilir
işlemler
Kapsam
Yiyecek
dataType: food
filter parameter: food
Kayıt türü: Yiyecek
list, get .nutrition.readonly
.nutrition.writeonly
Yiyecek Ölçü Birimi
dataType: food-measurement-unit
filter parameter: food_measurement_unit
Kayıt türü: Yiyecek

Uyumlu cihazlar

list, get .nutrition.readonly
.nutrition.writeonly
Sıvı Alımı Günlüğü
dataType: hydration-log
filter parameter: hydration_log
Kayıt türü: Oturum
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Beslenme Günlüğü
dataType: nutrition-log
filter parameter: nutrition_log
Kayıt türü: Oturum

Uyumlu cihazlar

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

Beslenme Günlüğü

Beslenme günlüğü, kullanıcı tarafından kaydedilen yiyecekleri temsil eder. Yiyecek türüne bağlı olarak beslenme günlüğü oluşturmanın iki yolu vardır:

  1. Tanımlanan yiyecek: food alanını mevcut bir Yiyecek kaynağına referans verecek şekilde ayarlayın. nutrients, energy, energyFromFat, totalCarbohydrate, totalFat ve foodDisplayName alanları, referans verilen yiyecekten otomatik olarak doldurulur. Bu, tercih edilen yöntemdir.

  2. Anonim yemek: foodDisplayName alanını manuel olarak ayarlayın ve nutrients, energy, energyFromFat, totalCarbohydrate ve totalFat için değerler sağlayın. Anonim yiyeceklerden oluşturulan beslenme günlükleri, oluşturulduktan sonra düzenlenemez.

Anonim yiyeceklerle beslenme günlüğü oluşturma

Beslenme günlüğü girişi oluşturmak için nutrition-log dataPoints uç noktasına bir POST isteği gönderin.

İstek

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

Yanıt

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

Tanımlanan yiyeceklerle beslenme günlüğü oluşturma

Yiyecek veritabanından bir yiyecek öğesini kaydetmek için food alanını bir Food kaynağına referans verecek şekilde ayarlayın. API, besin değeri alanlarını otomatik olarak doldurur.

İstek

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

Yanıt

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

Beslenme günlüklerini silme

Bir veya daha fazla beslenme günlüğü girişini silmek için kaldırılacak girişlerin kaynak adlarını içeren batchDelete yöntemine bir POST isteği gönderin.

İstek:

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

Beslenme günlüğü alanları

Alanların ve açıklamaların tam listesi için NutritionLog sayfasını inceleyin.

Enerji miktarı

Kilokalori (kcal) cinsinden ölçülen bir enerji ölçümünü temsil eder. Ayrıntılar için EnergyQuantity bölümüne bakın.

{
  "kcal": 165
}

Ağırlık miktarı

Gram cinsinden ölçülen bir ağırlık ölçümünü temsil eder. Ayrıntılı bilgi için WeightQuantity başlıklı makaleyi inceleyin.

{
  "grams": 27.3
}

Besin miktarı

Belirli bir besin maddesini ve ölçülen miktarını temsil eder. Ayrıntılı bilgi için NutrientQuantity başlıklı makaleyi inceleyin.

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

Besin değerleri

Desteklenen besin türlerinin tam listesi için Nutrient sayfasına bakın.

Sunma

Beslenme günlüğü girişinin porsiyon bilgilerini temsil eder. Ayrıntılı bilgi için Serving başlıklı makaleyi inceleyin.

{
  "amount": 1.5
}

Yemek türü değerleri

Desteklenen yemek türlerinin tam listesi için MealType sayfasına bakın.

Yiyecekler

Yiyecek, yiyecek veritabanındaki bir yiyecek öğesini temsil eden salt okunur bir veri türüdür. Mevcut yiyeceklere göz atmak ve besin değerlerini almak için list ve get işlemlerini kullanın.

Yiyecekleri listeleme

Yiyecekleri listelemek için food dataPoints uç noktasına bir GET isteği gönderin:

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

Yiyecek Ölçü Birimi

Yiyecek Ölçü Birimi, yiyecek porsiyonları için kullanılan ölçü birimlerini (ör. "fincan", "yemek kaşığı" veya "parça") temsil eden salt okunur bir veri türüdür.

Kullanılabilir ölçü birimlerini listeleme

Kullanılabilir ölçü birimlerini listelemek için:

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

Sıvı Alımı Günlüğü

Sıvı Tüketimi Günlüğü, kullanıcı tarafından kaydedilen sıvı miktarını temsil eder. Bir gıda veritabanına başvuran ve besin veya enerji alımını ölçen gıdaların aksine, sıvı alımı girişleri belirli bir zaman aralığında tüketilen sıvının hacmini takip eder.

Su tüketimi günlüğü oluşturma

Sıvı tüketimi günlüğü girişi oluşturmak için hydration-log dataPoints uç noktasına bir POST isteği gönderin. Tüm hacim miktarları, API biçiminde mililitreye dönüştürülür.

İstek

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

Yanıt

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

Sıvı tüketimi kaydını güncelleme

Sıvı tüketimi günlüğü girişini güncellemek için veri noktasının kimliğini içeren bir PATCH isteğini hydration-log dataPoints uç noktasına gönderin.

İstek

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

Yanıt

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

Sıvı tüketimi günlüklerini silme

Bir veya daha fazla sıvı tüketimi günlüğü girişini silmek için batchDelete yöntemine POST isteği gönderin.

İstek

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

Yanıt

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

Sıvı alımı günlüğü alanları

Alanların ve açıklamaların tam listesi için HydrationLog sayfasını inceleyin.

Hacim miktarı

Milisaniye cinsinden ölçülen bir hacim ölçümünü temsil eder. Ayrıntılı bilgi için VolumeQuantity başlıklı makaleyi inceleyin.

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

Hacim birimi değerleri

Desteklenen hacim birimlerinin tam listesi için VolumeUnit sayfasına bakın. Yaygın değerler arasında MILLILITER, LITER, CUP_US ve FLUID_OUNCE_US bulunur.

Yönergeler

  • Mümkün olduğunda tanımlanmış yiyecekleri kullanın. API, besin değeri alanlarını otomatik olarak doldurarak hataları azaltır ve gıda veritabanıyla tutarlılık sağlar.
  • Anonim yiyeceklerden oluşturulan beslenme günlükleri, oluşturulduktan sonra güncellenemez. Anonim bir yemek kaydını düzeltmeniz gerekiyorsa kaydı silip yeni bir kayıt oluşturun.
  • Anonim besin değeri günlüklerinin aksine, sıvı tüketimi günlüğü girişleri tamamen değiştirilebilir ve oluşturulduktan sonra PATCH isteği kullanılarak güncellenebilir.
  • nutrients dizisindeki tüm besin miktarları, ölçü birimi olarak gramı kullanır.
  • energy ve energyFromFat alanları, ölçü birimi olarak kilokaloriyi (kcal) kullanır.
  • API, tüm sıvı tüketimi miktarlarını mililitreye dönüştürür ve depolar. VolumeQuantity içindeki isteğe bağlı userProvidedUnit alanı yalnızca istemci tarafında kullanıcıya yönelik görüntüleme için kullanılır.
  • Doğrudan HTTP DELETE istekleri, tek tek hydration-log veri noktalarına gönderildiğinde 404 Not Found döndürür. Bu kaynak girişlerini kaldırmak için batchDelete yöntemini kullanın.
  • Sıvı tüketimi günlüklerinde, sıvının tüketildiği zaman aralığını temsil eden startTime ve endTime ile kısa bir aralık kullanılır.