Workouts - Format Ekspor JSON

Dokumentasi struktur workouts dalam ekspor JSON

Last updated: March 31, 2026

Di halaman ini

Workouts

Data workout mencakup semua sesi latihan yang dicatat Apple Health seperti lari, bersepeda, renang, latihan kekuatan, dan lainnya. Dalam ekspor JSON, workouts disimpan di array workouts.

Versi Ekspor

Health Auto Export menyediakan dua versi ekspor workout:

  • Versi 2 (disarankan): Format terbaru dengan metadata lebih rinci dan struktur terorganisir
  • Versi 1 (legacy): Format lama untuk kompatibilitas workflow eksisting

Workouts Versi 2

Versi 2 memberikan struktur menyeluruh dengan field opsional yang hanya muncul saat data tersedia.

Struktur Dasar

{
  "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
}

Field Wajib

  • id (String): Identitas unik workout
  • name (String): Jenis workout (misal "Running", "Cycling", "Swimming")
  • start (Date): Waktu mulai workout (yyyy-MM-dd HH:mm:ss Z)
  • end (Date): Waktu selesai workout (yyyy-MM-dd HH:mm:ss Z)
  • duration (Number): Durasi dalam detik

Field Opsional

Field berikut hanya ada bila data tersedia.

Informasi Lokasi

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Salah satu "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Menunjukkan latihan dilakukan di dalam ruangan

Energi dan Intensitas

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned: Kalori aktif yang dibakar
  • totalEnergy: Kalori total (aktif + basal)
  • intensity: Nilai MET (Metabolic Equivalent of Task)

Jarak dan Kecepatan

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  },
  "speed": {
    "qty": 7.0,
    "units": "mph"
  },
  "avgSpeed": {
    "qty": 7.0,
    "units": "mph"
  },
  "maxSpeed": {
    "qty": 8.5,
    "units": "mph"
  }
}
  • distance: Total jarak
  • speed: Kecepatan saat ini atau rata-rata
  • avgSpeed: Kecepatan rata-rata workout
  • maxSpeed: Kecepatan maksimum

Satuan:

  • Jarak: "mi" (mil) atau "km" (kilometer)
  • Kecepatan: "mph" atau "kmph"

Elevasi

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp: Kenaikan elevasi total
  • elevationDown: Penurunan elevasi total

Satuan: "ft" (kaki) atau "m" (meter)

Data Lingkungan

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature: Suhu sekitar
  • humidity: Persentase kelembapan

Satuan suhu: "degF" atau "degC"

Field Khusus Renang

{
  "lapLength": {
    "qty": 0.025,
    "units": "mi"
  },
  "strokeStyle": "Freestyle",
  "swolfScore": 45,
  "salinity": "Fresh Water",
  "totalSwimmingStrokeCount": {
    "qty": 1200,
    "units": "count"
  },
  "swimCadence": {
    "qty": 30,
    "units": "spm"
  }
}
  • lapLength: Panjang satu putaran
  • strokeStyle: Salah satu "Backstroke", "Breaststroke", "Butterfly", "Freestyle", "Mixed", "Kickboard", "Unknown"
  • swolfScore: Skor efisiensi renang
  • salinity: "Fresh Water" atau "Salt Water"
  • totalSwimmingStrokeCount: Jumlah pukulan total
  • swimCadence: Jumlah pukulan per menit

Data Langkah dan Cadence

{
  "stepCount": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "qty": 5000,
      "units": "count",
      "source": "Apple Watch"
    }
  ],
  "stepCadence": {
    "qty": 180,
    "units": "spm"
  },
  "flightsClimbed": {
    "qty": 10,
    "units": "count"
  }
}
  • stepCount: Array pengukuran langkah dari waktu ke waktu
  • stepCadence: Langkah per menit
  • flightsClimbed: Jumlah anak tangga yang dinaiki

Data Detak Jantung

{
  "heartRate": {
    "min": {
      "qty": 120,
      "units": "bpm"
    },
    "avg": {
      "qty": 150,
      "units": "bpm"
    },
    "max": {
      "qty": 175,
      "units": "bpm"
    }
  },
  "maxHeartRate": {
    "qty": 175,
    "units": "bpm"
  },
  "avgHeartRate": {
    "qty": 150,
    "units": "bpm"
  },
  "heartRateData": [
    {
      "date": "2024-02-06 07:00:00 -0800",
      "Min": 120,
      "Avg": 150,
      "Max": 175,
      "units": "bpm",
      "source": "Apple Watch"
    }
  ],
  "heartRateRecovery": [
    {
      "date": "2024-02-06 07:30:00 -0800",
      "Min": 140,
      "Avg": 145,
      "Max": 150,
      "units": "bpm",
      "source": "Apple Watch"
    }
  ]
}
  • heartRate: Ringkasan min, avg, max
  • maxHeartRate dan avgHeartRate: Nilai maksimum/rata-rata
  • heartRateData: Rangkaian detak jantung sepanjang workout
  • heartRateRecovery: Data pemulihan setelah workout

Array Time-Series

Ketika opsi "Include Workout Metrics" aktif, berbagai metrik dapat disertakan sebagai deret waktu:

{
  "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": "rpm",
      "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": "mph",
      "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"
    }
  ]
}

Struktur QuantityData:

  • date: Waktu pengukuran
  • qty: Nilai kuantitas
  • units: Satuan
  • source (opsional): Sumber perangkat/aplikasi

Struktur HeartRateData:

  • date: Waktu pengukuran
  • Min, Avg, Max: Nilai detak jantung
  • units: Biasanya "bpm"
  • source (opsional): Sumber data

Data Rute

Jika opsi "Include Route Data" aktif dan workout memiliki 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
    }
  ]
}

Field lokasi:

  • latitude, longitude: Koordinat GPS
  • altitude: Elevasi (meter)
  • course: Arah (derajat 0-360)
  • courseAccuracy: Akurasi arah (derajat)
  • horizontalAccuracy, verticalAccuracy: Akurasi posisi (meter)
  • timestamp: Waktu pencatatan
  • speed: Kecepatan (m/s)
  • speedAccuracy: Akurasi kecepatan (m/s)

Metadata

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata: Objek berisi metadata kustom tambahan

Workouts Versi 1 (Legacy)

Versi 1 menggunakan struktur lebih sederhana. Untuk ekspor baru, gunakan Versi 2.

Struktur Versi 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": "count"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

Pengelompokan Metrik Workout

Saat menggunakan Export Version 2 dan opsi "Include Workout Metrics" aktif, Anda dapat mengatur tingkat granularitas deret waktu:

  • Minutes: Mengelompokkan per menit
  • Seconds: Mengelompokkan per detik (lebih detail, ukuran file lebih besar)

Tips

  • Include Route Data: Aktifkan untuk mendapatkan rute GPS workout luar ruang
  • Include Workout Metrics: Aktifkan guna memperoleh deret waktu detail seperti detak jantung, power, dan cadence
  • Export Version: Gunakan Versi 2 untuk struktur paling lengkap
  • Ekspor GPX: Data rute juga dapat diekspor sebagai file GPX untuk aplikasi peta

Dokumentasi Terkait