В следующей таблице представлен полный список типов данных, с несколькими столбцами, которые помогут вам понять представление каждого типа в API Google Health, а также область его доступности.
Тип данныхdataTypeпараметр filter | Записывать тип | Доступный операции | Объем | Вебхук поддерживать | Истинные нули поддерживать |
|---|---|---|---|---|---|
Сожженная активная энергияactive-energy-burnedactive_energy_burned | Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Активные минутыactive-minutesactive_minutes Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Минуты активной зоныactive-zone-minutesactive_zone_minutes Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Уровень активностиactivity-levelactivity_level | Интервал | список, согласовать | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Высотаaltitudealtitude | Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Уровень глюкозы в кровиblood-glucoseblood_glucose | Образец | список, получить, согласовать, свернуть, ежедневный свертывание | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly | ||
Жировая масса телаbody-fatbody_fat Совместимые устройства
| Образец | список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly | ||
Калории в зоне частоты сердечных сокращенийcalories-in-heart-rate-zonecalories_in_heart_rate_zone | Интервал | rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Температура телаcore-body-temperaturecore_body_temperature | Образец | список, получить, согласовать, свернуть, ежедневный свертывание | .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 | ||
Ежедневные зоны частоты сердечных сокращенийdaily-heart-rate-zonesdaily_heart_rate_zones | Ежедневно | список, согласовать | .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 | ||
Ежедневный VO2 Maxdaily-vo2-maxdaily_vo2_max Совместимые устройства
| Ежедневно | список, согласовать | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Расстояниеdistancedistance Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Электрокардиограмма (ЭКГ)electrocardiogramelectrocardiogram Совместимые устройства
| Сессия | список | .ecg.readonly | ||
Упражнениеexerciseexercise Совместимые устройства
| Сессия | список, получить, согласовать, создать, обновить, пакетное удаление | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Полыfloorsfloors | Интервал | reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Едаfoodfood | Еда | список, получить | .nutrition.readonly.nutrition.writeonly | ||
Измерительный прибор для пищевых продуктовfood-measurement-unitfood_measurement_unit Совместимые устройства
| Еда | список, получить | .nutrition.readonly.nutrition.writeonly | ||
Частота сердечных сокращенийheart-rateheart_rate Совместимые устройства
| Образец | список, сверка, свертка, ежедневная сводка | .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 | ||
Высотаheightheight | Образец | список, получить, согласовать, создать, обновить, пакетное удаление | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly | ||
Журнал учета потребления жидкостиhydration-loghydration_log | Сессия | список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление | .nutrition.readonly.nutrition.writeonly | ||
Уведомление о нарушении ритмаirregular-rhythm-notificationirregular_rhythm_notification | Сессия | список | .irn.readonly | ||
Менструацияmenstrual-periodmenstrual_period | Интервал | создать, обновить, удалить пакетом | .reproductive_health.writeonly | ||
Настроенияmoodsmoods | Образец | создать, обновить, удалить пакетом | .mindfulness.writeonly | ||
Журнал учета пищевых продуктовnutrition-lognutrition_log Совместимые устройства
| Образец | список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление | .nutrition.readonly.nutrition.writeonly | ||
Тест на овуляциюovulation-testovulation_test | Образец | создать, обновить, удалить пакетом | .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 | ||
Бег VO2 Maxrun-vo2-maxrun_vo2_max Совместимые устройства
| Образец | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Сидячий периодsedentary-periodsedentary_period Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Спатьsleepsleep Совместимые устройства
| Сессия | список, получить, согласовать, создать, обновить, пакетное удаление | .sleep.readonly.sleep.writeonly | ||
Шагиstepssteps Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Данные о длине заплывовswim-lengths-dataswim_lengths_data Совместимые устройства
| Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Симптомыsymptomssymptoms | Образец | создать, обновить, удалить пакетом | .logged_symptoms.writeonly | ||
Время в зоне частоты сердечных сокращенийtime-in-heart-rate-zonetime_in_heart_rate_zone | Интервал | список, сверка, свертка, ежедневная сводка | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Общее количество калорийtotal-caloriestotal_calories Совместимые устройства
| Интервал | rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
VO2 Maxvo2-maxvo2_max Совместимые устройства
| Образец | список, согласовать | .activity_and_fitness.readonly.activity_and_fitness.writeonly | ||
Массаweightweight Совместимые устройства
| Образец | список, получить, согласовать, свернуть, ежедневный свертывание, создать, обновить, пакетное удаление | .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 могут автоматически синхронизироваться каждые 15 минут, когда приложение Fitbit открыто на мобильном устройстве, и оба устройства имеют активное соединение для передачи данных и находятся в зоне действия Bluetooth. Если пользователь отслеживает активность с помощью MobileTrack, MobileTrack синхронизируется каждый час, пока приложение открыто.
Запрос исторических данных
Одно из главных преимуществ API Google Health — возможность отслеживать производительность пользователя и контролировать показатели его здоровья в течение длительных периодов времени. Вы можете запрашивать данные пользователя за весь период, с момента их записи; API не накладывает никаких ограничений на объем исторических данных, которые может обрабатывать ваше приложение.
Однако запросы к историческим данным по-прежнему регулируются стандартными ограничениями скорости . Для обеспечения стабильности системы и предотвращения чрезмерной нагрузки API Google Health использует автоматическую пагинацию с размерами страниц, специфичными для каждой конечной точки. Обратите внимание на следующие ограничения и поведение:
- Автоматическая пагинация: если вы запрашиваете большой объем данных, API вернет только первую страницу результатов, не превышающую лимит размера страницы для данной конечной точки, вместе с токеном
nextPageToken. Для запроса последующих страниц необходимо использоватьnextPageToken. - Размер страниц может варьироваться: ограничения зависят от конечной точки и типа данных. Для большинства типов данных размер страниц ограничен максимум 10 000. Однако для некоторых типов данных, таких как
exerciseиsleep, размер страницы по умолчанию ограничен 25. Например, если клиент запрашивает все данные о сне за последние 10 лет, API все равно вернет только 25 сеансов сна на первой странице. - Ограничения по диапазону дат для сводных данных: Для конечных точек сводных и агрегированных данных (таких как
rollUpиdailyRollUp) диапазоны дат запросов ограничены в зависимости от типа данных:- Максимальный диапазон в 14 дней для
calories-in-heart-rate-zone,heart-rate,active-minutesиtotal-calories. - Для всех остальных типов сводных данных максимальный диапазон составляет 90 дней.
- Максимальный диапазон в 14 дней для
В зависимости от объема исторических данных, необходимых вашему приложению, для получения всего набора данных потребуется постраничная навигация. Учитывайте это при проектировании процесса синхронизации данных в вашем приложении.
Для обеспечения оптимальной производительности и во избежание ошибок API следуйте этим рекомендациям при запросе исторических данных:
Поэтапная синхронизация данных (горячая и холодная загрузка)
- Первоначальная «горячая» загрузка: во время основной последовательности загрузки загружаются и отображаются только данные за последние 7–14 дней. Это гарантирует, что пользователи увидят данные немедленно, без ожидания завершения длительных запросов.
- Фоновая «холодная» загрузка: после отрисовки основного пользовательского интерфейса перенаправьте получение более старых исторических данных в асинхронную очередь с более низким приоритетом или фоновый процесс.
Разбиение запросов на фрагменты для агрегирования
- Поскольку конечные точки для агрегирования и ежедневного агрегирования устанавливают ограничение на максимальный диапазон дат (14 или 90 дней в зависимости от типа данных), необходимо разбивать большие запросы на агрегирование исторических данных на более мелкие последовательные интервалы в пределах этих ограничений.
- Безопасно объединяйте или упорядочивайте эти подзапросы, чтобы соблюдать ограничения на параллельное выполнение и поддерживать стабильные индикаторы выполнения пользовательского интерфейса.
Используйте предварительно агрегированные сводные данные.
Реструктурируйте обзорные панели мониторинга и графики трендов, используя предварительно агрегированные сводные данные (например, DailyRollUpDataPoints ). Это значительно снизит вычислительную нагрузку на бэкэнд и время передачи данных по сети клиенту.
Устойчивая обработка ошибок (интеллектуальные повторные попытки)
- Внедрите строгую экспоненциальную обработку при столкновении с ограничениями скорости (
429 Too Many Requests) и таймаутами шлюза сервера (504 Gateway Timeout). Никогда не повторяйте сразу большие, неудачно завершившиеся запросы. Мгновенные повторные попытки увеличивают перегрузку бэкэнда и усугубляют деградацию системы.
Доступ третьих лиц
Устройства Fitbit не могут напрямую взаимодействовать со сторонними приложениями или сервисами. Эти устройства предназначены для связи и синхронизации исключительно с мобильным приложением Fitbit.
Устройство автоматически синхронизирует данные в течение дня, когда открыто приложение Fitbit, или каждые 15 минут, если Bluetooth активен и приложение работает в фоновом режиме. После завершения процесса синхронизации данные становятся доступны сторонним сервисам через API Google Health.
стандарты расстояния
Дистанция, измеряемая во время упражнений, например, elevationGainMillimeters в миллиметрах, стандартной единицей измерения является миллиметр по следующим причинам:
- Сохранение точности данных : Главная причина использования миллиметров — это обеспечение точности считываемых и предоставляемых данных. Использование такой точной единицы, как миллиметры, позволяет представлять измерения с высокой точностью.
- Стандартизация : Миллиметры — это стандартизированная единица измерения, используемая во всех наших сервисах. Такая согласованность помогает обеспечить единообразие взаимодействия разработчиков с различными частями API.
- Широкая поддержка систем измерения : использование базовой единицы, такой как миллиметры, упрощает разработчикам преобразование в любую другую выбранную единицу, независимо от того, работают ли они с метрической, имперской или другими системами измерения.
Переменная продолжительность светового дня
API Health обрабатывает время, отдавая приоритет времени пользователя, чтобы учесть переменную продолжительность дня, вызванную переходом на летнее время или поездками. Каждая точка данных хранится как с физической меткой времени UTC, так и с активным смещением UTC на момент события. Это позволяет системе:
- Сопоставьте событие с точным физическим моментом времени.
- Для агрегирования данных необходимо скорректировать время в соответствии с локальным контекстом пользователя.
Переход на летнее время
При переходе на летнее время происходит «перевод назад», в результате чего гражданские сутки становятся 25-часовыми, и сводная таблица за эту дату будет содержать 25 часов данных. При переводе назад, в результате, гражданские сутки становятся 23-часовыми, и время возвращается к стандартному времени.
Путешествовать
Перемещение через часовые пояса может привести к еще более значительным колебаниям физической продолжительности одного и того же гражданского дня.
Используйте конечную точку dailyRollUp для согласования разницы во времени. Она автоматически привязывает данные к календарному дню, в который они были записаны, в соответствии с местным временем пользователя, эффективно «сшивая» данные за день, несмотря на сдвиги во времени.