با استفاده از Google Health API، تجربه‌های تغذیه‌ای و آبرسانی را توسعه دهید

رابط برنامه‌نویسی کاربردی گوگل هلث (Google Health API) انواع داده‌ای را برای ردیابی تغذیه و میزان آب بدن کاربر ارائه می‌دهد. این نوع داده‌ها به شما امکان می‌دهند وعده‌های غذایی را ثبت کنید، غذاهای مرجع را از پایگاه داده مواد غذایی انتخاب کنید، مقادیر مواد مغذی را پیگیری کنید و میزان مصرف مایعات را ثبت کنید.

انواع داده پشتیبانی شده

جدول: انواع داده‌های تغذیه‌ای API سلامت گوگل
نوع داده
dataType
پارامتر filter
موجود است
عملیات
دامنه
غذا
food
food
نوع رکورد: غذا
فهرست کردن، دریافت کردن .nutrition.readonly
.nutrition.writeonly
واحد اندازه‌گیری غذا
food-measurement-unit
food_measurement_unit
نوع رکورد: غذا

دستگاه‌های سازگار

فهرست کردن، دریافت کردن .nutrition.readonly
.nutrition.writeonly
گزارش هیدراتاسیون
hydration-log
hydration_log
نوع رکورد: جلسه
فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، به‌روزرسانی کردن، حذف دسته‌ای .nutrition.readonly
.nutrition.writeonly
گزارش تغذیه
nutrition-log
nutrition_log
نوع رکورد: نمونه

دستگاه‌های سازگار

فهرست کردن، دریافت کردن، تطبیق دادن، جمع کردن، جمع کردن روزانه، ایجاد کردن، به‌روزرسانی کردن، حذف دسته‌ای .nutrition.readonly
.nutrition.writeonly

گزارش تغذیه

یک گزارش تغذیه، نشان دهنده غذاهایی است که توسط کاربر ثبت شده است. بسته به نوع غذا، دو راه برای ایجاد گزارش تغذیه وجود دارد:

  1. غذای شناسایی‌شده : فیلد food را طوری تنظیم کنید که به یک منبع غذایی موجود ارجاع دهد. فیلدهای nutrients ، energy ، energyFromFat ، totalCarbohydrate ، totalFat و foodDisplayName به طور خودکار از غذای ارجاع‌شده پر می‌شوند. این روش ترجیحی است.

  2. غذای ناشناس : فیلد foodDisplayName را به صورت دستی تنظیم کنید و مقادیر مربوط به nutrients ، energy ، energyFromFat ، totalCarbohydrate و totalFat را ارائه دهید. گزارش‌های تغذیه‌ای ایجاد شده از غذای ناشناس پس از ایجاد قابل ویرایش نیستند.

با استفاده از غذاهای ناشناس، یک گزارش تغذیه ایجاد کنید

برای ایجاد یک ورودی لاگ تغذیه، یک درخواست POST به نقطه پایانی nutrition-log dataPoints ارسال کنید.

درخواست

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 را طوری تنظیم کنید که به یک منبع غذایی ارجاع دهد. 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
    }
  }
}

حذف گزارش‌های تغذیه‌ای

برای حذف یک یا چند ورودی لاگ تغذیه، یک درخواست POST به همراه نام منابع ورودی‌هایی که باید حذف شوند، به متد 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"
  ]
}

فیلدهای ثبت تغذیه

برای مشاهده لیست کامل فیلدها و توضیحات، به مستندات مرجع مراجعه کنید.

مقدار انرژی

نشان‌دهنده‌ی واحد اندازه‌گیری انرژی است که بر حسب کیلوکالری ( kcal ) اندازه‌گیری می‌شود. برای جزئیات بیشتر، به بخش «مقدار انرژی» مراجعه کنید.

{
  "kcal": 165
}

وزنمقدار

نشان‌دهنده‌ی واحد وزن است که بر حسب گرم اندازه‌گیری می‌شود. برای جزئیات بیشتر، به WeightQuantity مراجعه کنید.

{
  "grams": 27.3
}

مقدار مواد مغذی

نشان دهنده یک ماده مغذی خاص و مقدار اندازه‌گیری شده آن است. برای جزئیات بیشتر، به بخش «مقدار مواد مغذی» مراجعه کنید.

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

مقادیر مواد مغذی

برای فهرست کاملی از انواع مواد مغذی پشتیبانی‌شده، به بخش مواد مغذی مراجعه کنید.

خدمت رسانی

اطلاعات مربوط به وعده غذایی را برای ورودی گزارش تغذیه نشان می‌دهد. برای جزئیات بیشتر، به بخش «وعده غذایی» مراجعه کنید.

{
  "amount": 1.5
}

مقادیر نوع غذا (MealType)

برای فهرست کاملی از انواع وعده‌های غذایی پشتیبانی‌شده، به MealType مراجعه کنید.

غذا

غذا یک نوع داده فقط خواندنی است که یک ماده غذایی را در پایگاه داده غذا نشان می‌دهد. از عملیات list و get برای مرور غذاهای موجود و بازیابی اطلاعات تغذیه‌ای آنها استفاده کنید.

فهرست کردن غذاها

برای فهرست کردن غذاها، یک درخواست GET به نقطه پایانی dataPoints food ارسال کنید:

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 به نقطه پایانی 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 به نقطه پایانی 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 به متد 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"
          }
        }
      }
    ]
  }
}

فیلدهای گزارش هیدراتاسیون

برای مشاهده لیست کامل فیلدها و توضیحات، به مستندات مرجع مراجعه کنید.

حجممقدار

نشان‌دهنده‌ی واحد حجم است که بر حسب میلی‌لیتر اندازه‌گیری می‌شود. برای جزئیات بیشتر، به بخش «حجم-مقدار» مراجعه کنید.

{
  "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 را برمی‌گردانند. از متد batchDelete برای حذف این ورودی‌های منبع استفاده کنید.
  • لاگ‌های هیدراتاسیون از یک بازه زمانی کوتاه استفاده می‌کنند که در آن startTime و endTime نشان‌دهنده دوره زمانی مصرف مایع هستند.