Справочный центр HealthyApps
Русский
Справочный центр
Основной сайт ↗

Поиск по справке

Метрики здоровья - формат экспорта JSON

Документация по структуре метрик здоровья в экспортах JSON

Последнее обновление: 31 октября 2026 г.

На этой странице
Формат имени метрики
Структура Структура Общие поля
Специальные форматы метрик Специальные форматы метрик Артериальное давлениеПульсВариабельность сердечного ритмаАнализ снаГлюкоза кровиПитаниеСексуальная активностьМытьё рукЧистка зубовВведение инсулина
Связанная документация

Экспорты JSON хранят метрики здоровья в массиве metrics.

Формат имени метрики

Все имена метрик в экспортах JSON используют формат snake_case (строчные буквы с подчёркиваниями). Например:

  • "Step Count" становится "step_count"
  • "Blood Pressure" становится "blood_pressure"
  • "Heart Rate" становится "heart_rate"
  • "Walking + Running Distance" становится "walking_running_distance"

Структура

Массив metrics содержит объекты, каждый из которых представляет конкретный тип метрики здоровья. Большинство метрик здоровья следуют общей структуре:

{
  "name": "step_count",
  "units": "count",
  "data": [
    {
      "qty": 8500,
      "date": "2024-02-06 14:30:00 -0800",
      "source": "Apple Watch"
    }
  ]
}

Общие поля

  • name (String): имя метрики здоровья в формате snake_case (например, "step_count", "heart_rate", "active_energy")
  • units (String): единица измерения (например, "count", "count/min", "kcal")
  • data (Array): массив точек данных, каждая содержит:
    • qty (Number): значение количества
    • date (Date): метка времени в формате yyyy-MM-dd HH:mm:ss Z
    • source (String, когда доступно): приложение или устройство, записавшее выборку

Специальные форматы метрик

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

Артериальное давление

Показания артериального давления включают систолическое и диастолическое значения:

{
  "name": "blood_pressure",
  "units": "mmHg",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "start": "2024-02-06 14:30:00 -0800",
      "end": "2024-02-06 14:30:00 -0800",
      "systolic": 120,
      "diastolic": 80,
      "source": "Health"
    }
  ]
}

Поля:

  • systolic (Number): систолическое (верхнее) показание артериального давления. Сводные экспорты используют среднее показаний во временной группе.
  • diastolic (Number): диастолическое (нижнее) показание артериального давления. Сводные экспорты используют среднее показаний во временной группе.

Пульс

Данные пульса включают минимальные, средние и максимальные значения:

{
  "name": "heart_rate",
  "units": "count/min",
  "data": [
    {
      "date": "2024-02-06 14:30:00 -0800",
      "Min": 65,
      "Avg": 72,
      "Max": 85,
      "source": "Apple Watch"
    }
  ]
}

Поля:

  • Min (Number): минимальный пульс за период измерения
  • Avg (Number): средний пульс за период измерения
  • Max (Number): максимальный пульс за период измерения

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

При выключенном Суммировать данные экспорты JSON вариабельности сердечного ритма (SDNN) могут включать доступные показания от удара к удару. Для них требуется доступ на чтение Серия сердечного ритма в Apple Health.

Сводные экспорты, экспорты CSV и Recovery HRV не включают показания от удара к удару.

Анализ сна

Структура данных сна зависит от того, включён или выключен Суммировать данные.

Суммировать данные включён

При включённом Суммировать данные данные сна сводятся по дням. Длительности одной и той же стадии суммируются. Общий сон — сумма asleep, core, deep и REM. JSON сохраняет каждый день. В CSV более крупная временная группа показывает последний день в этой группе:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "date": "2024-02-06 00:00:00 -0800",
      "totalSleep": 7.5,
      "asleep": 0.5,
      "core": 3.5,
      "deep": 1.5,
      "rem": 2.0,
      "sleepStart": "2024-02-05 23:00:00 -0800",
      "sleepEnd": "2024-02-06 06:30:00 -0800",
      "inBed": 8.0,
      "inBedStart": "2024-02-05 22:45:00 -0800",
      "inBedEnd": "2024-02-06 06:45:00 -0800",
      "awake": 0.0,
      "source": "Apple Watch"
    }
  ]
}

Поля:

  • totalSleep (Number): общее время сна в часах
  • asleep (Number): время сна без записанной стадии сна, в часах
  • core (Number): длительность core-сна в часах
  • deep (Number): длительность глубокого сна в часах
  • rem (Number): длительность REM-сна в часах
  • awake (Number): время бодрствования в часах
  • sleepStart (Date): когда сон фактически начался
  • sleepEnd (Date): когда сон фактически закончился
  • inBed (Number): общее время в постели в часах
  • inBedStart (Date): когда вы легли в постель
  • inBedEnd (Date): когда вы встали с постели

Суммировать данные выключен

При выключенном Суммировать данные включаются отдельные сегменты сна:

