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 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:

Tabel: Deskripsi kolom jenis data Google Health API
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:

  • Interval (Mewakili pengukuran yang dicatat selama durasi tertentu.)
  • Sample (Merepresentasikan pengukuran instan.)
  • Daily (Mewakili pengukuran yang digabungkan atau dicatat setiap hari.)
  • Session (Mewakili blok rekaman berkelanjutan, seperti sesi olahraga atau elektrokardiogram (ECG).)
  • Food (Mewakili item makanan atau entitas 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 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).

Tabel: Jenis data Google Health API
Jenis data Operasi
yang tersedia
Cakupan
Energi Aktif yang Terbakar
dataType: active-energy-burned
filter 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-minutes
filter parameter: 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
filter 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
dataType: activity-level
filter parameter: activity_level
Jenis data: Interval
daftar, rekonsiliasi .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
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
filter 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-fat
filter 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-zone
filter 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-temperature
filter 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-variability
filter 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-zones
filter 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-saturation
filter 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-rate
filter 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-rate
filter 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-derivations
filter 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-max
filter parameter: daily_vo2_max
Jenis data: Harian

Perangkat yang kompatibel

daftar, rekonsiliasi .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
filter parameter: food_measurement_unit
Jenis data: Makanan

Perangkat yang kompatibel

list, get .nutrition.readonly
.nutrition.writeonly
Detak Jantung
dataType: heart-rate
filter 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-variability
filter parameter: heart_rate_variability
Jenis data: Sample

Perangkat yang kompatibel

daftar, rekonsiliasi .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tinggi
dataType: height
filter parameter: height
Jenis data: Sample
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Catatan Hidrasi
dataType: hydration-log
filter parameter: 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
filter parameter: irregular_rhythm_notification
Jenis data: Sesi
list .irn.readonly
Periode Menstruasi
dataType: menstrual-period
filter parameter: menstrual_period
Jenis data: Interval
create, update, batchDelete .reproductive_health.writeonly
Mood
dataType: moods
filter parameter: moods
Jenis data: Sample
create, update, batchDelete .mindfulness.writeonly
Catatan Gizi
dataType: nutrition-log
filter 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-test
filter parameter: ovulation_test
Jenis data: Sample
create, update, batchDelete .reproductive_health.writeonly
Saturasi Oksigen
dataType: oxygen-saturation
filter 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-summary
filter 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-max
filter 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-period
filter 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-sensors
filter parameter: skin_temperature_sensors
Jenis data: Sample

Perangkat yang kompatibel

list .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Tidur
dataType: sleep
filter parameter: sleep
Jenis data: Sesi

Perangkat yang kompatibel

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
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 Lintasan Renang
dataType: swim-lengths-data
filter parameter: 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: Sample
create, update, batchDelete .logged_symptoms.writeonly
Waktu di Zona Detak Jantung
dataType: time-in-heart-rate-zone
filter 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-calories
filter 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-max
filter parameter: vo2_max
Jenis data: Sample

Perangkat yang kompatibel

daftar, rekonsiliasi .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Berat
dataType: weight
filter 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, dan total-calories.
    • Rentang kueri maksimum 90 hari untuk semua jenis data lainnya.
  • Ukuran periode rollup: Saat memanggil endpoint rollUp, durasi windowSize harus minimal 1 detik ("1s"). Durasi di bawah satu detik akan ditolak dengan INVALID_ARGUMENT. Selain itu, pilih windowSize yang sama dengan atau lebih besar dari resolusi penyimpanan dasar 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 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 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 hanya akan menampilkan 25 sesi tidur di halaman pertama.
  • Batasan rentang tanggal rollup: Untuk endpoint rollup dan agregasi 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 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:

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