Google Health API-Datentypen

Die folgende Tabelle enthält die vollständige Liste der Datentypen mit mehreren Spalten, die Ihnen helfen, die Darstellung der einzelnen Typen in der Google Health API sowie den Bereich zu verstehen, in dem sie jeweils verfügbar sind.

Tabelle: Google Health API-Datentypen
Datentyp
  dataType
  filter-Parameter
Verfügbare
Vorgänge
Bereich
Verbrannte aktive Kalorien
active-energy-burned
active_energy_burned
Eintragstyp : Intervall
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Aktivitätsminuten
active-minutes
active_minutes
Eintragstyp : Intervall

Kompatible Geräte

  • 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
Aktivzonenminuten
active-zone-minutes
active_zone_minutes
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Aktivitätsniveau
activity-level
activity_level
Eintragstyp : Intervall
list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Flughöhe
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Blutzucker
blood-glucose
blood_glucose
Eintragstyp : Beispiel
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Körperfett
body-fat
body_fat
Eintragstyp : Beispiel

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Kalorien in Herzfrequenzzone
calories-in-heart-rate-zone
calories_in_heart_rate_zone
Eintragstyp : Intervall
Zusammenfassung, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Körpertemperatur
core-body-temperature
core_body_temperature
Eintragstyp : Beispiel
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Herzfrequenzvariabilität
daily-heart-rate-variability
daily_heart_rate_variability
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Herzfrequenzzonen
daily-heart-rate-zones
daily_heart_rate_zones
Eintragstyp : Täglich
list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Sauerstoffsättigung
daily-oxygen-saturation
daily_oxygen_saturation
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Atemfrequenz
daily-respiratory-rate
daily_respiratory_rate
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Ruheherzfrequenz
daily-resting-heart-rate
daily_resting_heart_rate
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche Ableitungen der Schlaftemperatur
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tägliche maximale Sauerstoffaufnahme
daily-vo2-max
daily_vo2_max
Eintragstyp : Täglich

Kompatible Geräte

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Entfernung
distance
distance
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Elektrokardiogramm (EKG)
electrocardiogram
electrocardiogram
Eintragstyp : Sitzung

Kompatible Geräte

list .ecg.readonly
Training
exercise
exercise
Eintragstyp : Sitzung

Kompatible Geräte

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Stockwerke
abgleichen, zusammenfassen, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Essen
food
food
Eintragstyp : Lebensmittel
list, get .nutrition.readonly
.nutrition.writeonly
Maßeinheit für Lebensmittel
food-measurement-unit
food_measurement_unit
Eintragstyp : Lebensmittel

Kompatible Geräte

list, get .nutrition.readonly
.nutrition.writeonly
Herzfrequenz
heart-rate
heart_rate
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Herzfrequenzvariabilität
heart-rate-variability
heart_rate_variability
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Höhe
height
height
Eintragstyp : Beispiel
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Flüssigkeitszufuhr-Protokoll
hydration-log
hydration_log
Eintragstyp : Sitzung
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Benachrichtigung über einen unregelmäßigen Herzrhythmus
irregular-rhythm-notification
irregular_rhythm_notification
Eintragstyp : Sitzung
list .irn.readonly
Menstruationszeitraum
menstrual-period
menstrual_period
Eintragstyp : Intervall
create, update, batchDelete .reproductive_health.writeonly
Stimmungen
moods
moods
Eintragstyp : Beispiel
create, update, batchDelete .mindfulness.writeonly
Ernährungsprotokoll
nutrition-log
nutrition_log
Eintragstyp : Beispiel

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Ovulationstest
ovulation-test
ovulation_test
Eintragstyp : Beispiel
create, update, batchDelete .reproductive_health.writeonly
Sauerstoffsättigung
oxygen-saturation
oxygen_saturation
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zusammenfassung der Atemfrequenz im Schlaf
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Maximale Sauerstoffaufnahme bei Lauf
run-vo2-max
run_vo2_max
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Inaktivitätszeitraum
sedentary-period
sedentary_period
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Schlaf
sleep
sleep
Eintragstyp : Sitzung

Kompatible Geräte

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Schritte
steps
steps
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Daten zu Bahnen
swim-lengths-data
swim_lengths_data
Eintragstyp : Intervall

Kompatible Geräte

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Symptome
symptoms
symptoms
Eintragstyp : Beispiel
create, update, batchDelete .logged_symptoms.writeonly
Dauer in Herzfrequenzzone
time-in-heart-rate-zone
time_in_heart_rate_zone
Eintragstyp : Intervall
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Kalorien insgesamt
total-calories
total_calories
Eintragstyp : Intervall

Kompatible Geräte

Zusammenfassung, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Maximale Sauerstoffaufnahme
vo2-max
vo2_max
Eintragstyp : Beispiel

Kompatible Geräte

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Gewicht
weight
weight
Eintragstyp : Beispiel

