Jenis data Google Health API

Tabel berikut berisi daftar lengkap jenis data, dengan beberapa kolom untuk membantu Anda memahami representasi setiap jenis di Google Health API, serta cakupan yang tersedia untuk setiap jenis.

Kolom jenis data

Tabel jenis data Google Health API mencakup beberapa kolom bidang untuk membantu Anda memahami representasi dan persyaratan setiap jenis data. Kolom tersebut adalah sebagai berikut:

Tabel: Deskripsi kolom jenis data Google Health API
Kolom Deskripsi
dataType ID yang dipisahkan dengan tanda hubung (misalnya, active-minutes) yang digunakan dalam URL endpoint.
Parameter filter ID yang dipisahkan dengan garis bawah (misalnya, active_minutes) digunakan sebagai nilai untuk parameter filter dataType dalam permintaan penggabungan harian dan penggabungan.
Jenis data

Menunjukkan struktur dan format data yang direkam. Di balik layar, hal ini selaras dengan representasi resource titik data. Kemungkinan nilainya adalah:

  • Interval (Mewakili pengukuran yang direkam selama durasi.)
  • Sample (Mewakili pengukuran instan.)
  • Daily (Mewakili pengukuran yang digabungkan atau dicatat setiap hari.)
  • Session (Mewakili blok rekaman berkelanjutan, seperti latihan fisik atau sesi elektrokardiogram (EKG).)
  • Food (Mewakili item makanan atau entity data terkait nutrisi.)
Operasi yang tersedia Mencantumkan metode API yang didukung untuk jenis data (seperti list, create, dan rollUp).
Cakupan Cakupan OAuth yang diperlukan untuk mengakses jenis data.
Dukungan webhook Menunjukkan bahwa jenis data mendukung notifikasi real-time menggunakan webhook saat data baru disinkronkan.
Dukungan nol sebenarnya Menunjukkan bahwa jenis data mendukung perekaman nilai nol eksplisit untuk membedakan antara nilai nol aktif (seperti nol menit aktif) dengan data yang tidak ada atau tidak direkam.
Resolusi penyimpanan Interval perekaman atau pengambilan sampel minimum saat titik data disimpan (misalnya, 1 menit untuk steps). Untuk rollup, ini menunjukkan windowSize minimum yang direkomendasikan untuk memastikan agregasi yang didistribusikan secara merata tanpa artefak data sub-interval.
Perangkat yang kompatibel Daftar perangkat fisik yang dapat diperluas yang dapat merekam dan menyinkronkan jenis data ini ke Google Health API (menggunakan aplikasi Fitbit).

Tabel: Jenis data Google Health API
Jenis data Operasi
yang tersedia
Cakupan
Energi Aktif yang Terbakar
dataType: active-energy-burned
parameter filter: active_energy_burned
Jenis data: Interval
Resolusi penyimpanan: 1 menit
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Menit Aktif
dataType: active-minutes
parameter filter: active_minutes
Jenis data: Interval
Resolusi penyimpanan: 1 menit

Perangkat yang kompatibel

  • 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
Menit Zona Aktif
dataType: active-zone-minutes
parameter filter: active_zone_minutes
Jenis data: Interval
Resolusi penyimpanan: 1 menit

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Tingkat Aktivitas
dataType: activity-level
parameter filter: activity_level
Jenis data: Interval
daftar, sesuaikan .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Ketinggian
dataType: altitude
filter parameter: altitude
Jenis data: Interval
Resolusi penyimpanan: 1 menit
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glukosa Darah
dataType: blood-glucose
parameter filter: blood_glucose
Jenis data: Contoh
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Lemak Tubuh
dataType: body-fat
parameter filter: body_fat
Jenis data: Contoh

Perangkat yang kompatibel

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Kalori dalam Zona Detak Jantung
dataType: calories-in-heart-rate-zone
parameter filter: calories_in_heart_rate_zone
Jenis data: Interval
Resolusi penyimpanan: 1 menit
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Suhu Tubuh Inti
dataType: core-body-temperature
parameter filter: core_body_temperature
Jenis data: Contoh
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilitas Detak Jantung Harian
dataType: daily-heart-rate-variability
parameter filter: daily_heart_rate_variability
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zona Detak Jantung Harian
dataType: daily-heart-rate-zones
parameter filter: daily_heart_rate_zones
Jenis data: Harian
daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturasi Oksigen Harian
dataType: daily-oxygen-saturation
parameter filter: daily_oxygen_saturation
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Laju Pernapasan Harian
dataType: daily-respiratory-rate
parameter filter: daily_respiratory_rate
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Detak Jantung saat Istirahat Harian
dataType: daily-resting-heart-rate
parameter filter: daily_resting_heart_rate
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Turunan Suhu Tidur Harian
dataType: daily-sleep-temperature-derivations
parameter filter: daily_sleep_temperature_derivations
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 Maks Harian
dataType: daily-vo2-max
parameter filter: daily_vo2_max
Jenis data: Harian

