다음 표에는 데이터 유형의 전체 목록이 나와 있으며, Google Health API에서 각 유형의 표현과 각 유형이 제공되는 범위를 이해하는 데 도움이 되는 여러 열이 있습니다.
데이터 유형dataType
filter 매개변수 |
사용 가능한 작업 |
범위 |
|---|---|---|
|
활동 중 에너지 소모량
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
활동 시간
active-minutesactive_minutes
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
액티브존 미닛
active-zone-minutesactive_zone_minutes
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
활동 수준
|
목록, 조정 | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
고도
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
혈당
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
체지방
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
심박수 구간의 칼로리
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
핵심 체온
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 심박 변이도
daily-heart-rate-variabilitydaily_heart_rate_variability
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
일일 심박수 구간
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 산소 포화도
daily-oxygen-saturationdaily_oxygen_saturation
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 호흡수
daily-respiratory-ratedaily_respiratory_rate
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 안정 시 심박수
daily-resting-heart-ratedaily_resting_heart_rate
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 수면 온도 파생
daily-sleep-temperature-derivationsdaily_sleep_temperature_derivations
기록 유형: 일일
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
일일 최대 산소 섭취량
daily-vo2-maxdaily_vo2_max
기록 유형: 일일
호환 기기
|
목록, 조정 | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
이동 거리
distancedistance
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
심전도 (ECG)
electrocardiogramelectrocardiogram
레코드 유형: 세션
호환 기기
|
list | .ecg.readonly |
운동
exerciseexercise
레코드 유형: 세션
호환 기기
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
층수
|
조정, 롤업, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
음식
|
list, get | .nutrition.readonly.nutrition.writeonly |
음식 측정 단위
food-measurement-unitfood_measurement_unit
레코드 유형: 음식
호환 기기
|
list, get | .nutrition.readonly.nutrition.writeonly |
심박수
heart-rateheart_rate
레코드 유형: 샘플
호환 기기
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
심박 변이도
heart-rate-variabilityheart_rate_variability
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
키
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
수분 섭취 기록
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
불규칙한 심장 리듬 알림
|
list | .irn.readonly |
월경 기간
menstrual-periodmenstrual_period
레코드 유형: 인터벌
|
create, update, batchDelete | .reproductive_health.writeonly |
무드
moodsmoods
레코드 유형: 샘플
|
create, update, batchDelete | .mindfulness.writeonly |
영양 기록
nutrition-lognutrition_log
레코드 유형: 샘플
호환 기기
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
배란 테스트
ovulation-testovulation_test
레코드 유형: 샘플
|
create, update, batchDelete | .reproductive_health.writeonly |
산소 포화도
oxygen-saturationoxygen_saturation
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
호흡수 수면 요약
respiratory-rate-sleep-summaryrespiratory_rate_sleep_summary
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
러닝 최대 산소 섭취량
run-vo2-maxrun_vo2_max
레코드 유형: 샘플
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
활동량 부족 기간
sedentary-periodsedentary_period
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
절전 모드
sleepsleep
레코드 유형: 세션
호환 기기
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
단계
stepssteps
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
수영 거리 데이터
swim-lengths-dataswim_lengths_data
레코드 유형: 인터벌
호환 기기
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
증상
symptomssymptoms
레코드 유형: 샘플
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
심박수 구간별 시간
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
총 칼로리
total-caloriestotal_calories
레코드 유형: 인터벌
호환 기기
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
최대 산소 섭취량
vo2-maxvo2_max
레코드 유형: 샘플
호환 기기
|
목록, 조정 | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
무게
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
쿼리 제약 조건
API에서 데이터 포인트, 롤업 또는 일일 롤업을 쿼리할 때는 다음 제약 조건을 염두에 두세요.
- 필터 요구사항:
total-calories와 같은 일부 읽기 전용 파생 데이터 유형에는 간격 시작 시간(물리적 시간 또는 민간 시간 사용)을 지정하는 필터가 필요합니다. - 쿼리 범위 제한: 롤업 및 일일 롤업 집계 엔드포인트는 데이터 유형에 따라 최대 쿼리 범위 제한을 적용합니다.
calories-in-heart-rate-zone,heart-rate,active-minutes,total-calories의 최대 쿼리 범위는 14일입니다.- 기타 모든 데이터 유형의 최대 쿼리 범위는 90일입니다.
데이터 사용 가능 여부
사용자가 활동 추적기를 동기화하거나 Fitbit 모바일 또는 웹 앱에 새 데이터를 수동으로 입력한 후에만 사용자 데이터를 업데이트할 수 있습니다. Fitbit 앱이 모바일 기기에서 열려 있고 Fitbit 기기와 Fitbit 모바일 앱이 활성 데이터 연결을 사용하며 블루투스 범위 내에 있는 경우 15분마다 자동으로 동기화할 수 있습니다. 사용자가 MobileTrack을 사용하여 활동을 추적하는 경우 앱이 열려 있는 한 MobileTrack은 매시간 동기화됩니다.
이전 데이터 쿼리
Google Health API의 핵심 이점 중 하나는 사용자의 실적을 추적하고 장기간에 걸쳐 건강 수치를 모니터링할 수 있다는 점입니다. 기록된 시점까지 사용자의 데이터를 쿼리할 수 있습니다. API는 애플리케이션이 사용할 수 있는 과거 데이터의 양에 제한이나 제한을 두지 않습니다.
하지만 이전 데이터 쿼리는 여전히 표준 속도 제한의 적용을 받습니다. 시스템 안정성을 관리하고 과도한 페이로드를 방지하기 위해 Google Health API는 엔드포인트별 페이지 크기로 자동 페이지로 나누기를 사용합니다. 다음 경계 및 동작을 참고하세요.
- 자동 페이지 나누기: 긴 데이터 범위를 쿼리하면 API는 해당 엔드포인트의 페이지 크기 한도까지의 첫 번째 결과 페이지와
nextPageToken를 반환합니다.nextPageToken를 사용하여 후속 페이지를 요청해야 합니다. - 가변 페이지 크기: 상한은 엔드포인트와 데이터 유형에 따라 다릅니다. 대부분의 데이터 유형의 경우 페이지 크기는 최대 10,000개로 제한됩니다.
하지만
exercise및sleep과 같은 특정 데이터 유형의 경우 기본 및 최대 페이지 크기가 25로 제한됩니다. 예를 들어 클라이언트가 지난 10년간의 모든 수면 데이터를 요청하는 경우 API는 첫 번째 페이지에 수면 세션 25개만 반환합니다. - 데이터 롤업 기간 제한: 데이터 롤업 및 집계 엔드포인트(예:
rollUp및dailyRollUp)의 경우 쿼리 기간이 데이터 유형에 따라 제한됩니다.calories-in-heart-rate-zone,heart-rate,active-minutes,total-calories의 최대 범위는 14일입니다.- 기타 모든 롤업 데이터 유형의 최대 범위는 90일입니다.
애플리케이션에 필요한 이전 데이터의 양에 따라 전체 데이터 세트를 가져오려면 페이지를 순차적으로 페이지로 나누어야 합니다. 애플리케이션의 데이터 동기화 프로세스를 설계할 때 이 점을 염두에 두세요.
최적의 성능을 보장하고 API 오류를 방지하려면 이전 데이터를 쿼리할 때 다음 가이드라인을 따르세요.
단계별 데이터 동기화 (핫 로드와 콜드 로드 비교)
- 초기 '핫' 로드: 기본 로드 시퀀스 중에 최근 7~14일의 데이터만 가져오고 렌더링합니다. 이렇게 하면 사용자가 장기 실행 쿼리를 기다리지 않고 데이터를 즉시 볼 수 있습니다.
- 백그라운드 '콜드' 로드: 기본 UI가 렌더링된 후 이전 데이터 가져오기를 비동기식 우선순위가 낮은 큐 또는 백그라운드 프로세스에 위임합니다.
집계를 위한 쿼리 청킹
- 롤업 및 일일 롤업 엔드포인트는 최대 기간 제한 (데이터 유형에 따라 14일 또는 90일)을 적용하므로 대규모 과거 집계 쿼리를 이러한 제한 내에서 더 작은 순차적 간격으로 분류해야 합니다.
- 동시 실행 제한을 준수하고 안정적인 UI 진행률 표시기를 유지하기 위해 이러한 하위 쿼리를 안전하게 일괄 처리하거나 순서대로 처리합니다.
사전 집계된 롤업 활용
사전 집계된 요약 엔드포인트 (예: DailyRollUpDataPoints)를 사용하도록 개요 대시보드와 추세 차트를 재구성합니다. 이렇게 하면 백엔드의 컴퓨팅 오버헤드와 클라이언트로의 네트워크 전송 시간이 크게 줄어듭니다.
탄력적인 오류 처리 (스마트 재시도)
- 속도 제한 (
429 Too Many Requests) 및 서버 게이트웨이 시간 제한(504 Gateway Timeout)이 발생하면 엄격한 지수 백오프 처리를 구현합니다. 실패한 대규모 페이로드를 즉시 재시도하지 마세요. 즉시 재시도는 백엔드 정체를 증가시키고 시스템 성능 저하를 심화시킵니다.
서드 파티 액세스
Fitbit 기기는 서드 파티 애플리케이션 또는 서비스와 직접 통신할 수 없습니다. 이러한 기기는 Fitbit 모바일 앱과만 통신하고 동기화하도록 설계되었습니다.
Fitbit 앱이 열려 있을 때 또는 블루투스가 활성화되어 있고 앱이 백그라운드에서 실행 중인 경우 15분마다 기기가 하루 종일 데이터를 자동으로 동기화합니다. 이 동기화 프로세스가 완료되면 Google Health API를 통해 서드 파티 서비스에서 데이터를 사용할 수 있습니다.
거리 표준
elevationGainMillimeters와 같은 운동 거리는 다음과 같은 이유로 밀리미터로 측정됩니다.
- 데이터 정밀도 유지: 밀리미터를 사용하는 가장 중요한 이유는 읽고 제공하는 데이터의 정밀도를 유지하기 위해서입니다. 밀리미터와 같은 세부적인 단위를 사용하면 측정값을 높은 정확도로 나타낼 수 있습니다.
- 표준화: 밀리미터는 Google 서비스 전반에서 설계된 표준화된 단위입니다. 이러한 일관성은 API의 여러 부분과 상호작용하는 개발자에게 균일한 환경을 제공하는 데 도움이 됩니다.
- 광범위한 측정 시스템 지원: 밀리미터와 같은 기본 단위를 사용하면 개발자가 미터법, 영국식 또는 기타 측정 시스템을 사용하는지 여부에 관계없이 선택한 다른 단위로 쉽게 변환할 수 있습니다.
다양한 낮 길이
Health API의 시간 처리에서는 일광 절약 시간제 또는 여행으로 인해 달라지는 하루 길이를 고려하여 사용자의 시간을 우선시합니다. 모든 데이터 포인트는 실제 UTC 타임스탬프와 이벤트 발생 시 활성화된 UTC 오프셋을 모두 사용하여 저장됩니다. 이를 통해 시스템은 다음 작업을 할 수 있습니다.
- 이벤트를 정확한 물리적 순간에 매핑합니다.
- 집계를 위해 시간을 사용자의 현지 컨텍스트로 수정합니다.
일광절약시간
일광 절약 시간이 적용되면 '폴백'으로 인해 25시간의 민간 날짜가 발생하며 해당 날짜의 롤업에는 25시간의 데이터가 포함됩니다. '서머타임'은 시간이 표준시로 돌아가는 23시간의 민간 날짜를 초래합니다.
여행
시간대를 이동하면 단일 민간 날짜의 실제 기간이 훨씬 더 크게 달라질 수 있습니다.
dailyRollUp 엔드포인트를 사용하여 시간대 차이를 조정합니다. 사용자의 현지 시간에 따라 기록된 날짜를 자동으로 데이터에 귀속시켜 시간대 이동에도 불구하고 하루를 효과적으로 '연결'합니다.