{
  "name": "sleep_analysis",
  "units": "hr",
  "data": [
    {
      "date": "2024-02-05 23:00:00 -0800",
      "start": "2024-02-05 23:00:00 -0800",
      "end": "2024-02-05 23:30:00 -0800",
      "startDate": "2024-02-05 23:00:00 -0800",
      "endDate": "2024-02-05 23:30:00 -0800",
      "qty": 0.5,
      "value": "Core",
      "source": "Apple Watch"
    }
  ]
}

Поля:

  • date, start, startDate (Date): время начала сегмента сна
  • end, endDate (Date): время конца сегмента сна
  • source (String): приложение или устройство, записавшее сегмент
  • qty (Number): длительность сегмента в часах
  • value (String): состояние сна — одно из:
    • "Awake"
    • "Asleep" (некатегоризированная фаза сна)
    • "In Bed"
    • "Core"
    • "REM"
    • "Deep"
    • "Unspecified"

Примечание: "Asleep" означает некатегоризированную фазу сна (а не общее время сна). Это может произойти, если источник данных не поддерживает отслеживание фаз сна.

Глюкоза крови

Показания глюкозы крови включают сведения о времени приёма пищи:

{
  "name": "blood_glucose",
  "units": "mg/dL",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "start": "2024-02-06 08:00:00 -0800",
      "end": "2024-02-06 08:00:00 -0800",
      "qty": 95,
      "mealTime": "Before Meal",
      "source": "Health"
    }
  ]
}

Поля:

  • qty (Number): уровень глюкозы крови
  • mealTime (String): одно из:
    • "Before Meal"
    • "After Meal"
    • "Unspecified"

Питание

Когда Суммировать данные выключен, отдельные выборки количества питания (например, Dietary Energy или Carbohydrates) могут включать сведения о еде, записанные в Apple Health. Например:

{
  "name": "dietary_energy",
  "units": "kcal",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "start": "2024-02-06 08:00:00 -0800",
      "end": "2024-02-06 08:00:00 -0800",
      "qty": 240,
      "source": "Lose It!",
      "foodType": "Boneless, Skinless Grilled Chicken Breast"
    }
  ]
}

Поля:

  • qty (Number): количество нутриента для выборки
  • foodType (String, необязательно): имя еды, записанное приложением-источником, когда доступно

При включённом Суммировать данные итоги питания не включают foodType.

Сексуальная активность

Записи сексуальной активности отслеживают использование защиты:

{
  "name": "sexual_activity",
  "units": "count",
  "data": [
    {
      "date": "2024-02-06 00:00:00 -0800",
      "Unspecified": 0,
      "Protection Used": 1,
      "Protection Not Used": 0,
      "source": "Health"
    }
  ]
}

Поля:

  • Unspecified (Number): число событий в тот день, когда статус защиты неизвестен
  • Protection Used (Number): число событий в тот день, когда защита использовалась
  • Protection Not Used (Number): число событий в тот день, когда защита не использовалась

Сводные экспорты считают каждый календарный день. JSON сохраняет каждый день. В CSV более крупная временная группа показывает последний день в этой группе.

Мытьё рук

События мытья рук отслеживают статус завершения:

{
  "name": "handwashing",
  "units": "s",
  "data": [
    {
      "date": "2024-02-06 12:00:00 -0800",
      "start": "2024-02-06 12:00:00 -0800",
      "end": "2024-02-06 12:00:25 -0800",
      "qty": 25,
      "value": "Completed",
      "source": "Apple Watch"
    }
  ]
}

Поля:

  • qty (Number): длительность в секундах. Сводные экспорты используют среднюю длительность во временной группе.
  • value (String): "Completed", когда сессия длится более 20 секунд, иначе "Incomplete"

Чистка зубов

События чистки зубов отслеживают статус завершения:

{
  "name": "toothbrushing",
  "units": "s",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "start": "2024-02-06 08:00:00 -0800",
      "end": "2024-02-06 08:02:10 -0800",
      "qty": 130,
      "value": "Completed",
      "source": "Health"
    }
  ]
}

Поля:

  • qty (Number): длительность в секундах. Сводные экспорты используют среднюю длительность во временной группе.
  • value (String): "Completed", когда сессия длится не менее 2 минут, иначе "Incomplete"

Введение инсулина

Записи введения инсулина включают причину введения:

{
  "name": "insulin_delivery",
  "units": "IU",
  "data": [
    {
      "date": "2024-02-06 08:00:00 -0800",
      "start": "2024-02-06 08:00:00 -0800",
      "end": "2024-02-06 08:00:00 -0800",
      "qty": 5,
      "reason": "Bolus",
      "source": "Health"
    }
  ]
}

Поля:

  • qty (Number): количество введённого инсулина. Сводные экспорты суммируют количества во временной группе.
  • reason (String): одно из:
    • "Bolus" (инсулин на приём пищи)
    • "Basal" (фоновый инсулин)

Связанная документация