Центр допомоги HealthyApps
Українська
Центр допомоги
Головний сайт ↗

Пошук у довідці

Тренування — формат експорту JSON

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

Останнє оновлення: 31 жовтня 2026 р.

На цій сторінці
Версії експорту
Тренування версії 2 Тренування версії 2 Базова структураОбов’язкові поляНеобов’язкові поляГрупування часу показників тренування
Тренування версії 1 (застаріла) Тренування версії 1 (застаріла) Структура версії 1
Пов’язана документація

Експорти 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 Z
  • end (Date): Час кінця тренування у форматі yyyy-MM-dd HH:mm:ss Z
  • duration (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"
    }
  ]
}

Пов’язана документація