Kompatible Geräte

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Abfragebeschränkungen

Wenn Sie Datenpunkte, Roll-ups oder tägliche Roll-ups über die API abfragen, müssen Sie die folgenden Einschränkungen beachten:

  • Filteranforderungen:Für einige schreibgeschützte abgeleitete Datentypen, z. B. total-calories, ist ein Filter erforderlich, der eine Intervallstartzeit (mit physischer oder bürgerlicher Zeit) angibt.
  • Einschränkungen für Abfragebereiche:Für die Aggregationsendpunkte für Rollup und tägliche Rollups gelten je nach Datentyp maximale Einschränkungen für Abfragebereiche:
    • Der maximale Abfragezeitraum für calories-in-heart-rate-zone, heart-rate, active-minutes und total-calories beträgt 14 Tage.
    • Für alle anderen Datentypen gilt ein maximaler Abfragezeitraum von 90 Tagen.

Datenverfügbarkeit

Aktualisierungen der Nutzerdaten sind erst verfügbar, nachdem der Nutzer seinen Aktivitätstracker synchronisiert oder manuell neue Daten in die mobile Fitbit App oder die Fitbit Web-App eingegeben hat. Das Fitbit-Gerät und die mobile Fitbit App können alle 15 Minuten automatisch synchronisiert werden, wenn die Fitbit App auf dem Mobilgerät geöffnet ist und die beiden eine aktive Datenverbindung haben und sich in Bluetooth-Reichweite befinden. Wenn der Nutzer seine Aktivität mit MobileTrack aufzeichnet, wird MobileTrack stündlich synchronisiert, solange die App geöffnet ist.

Verlaufsdaten abfragen

Einer der Hauptvorteile der Google Health API ist die Möglichkeit, die Leistung eines Nutzers zu verfolgen und seine Vitalparameter über einen längeren Zeitraum zu überwachen. Sie können die Daten eines Nutzers abfragen, die bis zum Zeitpunkt der Aufzeichnung zurückreichen. Die API unterliegt keinen Einschränkungen hinsichtlich der Menge an Verlaufsdaten, die Ihre Anwendung nutzen kann.

Für das Abfragen von Verlaufsdaten gelten jedoch weiterhin die standardmäßigen Ratenbeschränkungen. Um die Systemstabilität zu gewährleisten und übermäßige Nutzlasten zu vermeiden, verwendet die Google Health API die automatische Paginierung mit endpunktspezifischen Seitengrößen. Beachten Sie die folgenden Grenzen und Verhaltensweisen:

  • Automatische Paginierung:Wenn Sie einen langen Zeitraum abfragen, gibt die API nur die erste Seite der Ergebnisse bis zur Obergrenze für die Seitengröße für diesen Endpunkt zurück, zusammen mit einem nextPageToken. Sie müssen nextPageToken verwenden, um nachfolgende Seiten anzufordern.
  • Variable Seitengrößen:Die Obergrenzen hängen vom Endpunkt und Datentyp ab. Für die meisten Datentypen ist die Seitengröße auf maximal 10.000 begrenzt. Bei bestimmten Datentypen wie exercise und sleep ist die Standard- und maximale Seitengröße jedoch auf 25 begrenzt. Wenn ein Client beispielsweise alle Schlafdaten der letzten zehn Jahre anfordert, gibt die API auf der ersten Seite trotzdem nur 25 Schlafsitzungen zurück.
  • Einschränkungen für den Rollup-Zeitraum:Für Endpunkte für das Zusammenfassen und Aggregieren von Daten (z. B. rollUp und dailyRollUp) sind Abfragezeiträume je nach Datentyp eingeschränkt:
    • Ein maximaler Zeitraum von 14 Tagen für calories-in-heart-rate-zone, heart-rate, active-minutes und total-calories.
    • Für alle anderen Rollup-Datentypen gilt ein maximaler Zeitraum von 90 Tagen.

Je nach Menge der Verlaufsdaten, die Ihre Anwendung benötigt, müssen Sie die Seiten sequenziell durchlaufen, um das gesamte Dataset abzurufen. Berücksichtigen Sie dies beim Entwerfen des Datensynchronisierungsprozesses Ihrer Anwendung.

Damit Sie optimale Leistung erzielen und API-Fehler vermeiden, sollten Sie beim Abfragen von Verlaufsdaten die folgenden Richtlinien beachten:

Phasensynchronisierung von Daten (aktive und selten genutzte Daten)

  • Erster „Hot“-Ladevorgang:Während der primären Ladesequenz werden nur die Daten der letzten 7–14 Tage abgerufen und gerendert. So sehen Nutzer Daten sofort, ohne auf zeitaufwendige Abfragen warten zu müssen.
  • Kalter Hintergrund-Load:Delegieren Sie das Abrufen älterer Verlaufsdaten an eine asynchrone Warteschlange mit niedrigerer Priorität oder einen Hintergrundprozess, nachdem die primäre Benutzeroberfläche gerendert wurde.

