Treninzi - format izvoza JSON
Dokumentacija strukture treninga u JSON izvozima
Posljednje ažuriranje: 31. listopada 2026.
Na ovoj stranici
JSON izvozi pohranjuju treninge u polje workouts.
Verzije izvoza
Health Auto Export podržava dvije verzije izvoza treninga:
- Verzija 2 (Preporučeno): Poboljšani format s detaljnijim metapodacima i strukturiranim podacima
- Verzija 1 (Legacy): Stariji format zadržan radi kompatibilnosti s postojećim tijekovima rada
Treninzi Verzija 2
Verzija 2 uključuje sljedeća obavezna polja i opcionalne podatke. Primjeri su s isključenim Lokaliziraj jedinice; uključivanje može promijeniti oznake jedinica u metrijskim nizovima.
Osnovna struktura
{
"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
}
Obavezna polja
id(String): Jedinstveni identifikator treninganame(String): Naziv tipa treninga (npr. "Running", "Cycling", "Swimming")start(Date): Vrijeme početka treninga u formatuyyyy-MM-dd HH:mm:ss Zend(Date): Vrijeme kraja treninga u formatuyyyy-MM-dd HH:mm:ss Zduration(Number): Trajanje treninga u sekundama
Opcionalna polja
Opcionalna polja ovise o dostupnim podacima i vašim odabirima izvoza:
Izvor snimanja
{
"source": {
"name": "Workout App",
"identifier": "com.example.workouts"
}
}
source(Object): Aplikacija ili uređaj koji je snimio trening; s nazivom i identifikatorom aplikacije. Pojedinačna očitanja metrika imaju zasebne nizove izvora i mogu dolaziti iz druge aplikacije ili uređaja.
Informacije o lokaciji
{
"location": "Outdoor",
"isIndoor": false
}
location(String): Jedno od"Indoor","Outdoor","Pool","Open Water"isIndoor(Boolean): Je li trening izveden u zatvorenom prostoru
Energija i intenzitet
{
"activeEnergyBurned": {
"qty": 350,
"units": "kcal"
},
"totalEnergy": {
"qty": 450,
"units": "kcal"
},
"intensity": {
"qty": 8.5,
"units": "kcal/hr\u00b7kg"
}
}
activeEnergyBurned(Object): Aktivne kalorije potrošene tijekom treningatotalEnergy(Object): Ukupne potrošene kalorije (aktivne + mirovanje)intensity(Object): Vrijednost metaboličkog ekvivalenta zadatka (MET)
Udaljenost i brzina
{
"distance": {
"qty": 3.5,
"units": "mi"
}
}
distance(Object): Ukupna prijeđena udaljenostspeed(Object): Prosječna brzina izračunata iz udaljenosti i trajanjaavgSpeed(Object): Prosječna brzina tijekom treningamaxSpeed(Object): Postignuta maksimalna brzina
Svaki objekt sadrži qty i units.
Elevacija
{
"elevationUp": {
"qty": 500,
"units": "ft"
},
"elevationDown": {
"qty": 450,
"units": "ft"
}
}
elevationUp(Object): Ukupno stečeno uzvišenjeelevationDown(Object): Ukupno izgubljeno uzvišenje
Jedinice: "ft" (stope) ili "m" (metri)
Okolišni podaci
{
"temperature": {
"qty": 72,
"units": "degF"
},
"humidity": {
"qty": 65,
"units": "%"
}
}
temperature(Object): Temperatura okoline tijekom treningahumidity(Object): Relativna vlažnost u postocima
Jedinice temperature: "degF" (Fahrenheit) ili "degC" (Celsius)
Polja specifična za plivanje
{
"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): Duljina svakog krugastrokeStyle(String): Jedno od:"Backstroke""Breaststroke""Butterfly""Freestyle""Mixed""Kickboard""Unknown"
swolfScore(Number): Rezultat učinkovitosti plivanjasalinity(String):"Fresh Water"ili"Salt Water"totalSwimmingStrokeCount(Object): Ukupan broj zaveslajaswimCadence(Object): Zaveslaji u minuti
Podaci o koracima i kadenci
{
"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): Polje mjerenja broja koraka kroz vrijemestepCadence(Object): Koraci u minutiflightsClimbed(Object): Broj pređenih katova
Podaci frekvencije otkucaja srca
{
"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): Sažetak min, pros. i max frekvencije otkucaja srca tijekom treningamaxHeartRate(Object): Maksimalna frekvencija otkucaja srca tijekom treningaavgHeartRate(Object): Prosječna frekvencija otkucaja srca tijekom treningaheartRateData(Array): Detaljna mjerenja s treninga; završavaju kada trening završiheartRateRecovery(Array): Odvojena mjerenja iz dvije minute odmah nakon završetka treninga
Sažeci frekvencije otkucaja srca koriste zabilježene vrijednosti treninga kada su dostupne; inače se oslanjaju na očitanja frekvencije otkucaja srca treninga. Izvezena očitanja uključuju mjerenja tijekom pauza; stoga se vrhunci i prosjeci mogu razlikovati od sažetka.
Polja vremenskih nizova
Kada je uključeno „Uključi metrike treninga“, mnoge metrike mogu biti uključene kao polja vremenskih nizova:
{
"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"
}
]
}
Struktura QuantityData:
date(Date): Vremenska oznaka mjerenjaqty(Number): Vrijednost količineunits(String): Jedinica mjeresource(String, opcionalno): Izvorni uređaj ili aplikacija
Struktura HeartRateData:
date(Date): Vremenska oznaka mjerenjaMin(Number): Minimalna frekvencija otkucaja srcaAvg(Number): Prosječna frekvencija otkucaja srcaMax(Number): Maksimalna frekvencija otkucaja srcaunits(String): Jedinica (count/mins isključenim Lokaliziraj jedinice)source(String, opcionalno): Izvorni uređaj ili aplikacija
Podaci rute
Kada je uključeno „Uključi podatke rute“ i trening ima GPS podatke:
{
"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
}
]
}
Polja lokacije:
latitude(Number): Geografska širina GPSlongitude(Number): Geografska dužina GPSaltitude(Number): Nadmorska visina u metrimacourse(Number): Smjer kretanja u stupnjevima (0–360)courseAccuracy(Number): Preciznost mjerenja smjera u stupnjevimahorizontalAccuracy(Number): Horizontalna preciznost položaja u metrimaverticalAccuracy(Number): Vertikalna preciznost položaja u metrimatimestamp(Date): Kada je položaj zabilježenspeed(Number): Brzina u metrima u sekundispeedAccuracy(Number): Preciznost mjerenja brzine u m/s
Metapodaci
{
"metadata": {
"customField": {
"label": "value",
"quantity": 123
},
"anotherField": [
1,
2,
3
]
}
}
metadata(Object): Dodatni prilagođeni metapodaci povezani s treningom
Događaji, aktivnosti i dionice
Izvozi JSON i Markdown Verzije 2 mogu uključivati events, segments, laps i activities zabilježene aplikacijom treninga. Dostupni su i s isključenim Uključi metrike treninga. CSV i GPX te zapise ne uključuju.
S uključenim Uključi metrike treninga i odabranim povezanim metrikama intervali također mogu uključivati udaljenost, aktivnu energiju, sažetke frekvencije otkucaja srca te tempo ili brzinu aktivnog vremena. Vrijednosti razdvajaju zabilježena mjerenja od procjena; nedostupne vrijednosti se preskaču.
Kada je odabrana udaljenost, splits mogu uključivati procijenjene kilometreske i miljske dionice. Mogu se razlikovati od dionica aplikacije koja snima, a posljednja dionica označena je kao djelomična ako je kraća od ciljne udaljenosti. Nedostajuća očitanja udaljenosti ili nepodržani tipovi treninga mogu spriječiti izračun dionica.
Rezultati napora treninga
Izvozi JSON i Markdown Verzije 2 mogu uključivati odabrane vrijednosti Rezultata napora treninga (effortScore) i Procijenjenog rezultata napora treninga (estimatedEffortScore). Svaki je objekt koji sadrži qty i units: "appleEffortScore".
Rezultati zahtijevaju iOS 18 ili noviji i pristup povezanim podacima u Apple Healthu. Rezultati cijelog treninga i aktivnosti su odvojeni. Neovisni su o Vremenskoj grupaciji i Uključi metrike treninga; CSV ih ne uključuje.
U Pregledaj → Treninzi otvorite stranicu izvoza popisa ili postavke izvoza Verzije 2 treninga, zatim prije izvoza koristite Odaberi polja izvoza za odabir rezultata napora.
Vremenska grupacija metrika treninga
Pri korištenju Verzije izvoza 2 i uključenom „Uključi metrike treninga“ možete upravljati razinom detalja podataka vremenskih nizova:
- Minute: Grupira metrike treninga po minutama sata. Prva i posljednja minuta mogu uključivati nekoliko sekundi neposredno prije početka ili nakon kraja treninga.
- Sekunde: Grupira metrike treninga po sekundama sata; svaka vremenska oznaka označava početak svoje sekunde. Prva i posljednja sekunda mogu uključivati djelić sekunde neposredno izvan treninga. Datoteke su veće nego pri grupaciji po minutama.
Aktivna i bazalna energija u svakoj vremenskoj grupi koriste iste ujedinjene zbrojeve kao i ostale metrike treninga. Očitanja s više uređaja ili aplikacija uključuju se zajedno.
Treninzi Verzija 1 (Legacy)
Verzija 1 koristi jednostavniju strukturu. Za nove izvoze preporučuje se Verzija 2.
Struktura Verzije 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"
}
]
}