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
Opérations
disponibles
Champ d'application
Énergie active dépensée
active-energy-burned
active_energy_burned
Type d'enregistrement  : Intervalle
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutes actives
active-minutes
active_minutes
Type d'enregistrement  : Intervalle

Appareils compatibles

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutes en zone active
active-zone-minutes
active_zone_minutes
Type d'enregistrement  : Intervalle

Appareils compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Niveau d'activité
activity-level
activity_level
Type d'enregistrement  : Intervalle
list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
altitude
altitude
Type d'enregistrement  : Intervalle
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glycémie
blood-glucose
blood_glucose
Type d'enregistrement  : Exemple
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Masse grasse
body-fat
body_fat
Type d'enregistrement  : Exemple

Appareils compatibles

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
Type d'enregistrement  : Intervalle
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Température corporelle centrale
core-body-temperature
core_body_temperature
Type d'enregistrement  : Exemple
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
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

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
Type d'enregistrement  : "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
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Fréquence respiratoire quotidienne
daily-respiratory-rate
daily_respiratory_rate
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

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
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Dérivations quotidiennes de la température de sommeil
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 max quotidien
daily-vo2-max
daily_vo2_max
Type d'enregistrement  : "Tous les jours"

Appareils compatibles

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distance
distance
distance
Type d'enregistrement  : Intervalle

Appareils compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Électrocardiogramme (ECG)
electrocardiogram
electrocardiogram
Type d'enregistrement  : session

Appareils compatibles

list .ecg.readonly
Exercice
exercise
exercise
Type d'enregistrement  : session

Appareils compatibles

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Étages
reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Nourriture
food
food
Type d'enregistrement  : Aliment
list, get .nutrition.readonly
.nutrition.writeonly
Unité de mesure des aliments
food-measurement-unit
food_measurement_unit
Type d'enregistrement  : Aliment

Appareils compatibles

list, get .nutrition.readonly
.nutrition.writeonly
Fréquence cardiaque
heart-rate
heart_rate
Type d'enregistrement  : Exemple

Appareils compatibles

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
Type d'enregistrement  : Exemple

Appareils compatibles

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Hauteur
height
height
Type d'enregistrement  : Exemple
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Journal d'hydratation
hydration-log
hydration_log
Type d'enregistrement  : session
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notification de rythme irrégulier
irregular-rhythm-notification
irregular_rhythm_notification
Type d'enregistrement  : session
list .irn.readonly
Période menstruelle
menstrual-period
menstrual_period
Type d'enregistrement  : Intervalle
create, update, batchDelete .reproductive_health.writeonly
Humeurs
moods
moods
Type d'enregistrement  : Exemple
create, update, batchDelete .mindfulness.writeonly
Journal de nutrition
nutrition-log
nutrition_log
Type d'enregistrement  : Exemple

Appareils compatibles

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Test d'ovulation
ovulation-test
ovulation_test
Type d'enregistrement  : Exemple
create, update, batchDelete .reproductive_health.writeonly
Saturation en oxygène
oxygen-saturation
oxygen_saturation
Type d'enregistrement  : Exemple

Appareils compatibles

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
Type d'enregistrement  : Exemple

Appareils compatibles

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 max de la course
run-vo2-max
run_vo2_max
Type d'enregistrement  : Exemple

Appareils compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Période sédentaire
sedentary-period
sedentary_period
Type d'enregistrement  : Intervalle

Appareils compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sommeil
sleep
sleep
Type d'enregistrement  : session

Appareils compatibles

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Étapes
steps
steps
Type d'enregistrement  : Intervalle

Appareils compatibles

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
Type d'enregistrement  : Intervalle

Appareils compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Symptômes
symptoms
symptoms
Type d'enregistrement  : Exemple
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
Type d'enregistrement  : Intervalle
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Total des calories
total-calories
total_calories
Type d'enregistrement  : Intervalle

Appareils compatibles

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 max
vo2-max
vo2_max
Type d'enregistrement  : Exemple

Appareils compatibles

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Poids
weight
weight
Type d'enregistrement  : Exemple

Appareils compatibles

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ées 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 plage de requêtes : les points de terminaison d'agrégation du cumul et du cumul quotidien appliquent des limites maximales à la plage de requêtes en fonction du type de données :
    • Une plage de requête maximale de 14 jours pour calories-in-heart-rate-zone, heart-rate, active-minutes et total-calories.
    • Une période de requête maximale de 90 jours pour tous les autres types de données.

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é, dans la mesure où elles ont été enregistrées. 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 gérer la stabilité du système et éviter les charges utiles excessives, l'API Google Health utilise la pagination automatique avec des tailles de page spécifiques aux points de terminaison. Notez les limites et le comportement suivants :

  • Pagination automatique : si vous interrogez une longue période de données, l'API ne renverra que la première page de résultats jusqu'à la limite de taille de page pour ce point de terminaison, ainsi qu'un nextPageToken. Vous devez utiliser nextPageToken pour demander les pages suivantes.
  • Taille de page variable : les limites de capping dépendent du point de terminaison et du type de données. Pour la plupart des types de données, la taille des pages est limitée à 10 000. Toutefois, pour certains types de données comme exercise et sleep, la taille de page par défaut et maximale est limitée à 25. Par exemple, si un client demande toutes les données de sommeil des 10 dernières années, l'API ne renverra que 25 sessions de sommeil sur la première page.
  • Restrictions concernant les périodes de cumul : pour les points de terminaison de cumul et d'agrégation des données (tels que rollUp et dailyRollUp), les périodes de requête sont limitées en fonction du type de données :
    • Une plage maximale de 14 jours pour calories-in-heart-rate-zone, heart-rate, active-minutes et total-calories.
    • Une plage maximale de 90 jours pour tous les autres types de données cumulées.

En fonction du volume de données historiques dont votre application a besoin, la récupération de l'ensemble de données nécessitera une pagination séquentielle. 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 garantit que les utilisateurs voient 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 ou à un processus en arrière-plan asynchrone et de priorité inférieure après le rendu de l'UI principale.

Regroupement des requêtes pour l'agrégation

  • Étant donné que les points de terminaison de cumul et de cumul quotidien appliquent une limite de plage de dates maximale (14 ou 90 jours selon le type de données), vous devez diviser les grandes requêtes d'agrégation historique en intervalles séquentiels plus petits respectant ces limites.
  • 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.

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 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 du calendrier où elles ont été enregistrées, en fonction de l'heure locale de l'utilisateur. Il "rassemble" ainsi les données d'une même journée malgré les changements de fuseau horaire.