Abfrage-Chunking für die Aggregation

  • Da für Rollup- und tägliche Rollup-Endpunkte ein maximaler Zeitraum gilt (14 oder 90 Tage, je nach Datentyp), müssen Sie umfangreiche historische Aggregationsabfragen in kleinere, sequenzielle Intervalle innerhalb dieser Grenzwerte aufteilen.
  • Führen Sie diese untergeordneten Anfragen in Batches oder sequenziell aus, um die Parallelitätslimits einzuhalten und stetige Fortschrittsanzeigen in der Benutzeroberfläche zu ermöglichen.

Vorab aggregierte Roll-ups nutzen

Stellen Sie Übersichts-Dashboards und Trenddiagramme so um, dass sie vorab aggregierte Zusammenfassungsendpunkte wie DailyRollUpDataPoints verwenden. Dadurch wird der Rechenaufwand im Backend und die Netzwerkübertragungszeit zum Client drastisch reduziert.

Robuste Fehlerbehandlung (intelligente Wiederholungsversuche)

  • Implementieren Sie eine strikte Verarbeitung des exponentiellen Backoffs, wenn Ratenbeschränkungen (429 Too Many Requests) und Server-Gateway-Timeouts (504 Gateway Timeout) auftreten. Wiederholen Sie große, fehlgeschlagene Nutzlasten niemals sofort. Sofortige Wiederholungsversuche führen zu einer Überlastung des Backends und zu einer Verschlechterung des Systems.

Zugriff durch Drittanbieter-Apps

Fitbit-Geräte können nicht direkt mit Drittanbieter-Apps oder ‑Diensten kommunizieren. Diese Geräte sind so konzipiert, dass sie ausschließlich mit der mobilen Fitbit App kommunizieren und sich mit ihr synchronisieren.

Das Gerät synchronisiert Daten im Laufe des Tages automatisch, wenn die Fitbit App geöffnet ist, oder alle 15 Minuten, wenn Bluetooth aktiviert ist und die App im Hintergrund ausgeführt wird. Nach Abschluss dieses Synchronisierungsvorgangs sind die Daten über die Google Health API für Drittanbieterdienste verfügbar.

Entfernungsstandards

Trainingsdistanzen wie elevationGainMillimeters werden aus folgenden Gründen in Millimetern als Standardeinheit gemessen:

  1. Datenpräzision beibehalten: Der wichtigste Grund für die Verwendung von Millimetern ist, dass wir keine Präzision bei den Daten verlieren, die wir lesen und bereitstellen. Durch die Verwendung einer feingliedrigen Einheit wie Millimeter können wir Messungen mit hoher Genauigkeit darstellen.
  2. Standardisierung: Millimeter sind die standardisierte Einheit, die in unseren Diensten verwendet wird. Diese Konsistenz trägt dazu bei, dass Entwickler, die mit verschiedenen Teilen der API interagieren, eine einheitliche Erfahrung machen.
  3. Unterstützung für verschiedene Messsysteme: Durch die Verwendung einer Basiseinheit wie Millimeter können Entwickler problemlos in jede andere Einheit umrechnen, unabhängig davon, ob sie mit metrischen, imperialen oder anderen Messsystemen arbeiten.

Variable Tageslängen

Bei der Zeitverarbeitung durch die Health API wird die Zeit des Nutzers priorisiert, um variable Tageslängen aufgrund von Sommerzeit oder Reisen zu berücksichtigen. Jeder Datenpunkt wird mit einem physischen UTC-Zeitstempel und dem UTC-Offset gespeichert, der zum Zeitpunkt des Ereignisses aktiv war. Dadurch kann das System:

  • Ordnen Sie das Ereignis einem genauen physischen Moment zu.
  • Korrigieren Sie die Zeit für die Aggregation entsprechend dem lokalen Kontext des Nutzers.

Sommerzeit

Bei der Umstellung auf die Sommerzeit wird eine Stunde „zurückgestellt“, sodass der Tag 25 Stunden hat. Die Zusammenfassung für dieses Datum enthält also 25 Stunden Daten. Bei einer Zeitumstellung auf Sommerzeit dauert der bürgerliche Tag nur 23 Stunden, da die Zeit auf die Standardzeit zurückgestellt wird.

Reisen

Reisen durch Zeitzonen können zu noch größeren Schwankungen der physischen Dauer eines einzelnen bürgerlichen Tages führen.

Verwenden Sie den Endpunkt dailyRollUp, um Zeitzonenunterschiede abzugleichen. Die Daten werden automatisch dem Kalendertag zugeordnet, an dem sie aufgezeichnet wurden, und zwar entsprechend der Ortszeit des Nutzers. So wird der Tag trotz Zeitzonenverschiebungen effektiv „zusammengefügt“.