Tipi di dati dell'API Google Health

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.

Tabella: tipi di dati dell'API Google Health
Tipo di dati
  dataType Parametro
  filter
Operazioni
disponibili
Ambito
Energia attiva bruciata
active-energy-burned
active_energy_burned
Tipo di record: Intervallo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minuti attivi
active-minutes
active_minutes
Tipo di record: Intervallo

Dispositivi compatibili

  • 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
Minuti in zona attiva
active-zone-minutes
active_zone_minutes
Tipo di record: Intervallo

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Livello di attività
activity-level
activity_level
Tipo di record: Intervallo
list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitudine
altitude
altitude
Tipo di record: Intervallo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glicemia
blood-glucose
blood_glucose
Tipo di record: Esempio
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Grasso corporeo
body-fat
body_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
calories-in-heart-rate-zone
calories_in_heart_rate_zone
Tipo di record: Intervallo
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Temperatura corporea interna
core-body-temperature
core_body_temperature
Tipo di record: Esempio
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilità del battito cardiaco giornaliera
daily-heart-rate-variability
daily_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-zones
daily_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-saturation
daily_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-rate
daily_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-rate
daily_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-derivations
daily_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-max
daily_vo2_max
Tipo di record: giornaliero

Dispositivi compatibili

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distanza
distance
distance
Tipo di record: Intervallo

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Elettrocardiogramma (ECG)
electrocardiogram
electrocardiogram
Tipo di record: Sessione

Dispositivi compatibili

list .ecg.readonly
Allenamento
exercise
exercise
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
food
food
Tipo di record: Alimento
list, get .nutrition.readonly
.nutrition.writeonly
Unità di misura del cibo
food-measurement-unit
food_measurement_unit
Tipo di record: Alimento

Dispositivi compatibili

list, get .nutrition.readonly
.nutrition.writeonly
Battito cardiaco
heart-rate
heart_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-variability
heart_rate_variability
Tipo di record: Esempio

Dispositivi compatibili

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Altezza
height
height
Tipo di record: Esempio
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Diario dell'idratazione
hydration-log
hydration_log
Tipo di record: Sessione
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notifica di ritmo irregolare
irregular-rhythm-notification
irregular_rhythm_notification
Tipo di record: Sessione
list .irn.readonly
Ciclo mestruale
menstrual-period
menstrual_period
Tipo di record: Intervallo
create, update, batchDelete .reproductive_health.writeonly
Stati d'animo
moods
moods
Tipo di record: Esempio
create, update, batchDelete .mindfulness.writeonly
Diario alimentare
nutrition-log
nutrition_log
Tipo di record: Esempio

Dispositivi compatibili

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Test di ovulazione
ovulation-test
ovulation_test
Tipo di record: Esempio
create, update, batchDelete .reproductive_health.writeonly
Saturazione di ossigeno
oxygen-saturation
oxygen_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-summary
respiratory_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-max
run_vo2_max
Tipo di record: Esempio

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Periodo sedentario
sedentary-period
sedentary_period
Tipo di record: Intervallo

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sonno
sleep
sleep
Tipo di record: Sessione

Dispositivi compatibili

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Passaggi
steps
steps
Tipo di record: Intervallo

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Dati sulle vasche
swim-lengths-data
swim_lengths_data
Tipo di record: Intervallo

Dispositivi compatibili

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sintomi
symptoms
symptoms
Tipo di record: Esempio
create, update, batchDelete .logged_symptoms.writeonly
Tempo nella zona battito cardiaco
time-in-heart-rate-zone
time_in_heart_rate_zone
Tipo di record: Intervallo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Calorie totali
total-calories
total_calories
Tipo di record: Intervallo

Dispositivi compatibili

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 max
vo2-max
vo2_max
Tipo di record: Esempio

Dispositivi compatibili

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Peso
weight
weight
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-minutes e total-calories.
    • Un intervallo di query massimo di 90 giorni per tutti gli altri tipi di dati.

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 utilizzare nextPageToken per 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 exercise e sleep, 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 rollUp e dailyRollUp), 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-minutes e total-calories.
    • Un intervallo massimo di 90 giorni per tutti gli altri tipi di dati di rollup.

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:

  1. 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.
  2. 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.
  3. 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.