La tabella seguente contiene l'elenco completo dei tipi di dati, con diverse colonne per aiutarti a comprendere la rappresentazione di ciascun tipo nell'API Google Health, nonché l'ambito in cui è disponibile ciascun tipo.
Tipo di datidataType
Parametro filter |
Operazioni disponibili |
Ambito |
|---|---|---|
|
Energia attiva bruciata
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minuti attivi
active-minutesactive_minutes
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minuti in zona attiva
active-zone-minutesactive_zone_minutes
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Livello di attività
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Altitudine
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Glicemia
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Grasso corporeo
body-fatbody_fat
Tipo di record: Esempio
Dispositivi compatibili
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Calorie nella zona battito cardiaco
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Temperatura corporea interna
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Variabilità del battito cardiaco giornaliera
daily-heart-rate-variabilitydaily_heart_rate_variability
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Zone battito cardiaco giornaliere
daily-heart-rate-zonesdaily_heart_rate_zones
Tipo di record: giornaliero
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Saturazione di ossigeno giornaliera
daily-oxygen-saturationdaily_oxygen_saturation
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Frequenza respiratoria giornaliera
daily-respiratory-ratedaily_respiratory_rate
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Battito cardiaco a riposo giornaliero
daily-resting-heart-ratedaily_resting_heart_rate
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Derivazioni della temperatura del sonno giornaliera
daily-sleep-temperature-derivationsdaily_sleep_temperature_derivations
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
VO2 max giornaliero
daily-vo2-maxdaily_vo2_max
Tipo di record: giornaliero
Dispositivi compatibili
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Distanza
distancedistance
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Elettrocardiogramma (ECG)
electrocardiogramelectrocardiogram
Tipo di record: Sessione
Dispositivi compatibili
|
list | .ecg.readonly |
Allenamento
exerciseexercise
Tipo di record: Sessione
Dispositivi compatibili
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Piani
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Cibo
|
list, get | .nutrition.readonly.nutrition.writeonly |
Unità di misura del cibo
food-measurement-unitfood_measurement_unit
Tipo di record: Alimento
Dispositivi compatibili
|
list, get | .nutrition.readonly.nutrition.writeonly |
Battito cardiaco
heart-rateheart_rate
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Variabilità del battito cardiaco
heart-rate-variabilityheart_rate_variability
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Altezza
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Diario dell'idratazione
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Notifica di ritmo irregolare
irregular-rhythm-notificationirregular_rhythm_notification
Tipo di record: Sessione
|
list | .irn.readonly |
Ciclo mestruale
menstrual-periodmenstrual_period
Tipo di record: Intervallo
|
create, update, batchDelete | .reproductive_health.writeonly |
Stati d'animo
moodsmoods
Tipo di record: Esempio
|
create, update, batchDelete | .mindfulness.writeonly |
Diario alimentare
nutrition-lognutrition_log
Tipo di record: Esempio
Dispositivi compatibili
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Test di ovulazione
ovulation-testovulation_test
Tipo di record: Esempio
|
create, update, batchDelete | .reproductive_health.writeonly |
Saturazione di ossigeno
oxygen-saturationoxygen_saturation
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Riepilogo del sonno della frequenza respiratoria
respiratory-rate-sleep-summaryrespiratory_rate_sleep_summary
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
VO2 max corsa
run-vo2-maxrun_vo2_max
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Periodo sedentario
sedentary-periodsedentary_period
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Sonno
sleepsleep
Tipo di record: Sessione
Dispositivi compatibili
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
Passaggi
stepssteps
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Dati sulle vasche
swim-lengths-dataswim_lengths_data
Tipo di record: Intervallo
Dispositivi compatibili
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Sintomi
symptomssymptoms
Tipo di record: Esempio
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Tempo nella zona battito cardiaco
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Calorie totali
total-caloriestotal_calories
Tipo di record: Intervallo
Dispositivi compatibili
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
VO2 max
vo2-maxvo2_max
Tipo di record: Esempio
Dispositivi compatibili
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Peso
weightweight
Tipo di record: Esempio
Dispositivi compatibili
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Vincoli delle query
Quando esegui query su punti dati, rollup o rollup giornalieri dall'API, tieni presente i seguenti vincoli:
- Requisiti di filtro:alcuni tipi di dati derivati di sola lettura, come
total-calories, richiedono un filtro che specifichi un'ora di inizio dell'intervallo (utilizzando l'ora fisica o civile). - Limiti dell'intervallo di query: gli endpoint di aggregazione di rollup e rollup giornalieri
applicano limiti massimi all'intervallo di query in base al tipo di dati:
- Un intervallo di query massimo di 14 giorni per
calories-in-heart-rate-zone,heart-rate,active-minutesetotal-calories. - Un intervallo di query massimo di 90 giorni per tutti gli altri tipi di dati.
- Un intervallo di query massimo di 14 giorni per
Disponibilità dei dati
Gli aggiornamenti ai dati dell'utente sono disponibili solo dopo la sincronizzazione del tracker di attività o l'inserimento manuale di nuovi dati nell'app mobile o nell'app web Fitbit. Il dispositivo Fitbit e l'app mobile Fitbit possono sincronizzarsi automaticamente ogni 15 minuti quando l'app Fitbit è aperta sul dispositivo mobile e i due dispositivi hanno una connessione dati attiva e si trovano nel raggio d'azione del Bluetooth. Se l'utente monitora l'attività utilizzando MobileTrack, la sincronizzazione di MobileTrack avviene ogni ora finché l'app è aperta.
Esecuzione di query sui dati storici
Uno dei vantaggi principali dell'API Google Health è la possibilità di monitorare le prestazioni di un utente e i suoi parametri vitali per lunghi periodi di tempo. Puoi eseguire query sui dati di un utente a partire dal momento in cui sono stati registrati. L'API non impone limitazioni o restrizioni alla quantità di dati storici che la tua applicazione può utilizzare.
Tuttavia, l'esecuzione di query sui dati storici è ancora regolata dai limiti di frequenza standard. Per gestire la stabilità del sistema e prevenire payload eccessivi, l'API Google Health utilizza la paginazione automatica con dimensioni di pagina specifiche per endpoint. Tieni presente i seguenti limiti e comportamenti:
- Impaginazione automatica:se esegui una query su un intervallo di dati lungo, l'API restituirà solo la prima pagina di risultati fino al limite di dimensioni della pagina per l'endpoint, insieme a un
nextPageToken. Devi utilizzarenextPageTokenper richiedere le pagine successive. - Dimensioni delle pagine variabili:i limiti di capping dipendono dall'endpoint
e dal tipo di dati. Per la maggior parte dei tipi di dati, le dimensioni delle pagine sono limitate a un massimo di 10.000.
Tuttavia, per alcuni tipi di dati come
exerciseesleep, la dimensione predefinita e massima della pagina è limitata a 25. Ad esempio, se un client richiede tutti i dati relativi al sonno degli ultimi 10 anni, l'API restituirà comunque solo 25 sessioni di sonno nella prima pagina. - Limitazioni dell'intervallo di date di rollup: per gli endpoint di rollup e aggregazione dei dati
(come
rollUpedailyRollUp), gli intervalli di date delle query sono limitati in base al tipo di dati:- Un intervallo massimo di 14 giorni per
calories-in-heart-rate-zone,heart-rate,active-minutesetotal-calories. - Un intervallo massimo di 90 giorni per tutti gli altri tipi di dati di rollup.
- Un intervallo massimo di 14 giorni per
A seconda del volume di dati storici di cui ha bisogno la tua applicazione, il recupero dell'intero set di dati richiederà la paginazione sequenziale delle pagine. Tienilo presente quando progetti la procedura di sincronizzazione dei dati della tua applicazione.
Per garantire un rendimento ottimale ed evitare errori dell'API, segui queste linee guida quando interroghi i dati storici:
Sincronizzazione dei dati in fasi (caricamento hot e caricamento completo)
- Caricamento "rapido" iniziale:recupera e visualizza solo i dati più recenti (7-14 giorni) durante la sequenza di caricamento principale. In questo modo, gli utenti vedono immediatamente i dati senza dover attendere query di lunga durata.
- Caricamento "a freddo" in background:delega il recupero dei dati storici meno recenti a una coda asincrona a priorità inferiore o a un processo in background dopo il rendering della UI principale.
Chunking delle query per l'aggregazione
- Poiché gli endpoint di rollup e rollup giornaliero impongono un limite massimo all'intervallo di date (14 o 90 giorni a seconda del tipo di dati), devi suddividere le query di aggregazione cronologica di grandi dimensioni in intervalli sequenziali più piccoli entro questi limiti.
- Raggruppa o sequenzia queste sottoquery in modo sicuro per rispettare i limiti di concorrenza e mantenere indicatori di avanzamento dell'interfaccia utente costanti.
Sfruttare i roll-up pre-aggregati
Ristruttura le dashboard di panoramica e i grafici delle tendenze in modo che utilizzino endpoint di riepilogo preaggregati (ad esempio DailyRollUpDataPoints). In questo modo, si ridurranno drasticamente il sovraccarico di calcolo sul backend e il tempo di trasferimento di rete al client.
Gestione degli errori resiliente (nuovi tentativi intelligenti)
- Implementa una gestione rigorosa del backoff esponenziale quando si verificano limiti di frequenza (
429 Too Many Requests) e timeout del gateway del server (504 Gateway Timeout). Non riprovare immediatamente a inviare payload di grandi dimensioni non riusciti. I tentativi immediati moltiplicano la congestione del backend e peggiorano il sistema.
Accesso di terze parti
I dispositivi Fitbit non possono comunicare direttamente con applicazioni o servizi di terze parti. Questi dispositivi sono progettati per comunicare e sincronizzarsi esclusivamente con l'app mobile Fitbit.
Il dispositivo sincronizza automaticamente i dati durante il giorno, ogni volta che l'app Fitbit è aperta o ogni 15 minuti se il Bluetooth è attivo e l'app è in esecuzione in background. Una volta completata questa procedura di sincronizzazione, i dati sono disponibili per i servizi di terze parti tramite l'API Google Health.
Standard di distanza
Le distanze degli esercizi, ad esempio elevationGainMillimeters, sono misurate in
millimetri come unità standard per i seguenti motivi:
- Mantenimento della precisione dei dati: il motivo più importante per utilizzare i millimetri è garantire di non perdere precisione nei dati che leggiamo e forniamo. L'utilizzo di un'unità di misura precisa come i millimetri ci consente di rappresentare le misurazioni con elevata precisione.
- Standardizzazione: i millimetri sono l'unità standardizzata progettata per tutti i nostri servizi. Questa coerenza contribuisce a garantire un'esperienza uniforme per gli sviluppatori che interagiscono con diverse parti dell'API.
- Ampio supporto del sistema di misurazione: l'utilizzo di un'unità di base come i millimetri consente agli sviluppatori di eseguire facilmente la conversione in qualsiasi altra unità scelta, indipendentemente dal fatto che utilizzino sistemi di misurazione metrici, imperiali o di altro tipo.
Durata variabile dei giorni
La gestione dell'ora da parte dell'API Health dà la priorità all'ora dell'utente per tenere conto della durata variabile del giorno causata dall'ora legale o dai viaggi. Ogni punto dati viene memorizzato con un timestamp UTC fisico e l'offset UTC attivo al momento dell'evento. In questo modo, il sistema può:
- Mappa l'evento in un istante fisico preciso.
- Correggi l'ora in base al contesto locale dell'utente per l'aggregazione.
Ora legale
Quando viene applicata l'ora legale, il "ritorno" all'ora solare comporta un giorno civile di 25 ore e il rollup per quella data conterrà 25 ore di dati. L'ora legale comporta un giorno civile di 23 ore in cui l'ora torna all'ora solare.
Viaggiare
I viaggi attraverso i fusi orari possono causare variazioni ancora più significative nella durata fisica di un singolo giorno civile.
Utilizza l'endpoint dailyRollUp per riconciliare le differenze di fuso orario. Attribuisce
automaticamente i dati al giorno di calendario in cui sono stati registrati
in base all'ora locale dell'utente, "unendo" di fatto la giornata
nonostante i cambiamenti di fuso orario.