Ohjekeskus HealthyApps
Suomi
Ohjekeskus
Pääsivusto ↗

Hae ohjeaiheita

Harjoitukset - JSON-vientimuoto

Dokumentaatio harjoitusten rakenteesta JSON-vienneissä

Päivitetty viimeksi: 31. lokakuuta 2026

Tällä sivulla
Vientiversiot
Harjoitukset versio 2 Harjoitukset versio 2 PerusrakennePakolliset kentätValinnaiset kentätHarjoitusmittarien aikaryhmittely
Harjoitukset versio 1 (Legacy) Harjoitukset versio 1 (Legacy) Version 1 rakenne
Aiheeseen liittyvä dokumentaatio

JSON-viennit tallentavat harjoitukset taulukkoon workouts.

Vientiversiot

Health Auto Export tukee kahta harjoitusviennin versiota:

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

Harjoitukset versio 2

Versio 2 sisältää seuraavat pakolliset kentät ja valinnaiset tiedot. Esimerkit käyttävät Lokaloi yksiköt pois päältä; sen käyttöönotto voi muuttaa yksiköiden nimiä metrisarjoissa.

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 päättymisaika muodossa yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Harjoituksen kesto sekunteina

Valinnaiset kentät

Valinnaiset kentät riippuvat saatavilla olevista tiedoista ja vientivalinnoistasi:

Tallennuslähde

{
  "source": {
    "name": "Workout App",
    "identifier": "com.example.workouts"
  }
}
  • source (Object): Harjoituksen tallentanut sovellus tai laite, sen nimellä ja sovellustunnisteella. Yksittäisillä mittarilukemilla on erilliset lähdemerkkijonot, ja ne voivat tulla toisesta sovelluksesta tai laitteesta.

Sijaintitiedot

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Yksi seuraavista: "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Suoritettiinko harjoitus sisätiloissa

Energia ja intensiteetti

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "kcal/hr\u00b7kg"
  }
}
  • activeEnergyBurned (Object): Harjoituksen aikana poltetut aktiivikalorit
  • totalEnergy (Object): Poltetut kokonaiskaloriat (aktiiviset + lepo)
  • intensity (Object): Metabolinen ekvivalentti (MET) -arvo

Matka ja nopeus

{
  "distance": {
    "qty": 3.5,
    "units": "mi"
  }
}
  • distance (Object): Kokonaismatka
  • speed (Object): Keskimääräinen nopeus laskettuna matkasta ja kestosta
  • avgSpeed (Object): Keskimääräinen nopeus koko harjoituksen ajan
  • maxSpeed (Object): Saavutettu enimmäisnopeus

Kukin objekti sisältää qty- ja units-kentät.

Korkeus

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Kokonaisnousu
  • elevationDown (Object): Kokonaislasku

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

Ympäristötiedot

