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 masing-masing jenis.
Kolom jenis data
Tabel jenis data Google Health API menyertakan beberapa kolom untuk membantu Anda memahami representasi dan persyaratan setiap jenis data. Kolom-kolom ini adalah sebagai berikut:
| Kolom | Deskripsi |
|---|---|
dataType |
ID yang dipisahkan dengan tanda hubung (misalnya,
active-minutes) yang digunakan di URL endpoint. |
Parameter filter |
ID yang dipisahkan dengan garis bawah (misalnya,
active_minutes) yang digunakan sebagai nilai untuk
parameter filter dataType dalam permintaan rollup dan rollup
harian. |
| 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 sejati | Menunjukkan bahwa jenis data mendukung pencatatan nilai nol eksplisit untuk membedakan antara nilai nol aktif (seperti nol menit aktif) dengan data yang tidak ada atau tidak tercatat. |
| Resolusi penyimpanan | Interval perekaman atau pengambilan sampel minimum tempat 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-burnedfilter parameter: 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-minutesfilter parameter: 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-minutesfilter parameter: 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, rekonsiliasi | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Altitude
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Glukosa Darah
dataType:
blood-glucosefilter parameter: blood_glucose
Jenis data: Sample
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Lemak Tubuh
dataType:
body-fatfilter parameter: body_fat
Jenis data: Sample
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-zonefilter parameter: 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-temperaturefilter parameter: core_body_temperature
Jenis data: Sample
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Variabilitas Detak Jantung Harian
dataType:
daily-heart-rate-variabilityfilter parameter: daily_heart_rate_variability
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Zona Detak Jantung Harian
dataType:
daily-heart-rate-zonesfilter parameter: daily_heart_rate_zones
Jenis data: Harian
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Saturasi Oksigen Harian
dataType:
daily-oxygen-saturationfilter parameter: daily_oxygen_saturation
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Laju Pernapasan Harian
dataType:
daily-respiratory-ratefilter parameter: daily_respiratory_rate
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Detak Jantung Saat Istirahat Harian
dataType:
daily-resting-heart-ratefilter parameter: daily_resting_heart_rate
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Deviasi Suhu Tidur Harian
dataType:
daily-sleep-temperature-derivationsfilter parameter: daily_sleep_temperature_derivations
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
VO2 Maks Harian
dataType:
daily-vo2-maxfilter parameter: daily_vo2_max
Jenis data: Harian
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .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-unitfilter parameter: food_measurement_unit
Jenis data: Makanan
Perangkat yang kompatibel
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Detak Jantung
dataType:
heart-ratefilter parameter: heart_rate
Jenis data: Sample
Resolusi penyimpanan: 1 detik
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Variabilitas Detak Jantung
dataType:
heart-rate-variabilityfilter parameter: heart_rate_variability
Jenis data: Sample
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .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-notificationfilter parameter: irregular_rhythm_notification
Jenis data: Sesi
|
list | .irn.readonly |
|
Periode Menstruasi
dataType:
menstrual-periodfilter parameter: menstrual_period
Jenis data: Interval
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Mood
|
create, update, batchDelete | .mindfulness.writeonly |
|
Catatan Gizi
dataType:
nutrition-logfilter parameter: nutrition_log
Jenis data: Sesi
Perangkat yang kompatibel
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Tes Ovulasi
dataType:
ovulation-testfilter parameter: ovulation_test
Jenis data: Sample
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Saturasi Oksigen
dataType:
oxygen-saturationfilter parameter: oxygen_saturation
Jenis data: Sample
Resolusi penyimpanan: 1 menit
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Ringkasan data tidur laju pernapasan
dataType:
respiratory-rate-sleep-summaryfilter parameter: respiratory_rate_sleep_summary
Jenis data: Sample
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
VO2 Maks Lari
dataType:
run-vo2-maxfilter parameter: run_vo2_max
Jenis data: Sample
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Periode Tidak Bergerak
dataType:
sedentary-periodfilter parameter: sedentary_period
Jenis data: Interval
Perangkat yang kompatibel
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Sensor Suhu Kulit
v4beta
dataType:
skin-temperature-sensorsfilter parameter: skin_temperature_sensors
Jenis data: Sample
Perangkat yang kompatibel |
list | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Tidur
dataType:
sleepfilter parameter: sleep
Jenis data: Sesi
Perangkat yang kompatibel
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
|
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 Lintasan Renang
dataType:
swim-lengths-datafilter parameter: 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-zonefilter parameter: 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-caloriesfilter parameter: 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-maxfilter parameter: vo2_max
Jenis data: Sample
Perangkat yang kompatibel
|
daftar, rekonsiliasi | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Berat
dataType:
weightfilter parameter: weight
Jenis data: Sample
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, rollup, atau rollup 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 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 periode rollup: Saat memanggil endpoint
rollUp, durasiwindowSizeharus minimal 1 detik ("1s"). Durasi di bawah satu detik akan ditolak denganINVALID_ARGUMENT. Selain itu, pilihwindowSizeyang sama dengan atau lebih besar dari resolusi penyimpanan dasar 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 Periode rollup dan resolusi penyimpanan.
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 perbedaan ini adalah kunci untuk memilih metrik yang tepat untuk kasus penggunaan Anda:
Harian: Satu ringkasan yang telah digabungkan sebelumnya untuk sepanjang hari. Gunakan ini untuk tren tingkat tinggi dan dasbor harian guna menghemat pemrosesan.
Interval: Pengukuran terperinci dan beresolusi tinggi yang dilakukan sepanjang hari. Gunakan ini untuk membuat diagram fluktuasi harian atau melakukan analisis mendalam, jam demi jam.
Ketersediaan data
Pembaruan data pengguna hanya tersedia setelah pengguna menyinkronkan pelacak aktivitasnya atau memasukkan data baru secara manual ke aplikasi Google Health. Perangkat Fitbit dan aplikasi Google Health dapat otomatis disinkronkan setiap 15 menit saat aplikasi Google Health dibuka di perangkat seluler dan keduanya memiliki koneksi data aktif dan berada dalam jangkauan Bluetooth. Jika pengguna melacak aktivitas menggunakan MobileTrack, MobileTrack akan disinkronkan setiap jam selama aplikasi terbuka.
Membuat kueri data historis
Salah satu manfaat inti Google Health API adalah kemampuan untuk melacak performa pengguna dan memantau tanda-tanda vital kesehatan mereka dalam jangka waktu yang lama. Anda dapat membuat kueri data pengguna sejauh data tersebut telah dicatat; API tidak memberlakukan batasan atau pembatasan pada jumlah data historis yang dapat digunakan aplikasi Anda.
Namun, kueri data historis masih diatur oleh pembatasan kapasitas standar. Untuk mengelola stabilitas sistem dan mencegah payload yang berlebihan, Google Health API menggunakan penomoran halaman otomatis dengan ukuran halaman khusus endpoint. Perhatikan batasan dan perilaku berikut:
- Penomoran halaman otomatis: Jika Anda mengkueri 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 hanya akan menampilkan 25 sesi tidur di halaman pertama. - Batasan rentang tanggal rollup: Untuk endpoint rollup dan agregasi 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 diperlukan aplikasi Anda, mengambil seluruh set data akan memerlukan penomoran halaman secara berurutan. Ingatlah hal ini saat mendesain proses sinkronisasi data aplikasi Anda.
Untuk memastikan performa yang optimal dan menghindari error API, ikuti panduan berikut saat membuat kueri data historis:
Sinkronisasi data bertahap (pemuatan hot versus cold)
- 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 "cold" latar belakang: Delegasikan pengambilan data historis yang lebih lama ke antrean asinkron dengan prioritas 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 membagi kueri agregasi historis yang besar menjadi interval yang lebih kecil dan berurutan dalam batas ini.
- Kelompokkan atau urutkan subkueri ini dengan aman untuk mematuhi batas konkurensi dan mempertahankan indikator progres UI yang stabil.
Memanfaatkan roll-up yang telah diagregasi sebelumnya
Restrukturisasi dasbor ringkasan dan diagram tren untuk menggunakan endpoint ringkasan yang telah digabungkan sebelumnya (seperti DailyRollUpDataPoints). Tindakan 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 pembatasan kapasitas (
429 Too Many Requests) dan waktu tunggu gateway server (504 Gateway Timeout). Jangan pernah mencoba ulang payload besar yang gagal secara langsung. Percobaan ulang instan melipatgandakan kemacetan backend dan memperparah penurunan kualitas sistem.
Akses pihak ketiga
Perangkat Fitbit tidak dapat berkomunikasi langsung dengan aplikasi atau layanan pihak ketiga. Perangkat ini dirancang untuk berkomunikasi dan disinkronkan secara eksklusif dengan aplikasi Google Health.
Perangkat akan otomatis menyinkronkan data sepanjang hari, setiap kali aplikasi Google Health 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.
Pemfilteran kualitas dan validitas data
Untuk memberikan metrik kesehatan yang andal tanpa memerlukan pemfilteran derau sisi klien kustom, Google Health API memvalidasi telemetri sensor dan mengecualikan pengukuran yang tidak valid sebelum menampilkan respons:
- Untuk saturasi oksigen dalam darah (
oxygen-saturation) tingkat menit, API hanya menampilkan pembacaan yang divalidasi dan menghapus menit yang ditandai tidak valid karena gerakan lengan, pemasangan yang longgar di pergelangan tangan, atau skor keyakinan sensor di bawah 50%, serta 3 menit sebelum dan setelah pembacaan yang tidak valid dan rentang valid terisolasi yang lebih pendek dari 4 menit. Akibatnya, cakupan tingkat menit dapat jarang dan diperkirakan akan ada kesenjangan. Untuk mengetahui detailnya, lihat Pemfilteran SpO2 tingkat menit dan validitas data.
Standar jarak
Jarak latihan, seperti elevationGainMillimeters, diukur dalam
milimeter sebagai unit 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. Menggunakan unit yang sangat kecil seperti milimeter memungkinkan kita merepresentasikan pengukuran dengan akurasi tinggi.
- Standardisasi: Milimeter adalah unit 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: Menggunakan unit dasar seperti milimeter memudahkan developer untuk mengonversi ke unit 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 panjang hari yang bervariasi yang disebabkan oleh Waktu Musim Panas atau perjalanan. Setiap titik data disimpan dengan stempel waktu UTC fisik dan selisih UTC yang aktif pada saat peristiwa terjadi. Hal ini memungkinkan sistem untuk:
- Memetakan peristiwa ke momen fisik yang tepat.
- Perbaiki waktu ke konteks lokal pengguna untuk agregasi.
Waktu Musim Panas
Saat Waktu Musim Panas terjadi, "pengunduran waktu" menghasilkan hari sipil 25 jam, dan rollup untuk tanggal tersebut akan berisi data 25 jam. "Spring forward" 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 menyesuaikan perbedaan zona waktu. Fitur ini
secara otomatis mengatribusikan data ke hari kalender saat data tersebut dicatat
sesuai dengan waktu lokal pengguna, sehingga secara efektif "menggabungkan" hari
meskipun ada perubahan zona waktu. Untuk mengetahui detail dan contohnya, lihat
Menggabungkan di seluruh hari kalender dalam
panduan Menggabungkan data.