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 antrenamentului
  • name (String): denumirea tipului de antrenament (ex.: „Running”, „Cycling”, „Swimming”)
  • start (Date): ora de început a antrenamentului, în format yyyy-MM-dd HH:mm:ss Z
  • end (Date): ora de sfârșit a antrenamentului, în format yyyy-MM-dd HH:mm:ss Z
  • duration (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 antrenamentului
  • totalEnergy (Object): calorii totale (active + de repaus) arse
  • intensity (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 medie
  • avgSpeed (Object): viteza medie pe durata antrenamentului
  • maxSpeed (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 altitudine
  • elevationDown (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 antrenamentului
  • humidity (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 ture
  • strokeStyle (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țe
  • swimCadence (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 timp
  • stepCadence (Object): pași pe minut
  • flightsClimbed (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 maxim
  • maxHeartRate (Object): ritm cardiac maxim în timpul antrenamentului
  • avgHeartRate (Object): ritm cardiac mediu în timpul antrenamentului
  • heartRateData (Array): măsurători detaliate ale ritmului cardiac pe durata antrenamentului
  • heartRateRecovery (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ătorii
  • qty (Number): valoarea cantității
  • units (String): unitatea de măsură
  • source (String, opțional): sursa datelor (dispozitiv sau aplicație)

Structură HeartRateData:

  • date (Date): marcaj temporal al măsurătorii
  • Min (Number): ritm cardiac minim
  • Avg (Number): ritm cardiac mediu
  • Max (Number): ritm cardiac maxim
  • units (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 latitudine
  • longitude (Number): coordonată GPS longitudine
  • altitude (Number): altitudine, în metri
  • course (Number): direcția de deplasare în grade (0–360)
  • courseAccuracy (Number): precizia măsurării direcției, în grade
  • horizontalAccuracy (Number): precizia poziției orizontale, în metri
  • verticalAccuracy (Number): precizia poziției verticale, în metri
  • timestamp (Date): momentul în care a fost înregistrată locația
  • speed (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

Documentație conexă