Mengembangkan pengalaman tidur dengan Google Health API

Google Health API menyediakan jenis data yang melacak pola tidur pengguna, termasuk durasi, kualitas, dan metrik fisiologis selama istirahat. Metrik ini membantu aplikasi memberikan insight tentang pemulihan, kebersihan tidur, dan tren kesehatan jangka panjang.

Metrik fisiologis seperti Variabilitas Detak Jantung (HRV), Saturasi Oksigen (SpO2), dan laju pernapasan direkam secara khusus selama tidur karena tubuh berada dalam kondisi istirahat yang stabil. Hal ini memungkinkan API mencatat data dasar kesehatan otonom dan pernapasan pengguna tanpa gangguan dari pemicu stres siang hari, aktivitas fisik, atau kondisi lingkungan yang bervariasi.

Pahami perbedaan antara jenis data ini untuk menentukan metrik mana yang sesuai dengan aplikasi Anda.

Jenis data yang didukung

API ini mendukung jenis data berikut untuk mengukur tidur:

Tabel: Jenis data Tidur Google Health API
Jenis data Operasi
yang tersedia
Cakupan
Variabilitas Detak Jantung Harian
dataType: daily-heart-rate-variability
parameter filter: daily_heart_rate_variability
Jenis data: Harian

Perangkat yang kompatibel

list, reconcile .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

list, reconcile .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

list, reconcile .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

list, reconcile .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

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturasi Oksigen
dataType: oxygen-saturation
parameter filter: oxygen_saturation
Jenis data: Contoh

Perangkat yang kompatibel

list, reconcile .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

list, reconcile .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

Sesi Tidur dan Bangun Singkat

Sesi Tidur (Sleep) mewakili peristiwa tidur yang terpisah, seperti tidur malam tunggal atau tidur siang. Fitur ini mencakup perincian mendetail tentang fase tidur yang tidak tumpang-tindih bersama dengan interval transisi bangun singkat yang dikenal sebagai bangun singkat.

  • Sesi Tidur (Sleep): Merepresentasikan peristiwa tidur diskrit (interval tahap LIGHT, DEEP, REM, AWAKE) yang mempartisi linimasa berurutan istirahat utama.
  • Bangun Singkat (shortAwakenings): Transisi bangun atau bangun singkat yang terjadi selama istirahat. Tidak seperti interval fase AWAKE standar (yang membagi progres fase tidur yang berdekatan dan tidak tumpang-tindih), bangun singkat adalah segmen berbeda yang dapat tumpang-tindih dengan fase tidur di sekitarnya. Fitur ini memberikan visibilitas terperinci ke dalam kegelisahan dan bangun singkat tanpa mengganggu struktur tahap tidur utama.

Contoh

{
  "name": "sleeps/12345",
  "startTime": "2026-04-20T22:30:00Z",
  "endTime": "2026-04-21T06:30:00Z",
  "sleepType": "STAGES",
  "sleepStages": [
    {
      "startTime": "2026-04-20T22:30:00Z",
      "endTime": "2026-04-20T23:45:00Z",
      "type": "LIGHT"
    },
    {
      "startTime": "2026-04-20T23:45:00Z",
      "endTime": "2026-04-21T01:15:00Z",
      "type": "DEEP"
    }
  ],
  "shortAwakenings": [
    {
      "startTime": "2026-04-20T23:10:00Z",
      "endTime": "2026-04-20T23:11:30Z",
      "type": "AWAKE"
    }
  ]
}

Membuat sesi tidur

Untuk membuat entri sesi tidur, kirim permintaan POST ke endpoint titik data sleep. Respons mencakup kolom name yang berisi data-point-id, yang dapat digunakan dalam permintaan Perbarui (Patch) atau Hapus.

Permintaan

POST https://health.googleapis.com/v4/users/me/dataTypes/sleep/dataPoints
Authorization: Bearer access-token
Content-Type: application/json

