Harjoitukset – JSON-viennin muoto

Dokumentaatio harjoitusten rakenteesta JSON-vienneissä

Last updated: April 1, 2026

Tällä sivulla

Harjoitukset

Harjoitusdata sisältää kaikki Apple Healthiin tallentamasi liikuntakerrat, kuten juoksua, pyöräilyä, uintoa, voimaharjoittelua ja muuta. JSON-vienneissä harjoitukset tallennetaan taulukkoon workouts.

Vientiversiot

Health Auto Export tukee kahta harjoitusviennin versiota:

  • Versio 2 (suositeltu): Laajennettu muoto, jossa on yksityiskohtaisempaa metatietoa ja rakenteellista dataa
  • Versio 1 (vanha): Vanhempi muoto, jota ylläpidetään yhteensopivuuden vuoksi olemassa olevien työnkulkujen kanssa

Harjoitukset, versio 2

Versio 2 tarjoaa kattavan rakenteen valinnaisilla kentillä, jotka sisällytetään vain, kun dataa on saatavilla.

Perusrakenne

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

Pakolliset kentät

  • id (String): Harjoituksen yksilöllinen tunniste
  • name (String): Harjoitustyypin nimi (esim. "Running", "Cycling", "Swimming")
  • start (Date): Harjoituksen alkuaika muodossa yyyy-MM-dd HH:mm:ss Z
  • end (Date): Harjoituksen loppuaika muodossa yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Harjoituksen kesto sekunteina

Valinnaiset kentät

Seuraavat kentät sisällytetään vain, kun dataa on saatavilla:

Sijaintitiedot

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Yksi arvoista "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Harjoitettiinko harjoitus sisällä

Energia ja intensiteetti

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object): Aktiivisesti kulutetut kalorit harjoituksen aikana
  • totalEnergy (Object): Kokonaiskalorit (aktiivinen + lepotila)
  • intensity (Object): Metabolinen vastine (MET)

Etäisyys ja nopeus

{
  "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): Kuljettu kokonaismatka
  • speed (Object): Hetkellinen tai keskimääräinen nopeus
  • avgSpeed (Object): Keskimääräinen nopeus koko harjoituksen ajalta
  • maxSpeed (Object): Suurin saavutettu nopeus

Yksiköt:

  • Etäisyys: "mi" (mailit) tai "km" (kilometrit)
  • Nopeus: "mph" (mailia tunnissa) tai "kmph" (kilometriä tunnissa)

Korkeusero

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Kokonaiskorkeuden nousu
  • elevationDown (Object): Kokonaiskorkeuden lasku

Yksiköt: "ft" (jalkaa) tai "m" (metriä)

Ympäristödata

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Ympäristön lämpötila harjoituksen aikana
  • humidity (Object): Suhteellinen kosteus prosentteina

Lämpötilan yksiköt: "degF" (Fahrenheit) tai "degC" (Celsius)

Uintiin liittyvät kentät

{
  "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): Yhden kierroksen pituus
  • strokeStyle (String): Yksi arvoista:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Uinnin tehokkuuspisteet (SWOLF)
  • salinity (String): "Fresh Water" tai "Salt Water"
  • totalSwimmingStrokeCount (Object): Lyöntien kokonaismäärä
  • swimCadence (Object): Lyöntejä minuutissa

Askel- ja tempo-tiedot

{
  "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): Askelten lukumäärämittauksia ajan jakaumassa
  • stepCadence (Object): Askelia minuutissa
  • flightsClimbed (Object): Kiivettyjen porrasaskelmien määrä

Syketiedot

{
  "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): Yhteenveto: min-, keski- ja max-syke
  • maxHeartRate (Object): Suurin syke harjoituksen aikana
  • avgHeartRate (Object): Keskimääräinen syke harjoituksen aikana
  • heartRateData (Array): Yksityiskohtaiset sykemittaukset harjoituksen aikana
  • heartRateRecovery (Array): Sykemittaukset palautumisjakson aikana

Aikasarjataulukot

Monet mittarit voidaan sisällyttää aikasarjoina, kun valinta Include Workout Metrics on käytössä:

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

QuantityData-rakenne:

  • date (Date): Mittauksen aikaleima
  • qty (Number): Määrän arvo
  • units (String): Mittayksikkö
  • source (String, valinnainen): Datalähde (laite tai sovellus)

HeartRateData-rakenne:

  • date (Date): Mittauksen aikaleima
  • Min (Number): Pienin syke
  • Avg (Number): Keskimääräinen syke
  • Max (Number): Suurin syke
  • units (String): Yksikkö (tyypillisesti "bpm")
  • source (String, valinnainen): Datalähde (laite tai sovellus)

Reittidata

Kun Include Route Data on käytössä ja harjoituksessa on GPS-dataa:

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

Sijaintikentät:

  • latitude (Number): GPS-leveysaste
  • longitude (Number): GPS-pituusaste
  • altitude (Number): Korkeus metreinä
  • course (Number): Kulkusuunta asteina (0–360)
  • courseAccuracy (Number): Kulkusuunnan mittaustarkkuus asteina
  • horizontalAccuracy (Number): Vaakatason sijaintitarkkuus metreinä
  • verticalAccuracy (Number): Pystytason sijaintitarkkuus metreinä
  • timestamp (Date): Aika, jolloin sijainti tallennettiin
  • speed (Number): Nopeus metreinä sekunnissa
  • speedAccuracy (Number): Nopeusmittauksen tarkkuus m/s

Metatiedot

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object): Lisämetatietoja, jotka liittyvät harjoitukseen

Harjoitukset, versio 1 (vanha)

Versio 1 käyttää yksinkertaisempaa rakennetta. Uusissa vienneissä suositellaan versiota 2.

Version 1:n rakenne

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

Harjoitusmittarien aikaryhmittely

Kun käytät vientiversiota 2 ja valinta Include Workout Metrics on käytössä, voit säätää aikasarjadatan tarkkuutta:

  • Minutes: Ryhmittelee harjoitusmittarit minuutin välein
  • Seconds: Ryhmittelee harjoitusmittarit sekunnin välein (yksityiskohtaisempi, suurempi tiedosto)

Vinkkejä

  • Include Route Data: Ota käyttöön, jotta saat GPS-reittitiedot ulkoharjoituksille
  • Include Workout Metrics: Ota käyttöön yksityiskohtaisia aikasarjoja varten (esim. syke, teho, tempo)
  • Export Version: Käytä versiota 2 kattavimmalle datalle
  • GPX Export: Reittidatan voi viedä myös erillisinä GPX-tiedostoina karttasovelluksia varten

Liittyvä dokumentaatio