Разрабатывайте приложения для улучшения качества сна с помощью API Google Health.

API Google Health предоставляет типы данных, отслеживающие режим сна пользователя, включая продолжительность, качество и физиологические показатели во время отдыха. Эти показатели помогают приложениям получать информацию о восстановлении, гигиене сна и долгосрочных тенденциях в состоянии здоровья.

Физиологические показатели, такие как вариабельность сердечного ритма (ВСР), насыщение крови кислородом (SpO2) и частота дыхания, регистрируются именно во время сна, поскольку организм находится в стабильном состоянии покоя. Это позволяет API получать базовые данные о состоянии вегетативной нервной системы и дыхательной системы пользователя без влияния дневных стрессовых факторов, физической активности или изменяющихся условий окружающей среды.

Чтобы определить, какие метрики подходят для вашего приложения, необходимо понимать различия между этими типами данных.

Поддерживаемые типы данных

API поддерживает следующие типы данных для измерения сна:

Таблица: Типы данных о сне из Google Health API
Тип данных Доступный
операции
Объем
Суточная вариабельность сердечного ритма
Тип данных: daily-heart-rate-variability
Параметр фильтра: daily_heart_rate_variability
Тип записи: Ежедневная

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Суточная сатурация кислорода
Тип данных: daily-oxygen-saturation
Параметр фильтра: daily_oxygen_saturation
Тип записи: Ежедневная

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Суточная частота дыхания
Тип данных: daily-respiratory-rate
Параметр фильтра: daily_respiratory_rate
Тип записи: Ежедневная

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Ежедневные измерения температуры во время сна
Тип данных: daily-sleep-temperature-derivations
Параметр фильтра: daily_sleep_temperature_derivations
Тип записи: Ежедневная

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Вариабельность сердечного ритма
Тип данных: heart-rate-variability
Параметр фильтра: heart_rate_variability
Тип записи: Образец

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Насыщение кислородом
Тип данных: oxygen-saturation
Параметр фильтра: oxygen_saturation
Тип записи: Образец

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Сводка по частоте дыхания во сне
dataType: respiratory-rate-sleep-summary
Параметр фильтра: respiratory_rate_sleep_summary
Тип записи: Образец

Совместимые устройства

список, сверка .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Спать
Тип данных: sleep
Параметр фильтра: sleep
Тип записи: Сессия

Совместимые устройства

список, получить, согласовать, создать, обновить, пакетное удаление .sleep.readonly
.sleep.writeonly

Сеансы сна и короткие пробуждения

Сеанс сна ( Sleep ) представляет собой отдельное событие сна, такое как один ночной сон или дневной сон. Он включает в себя подробное описание непересекающихся стадий сна, а также короткие переходные интервалы между периодами бодрствования, известные как короткие пробуждения.

  • Сеанс сна ( Sleep ) : Представляет собой отдельное событие сна (интервалы LIGHT , DEEP , REM , фазы AWAKE ), которое разделяет непрерывную временную шкалу основного отдыха.
  • Короткие пробуждения ( shortAwakenings ) : Кратковременные переходы в состояние бодрствования или пробуждения, происходящие во время отдыха. В отличие от стандартных интервалов стадии AWAKE (которые делят непересекающуюся последовательность стадий сна), короткие пробуждения представляют собой отдельные сегменты, которые могут перекрываться с окружающими стадиями сна. Они обеспечивают детальное наблюдение за беспокойством и микропробуждениями, не нарушая основную структуру стадий сна.
  • Ночные пробуждения : Ночные пробуждения (например, подъем за водой) выявляются путем объединения данных с датчиков устройства (акселерометр, гироскоп и счетчик шагов). В веб-API приложения могут обнаруживать ночные пробуждения, фильтруя интервалы, отмеченные уровнем "wake" (классический сон) или "awake" (стадии сна).

Пример

{
  "name": "sleeps/12345",
  "startTime": "2026-04-20T22:30:00Z",
  "endTime": "2026-04-21T06:30:00Z",
  "sleepType": "STAGES",
  "minutesToFallAsleep": 15,
  "minutesAfterWakeup": 10,
  "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"
    }
  ]
}

Создать сеанс сна

Для создания записи о сеансе сна отправьте POST запрос на конечную точку данных sleep . В ответе будет содержаться поле name , включающее идентификатор data-point-id , который можно использовать в запросе на обновление (исправление) или удаление .

Запрос

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"
      }
    ]
  }
}

Ответ

{
  "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"
        }
      ]
    }
  }
}

Показатели эффективности и задержки сна

Помимо стадий сна и физиологических показателей, API предоставляет ключевые метрики, количественно оценивающие качество сна и время засыпания. Эффективность сна и задержка засыпания — это стандартные клинические показатели, описывающие, насколько эффективно пользователь отдыхает относительно общего времени, проведенного в постели, что позволяет оценить гигиену сна и степень расслабленности.

показатель эффективности сна

Эффективность сна — это стандартный показатель, определяемый как доля времени, проведенного во сне, по отношению к общему времени, проведенному в постели. API вычисляет эффективность сна по следующей формуле:

Sleep Efficiency Score = round( (Total Minutes Asleep / Total Minutes In Bed) * 100 )

Показатель эффективности рассчитывается непосредственно перед разделением на уровни (стадии) сна. Общее количество минут сна, возвращаемое в ответе API (в поле summary.minutesAsleep ), отражает окончательный результат после вычисления уровней сна.

Если пользователь или исследователь вручную изменяет время начала или окончания записи в журнале сна, API пересчитывает показатель эффективности сна и корректирует разделение на этапы в соответствии с данными датчиков, записанными в пределах новой границы времени отхода ко сну и времени пробуждения.

