Тренування — формат експорту JSON
Документація структури тренувань в експортах JSON
Останнє оновлення: 31 жовтня 2026 р.
На цій сторінці
Експорти JSON зберігають тренування в масиві workouts.
Версії експорту
Health Auto Export підтримує дві версії експорту тренувань:
- Версія 2 (рекомендовано): Розширений формат із детальнішими метаданими та структурованими даними
- Версія 1 (застаріла): Старіший формат, збережений для сумісності з наявними робочими процесами
Тренування версії 2
Версія 2 включає такі обов’язкові поля та необов’язкові дані. Приклади використовують вимкнене Локалізувати одиниці; увімкнення може змінити мітки одиниць у серіях показників.
Базова структура
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"duration": 1800
}
Обов’язкові поля
id(String): Унікальний ідентифікатор тренуванняname(String): Назва типу тренування (напр. "Running", "Cycling", "Swimming")start(Date): Час початку тренування у форматіyyyy-MM-dd HH:mm:ss Zend(Date): Час кінця тренування у форматіyyyy-MM-dd HH:mm:ss Zduration(Number): Тривалість тренування в секундах
Необов’язкові поля
Необов’язкові поля залежать від доступних даних і вибору експорту:
Джерело запису
{
"source": {
"name": "Workout App",
"identifier": "com.example.workouts"
}
}
source(Object): Застосунок або пристрій, що записав тренування, з його назвою та ідентифікатором застосунку. Окремі значення показників мають окремі рядки джерела і можуть надходити з іншого застосунку або пристрою.
Інформація про розташування
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Одне з"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Чи виконувалося тренування в приміщенні
Енергія та інтенсивність
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "kcal/hr\u00b7kg"
}
}
activeEnergyBurned(Object): Активні калорії, спалені під час тренуванняtotalEnergy(Object): Загальні калорії (активні + спокій), спаленіintensity(Object): Значення метаболічного еквівалента завдання (MET)
Відстань і швидкість
{
"distance": {
"qty": 3.5,
"units": "mi"
}
}
distance(Object): Загальна пройдена відстаньspeed(Object): Середня швидкість, розрахована з відстані та тривалостіavgSpeed(Object): Середня швидкість протягом тренуванняmaxSpeed(Object): Максимальна досягнута швидкість
Кожен об’єкт включає qty і units.
Висота
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Загальний набір висотиelevationDown(Object): Загальна втрата висоти
Одиниці: "ft" (фути) або "m" (метри)
Дані середовища
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Температура навколишнього середовища під час тренуванняhumidity(Object): Відносна вологість у відсотках
Одиниці температури: "degF" (Фаренгейт) або "degC" (Цельсій)
Поля для плавання
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "count/min"
}
}
lapLength(Object): Довжина кожного колаstrokeStyle(String): Одне з:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Показник ефективності плаванняsalinity(String):"Fresh Water"або"Salt Water"totalSwimmingStrokeCount(Object): Загальна кількість гребківswimCadence(Object): Гребки за хвилину
Дані кроків і каденсу
{
"stepCount": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 5000,
"units": "count",
"source": "Apple Watch"
}
],
"stepCadence": {
"qty": 180,
"units": "count/min"
},
"flightsClimbed": {
"qty": 10,
"units": "count"
}
}
stepCount(Array): Масив вимірювань кількості кроків у часіstepCadence(Object): Кроки за хвилинуflightsClimbed(Object): Кількість пройдених прольотів сходів
Дані частоти серцевих скорочень
{
"heartRate": {
"min": {
"qty": 120,
"units": "count/min"
},
"avg": {
"qty": 150,
"units": "count/min"
},
"max": {
"qty": 175,
"units": "count/min"
}
},
"maxHeartRate": {
"qty": 175,
"units": "count/min"
},
"avgHeartRate": {
"qty": 150,
"units": "count/min"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"Min": 120,
"Avg": 150,
"Max": 175,
"units": "count/min",
"source": "Apple Watch"
}
],
"heartRateRecovery": [
{
"date": "2024-02-06 07:30:00 -0800",
"Min": 140,
"Avg": 145,
"Max": 150,
"units": "count/min",
"source": "Apple Watch"
}
]
}
heartRate(Object): Підсумок із min, avg і max частоти серцевих скорочень під час тренуванняmaxHeartRate(Object): Максимальна частота серцевих скорочень під час тренуванняavgHeartRate(Object): Середня частота серцевих скорочень під час тренуванняheartRateData(Array): Детальні вимірювання з тренування, що закінчуються, коли закінчується тренуванняheartRateRecovery(Array): Окремі вимірювання з двох хвилин одразу після закінчення тренування
Підсумкові частоти серцевих скорочень використовують записані значення тренування, коли доступні, з поверненням до значень частоти тренування. Експортовані значення включають вимірювання під час пауз, тому їхні піки та середні можуть відрізнятися від підсумку.
Масиви даних часових рядів
Багато показників можуть включатися як масиви часових рядів, коли увімкнено «Включити показники тренування»:
{
"activeEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 50,
"units": "kcal",
"source": "Apple Watch"
}
],
"basalEnergy": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "kcal",
"source": "Apple Watch"
}
],
"cyclingCadence": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 90,
"units": "count/min",
"source": "Apple Watch"
}
],
"cyclingDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.5,
"units": "mi",
"source": "Apple Watch"
}
],
"cyclingPower": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 200,
"units": "W",
"source": "Power Meter"
}
],
"cyclingSpeed": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 18,
"units": "mi/hr",
"source": "Apple Watch"
}
],
"swimDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 25,
"units": "yd",
"source": "Apple Watch"
}
],
"swimStroke": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 20,
"units": "count",
"source": "Apple Watch"
}
],
"walkingAndRunningDistance": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 0.25,
"units": "mi",
"source": "Apple Watch"
}
]
}
Структура QuantityData:
date(Date): Мітка часу вимірюванняqty(Number): Значення кількостіunits(String): Одиниця вимірюванняsource(String, необов’язково): Пристрій або застосунок джерела даних
Структура HeartRateData:
date(Date): Мітка часу вимірюванняMin(Number): Мінімальна частота серцевих скороченьAvg(Number): Середня частота серцевих скороченьMax(Number): Максимальна частота серцевих скороченьunits(String): Одиниця (count/minз вимкненим Локалізувати одиниці)source(String, необов’язково): Пристрій або застосунок джерела даних
Дані маршруту
Коли увімкнено «Включити дані маршруту» і тренування має GPS-дані:
{
"route": [
{
"latitude": 37.7749,
"longitude": -122.4194,
"altitude": 50.5,
"course": 45.0,
"courseAccuracy": 5.0,
"horizontalAccuracy": 10.0,
"verticalAccuracy": 15.0,
"timestamp": "2024-02-06 07:00:00 -0800",
"speed": 7.0,
"speedAccuracy": 0.5
}
]
}
Поля розташування:
latitude(Number): GPS-координата широтиlongitude(Number): GPS-координата довготиaltitude(Number): Висота в метрахcourse(Number): Напрямок руху в градусах (0–360)courseAccuracy(Number): Точність вимірювання курсу в градусахhorizontalAccuracy(Number): Горизонтальна точність позиції в метрахverticalAccuracy(Number): Вертикальна точність позиції в метрахtimestamp(Date): Час запису розташуванняspeed(Number): Швидкість у метрах за секундуspeedAccuracy(Number): Точність вимірювання швидкості в м/с
Метадані
{
"metadata": {
"customField": {
"label": "value",
"quantity": 123
},
"anotherField": [
1,
2,
3
]
}
}
metadata(Object): Додаткові власні метадані, пов’язані з тренуванням
Події, активності та спліти
Експорти JSON і Markdown версії 2 можуть включати events, segments, laps і activities, записані застосунком тренувань. Вони залишаються доступними, коли Включити показники тренування вимкнено. CSV і GPX не включають ці записи.
З увімкненим Включити показники тренування і вибраними відповідними показниками інтервали також можуть включати відстань, активну енергію, підсумки частоти серцевих скорочень і темп або швидкість активного часу. Значення розрізняють записані вимірювання та оцінки; недоступні значення пропускаються.
З вибраною відстанню splits можуть включати оцінені кілометрові та мильові спліти. Вони можуть відрізнятися від сплітів записуючого застосунку, а кінцевий спліт позначається частковим, коли коротший за цільову відстань. Відсутні значення відстані або непідтримувані типи тренувань можуть запобігти розрахунку сплітів.
Показники зусилля тренування
Експорти JSON і Markdown версії 2 можуть включати вибрані значення Оцінка зусиль під час тренування (effortScore) і Орієнтовна оцінка зусиль під час тренування (estimatedEffortScore). Кожне є об’єктом із qty і units: "appleEffortScore".
Показники потребують iOS 18 або новішої та доступу до відповідних даних в Apple Health. Показники всього тренування та активності окремі. Вони незалежні від Групування часу та Включити показники тренування; CSV їх не включає.
У Огляд → Тренування відкрийте аркуш експорту списку або параметри експорту версії 2 тренування, потім використайте Вибрати поля експорту, щоб вибрати показники зусилля перед експортом.
Групування часу показників тренування
Під час використання версії експорту 2 і увімкненого «Включити показники тренування» ви можете керувати деталізацією даних часових рядів:
- Хвилини: Групує показники тренування за хвилинами годинника. Перша та остання хвилина можуть включати кілька секунд безпосередньо перед початком або після кінця тренування.
- Секунди: Групує показники тренування за секундами годинника, де кожна мітка часу позначає початок своєї секунди. Перша та остання секунда можуть включати частку секунди безпосередньо поза тренуванням. Файли більші, ніж із групуванням за хвилинами.
Активна та спокійна енергія використовують ті самі комбіновані підсумки, що й інші показники тренування в кожній групі часу. Значення з кількох пристроїв або застосунків включаються разом.
Тренування версії 1 (застаріла)
Версія 1 використовує простішу структуру. Для нових експортів рекомендується версія 2.
Структура версії 1
{
"name": "Running",
"start": "2024-02-06 07:00:00 -0800",
"end": "2024-02-06 07:30:00 -0800",
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"activeEnergy": {
"qty": 350,
"units": "kcal"
},
"distance": {
"qty": 3.5,
"units": "mi"
},
"heartRateData": [
{
"date": "2024-02-06 07:00:00 -0800",
"qty": 150,
"units": "bpm"
}
],
"route": [
{
"lat": 37.7749,
"lon": -122.4194,
"altitude": 50.5,
"timestamp": "2024-02-06 07:00:00 -0800"
}
]
}