Types de données de l'API Google Health

Le tableau suivant contient la liste complète des types de données, avec plusieurs colonnes pour vous aider à comprendre la représentation de chaque type dans l'API Google Health, ainsi que le champ d'application de chacun.

Tableau : Types de données de l'API Google Health
Type de données
  dataType Paramètre
  filter
Type Record
Opérations
disponibles
Champ d'application Compatibilité avec les webhooks
Prise en charge des vrais zéros
Énergie active dépensée
  active-energy-burned
  active_energy_burned
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutes actives
  active-minutes
  active_minutes
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutes en zone active
  active-zone-minutes
  active_zone_minutes
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Niveau d'activité
  activity-level
  activity_level
Intervalle list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
  altitude
  altitude
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glycémie
  blood-glucose
  blood_glucose
Échantillon list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Masse grasse
  body-fat
  body_fat
Échantillon list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Calories brûlées dans la zone de fréquence cardiaque
  calories-in-heart-rate-zone
  calories_in_heart_rate_zone
Intervalle rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Température corporelle
  core-body-temperature
  core_body_temperature
Échantillon list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilité quotidienne de la fréquence cardiaque
  daily-heart-rate-variability
  daily_heart_rate_variability
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zones de fréquence cardiaque quotidienne
  daily-heart-rate-zones
  daily_heart_rate_zones
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturation en oxygène quotidienne
  daily-oxygen-saturation
  daily_oxygen_saturation
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Fréquence respiratoire quotidienne
  daily-respiratory-rate
  daily_respiratory_rate
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Fréquence cardiaque au repos quotidienne
  daily-resting-heart-rate
  daily_resting_heart_rate
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dérivations quotidiennes de la température du sommeil
  daily-sleep-temperature-derivations
  daily_sleep_temperature_derivations
Tous les jours list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 max quotidienne
  daily-vo2-max
  daily_vo2_max
Tous les jours list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distance
  distance
  distance
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Électrocardiogramme (ECG)
  electrocardiogram
  electrocardiogram
Session list .ecg.readonly
Exercice
  exercise
  exercise
Session list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Étages
  floors
  floors
Intervalle reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Nourriture
  food
  food
Nourriture list, get .nutrition.readonly
.nutrition.writeonly
Unité de mesure des aliments
  food-measurement-unit
  food_measurement_unit
Nourriture list, get .nutrition.readonly
.nutrition.writeonly
Fréquence cardiaque
  heart-rate
  heart_rate
Échantillon list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilité de la fréquence cardiaque
  heart-rate-variability
  heart_rate_variability
Échantillon list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Taille
  height
  height
Échantillon list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Journal d'hydratation
  hydration-log
  hydration_log
Session list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notification de rythme irrégulier
  irregular-rhythm-notification
  irregular_rhythm_notification
Session list .irn.readonly
Période menstruelle
  menstrual-period
  menstrual_period
Intervalle create, update, batchDelete .reproductive_health.writeonly
Humeurs
  moods
  moods
Échantillon create, update, batchDelete .mindfulness.writeonly
Journal de nutrition
  nutrition-log
  nutrition_log
Échantillon list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Test d'ovulation
  ovulation-test
  ovulation_test
Échantillon create, update, batchDelete .reproductive_health.writeonly
Saturation en oxygène
  oxygen-saturation
  oxygen_saturation
Échantillon list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Résumé du sommeil avec la fréquence respiratoire
  respiratory-rate-sleep-summary
  respiratory_rate_sleep_summary
Échantillon list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 max de la course
  run-vo2-max
  run_vo2_max
Échantillon list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Période sédentaire
  sedentary-period
  sedentary_period
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sommeil
  sleep
  sleep
Session list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Étapes
  steps
  steps
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Données sur les longueurs de nage
  swim-lengths-data
  swim_lengths_data
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Symptômes
  symptoms
  symptoms
Échantillon create, update, batchDelete .logged_symptoms.writeonly
Temps passé dans la zone de fréquence cardiaque
  time-in-heart-rate-zone
  time_in_heart_rate_zone
Intervalle list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Total des calories
  total-calories
  total_calories
Intervalle rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 Max
  vo2-max
  vo2_max
Échantillon list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Pondération
  weight
  weight
Échantillon list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Contraintes de requête

Lorsque vous interrogez des points de données, des cumuls ou des cumuls quotidiens à partir de l'API, gardez à l'esprit les contraintes suivantes :

  • Exigences concernant les filtres : certains types de données dérivés en lecture seule, tels que total-calories, nécessitent un filtre spécifiant une heure de début d'intervalle (en utilisant l'heure physique ou civile).
  • Limites de la période de la requête : la période maximale de la requête pour calories-in-heart-rate-zone, heart-rate, active-minutes et total-calories est de 14 jours. La période de requête maximale pour tous les autres types de données est de 90 jours.

Disponibilité des données

Les mises à jour des données de l'utilisateur ne sont disponibles qu'après la synchronisation de son moniteur d'activité physique ou la saisie manuelle de nouvelles données dans l'app mobile ou l'application Web Fitbit. L'appareil Fitbit et l'app mobile Fitbit peuvent se synchroniser automatiquement toutes les 15 minutes lorsque l'app Fitbit est ouverte sur l'appareil mobile et que les deux disposent d'une connexion de données active et se trouvent à portée Bluetooth. Si l'utilisateur suit son activité avec MobileTrack, MobileTrack se synchronise toutes les heures tant que l'application est ouverte.

Interroger les données historiques

