Метрики здоровья — формат JSON-экспорта
Описание структуры метрик здоровья в JSON-экспорте
Last updated: April 5, 2026
На этой странице
Метрики здоровья
Метрики здоровья — это различные измерения и данные, собираемые приложением Apple «Здоровье» и подключёнными устройствами. В 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"
}
]
}
Общие поля
name(String): имя метрики здоровья в формате snake_case (например,"step_count","heart_rate","active_energy")units(String): единица измерения (например,"count","bpm","kcal")data(Array): массив точек данных; каждая точка содержит:qty(Number): числовое значениеdate(Date): метка времени в форматеyyyy-MM-dd HH:mm:ss Z
Особые форматы метрик
У части метрик здоровья структура отличается от общей:
Артериальное давление
Показания артериального давления включают систолическое и диастолическое значения:
{
"name": "blood_pressure",
"units": "mmHg",
"data": [
{
"date": "2024-02-06 14:30:00 -0800",
"systolic": 120,
"diastolic": 80
}
]
}
Поля:
systolic(Number): систолическое (верхнее) артериальное давлениеdiastolic(Number): диастолическое (нижнее) артериальное давление
Пульс
Данные о пульсе включают минимальное, среднее и максимальное значения:
{
"name": "heart_rate",
"units": "bpm",
"data": [
{
"date": "2024-02-06 14:30:00 -0800",
"Min": 65,
"Avg": 72,
"Max": 85
}
]
}
Поля:
Min(Number): минимальный пульс за период измеренияAvg(Number): средний пульс за период измеренияMax(Number): максимальный пульс за период измерения
Анализ сна
Структура данных о сне зависит от того, включена ли агрегация данных в настройках экспорта.
Агрегированные данные о сне
При включённой агрегации данные о сне суммируются по дням:
{
"name": "sleep_analysis",
"units": "hr",
"data": [
{
"date": "2024-02-06",
"totalSleep": 7.5,
"asleep": 7.0,
"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"
}
]
}
Поля:
totalSleep(Number): общее время сна в часахasleep(Number): общее время в любом состоянии снаcore(Number): длительность основного (core) сна в часахdeep(Number): длительность глубокого сна в часахrem(Number): длительность фазы REM в часахsleepStart(Date): фактическое начало снаsleepEnd(Date): фактическое окончание снаinBed(Number): общее время в кровати в часахinBedStart(Date): время, когда вы легли в кроватьinBedEnd(Date): время, когда вы встали с кровати
Неагрегированные данные о сне
При отключённой агрегации включаются отдельные сегменты сна:
{
"name": "sleep_analysis",
"units": "hr",
"data": [
{
"startDate": "2024-02-05 23:00:00 -0800",
"endDate": "2024-02-05 23:30:00 -0800",
"qty": 0.5,
"value": "Core",
"deep": 0.0,
"rem": 0.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"
}
]
}
Поля:
startDate(Date): начало сегмента снаendDate(Date): конец сегмента сна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",
"qty": 95,
"mealTime": "Before Meal"
}
]
}
Поля:
qty(Number): уровень глюкозы в кровиmealTime(String): одно из:"Before Meal""After Meal""Unspecified"
Сексуальная активность
Записи о сексуальной активности отражают использование защиты:
{
"name": "sexual_activity",
"units": "count",
"data": [
{
"date": "2024-02-06 20:00:00 -0800",
"Unspecified": 0,
"Protection Used": 1,
"Protection Not Used": 0
}
]
}
Поля:
Unspecified(Number): число случаев, когда статус защиты неизвестенProtection Used(Number): число случаев, когда защита использоваласьProtection Not Used(Number): число случаев, когда защита не использовалась
Мытьё рук
События мытья рук фиксируют завершённость:
{
"name": "handwashing",
"units": "count",
"data": [
{
"date": "2024-02-06 12:00:00 -0800",
"qty": 1,
"value": "Complete"
}
]
}
Поля:
qty(Number): число событий мытья рукvalue(String): одно из:"Complete""Incomplete"
Чистка зубов
События чистки зубов фиксируют завершённость:
{
"name": "toothbrushing",
"units": "count",
"data": [
{
"date": "2024-02-06 08:00:00 -0800",
"qty": 1,
"value": "Complete"
}
]
}
Поля:
qty(Number): число событий чистки зубовvalue(String): одно из:"Complete""Incomplete"
Введение инсулина
Записи о введении инсулина включают причину введения:
{
"name": "insulin_delivery",
"units": "IU",
"data": [
{
"date": "2024-02-06 08:00:00 -0800",
"qty": 5,
"reason": "Bolus"
}
]
}
Поля:
qty(Number): объём введённого инсулинаreason(String): одно из:"Bolus"(инсулин на приём пищи)"Basal"(базальный инсулин)
Распространённые метрики здоровья
К часто экспортируемым метрикам относятся (все имена — в формате snake_case):
- step_count — количество шагов за день
- walking_running_distance — пройденная дистанция
- active_energy — калории, сожжённые за счёт активности
- resting_heart_rate — пульс в покое
- heart_rate — измерения пульса
- respiratory_rate — частота дыхания
- body_temperature — температура тела
- blood_oxygen_saturation — уровень SpO₂
- weight_&_body_mass — масса тела
- body_mass_index — рассчитанный ИМТ
- height — рост
- dietary_water — потребление жидкости
- mindful_minutes — время медитации или осознанности
Советы
- Группировка по времени: в настройках экспорта задайте группировку по времени, чтобы управлять агрегацией данных (по секунде, минуте, часу, дню и т. д.).
- Агрегация данных: включите агрегацию, чтобы суммировать сон и другие метрики по дням — так проще анализировать.
- Выборочный экспорт: можно выбрать конкретные метрики здоровья для экспорта, чтобы уменьшить размер файла и время обработки.