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 d'eux.
Champs de type de données
Le tableau des types de données de l'API Google Health comprend plusieurs colonnes de champs pour vous aider à comprendre la représentation et les exigences de chaque type de données. Ces colonnes sont les suivantes :
| Champ | Description |
|---|---|
dataType |
Identifiant séparé par des traits d'union (par exemple, active-minutes) utilisé dans les URL de point de terminaison. |
Paramètre filter |
Identifiant séparé par des traits de soulignement (par exemple, active_minutes) utilisé comme valeur pour le paramètre de filtre dataType dans les requêtes de cumul et de cumul quotidien. |
| Type d'enregistrement | Indique la structure et le format des données enregistrées. En arrière-plan, cela correspond à la représentation des ressources des points de données. Les valeurs possibles sont :
|
| Opérations disponibles | Répertorie les méthodes d'API compatibles avec le type de données (par exemple, list, create et rollUp). |
| Scope (Portée) | Le ou les champs d'application OAuth requis pour accéder au type de données. |
| Compatibilité avec les webhooks | Indique que le type de données accepte les notifications en temps réel à l'aide de webhooks lorsque de nouvelles données sont synchronisées. |
| Compatibilité avec les vrais zéros | Indique que le type de données accepte l'enregistrement de valeurs nulles explicites pour différencier une valeur nulle active (par exemple, zéro minute active) de données manquantes ou non enregistrées. |
| Résolution de stockage | Intervalle d'enregistrement ou d'échantillonnage minimal auquel les points de données sont stockés (par exemple, une minute pour steps). Pour les cumuls, cela représente la valeur windowSize minimale recommandée pour garantir une agrégation uniformément répartie sans artefacts de données de sous-intervalle. |
| Appareils compatibles | Liste extensible d'appareils physiques pouvant enregistrer et synchroniser ce type de données avec l'API Google Health (à l'aide de l'app Fitbit). |
| Type de données | Opérations disponibles |
Champ d'application |
|---|---|---|
|
Énergie active dépensée
dataType :
active-energy-burnedparamètre de filtre : active_energy_burned
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Minutes actives
dataType :
active-minutesparamètre de filtre : active_minutes
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Minutes en zone active
dataType :
active-zone-minutesparamètre de filtre : active_zone_minutes
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Niveau d'activité
dataType :
activity-levelparamètre de filtre : activity_level
Type d'enregistrement : Intervalle
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Altitude
dataType :
altitudeparamètre de filtre : altitude
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Glycémie
dataType :
blood-glucoseparamètre de filtre : blood_glucose
Type d'enregistrement : Exemple
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Masse grasse
dataType :
body-fatparamètre de filtre : 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 dans la zone de fréquence cardiaque
dataType :
calories-in-heart-rate-zoneparamètre de filtre : calories_in_heart_rate_zone
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Température corporelle centrale
dataType :
core-body-temperatureparamètre de filtre : 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
dataType :
daily-heart-rate-variabilityparamètre de filtre : daily_heart_rate_variability
Type d'enregistrement : quotidien
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Zones de fréquence cardiaque quotidiennes
dataType :
daily-heart-rate-zonesparamètre de filtre : daily_heart_rate_zones
Type d'enregistrement : quotidien
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Saturation en oxygène quotidienne
dataType :
daily-oxygen-saturationparamètre de filtre : daily_oxygen_saturation
Type d'enregistrement : quotidien
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Fréquence respiratoire quotidienne
dataType :
daily-respiratory-rateparamètre de filtre : daily_respiratory_rate
Type d'enregistrement : quotidien
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Fréquence cardiaque au repos quotidienne
dataType :
daily-resting-heart-rateparamètre de filtre : daily_resting_heart_rate
Type d'enregistrement : quotidien
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Écarts quotidiens de température pendant le sommeil
dataType :
daily-sleep-temperature-derivationsparamètre de filtre : daily_sleep_temperature_derivations
Type d'enregistrement : quotidien
Compatibilité avec les webhooks
Guide sur les indicateurs de santé
Guide sur le sommeil
Guide sur la température cutanée
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
VO2 max quotidienne
dataType :
daily-vo2-maxparamètre de filtre : daily_vo2_max
Type d'enregistrement : quotidien
Appareils compatibles
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Distance
dataType :
distanceparamètre de filtre : distance
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Électrocardiogramme (ECG)
dataType :
electrocardiogramparamètre de filtre : electrocardiogram
Type d'enregistrement : Session
Appareils compatibles
|
list | .ecg.readonly |
|
Exercice
dataType :
exerciseparamètre de filtre : exercise
Type d'enregistrement : Session
Appareils compatibles
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Étages
dataType :
floorsparamètre de filtre : floors
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Nourriture
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Unité de mesure des aliments
dataType :
food-measurement-unitparamètre de filtre : food_measurement_unit
Type d'enregistrement : Alimentation
Appareils compatibles
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Fréquence cardiaque
dataType :
heart-rateparamètre de filtre : heart_rate
Type d'enregistrement : Exemple
Résolution de stockage : 1 seconde
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Variabilité de la fréquence cardiaque
dataType :
heart-rate-variabilityparamètre de filtre : heart_rate_variability
Type d'enregistrement : Exemple
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Hauteur
dataType :
heightparamètre de filtre : height
Type d'enregistrement : Exemple
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Journal d'hydratation
dataType :
hydration-logparamètre de filtre : hydration_log
Type d'enregistrement : Session
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Notification de rythme irrégulier
dataType :
irregular-rhythm-notificationparamètre de filtre : irregular_rhythm_notification
Type d'enregistrement : Session
|
list | .irn.readonly |
|
Menstrual Period
dataType :
menstrual-periodparamètre de filtre : menstrual_period
Type d'enregistrement : Intervalle
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Moods
dataType :
moodsparamètre de filtre : moods
Type d'enregistrement : Exemple
|
create, update, batchDelete | .mindfulness.writeonly |
|
Journal de nutrition
dataType :
nutrition-logparamètre de filtre : nutrition_log
Type d'enregistrement : Session
Appareils compatibles
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Test d'ovulation
dataType :
ovulation-testparamètre de filtre : ovulation_test
Type d'enregistrement : Exemple
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Saturation en oxygène
dataType :
oxygen-saturationparamètre de filtre : oxygen_saturation
Type d'enregistrement : Exemple
Résolution de stockage : 1 minute
Appareils compatibles
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Résumé de la fréquence respiratoire pendant le sommeil
dataType :
respiratory-rate-sleep-summaryparamètre de filtre : 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
dataType :
run-vo2-maxparamètre de filtre : 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
dataType :
sedentary-periodparamètre de filtre : sedentary_period
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Capteurs de température cutanée
v4beta
dataType :
skin-temperature-sensorsparamètre de filtre : skin_temperature_sensors
Type d'enregistrement : Exemple
Appareils compatibles |
list | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Sommeil
dataType :
sleepparamètre de filtre : sleep
Type d'enregistrement : Session
Appareils compatibles
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
|
Étapes
dataType :
stepsparamètre de filtre : steps
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Données sur les longueurs de nage
dataType :
swim-lengths-dataparamètre de filtre : swim_lengths_data
Type d'enregistrement : Intervalle
Appareils compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Symptômes
dataType :
symptomsparamètre de filtre : symptoms
Type d'enregistrement : Exemple
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Temps dans la zone de fréquence cardiaque
dataType :
time-in-heart-rate-zoneparamètre de filtre : time_in_heart_rate_zone
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Total des calories
dataType :
total-caloriesparamètre de filtre : total_calories
Type d'enregistrement : Intervalle
Résolution de stockage : 1 minute
Appareils compatibles
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
VO2 max
dataType :
vo2-maxparamètre de filtre : vo2_max
Type d'enregistrement : Exemple
Appareils compatibles
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Poids
dataType :
weightparamètre de filtre : 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 rollups ou des rollups quotidiens à partir de l'API, tenez compte des contraintes suivantes :
- Exigences de filtrage : 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 plage de requêtes : les points de terminaison d'agrégation de cumul et de cumul quotidien appliquent des limites de plage de requêtes maximales en fonction du type de données :
- Une plage de requêtes maximale de 14 jours pour
calories-in-heart-rate-zone,heart-rate,active-minutesettotal-calories. - Une plage de requêtes maximale de 90 jours pour tous les autres types de données.
- Une plage de requêtes maximale de 14 jours pour
- Taille de la fenêtre de cumul : lors de l'appel du point de terminaison
rollUp, la duréewindowSizedoit être d'au moins une seconde ("1s"). Les durées inférieures à une seconde sont rejetées avecINVALID_ARGUMENT. En outre, choisissez unwindowSizesupérieur ou égal à la résolution de stockage sous-jacente du type de données (par exemple,"60s"pour les types de données à intervalle d'une minute commestepsetdistance) pour éviter une distribution inégale entre les sous-intervalles. Pour en savoir plus, consultez Fenêtre de cumul et résolution de stockage.
Types de données "Daily" et "Interval"
Pour certaines métriques physiologiques, telles que la variabilité de la fréquence cardiaque (VFC) ou la saturation en oxygène (SpO2), l'API Google Health fournit deux types de données distincts : une version quotidienne et une version par intervalle. Il est essentiel de comprendre la différence entre ces deux types de métriques pour choisir celle qui convient à votre cas d'utilisation :
Quotidien : un seul résumé pré-agrégé pour toute la journée. Utilisez cette option pour les tendances générales et les tableaux de bord quotidiens afin de réduire les coûts de traitement.
Intervalle : mesures précises et haute résolution prises tout au long de la journée. Utilisez cette option pour représenter graphiquement les fluctuations intrajournalières ou effectuer une analyse approfondie, heure par heure.
Disponibilité des données
Les données de l'utilisateur ne sont mises à jour qu'après la synchronisation de son moniteur d'activité physique ou la saisie manuelle de nouvelles données dans l'application Google Health. L'appareil Fitbit et l'application Google Health peuvent se synchroniser automatiquement toutes les 15 minutes lorsque l'application Google Health est ouverte sur l'appareil mobile, que les deux appareils disposent d'une connexion de données active et qu'ils se trouvent à portée du Bluetooth. Si l'utilisateur suit son activité à l'aide de 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 de santé sur de longues périodes. Vous pouvez interroger les données d'un utilisateur aussi loin qu'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 reste régie par les limites de débit 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 renvoie 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. - Tailles de page variables : les limites de plafonnement dépendent du point de terminaison et du type de données. Pour la plupart des types de données, la taille de page est limitée à 10 000 éléments au maximum.
Toutefois, pour certains types de données tels que
exerciseetsleep, la taille de page par défaut et maximale est limitée à 25. Par exemple, si un client demande toutes les données sur le sommeil des 10 dernières années, l'API ne renverra que 25 périodes de sommeil sur la première page. - Restrictions concernant la période de cumul : pour les points de terminaison de cumul et d'agrégation de 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 période maximale de 90 jours pour tous les autres types de données cumulées.
- Une plage maximale de 14 jours pour
Selon le volume de données historiques dont votre application a besoin, la récupération de l'ensemble de données complet nécessite de paginer les pages de manière 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 des données par phases (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 l'affichage de l'interface utilisateur principale.
Fragmentation des requêtes pour l'agrégation
- Étant donné que les points de terminaison de cumul et de cumul quotidien appliquent une limite maximale de plage de dates (14 ou 90 jours selon le type de données), vous devez diviser les requêtes d'agrégation historiques volumineuses 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 stables dans l'interface utilisateur.
Utiliser des roll-ups pré-agrégés
Restructurez les tableaux de bord de présentation et les graphiques de tendance 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 résiliente des erreurs (nouvelles tentatives intelligentes)
- Implémentez une gestion stricte de l'intervalle exponentiel entre les tentatives lorsque vous rencontrez des limites de débit (
429 Too Many Requests) et des délais d'expiration de la passerelle du serveur (504 Gateway Timeout). Ne réessayez jamais immédiatement d'envoyer des charges utiles volumineuses ayant échoué. Les nouvelles tentatives instantanées multiplient l'encombrement du backend et aggravent la dégradation du système.
Accès tiers
Les appareils Fitbit ne peuvent pas communiquer directement avec des applications ou services tiers. Ces appareils sont conçus pour communiquer et se synchroniser exclusivement avec l'application Google Health.
L'appareil synchronise automatiquement les données tout au long de la journée, chaque fois que l'application Google Health 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.
Filtrage de la qualité et de la validité des données
Pour fournir des indicateurs de santé fiables sans nécessiter de filtrage du bruit personnalisé côté client, l'API Google Health valide la télémétrie des capteurs et exclut les mesures non valides avant de renvoyer les réponses :
- Pour la saturation en oxygène du sang (
oxygen-saturation) à la minute, l'API ne renvoie que les mesures validées et supprime les minutes marquées comme non valides en raison d'un mouvement du bras, d'un ajustement lâche au poignet ou d'un score de confiance du capteur inférieur à 50%, ainsi que les trois minutes avant et après une mesure non valide et les périodes valides isolées de moins de quatre minutes. Par conséquent, la couverture à la minute peut être éparse et des lacunes sont attendues. Pour en savoir plus, consultez Filtrage de la SpO2 à la minute et validité des données.
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 que nous ne perdons 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é avec un système de mesure étendu : 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 d'autres systèmes de mesure.
Durée variable des journées
La gestion du temps par l'API Health donne la priorité à l'heure de l'utilisateur pour tenir compte des variations de la durée des journées dues à l'heure d'été ou aux 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 d'effectuer les opérations suivantes :
- Faites correspondre 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 contient 25 heures de données. Le passage à l'heure d'été entraîne une journée civile de 23 heures, au cours de laquelle l'heure revient à l'heure standard.
Voyages
Les voyages à travers les fuseaux horaires peuvent entraîner des variations encore plus importantes de la durée physique d'un même jour civil.
Utilisez le point de terminaison dailyRollUp pour rapprocher les différences de fuseau horaire. Il attribue automatiquement les données au jour calendaire où elles ont été enregistrées en fonction de l'heure locale de l'utilisateur, ce qui permet de "reconstituer" la journée malgré les changements de fuseau horaire. Pour en savoir plus et voir des exemples, consultez Agrégation sur plusieurs jours calendaires dans le guide "Agréger des données".