L'un des principaux avantages de l'API Google Health est la possibilité de suivre les performances d'un utilisateur et de surveiller ses constantes sur de longues périodes. Vous pouvez interroger les données d'un utilisateur aussi loin que possible dans le passé, car l'API n'impose aucune limite ni restriction sur la quantité de données historiques que votre application peut consommer.

Toutefois, l'interrogation des données historiques est toujours régie par les limites de fréquence standards. Pour réduire le nombre d'appels d'API par rapport à ces limites, l'API Google Health permet d'interroger les données sur une plage de dates. Notez les limites de pagination et de requête suivantes :

  • Chaque point de terminaison renvoie une taille de page maximale de 10 000 points de données par page.
  • Les plages de dates des requêtes sont limitées à 14 à 90 jours par requête.

En fonction du volume de données historiques dont votre application a besoin, la récupération de l'ensemble de l'ensemble de données peut nécessiter plusieurs requêtes séquentielles et prendre plus de temps. Gardez cela à l'esprit lorsque vous concevez le processus de synchronisation des données de votre application.

Pour garantir des performances optimales et éviter les erreurs d'API, suivez ces consignes lorsque vous interrogez des données historiques :

Synchronisation progressive des données (chargement à chaud ou à froid)

  • Chargement "à chaud" initial : récupérez et affichez uniquement les données des 7 à 14 derniers jours lors de la séquence de chargement principale. Cela permet aux utilisateurs de voir les données immédiatement sans attendre les requêtes de longue durée.
  • Chargement "à froid" en arrière-plan : déléguez la récupération des données historiques plus anciennes à une file d'attente asynchrone de priorité inférieure ou à un processus en arrière-plan après le rendu de l'UI principale.

Regroupement des requêtes en fonction du temps

  • N'incluez pas de périodes de plusieurs années ou de plusieurs mois dans un même appel d'API. Décomposez les grandes requêtes historiques en intervalles plus petits et séquentiels (par exemple, une semaine par requête).
  • Regroupez ou séquencez ces sous-requêtes de manière sécurisée pour respecter les limites de simultanéité et maintenir des indicateurs de progression de l'UI stables.

Exploiter les récapitulatifs pré-agrégés

Restructurez les tableaux de bord et les graphiques de tendances pour utiliser des points de terminaison récapitulatifs pré-agrégés (tels que DailyRollUpDataPoints). Cela réduira considérablement la surcharge de calcul sur le backend et le temps de transfert réseau vers le client.

Gestion des exceptions résiliente (nouvelles tentatives intelligentes)

  • Mettez en œuvre une gestion stricte de l'intervalle exponentiel entre les tentatives lorsque vous rencontrez des limites de fréquence (429 Too Many Requests) et des délais d'expiration de la passerelle du serveur (504 Gateway Timeout). Ne relancez jamais immédiatement les charges utiles volumineuses ayant échoué. Les nouvelles tentatives instantanées multiplient la congestion du backend et aggravent la dégradation du système.
  • Si une requête expire à plusieurs reprises, revenez automatiquement à une période plus courte (par exemple, réduisez un bloc d'une semaine à trois jours).

Accès tiers

Les appareils Fitbit ne peuvent pas communiquer directement avec des applications ni des services tiers. Ces appareils sont conçus pour communiquer et se synchroniser exclusivement avec l'application mobile Fitbit.

L'appareil synchronise automatiquement les données tout au long de la journée, chaque fois que l'app Fitbit est ouverte, ou toutes les 15 minutes si le Bluetooth est activé et que l'application s'exécute en arrière-plan. Une fois ce processus de synchronisation terminé, les données sont disponibles pour les services tiers via l'API Google Health.

Normes de distance

Les distances d'exercice, telles que elevationGainMillimeters, sont mesurées en millimètres comme unité standard pour les raisons suivantes :

  1. Maintenir la précision des données : la raison la plus importante d'utiliser les millimètres est de s'assurer de ne perdre aucune précision dans les données que nous lisons et fournissons. L'utilisation d'une unité précise comme le millimètre nous permet de représenter les mesures avec une grande précision.
  2. Standardisation : les millimètres sont l'unité standardisée conçue pour nos services. Cette cohérence permet de garantir une expérience uniforme pour les développeurs qui interagissent avec différentes parties de l'API.
  3. Compatibilité étendue avec les systèmes de mesure : l'utilisation d'une unité de base comme le millimètre permet aux développeurs de convertir facilement les valeurs dans l'unité de leur choix, qu'ils travaillent avec le système métrique, impérial ou un autre système de mesure.

Durée variable des jours

La gestion du temps par l'API Health donne la priorité à l'heure de l'utilisateur pour tenir compte des durées de journée variables causées par le passage à l'heure d'été ou les voyages. Chaque point de données est stocké avec un code temporel UTC physique et le décalage UTC actif au moment de l'événement. Cela permet au système :

  • Associez l'événement à un instant physique précis.
  • Corrigez l'heure en fonction du contexte local de l'utilisateur pour l'agrégation.

Heure d'été

Lors du passage à l'heure d'hiver, la journée civile dure 25 heures, et le cumul pour cette date contiendra 25 heures de données. Le passage à l'heure d'été entraîne une journée civile de 23 heures, où l'heure revient à l'heure normale.

Voyages

Les voyages à travers les fuseaux horaires peuvent entraîner des variations encore plus importantes de la durée physique d'un jour civil.

Utilisez le point de terminaison dailyRollUp pour résoudre les différences de fuseau horaire. Il attribue automatiquement les données au jour calendaire où elles ont été enregistrées, selon l'heure locale de l'utilisateur, ce qui permet de "rassembler" la journée malgré les changements de fuseau horaire.