Antrenamente — format export JSON
Documentație pentru structura antrenamentelor în exporturile JSON
Last updated: February 6, 2026
Pe această pagină
Antrenamente
Datele despre antrenamente includ toate sesiunile de exerciții înregistrate în Apple Health, cum ar fi alergare, ciclism, înot, antrenament de forță și altele. În exporturile JSON, antrenamentele sunt stocate în tabloul workouts.
Versiuni export
Health Auto Export acceptă două versiuni de export pentru antrenamente:
- Versiunea 2 (recomandată): format îmbunătățit, cu metadate mai detaliate și date structurate
- Versiunea 1 (moștenită): format mai vechi, păstrat pentru compatibilitate cu fluxurile existente
Antrenamente versiunea 2
Versiunea 2 oferă o structură cuprinzătoare, cu câmpuri opționale care sunt incluse doar când există date.
Structură de bază
{
"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
}
Câmpuri obligatorii
id(String): identificator unic al antrenamentuluiname(String): denumirea tipului de antrenament (ex.: „Running”, „Cycling”, „Swimming”)start(Date): ora de început a antrenamentului, în formatyyyy-MM-dd HH:mm:ss Zend(Date): ora de sfârșit a antrenamentului, în formatyyyy-MM-dd HH:mm:ss Zduration(Number): durata antrenamentului, în secunde
Câmpuri opționale
Următoarele câmpuri sunt incluse doar când există date:
Informații despre locație
{
"location": "Outdoor",
"isIndoor": false
}
location(String): una dintre valorile"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): indică dacă antrenamentul a avut loc în interior
Energie și intensitate
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "MET"
}
}
activeEnergyBurned(Object): calorii active arse în timpul antrenamentuluitotalEnergy(Object): calorii totale (active + de repaus) arseintensity(Object): valoare MET (echivalent metabolic al sarcinii)
Distanță și viteză
{
"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(Object): distanța totală parcursăspeed(Object): viteza curentă sau medieavgSpeed(Object): viteza medie pe durata antrenamentuluimaxSpeed(Object): viteza maximă atinsă
Unități:
- Distanță:
"mi"(mile) sau"km"(kilometri) - Viteză:
"mph"(mile pe oră) sau"kmph"(kilometri pe oră)
Altitudine
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): creștere cumulată de altitudineelevationDown(Object): pierdere cumulată de altitudine
Unități: "ft" (picioare) sau "m" (metri)
Date despre mediu
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): temperatura ambientală în timpul antrenamentuluihumidity(Object): umiditate relativă, procent
Unități de temperatură: "degF" (Fahrenheit) sau "degC" (Celsius)
Câmpuri specifice înotului
{
"lapLength": {
"qty": 0.025,
"units": "mi"
},
"strokeStyle": "Freestyle",
"swolfScore": 45,
"salinity": "Fresh Water",
"totalSwimmingStrokeCount": {
"qty": 1200,
"units": "count"
},
"swimCadence": {
"qty": 30,
"units": "spm"
}
}
lapLength(Object): lungimea fiecărei turestrokeStyle(String): una dintre valorile:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): scor de eficiență la înot (SWOLF)salinity(String):"Fresh Water"sau"Salt Water"totalSwimmingStrokeCount(Object): număr total de brațeswimCadence(Object): brațe pe minut
Pași și cadență
{
"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): tablou de măsurători ale numărului de pași în timpstepCadence(Object): pași pe minutflightsClimbed(Object): număr de etaje urcate
Date despre ritm cardiac
{
"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(Object): rezumat cu ritm cardiac minim, mediu și maximmaxHeartRate(Object): ritm cardiac maxim în timpul antrenamentuluiavgHeartRate(Object): ritm cardiac mediu în timpul antrenamentuluiheartRateData(Array): măsurători detaliate ale ritmului cardiac pe durata antrenamentuluiheartRateRecovery(Array): măsurători ale ritmului cardiac în perioada de recuperare
Tablouri de date serie temporală
Multe metrici pot fi incluse ca tablouri serie temporală când este activată opțiunea „Include Workout Metrics”:
{
"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"
}
]
}
Structură QuantityData:
date(Date): marcaj temporal al măsurătoriiqty(Number): valoarea cantitățiiunits(String): unitatea de măsurăsource(String, opțional): sursa datelor (dispozitiv sau aplicație)
Structură HeartRateData:
date(Date): marcaj temporal al măsurătoriiMin(Number): ritm cardiac minimAvg(Number): ritm cardiac mediuMax(Number): ritm cardiac maximunits(String): unitatea (de obicei"bpm")source(String, opțional): sursa datelor (dispozitiv sau aplicație)
Date despre traseu
Când este activată opțiunea „Include Route Data” și antrenamentul are date 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
}
]
}
Câmpuri de locație:
latitude(Number): coordonată GPS latitudinelongitude(Number): coordonată GPS longitudinealtitude(Number): altitudine, în metricourse(Number): direcția de deplasare în grade (0–360)courseAccuracy(Number): precizia măsurării direcției, în gradehorizontalAccuracy(Number): precizia poziției orizontale, în metriverticalAccuracy(Number): precizia poziției verticale, în metritimestamp(Date): momentul în care a fost înregistrată locațiaspeed(Number): viteza, în metri pe secundăspeedAccuracy(Number): precizia măsurării vitezei, în m/s
Metadate
{
"metadata": {
"customField": "value",
"anotherField": 123
}
}
metadata(Object): metadate personalizate suplimentare asociate antrenamentului
Antrenamente versiunea 1 (moștenită)
Versiunea 1 folosește o structură mai simplă. Pentru exporturi noi, se recomandă versiunea 2.
Structura versiunii 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"
}
]
}
Grupare temporală a metricilor de antrenament
Când folosiți versiunea de export 2 și este activată opțiunea „Include Workout Metrics”, puteți controla granularitatea datelor serie temporală:
- Minute: grupează metricile antrenamentului pe intervale de un minut
- Secunde: grupează metricile antrenamentului pe intervale de o secundă (mai detaliat, fișier mai mare)
Sfaturi
- Include Route Data: activați această opțiune pentru a obține informații despre traseul GPS la antrenamentele în aer liber
- Include Workout Metrics: activați-o pentru date serie temporală detaliate pentru metrici precum ritm cardiac, putere și cadență
- Export Version: folosiți versiunea 2 pentru cea mai cuprinzătoare structură de date
- GPX Export: datele de traseu pot fi exportate și ca fișiere GPX separate, pentru utilizare în aplicații de cartografiere