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:
| 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:
|
| 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). |
| Jenis data | Operasi yang tersedia |
Cakupan |
|---|---|---|
|
Energi Aktif yang Terbakar
dataType:
active-energy-burnedparameter 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-minutesparameter filter: active_minutes
Jenis data: Interval
Resolusi penyimpanan: 1 menit
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Menit Zona Aktif
dataType:
active-zone-minutesparameter 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
|
daftar, sesuaikan | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Ketinggian
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Glukosa Darah
dataType:
blood-glucoseparameter 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-fatparameter 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-zoneparameter 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-temperatureparameter 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-variabilityparameter 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-zonesparameter 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-saturationparameter 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-rateparameter 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-rateparameter 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-derivationsparameter 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-maxparameter filter: daily_vo2_max
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, sesuaikan | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Jarak
dataType:
distancefilter 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:
electrocardiogramfilter parameter: electrocardiogram
Jenis data: Sesi
Perangkat yang kompatibel
|
list | .ecg.readonly |
|
Latihan
dataType:
exercisefilter parameter: exercise
Jenis data: Sesi
Perangkat yang kompatibel
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Lantai
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Makanan
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Unit Pengukuran Makanan
dataType:
food-measurement-unitparameter filter: food_measurement_unit
Jenis data: Makanan
Perangkat yang kompatibel
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Detak Jantung
dataType:
heart-rateparameter 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-variabilityparameter filter: heart_rate_variability
Jenis data: Contoh
Perangkat yang kompatibel
|
daftar, sesuaikan | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Tinggi
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Catatan Hidrasi
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Notifikasi Irama Tidak Teratur
dataType:
irregular-rhythm-notificationparameter filter: irregular_rhythm_notification
Jenis data: Sesi
|
list | .irn.readonly |
|
Periode Menstruasi
dataType:
menstrual-periodparameter filter: menstrual_period
Jenis data: Interval
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Moods
|
create, update, batchDelete | .mindfulness.writeonly |
|
Catatan Nutrisi
dataType:
nutrition-logparameter 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-testparameter filter: ovulation_test
Jenis data: Contoh
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Saturasi Oksigen
dataType:
oxygen-saturationparameter 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-summaryparameter 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-maxparameter 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-periodparameter filter: sedentary_period
Jenis data: Interval
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Tidur
dataType:
sleepfilter parameter: sleep
Jenis data: Sesi
Perangkat yang kompatibel
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
|
Langkah-Langkah
dataType:
stepsfilter 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-dataparameter filter: swim_lengths_data
Jenis data: Interval
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Gejala
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Waktu di Zona Detak Jantung
dataType:
time-in-heart-rate-zoneparameter 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-caloriesparameter 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-maxparameter filter: vo2_max
Jenis data: Contoh
Perangkat yang kompatibel
|
daftar, sesuaikan | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Berat
dataType:
weightfilter 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, dantotal-calories. - Rentang kueri maksimum 90 hari untuk semua jenis data lainnya.
- Rentang kueri maksimum 14 hari untuk
- Ukuran jendela penggabungan: Saat memanggil endpoint
rollUp, durasiwindowSizeharus minimal 1 detik ("1s"). Durasi di bawah satu detik ditolak denganINVALID_ARGUMENT. Selain itu, pilihwindowSizeyang sama dengan atau lebih besar dari resolusi penyimpanan pokok jenis data (seperti"60s"untuk jenis data interval 1 menit sepertistepsdandistance) 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 menggunakannextPageTokenuntuk 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
exercisedansleep, 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
rollUpdandailyRollUp), rentang tanggal kueri dibatasi berdasarkan jenis data:- Rentang maksimum 14 hari untuk
calories-in-heart-rate-zone,heart-rate,active-minutes, dantotal-calories. - Rentang maksimum 90 hari untuk semua jenis data gabungan lainnya.
- Rentang maksimum 14 hari untuk
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:
- 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.
- 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.
- 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.