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.
Type de donnéesdataType
Paramètre filter |
Opérations disponibles |
Champ d'application |
|---|---|---|
Énergie active dépensée
active-energy-burnedactive_energy_burned
Type d'enregistrement : Intervalle
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutes actives
active-minutesactive_minutes
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutes en zone active
active-zone-minutesactive_zone_minutes
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Niveau d'activité
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Altitude
altitudealtitude
Type d'enregistrement : Intervalle
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Glycémie
blood-glucoseblood_glucose
Type d'enregistrement : Exemple
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Masse grasse
body-fatbody_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-zonecalories_in_heart_rate_zone
Type d'enregistrement : Intervalle
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Température corporelle centrale
|
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-variabilitydaily_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-zonesdaily_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-saturationdaily_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-ratedaily_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-ratedaily_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-derivationsdaily_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-maxdaily_vo2_max
Type d'enregistrement : "Tous les jours"
Appareils compatibles
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Distance
distancedistance
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Électrocardiogramme (ECG)
electrocardiogramelectrocardiogram
Type d'enregistrement : session
Appareils compatibles
|
list | .ecg.readonly |
Exercice
exerciseexercise
Type d'enregistrement : session
Appareils compatibles
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Étages
floorsfloors
Type d'enregistrement : Intervalle
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Nourriture
|
list, get | .nutrition.readonly.nutrition.writeonly |
Unité de mesure des aliments
food-measurement-unitfood_measurement_unit
Type d'enregistrement : Aliment
Appareils compatibles
|
list, get | .nutrition.readonly.nutrition.writeonly |
Fréquence cardiaque
heart-rateheart_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-variabilityheart_rate_variability
Type d'enregistrement : Exemple
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Hauteur
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Journal d'hydratation
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Notification de rythme irrégulier
irregular-rhythm-notificationirregular_rhythm_notification
Type d'enregistrement : session
|
list | .irn.readonly |
Période menstruelle
menstrual-periodmenstrual_period
Type d'enregistrement : Intervalle
|
create, update, batchDelete | .reproductive_health.writeonly |
Humeurs
moodsmoods
Type d'enregistrement : Exemple
|
create, update, batchDelete | .mindfulness.writeonly |
Journal de nutrition
nutrition-lognutrition_log
Type d'enregistrement : Exemple
Appareils compatibles
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Test d'ovulation
ovulation-testovulation_test
Type d'enregistrement : Exemple
|
create, update, batchDelete | .reproductive_health.writeonly |
Saturation en oxygène
oxygen-saturationoxygen_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-summaryrespiratory_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-maxrun_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-periodsedentary_period
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Sommeil
sleepsleep
Type d'enregistrement : session
Appareils compatibles
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
Étapes
stepssteps
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-dataswim_lengths_data
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Symptômes
symptomssymptoms
Type d'enregistrement : Exemple
|
create, update, batchDelete | .logged_symptoms.writeonly |
Temps passé dans la zone de fréquence cardiaque
time-in-heart-rate-zonetime_in_heart_rate_zone
Type d'enregistrement : Intervalle
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Total des calories
total-caloriestotal_calories
Type d'enregistrement : Intervalle
Appareils compatibles
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
VO2 max
vo2-maxvo2_max
Type d'enregistrement : Exemple
Appareils compatibles
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Poids
weightweight
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-minutesettotal-calories. - Une période de requête maximale de 90 jours pour tous les autres types de données.
- Une plage de requête maximale de 14 jours pour
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 utilisernextPageTokenpour 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
exerciseetsleep, 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
rollUpetdailyRollUp), 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-minutesettotal-calories. - Une plage maximale de 90 jours pour tous les autres types de données cumulées.
- Une plage maximale de 14 jours pour
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 :
- 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.
- 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.
- 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.