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 workoutname(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 dibakartotalEnergy: 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 jarakspeed: Kecepatan saat ini atau rata-rataavgSpeed: Kecepatan rata-rata workoutmaxSpeed: 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 totalelevationDown: Penurunan elevasi total
Satuan: "ft" (kaki) atau "m" (meter)
Data Lingkungan
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature: Suhu sekitarhumidity: 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 putaranstrokeStyle: Salah satu"Backstroke","Breaststroke","Butterfly","Freestyle","Mixed","Kickboard","Unknown"swolfScore: Skor efisiensi renangsalinity:"Fresh Water"atau"Salt Water"totalSwimmingStrokeCount: Jumlah pukulan totalswimCadence: 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 waktustepCadence: Langkah per menitflightsClimbed: 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, maxmaxHeartRatedanavgHeartRate: Nilai maksimum/rata-rataheartRateData: Rangkaian detak jantung sepanjang workoutheartRateRecovery: 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 pengukuranqty: Nilai kuantitasunits: Satuansource(opsional): Sumber perangkat/aplikasi
Struktur HeartRateData:
date: Waktu pengukuranMin,Avg,Max: Nilai detak jantungunits: 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 GPSaltitude: Elevasi (meter)course: Arah (derajat 0-360)courseAccuracy: Akurasi arah (derajat)horizontalAccuracy,verticalAccuracy: Akurasi posisi (meter)timestamp: Waktu pencatatanspeed: 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