영양 데이터 유형

Google Health API는 사용자의 음식 섭취량과 영양 정보를 추적하기 위한 데이터 유형을 제공합니다. 이러한 유형을 사용하면 식사를 기록하고, 음식 데이터베이스에서 음식을 참조하고, 영양소의 양을 추적할 수 있습니다.

지원되는 데이터 유형

표: Google Health API 영양 데이터 유형
데이터 유형
  dataType
  filter 매개변수
기록
유형
사용 가능한
작업
범위 웹훅
지원
실제 0
지원
음식
  food
  food
음식 list, get .nutrition.readonly
.nutrition.writeonly
음식 측정 단위
  food-measurement-unit
  food_measurement_unit
음식 list, get .nutrition.readonly
.nutrition.writeonly
영양 기록
  nutrition-log
  nutrition_log
샘플 list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly

영양 기록

영양 기록은 사용자가 기록한 음식을 나타냅니다. 음식 유형에 따라 영양 기록을 만드는 방법에는 두 가지가 있습니다.

  1. 식별된 음식: 기존 음식 리소스를 참조하도록 food 필드를 설정합니다. nutrients, energy, energyFromFat, totalCarbohydrate, totalFat, foodDisplayName 필드는 참조된 음식에서 자동으로 채워집니다. 이 방법이 선호되는 방법입니다.

  2. 익명의 음식: foodDisplayName 필드를 수동으로 설정하고 nutrients, energy, energyFromFat, totalCarbohydrate, totalFat의 값을 제공합니다. 익명의 음식으로 만든 영양 기록은 생성 후에는 수정할 수 없습니다.

익명의 음식으로 영양 기록 만들기

영양 로그 항목을 만들려면 POST 요청을 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 필드를 설정하여 음식 리소스를 참조합니다. 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"
  ]
}

NutritionLog 필드

필드 및 설명의 전체 목록은 참조 문서를 참고하세요.

EnergyQuantity

에너지 측정값을 나타내며 킬로칼로리 (kcal)로 측정됩니다. 자세한 내용은 EnergyQuantity를 참고하세요.

{
  "kcal": 165
}

WeightQuantity

무게 측정값을 나타내며 그램으로 측정됩니다. 자세한 내용은 WeightQuantity를 참고하세요.

{
  "grams": 27.3
}

NutrientQuantity

특정 영양소와 측정된 양을 나타냅니다. 자세한 내용은 NutrientQuantity를 참고하세요.

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

영양소 값

지원되는 영양소 유형의 전체 목록은 영양소를 참고하세요.

서빙

영양 로그 항목의 서빙 정보를 나타냅니다. 자세한 내용은 서빙을 참고하세요.

{
  "amount": 1.5
}

MealType 값

지원되는 식사 유형의 전체 목록은 MealType을 참고하세요.

음식

음식은 음식 데이터베이스의 음식 항목을 나타내는 읽기 전용 데이터 유형입니다. listget 작업을 사용하여 사용 가능한 음식을 찾아보고 영양 정보를 검색합니다.

음식 나열

음식을 나열하려면 GET 요청을 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

가이드라인

  • 가능한 경우 식별된 음식을 사용합니다. API는 영양 필드를 자동으로 채워 오류를 줄이고 음식 데이터베이스와의 일관성을 보장합니다.
  • 익명의 음식으로 만든 영양 기록은 생성 후에는 업데이트할 수 없습니다. 익명의 음식 기록을 수정해야 하는 경우 삭제하고 새 기록을 만듭니다.
  • nutrients 배열의 모든 영양소 양은 그램을 측정 단위로 사용합니다.
  • energyenergyFromFat 필드는 킬로칼로리 (kcal)를 측정 단위로 사용합니다.