Задержка засыпания

Показатель задержки засыпания измеряет время, прошедшее с момента, когда пользователь намеревается заснуть (начало времени «в постели» или «после выключения света»), до момента засыпания.

Для журналов, генерируемых автоматически с помощью автообнаружения ( auto_detect ), значение minutesToFallAsleep по умолчанию равно 0 поскольку явное намерение заснуть не было зарегистрировано. Когда время начала сна в постели записывается или редактируется вручную (преобразуя журнал в manual ), API вычисляет и заполняет значения minutesToFallAsleep вместе с minutesAfterWakeup .

Руководство по проведению исследований и ведению записей вручную.

Когда участники вручную записывают или корректируют время начала и окончания пребывания в постели:

  1. Обновление границ зоны покрытия изменяет интервал timeInBed .
  2. Уровни сна и разделения на стадии автоматически регулируются для оценки данных датчиков в новом окне.
  3. Показатели эффективности сна, minutesToFallAsleep и minutesAfterWakeup пересчитываются на основе обновленного временного окна.

Ежедневные измерения температуры во время сна

Ежедневные измерения температуры во время сна показывают изменение температуры кожи пользователя во время сна по сравнению с исходным уровнем. Эти данные обычно предоставляются один раз в день после продолжительного сна.

Частота дыхания

Частота дыхания измеряет количество вдохов и выдохов пользователя в минуту. Во время сна это ключевой показатель для мониторинга качества сна и потенциальных нарушений. API поддерживает пример частоты дыхания ( respiratory-rate ), ежедневные сводки ( daily-respiratory-rate ) и сводки сна на уровне сессии ( respiratory-rate-sleep-summary ).

Вариабельность сердечного ритма (ВСР)

Вариабельность сердечного ритма (ВСР) измеряет разницу во времени между каждым сердечным сокращением. Это ключевой показатель состояния вегетативной нервной системы; высокая ВСР во время сна, как правило, свидетельствует о лучшем восстановлении и готовности, в то время как низкая ВСР может указывать на стресс или перетренировку. API поддерживает примеры ВСР ( heart-rate-variability ) и ежедневные сводки ( daily-heart-rate-variability ).

Насыщение кислородом (SpO2)

SpO2 представляет собой процент насыщенного кислородом гемоглобина относительно общего количества гемоглобина в крови. Мониторинг SpO2 во время сна имеет решающее значение для выявления потенциальных нарушений дыхания и обеспечения поддержания пользователем адекватного уровня кислорода в течение всей ночи. API поддерживает выборочные значения SpO2 ( oxygen-saturation ) и ежедневные сводки ( daily-oxygen-saturation ).

Целостный взгляд на здоровье сна и восстановление после него.

Хотя каждый показатель дает специфические сведения, они тесно взаимосвязаны и вместе дают целостное представление о восстановлении пользователя. Стадии сна (легкий, глубокий, REM) обеспечивают структурную основу отдыха, в то время как физиологические маркеры, такие как вариабельность сердечного ритма (ВСР) и насыщение крови кислородом (SpO2), указывают на то, как организм физически реагирует на этот отдых. Например, качественный сон с оптимальным уровнем глубокого сна часто коррелирует с более высокой ВСР, что свидетельствует об эффективном восстановлении вегетативной нервной системы.

Сочетание этих данных с показателями частоты дыхания и температуры во время сна позволяет приложениям выявлять потенциальные нарушения. Внезапный скачок частоты дыхания или отклонение температуры во время сна могут объяснить, почему пользователь мог проводить меньше времени в восстановительных фазах. Анализируя эти типы данных в совокупности, разработчики могут обеспечить всестороннюю оценку гигиены сна и долгосрочных тенденций в состоянии здоровья.

Руководящие принципы

При интеграции показателей сна в ваше приложение следуйте этим рекомендациям:

  • Детали сессии : Чтобы отобразить стадии сна пользователя (легкий сон, глубокий сон, REM-сон, бодрствование) и короткие периоды пробуждения, выполните запрос к типу данных sleep .
  • Ночные пробуждения : Чтобы отслеживать события пробуждения в полночь без использования необработанных данных с датчиков, проанализируйте интервалы стадий sleep и отфильтруйте элементы с типом стадии AWAKE (или wake для классических журналов сна).
  • Задержка засыпания и эффективность : используйте minutesToFallAsleep и формулу эффективности сна для анализа задержки засыпания. Обратите внимание, что значение minutesToFallAsleep заполняется при ручном редактировании или явной регистрации данных о сне.
  • Физиологический мониторинг : Для расширенного мониторинга состояния здоровья объедините данные о сеансах сна с физиологическими показателями и показателями восстановления, такими как respiratory-rate-sleep-summary , daily-sleep-temperature-derivations , daily-heart-rate-variability и daily-oxygen-saturation .
  • Сверка : Используйте операцию reconcile , чтобы убедиться, что совпадающие записи о сне с разных устройств (например, носимого устройства и датчика матраса) объединены в единую «основную» запись о сне.

Рассчитайте общее время, проведенное в фазе глубокого сна.

Чтобы рассчитать общее время, которое пользователь провел в стадии глубокого восстановительного сна за определенную ночь:

  1. Выполните запрос типа данных sleep за указанный временной диапазон.
  2. Пройдитесь по списку этапов и выявите интервалы, где type является DEEP .
  3. Рассчитайте продолжительность (время окончания - время начала) каждого интервала глубокого сна и сложите полученные значения.

Полученная сумма показывает общую физическую продолжительность глубокого сна за данный сеанс.