{
  "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ötilayksiköt: "degF" (Fahrenheit) tai "degC" (Celsius)

Uintikohtaiset kentät

{
  "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): Kunkin kierroksen pituus
  • strokeStyle (String): Yksi seuraavista:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Uinnin tehokkuuspisteet
  • salinity (String): "Fresh Water" tai "Salt Water"
  • totalSwimmingStrokeCount (Object): Vetojen kokonaismäärä
  • swimCadence (Object): Vetoja minuutissa

Askel- ja kadenssitiedot

{
  "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): Askelmäärämittauksia ajan mittaan
  • stepCadence (Object): Askelia minuutissa
  • flightsClimbed (Object): Noustujen porraskerrostumien määrä

Syketiedot

{
  "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): Yhteenveto min-, avg- ja max-sykkeestä harjoituksen aikana
  • maxHeartRate (Object): Enimmäissyke harjoituksen aikana
  • avgHeartRate (Object): Keskimääräinen syke harjoituksen aikana
  • heartRateData (Array): Yksityiskohtaiset mittaukset harjoituksesta; päättyvät harjoituksen päättyessä
  • heartRateRecovery (Array): Erilliset mittaukset kahdelta minuutilta heti harjoituksen päättymisen jälkeen

Yhteenvetosykkeet käyttävät tallennettuja harjoitusarvoja, kun niitä on saatavilla; muuten ne tukeutuvat harjoituksen sykelukemiin. Viedyt lukemat sisältävät mittauksia taukojen ajalta, joten huiput ja keskiarvot voivat poiketa yhteenvedosta.

Aikasarjataulukot

Monia mittareita voidaan sisällyttää aikasarjataulukoina, kun "Sisällytä harjoitusmittarit" 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": "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"
    }
  ]
}

QuantityData-rakenne:

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

HeartRateData-rakenne:

  • date (Date): Mittauksen aikaleima
  • Min (Number): Vähimmäissyke
  • Avg (Number): Keskimääräinen syke
  • Max (Number): Enimmäissyke
  • units (String): Yksikkö (count/min, kun Lokaloi yksiköt on pois päältä)
  • source (String, valinnainen): Tietolähde, laite tai sovellus

Reittitiedot

Kun "Sisällytä reittitiedot" on käytössä ja harjoituksella on GPS-tietoja:

{
  "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): Suuntamittauksen tarkkuus asteina
  • horizontalAccuracy (Number): Vaakasuuntainen sijaintitarkkuus metreinä
  • verticalAccuracy (Number): Pystysuuntainen sijaintitarkkuus metreinä
  • timestamp (Date): Aika, jolloin sijainti tallennettiin
  • speed (Number): Nopeus metreinä sekunnissa
  • speedAccuracy (Number): Nopeusmittauksen tarkkuus m/s

Metatiedot

{
  "metadata": {
    "customField": {
      "label": "value",
      "quantity": 123
    },
    "anotherField": [
      1,
      2,
      3
    ]
  }
}
  • metadata (Object): Harjoitukseen liittyvät lisämetatiedot

Tapahtumat, aktiviteetit ja osuudet

Version 2 JSON- ja Markdown-viennit voivat sisältää harjoitussovelluksen tallentamia events-, segments-, laps- ja activities-tietoja. Ne ovat käytettävissä myös, kun Sisällytä harjoitusmittarit on pois päältä. CSV ja GPX eivät sisällä näitä tietueita.

Kun Sisällytä harjoitusmittarit on päällä ja asiaankuuluvat mittarit on valittu, intervallit voivat sisältää myös matkan, aktiivisen energian, sykeyhteenvedot sekä aktiivisen ajan tahdin tai nopeuden. Arvot erottavat tallennetut mittaukset arvioista; puuttuvat arvot jätetään pois.

Kun matka on valittu, splits voi sisältää arvioituja kilometri- ja mailiosuuksia. Ne voivat poiketa tallentavan sovelluksen osuuksista, ja viimeinen osuus merkitään osittaiseksi, kun se on lyhyempi kuin tavoitematka. Puuttuvat matkalukemat tai tuettomat harjoitustyypit voivat estää osuuksien laskennan.

Harjoituksen rasituspisteet

Version 2 JSON- ja Markdown-viennit voivat sisältää valittuja Harjoituksen rasituspiste (effortScore) ja Arvioitu harjoituksen rasituspiste (estimatedEffortScore) -arvoja. Kumpikin on objekti, jossa on qty ja units: "appleEffortScore".

Pisteet edellyttävät iOS 18:aa tai uudempaa sekä pääsyä vastaaviin tietoihin Apple Healthissa. Koko harjoituksen ja aktiviteetin pisteet ovat erillisiä. Ne ovat riippumattomia Aikaryhmittelystä ja Sisällytä harjoitusmittarit -asetuksesta; CSV ei sisällä niitä.

Kohdassa Selaa → Harjoitukset avaa luettelon vientilehti tai harjoituksen Version 2 -vientiasetukset ja käytä sitten Valitse vientikentät valitaksesi rasituspisteet ennen vientiä.

Harjoitusmittarien aikaryhmittely

Kun käytössä on Vientiversio 2 ja "Sisällytä harjoitusmittarit" on käytössä, voit hallita aikasarjatietojen tarkkuutta:

  • Minuutit: Ryhmittelee harjoitusmittarit kellon minuuteille. Ensimmäinen ja viimeinen minuutti voivat sisältää muutaman sekunnin juuri ennen harjoituksen alkua tai sen jälkeen.
  • Sekunnit: Ryhmittelee harjoitusmittarit kellon sekunneille; kukin aikaleima merkitsee sekunnin alkua. Ensimmäinen ja viimeinen sekunti voivat sisältää murto-osan sekunnista juuri harjoituksen ulkopuolella. Tiedostot ovat suurempia kuin minuuttiryhmittelyssä.

Aktiivinen ja lepokalorit käyttävät samoja yhdistettyjä summia kuin muut harjoitusmittarit kussakin aikaryhmässä. Useamman laitteen tai sovelluksen lukemat sisällytetään yhdessä.

Harjoitukset versio 1 (Legacy)

Versio 1 käyttää yksinkertaisempaa rakennetta. Uusiin vienteihin suositellaan Versiota 2.

Version 1 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": "bpm"
    }
  ],
  "route": [
    {
      "lat": 37.7749,
      "lon": -122.4194,
      "altitude": 50.5,
      "timestamp": "2024-02-06 07:00:00 -0800"
    }
  ]
}

Aiheeseen liittyvä dokumentaatio