Показники здоров’я — формат експорту 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 Zsource(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): Тривалість основного сну в годинах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"(фоновий інсулін)