{
  "sleep": {
    "interval": {
      "startTime": "2026-06-07T22:00:00Z",
      "startUtcOffset": "-14400s",
      "endTime": "2026-06-08T06:00:00Z",
      "endUtcOffset": "-14400s"
    },
    "type": "STAGES",
    "stages": [
      {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T22:30:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-07T22:30:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-07T23:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "DEEP"
      },
      {
        "startTime": "2026-06-07T23:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T02:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T02:45:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      },
      {
        "startTime": "2026-06-08T02:45:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T05:15:00Z",
        "endUtcOffset": "-14400s",
        "type": "LIGHT"
      },
      {
        "startTime": "2026-06-08T05:15:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s",
        "type": "REM"
      }
    ]
  }
}

Respons

{
  "done": true,
  "response": {
    "@type": "type.googleapis.com/google.devicesandservices.health.v4.DataPoint",
    "name": "users/user-id/dataTypes/sleep/dataPoints/data-point-id",
    "sleep": {
      "interval": {
        "startTime": "2026-06-07T22:00:00Z",
        "startUtcOffset": "-14400s",
        "endTime": "2026-06-08T06:00:00Z",
        "endUtcOffset": "-14400s"
      },
      "type": "STAGES",
      "stages": [
        {
          "startTime": "2026-06-07T22:00:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T22:30:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-07T22:30:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-07T23:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "DEEP"
        },
        {
          "startTime": "2026-06-07T23:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T02:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T02:45:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        },
        {
          "startTime": "2026-06-08T02:45:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T05:15:00Z",
          "endUtcOffset": "-14400s",
          "type": "LIGHT"
        },
        {
          "startTime": "2026-06-08T05:15:00Z",
          "startUtcOffset": "-14400s",
          "endTime": "2026-06-08T06:00:00Z",
          "endUtcOffset": "-14400s",
          "type": "REM"
        }
      ]
    }
  }
}

Turunan Suhu Tidur Harian

Turunan Suhu Tidur Harian mengukur variasi suhu kulit pengguna saat tidur dibandingkan dengan suhu dasarnya. Data ini biasanya dilaporkan sekali per hari setelah sesi tidur utama.

Laju Pernapasan

Laju pernapasan mengukur napas pengguna per menit. Selama tidur, ini adalah metrik utama untuk memantau kualitas tidur dan potensi gangguan. API ini mendukung laju pernapasan sampel (respiratory-rate), ringkasan harian (daily-respiratory-rate), dan ringkasan tidur tingkat sesi (respiratory-rate-sleep-summary).

Variabilitas Detak Jantung (HRV)

HRV mengukur variasi waktu antara setiap detak jantung. HRV adalah indikator utama kondisi sistem saraf otonom; HRV yang tinggi selama tidur umumnya menandakan pemulihan dan kesiapan yang lebih baik, sedangkan HRV yang rendah dapat mengindikasikan stres atau latihan berlebihan. API ini mendukung HRV sampel (heart-rate-variability) dan ringkasan harian (daily-heart-rate-variability).

Saturasi Oksigen (SpO2)

SpO2 menunjukkan persentase hemoglobin yang tersaturasi oksigen relatif terhadap total hemoglobin dalam darah. Memantau SpO2 selama tidur sangat penting untuk mendeteksi potensi gangguan pernapasan dan memastikan pengguna mempertahankan kadar oksigen yang memadai sepanjang malam. API ini mendukung sampel SpO2 (oxygen-saturation) dan ringkasan harian (daily-oxygen-saturation).

Gambaran menyeluruh tentang kesehatan dan pemulihan tidur

Meskipun setiap metrik memberikan insight tertentu, metrik tersebut sangat saling terkait dan bersama-sama menawarkan gambaran menyeluruh tentang pemulihan pengguna. Tahapan tidur (Ringan, Nyenyak, REM) memberikan dasar struktural istirahat, sementara penanda fisiologis seperti HRV dan SpO2 menunjukkan bagaimana tubuh merespons istirahat tersebut secara fisik. Misalnya, sesi tidur berkualitas tinggi dengan Tidur lelap yang optimal sering kali berkorelasi dengan HRV yang lebih tinggi, yang menandakan pemulihan yang efektif dari sistem saraf otonom.

Dengan menggabungkannya dengan turunan laju pernapasan dan suhu tidur, aplikasi dapat mengidentifikasi potensi gangguan. Peningkatan mendadak pada laju pernapasan atau perubahan suhu saat tidur dapat memberikan konteks mengapa pengguna mungkin menghabiskan lebih sedikit waktu dalam tahap pemulihan. Dengan menganalisis jenis data ini secara bersamaan, developer dapat memberikan penilaian komprehensif tentang kebiasaan tidur dan tren kesehatan jangka panjang.

Panduan

Saat mengintegrasikan metrik tidur di aplikasi Anda, gunakan panduan berikut:

  • Detail Sesi: Untuk menampilkan tahapan tidur pengguna (Ringan, Nyenyak, REM, Terjaga) dan bangun tidur singkat, kueri jenis data sleep.
  • Pemantauan Fisiologis: Untuk pemantauan kesehatan tingkat lanjut, gabungkan data sesi tidur dengan metrik fisiologis dan pemulihan seperti respiratory-rate-sleep-summary, daily-sleep-temperature-derivations, daily-heart-rate-variability, dan daily-oxygen-saturation.
  • Rekonsiliasi: Gunakan operasi reconcile untuk memastikan bahwa catatan tidur yang tumpang-tindih dari perangkat yang berbeda (misalnya, perangkat wearable dan sensor kasur) digabungkan ke dalam satu catatan tidur "utama".

Menghitung total waktu dalam fase tidur lelap

Untuk menghitung total waktu yang dihabiskan pengguna dalam fase tidur dalam restoratif selama malam tertentu:

  1. Buat kueri tipe data sleep untuk rentang waktu yang ditentukan.
  2. Lakukan iterasi pada daftar tahap dan identifikasi interval saat stageType adalah DEEP.
  3. Hitung durasi (Waktu Berakhir - Waktu Mulai) untuk setiap interval fase tidur dalam dan jumlahkan.

Jumlah yang dihasilkan memberikan total durasi fisik tidur lelap untuk sesi tersebut.