Perangkat yang kompatibel

daftar, sesuaikan .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Jarak
dataType: distance
filter parameter: distance
Jenis data: Interval
Resolusi penyimpanan: 1 menit

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Elektrokardiogram (EKG)
dataType: electrocardiogram
filter parameter: electrocardiogram
Jenis data: Sesi

Perangkat yang kompatibel

list .ecg.readonly
Latihan
dataType: exercise
filter parameter: exercise
Jenis data: Sesi

Perangkat yang kompatibel

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Lantai
dataType: floors
filter parameter: floors
Jenis data: Interval
Resolusi penyimpanan: 1 menit
reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Makanan
dataType: food
filter parameter: food
Jenis data: Makanan
list, get .nutrition.readonly
.nutrition.writeonly
Unit Pengukuran Makanan
dataType: food-measurement-unit
parameter filter: food_measurement_unit
Jenis data: Makanan

Perangkat yang kompatibel

list, get .nutrition.readonly
.nutrition.writeonly
Detak Jantung
dataType: heart-rate
parameter filter: heart_rate
Jenis data: Contoh
Resolusi penyimpanan: 1 detik (1 dtk)

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilitas Detak Jantung
dataType: heart-rate-variability
parameter filter: heart_rate_variability
Jenis data: Contoh

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tinggi
dataType: height
filter parameter: height
Jenis data: Contoh
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Catatan Hidrasi
dataType: hydration-log
parameter filter: hydration_log
Jenis data: Sesi
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notifikasi Irama Tidak Teratur
dataType: irregular-rhythm-notification
parameter filter: irregular_rhythm_notification
Jenis data: Sesi
list .irn.readonly
Periode Menstruasi
dataType: menstrual-period
parameter filter: menstrual_period
Jenis data: Interval
create, update, batchDelete .reproductive_health.writeonly
Moods
dataType: moods
filter parameter: moods
Jenis data: Contoh
create, update, batchDelete .mindfulness.writeonly
Catatan Nutrisi
dataType: nutrition-log
parameter filter: nutrition_log
Jenis data: Sesi

Perangkat yang kompatibel

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Tes Ovulasi
dataType: ovulation-test
parameter filter: ovulation_test
Jenis data: Contoh
create, update, batchDelete .reproductive_health.writeonly
Saturasi Oksigen
dataType: oxygen-saturation
parameter filter: oxygen_saturation
Jenis data: Contoh

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Ringkasan Tidur Laju Pernapasan
dataType: respiratory-rate-sleep-summary
parameter filter: respiratory_rate_sleep_summary
Jenis data: Contoh

Perangkat yang kompatibel

daftar, sesuaikan .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 Maks Lari
dataType: run-vo2-max
parameter filter: run_vo2_max
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Periode Tidak Bergerak
dataType: sedentary-period
parameter filter: sedentary_period
Jenis data: Interval

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Tidur
dataType: sleep
filter parameter: sleep
Jenis data: Sesi

Perangkat yang kompatibel

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Langkah-Langkah
dataType: steps
filter parameter: steps
Jenis data: Interval
Resolusi penyimpanan: 1 menit

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Data Panjang Kolam Renang
dataType: swim-lengths-data
parameter filter: swim_lengths_data
Jenis data: Interval

Perangkat yang kompatibel

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Gejala
dataType: symptoms
filter parameter: symptoms
Jenis data: Contoh
create, update, batchDelete .logged_symptoms.writeonly
Waktu di Zona Detak Jantung
dataType: time-in-heart-rate-zone
parameter filter: time_in_heart_rate_zone
Jenis data: Interval
Resolusi penyimpanan: 1 menit
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Total Kalori
dataType: total-calories
parameter filter: total_calories
Jenis data: Interval
Resolusi penyimpanan: 1 menit

Perangkat yang kompatibel

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 Maks
dataType: vo2-max
parameter filter: vo2_max
Jenis data: Contoh

Perangkat yang kompatibel

daftar, sesuaikan .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Berat
dataType: weight
filter parameter: weight
Jenis data: Contoh

Perangkat yang kompatibel

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

Batasan kueri

Saat membuat kueri titik data, penggabungan, atau penggabungan harian dari API, perhatikan batasan berikut:

  • Persyaratan filter: Beberapa jenis data turunan hanya baca, seperti total-calories, memerlukan filter yang menentukan waktu mulai interval (menggunakan waktu fisik atau waktu sipil).
  • Batas rentang kueri: Endpoint agregasi rollup dan rollup harian menerapkan batas rentang kueri maksimum berdasarkan jenis data:
    • Rentang kueri maksimum 14 hari untuk calories-in-heart-rate-zone, heart-rate, active-minutes, dan total-calories.
    • Rentang kueri maksimum 90 hari untuk semua jenis data lainnya.
  • Ukuran jendela penggabungan: Saat memanggil endpoint rollUp, durasi windowSize harus minimal 1 detik ("1s"). Durasi di bawah satu detik ditolak dengan INVALID_ARGUMENT. Selain itu, pilih windowSize yang sama dengan atau lebih besar dari resolusi penyimpanan pokok jenis data (seperti "60s" untuk jenis data interval 1 menit seperti steps dan distance) untuk menghindari distribusi yang tidak merata di seluruh sub-interval. Untuk mengetahui detailnya, lihat Ukuran jendela penggabungan dan resolusi penyimpanan yang mendasarinya.

Jenis data Harian versus Interval

Untuk metrik fisiologis tertentu, seperti Variabilitas Detak Jantung (HRV) atau Saturasi Oksigen (SpO2), Google Health API menyediakan dua jenis data yang berbeda: versi Harian dan versi Interval. Memahami perbedaannya adalah kunci untuk memilih metrik yang tepat untuk kasus penggunaan Anda:

  • Harian: Ringkasan tunggal yang telah diagregasi sebelumnya untuk sepanjang hari. Gunakan ini untuk tren tingkat tinggi dan dasbor harian guna menghemat pemrosesan.

  • Interval: Pengukuran terperinci beresolusi tinggi yang dilakukan sepanjang hari. Gunakan ini untuk memetakan fluktuasi intrahari atau melakukan analisis mendalam per jam.

Ketersediaan data

Pembaruan data pengguna hanya tersedia setelah pengguna menyinkronkan pemantau aktivitas atau memasukkan data baru secara manual ke aplikasi seluler atau aplikasi web Fitbit. Perangkat Fitbit dan aplikasi seluler Fitbit dapat menyinkronkan data secara otomatis setiap 15 menit jika aplikasi Fitbit terbuka di perangkat seluler dan keduanya memiliki koneksi data aktif serta berada dalam rentang Bluetooth. Jika pengguna melacak aktivitas menggunakan MobileTrack, MobileTrack akan disinkronkan setiap jam selama aplikasi terbuka.

Membuat kueri data historis

Salah satu manfaat utama Google Health API adalah kemampuan untuk melacak performa pengguna dan memantau data vital kesehatannya dalam jangka waktu yang lama. Anda dapat membuat kueri data pengguna sejak data tersebut dicatat; API tidak memberlakukan batasan atau pembatasan apa pun pada jumlah data historis yang dapat digunakan aplikasi Anda.

Namun, kueri data historis masih diatur oleh batas frekuensi standar. Untuk mengelola stabilitas sistem dan mencegah payload yang berlebihan, Google Health API menggunakan penomoran halaman otomatis dengan ukuran halaman khusus endpoint. Perhatikan batas dan perilaku berikut:

  • Penomoran halaman otomatis: Jika Anda membuat kueri rentang data yang panjang, API hanya akan menampilkan halaman pertama hasil hingga batas ukuran halaman untuk endpoint tersebut, beserta nextPageToken. Anda harus menggunakan nextPageToken untuk meminta halaman berikutnya.
  • Ukuran halaman variabel: Batas pembatasan bergantung pada endpoint dan jenis data. Untuk sebagian besar jenis data, ukuran halaman dibatasi hingga maksimum 10.000. Namun, untuk jenis data tertentu seperti exercise dan sleep, ukuran halaman default dan maksimum dibatasi hingga 25. Misalnya, jika klien meminta semua data tidur selama 10 tahun terakhir, API tetap hanya akan menampilkan 25 sesi tidur di halaman pertama.
  • Batasan rentang tanggal rollup: Untuk endpoint penggabungan dan rollup data (seperti rollUp dan dailyRollUp), rentang tanggal kueri dibatasi berdasarkan jenis data:
    • Rentang maksimum 14 hari untuk calories-in-heart-rate-zone, heart-rate, active-minutes, dan total-calories.
    • Rentang maksimum 90 hari untuk semua jenis data gabungan lainnya.

Bergantung pada volume data historis yang dibutuhkan aplikasi Anda, pengambilan seluruh set data akan memerlukan penomoran halaman secara berurutan. Perhatikan hal ini saat mendesain proses sinkronisasi data aplikasi Anda.

Untuk memastikan performa yang optimal dan menghindari error API, ikuti panduan berikut saat mengirim kueri data historis:

Sinkronisasi data bertahap (pemuatan aktif versus pasif)

  • Pemuatan "hot" awal: Ambil dan render hanya data 7–14 hari terakhir selama urutan pemuatan utama. Hal ini memastikan pengguna melihat data secara langsung tanpa menunggu kueri yang berjalan lama.
  • Pemuatan "dingin" di latar belakang: Mendelegasikan pengambilan data historis lama ke antrean asinkron berprioritas lebih rendah atau proses latar belakang setelah UI utama dirender.

Pengelompokan kueri untuk agregasi

  • Karena endpoint rollup dan rollup harian menerapkan batas rentang tanggal maksimum (14 atau 90 hari, bergantung pada jenis data), Anda harus memecah kueri agregasi historis yang besar menjadi interval yang lebih kecil dan berurutan dalam batas ini.
  • Kelompokkan atau urutkan sub-kueri ini dengan aman untuk mematuhi batas konkurensi dan mempertahankan indikator progres UI yang stabil.

Memanfaatkan penggabungan yang sudah diagregasi

Menyusun ulang dasbor ringkasan dan diagram tren untuk menggunakan endpoint ringkasan yang telah diagregasi sebelumnya (seperti DailyRollUpDataPoints). Hal ini akan mengurangi overhead komputasi secara drastis di backend dan waktu transfer jaringan ke klien.

Penanganan error yang tangguh (percobaan ulang cerdas)

  • Terapkan penanganan backoff eksponensial yang ketat saat mengalami batas kecepatan (429 Too Many Requests) dan waktu tunggu gateway server (504 Gateway Timeout). Jangan pernah mencoba lagi payload besar yang gagal segera. Percobaan ulang instan melipatgandakan kemacetan backend dan memperparah penurunan kualitas sistem.

Akses pihak ketiga

Perangkat Fitbit tidak dapat berkomunikasi secara langsung dengan aplikasi atau layanan pihak ketiga. Perangkat ini dirancang untuk berkomunikasi dan menyinkronkan secara eksklusif dengan aplikasi seluler Fitbit.

Perangkat menyinkronkan data secara otomatis sepanjang hari, setiap kali aplikasi Fitbit dibuka, atau setiap 15 menit jika Bluetooth aktif dan aplikasi berjalan di latar belakang. Setelah proses sinkronisasi ini selesai, data akan tersedia untuk layanan pihak ketiga melalui Google Health API.

Standar jarak

Jarak latihan, seperti elevationGainMillimeters, diukur dalam milimeter sebagai satuan standar karena alasan berikut:

  1. Mempertahankan Presisi Data: Alasan terpenting penggunaan milimeter adalah untuk memastikan kita tidak kehilangan presisi dalam data yang kita baca dan berikan. Dengan menggunakan unit yang lebih kecil seperti milimeter, kita dapat merepresentasikan pengukuran dengan akurasi tinggi.
  2. Standardisasi: Milimeter adalah satuan standar yang dirancang di seluruh layanan kami. Konsistensi ini membantu memastikan pengalaman yang seragam bagi developer yang berinteraksi dengan berbagai bagian API.
  3. Dukungan Sistem Pengukuran yang Luas: Dengan menggunakan satuan dasar seperti milimeter, developer dapat dengan mudah mengonversi ke satuan lain yang dipilih, terlepas dari apakah mereka menggunakan sistem pengukuran metrik, imperial, atau lainnya.

Durasi siang yang bervariasi

Penanganan waktu oleh Health API memprioritaskan waktu pengguna untuk memperhitungkan variasi durasi hari yang disebabkan oleh Waktu Musim Panas atau perjalanan. Setiap titik data disimpan dengan stempel waktu UTC fisik dan offset UTC yang aktif pada waktu terjadinya peristiwa. Hal ini memungkinkan sistem untuk:

  • Memetakan peristiwa ke momen fisik yang tepat.
  • Koreksi waktu ke konteks lokal pengguna untuk penggabungan.

Waktu Musim Panas

Saat Waktu Musim Panas terjadi, "kembali" akan menghasilkan hari sipil 25 jam, dan penggabungan untuk tanggal tersebut akan berisi data 25 jam. "Maju cepat" menghasilkan hari sipil 23 jam saat waktu kembali ke Waktu Standar.

Perjalanan

Perjalanan melintasi zona waktu dapat menyebabkan variasi yang lebih signifikan dalam durasi fisik satu hari sipil.

Gunakan endpoint dailyRollUp untuk menyelaraskan perbedaan zona waktu. Data tersebut secara otomatis diatribusikan ke hari kalender saat data direkam sesuai dengan waktu lokal pengguna, sehingga secara efektif "menggabungkan" hari tersebut meskipun ada perubahan zona waktu.