Entraînements - Format d'Exportation JSON

Documentation sur la structure des entraînements dans les exportations JSON

Last updated: February 6, 2026

On this page

Entraînements

Les données d'entraînement incluent toutes vos séances d'exercice enregistrées dans Apple Health, telles que la course, le cyclisme, la natation, l'entraînement en force et plus encore. Dans les exportations JSON, les entraînements sont stockés dans le tableau workouts.

Versions d'Exportation

Health Auto Export prend en charge deux versions d'exportation d'entraînements :

  • Version 2 (Recommandée) : Format amélioré avec des métadonnées plus détaillées et des données structurées
  • Version 1 (Legacy) : Format plus ancien maintenu pour la compatibilité avec les flux de travail existants

Entraînements Version 2

La Version 2 fournit une structure complète avec des champs optionnels qui ne sont inclus que lorsque les données sont disponibles.

Structure de Base

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

Champs Requis

  • id (String) : Identifiant unique de l'entraînement
  • name (String) : Nom du type d'entraînement (ex: "Running", "Cycling", "Swimming")
  • start (Date) : Heure de début de l'entraînement au format yyyy-MM-dd HH:mm:ss Z
  • end (Date) : Heure de fin de l'entraînement au format yyyy-MM-dd HH:mm:ss Z
  • duration (Number) : Durée de l'entraînement en secondes

Champs Optionnels

Les champs suivants ne sont inclus que lorsque les données sont disponibles :

Informations de Localisation

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String) : Un parmi "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean) : Si l'entraînement a été effectué en intérieur

Énergie et Intensité

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object) : Calories actives brûlées pendant l'entraînement
  • totalEnergy (Object) : Calories totales (actives + au repos) brûlées
  • intensity (Object) : Valeur de l'équivalent métabolique de la tâche (MET)

Distance et Vitesse

{
  "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) : Distance totale parcourue
  • speed (Object) : Vitesse actuelle ou moyenne
  • avgSpeed (Object) : Vitesse moyenne tout au long de l'entraînement
  • maxSpeed (Object) : Vitesse maximale atteinte

Unités :

  • Distance : "mi" (miles) ou "km" (kilomètres)
  • Vitesse : "mph" (miles par heure) ou "kmph" (kilomètres par heure)

Élévation

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object) : Élévation totale gagnée
  • elevationDown (Object) : Élévation totale perdue

Unités : "ft" (pieds) ou "m" (mètres)

Données Environnementales

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object) : Température ambiante pendant l'entraînement
  • humidity (Object) : Pourcentage d'humidité relative

Unités de Température : "degF" (Fahrenheit) ou "degC" (Celsius)

Champs Spécifiques à la Natation

{
  "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) : Longueur de chaque longueur
  • strokeStyle (String) : Un parmi :
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number) : Score d'efficacité de natation
  • salinity (String) : "Fresh Water" ou "Salt Water"
  • totalSwimmingStrokeCount (Object) : Nombre total de mouvements
  • swimCadence (Object) : Mouvements par minute

Données de Pas et Cadence

{
  "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) : Tableau de mesures de comptage de pas au fil du temps
  • stepCadence (Object) : Pas par minute
  • flightsClimbed (Object) : Nombre de volées d'escaliers montées

Données de Fréquence Cardiaque

{
  "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) : Résumé avec fréquence cardiaque min, moyenne et max
  • maxHeartRate (Object) : Fréquence cardiaque maximale pendant l'entraînement
  • avgHeartRate (Object) : Fréquence cardiaque moyenne pendant l'entraînement
  • heartRateData (Array) : Mesures détaillées de fréquence cardiaque tout au long de l'entraînement
  • heartRateRecovery (Array) : Mesures de fréquence cardiaque pendant la période de récupération

Tableaux de Données de Séries Temporelles

De nombreuses métriques peuvent être incluses sous forme de tableaux de séries temporelles lorsque "Inclure les Métriques d'Entraînement" est activé :

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

Structure QuantityData :

  • date (Date) : Horodatage de la mesure
  • qty (Number) : Valeur de la quantité
  • units (String) : Unité de mesure
  • source (String, optionnel) : Dispositif ou application source des données

Structure HeartRateData :

  • date (Date) : Horodatage de la mesure
  • Min (Number) : Fréquence cardiaque minimale
  • Avg (Number) : Fréquence cardiaque moyenne
  • Max (Number) : Fréquence cardiaque maximale
  • units (String) : Unité (généralement "bpm")
  • source (String, optionnel) : Dispositif ou application source des données

Données de Route

Lorsque "Inclure les Données de Route" est activé et que l'entraînement a des données 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
    }
  ]
}

Champs de Localisation :

  • latitude (Number) : Coordonnée de latitude GPS
  • longitude (Number) : Coordonnée de longitude GPS
  • altitude (Number) : Élévation en mètres
  • course (Number) : Direction de déplacement en degrés (0-360)
  • courseAccuracy (Number) : Précision de la mesure de cap en degrés
  • horizontalAccuracy (Number) : Précision de position horizontale en mètres
  • verticalAccuracy (Number) : Précision de position verticale en mètres
  • timestamp (Date) : Heure à laquelle l'emplacement a été enregistré
  • speed (Number) : Vitesse en mètres par seconde
  • speedAccuracy (Number) : Précision de la mesure de vitesse en m/s

Métadonnées

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object) : Métadonnées personnalisées supplémentaires associées à l'entraînement

Entraînements Version 1 (Legacy)

La Version 1 utilise une structure plus simple. Pour les nouvelles exportations, la Version 2 est recommandée.

Structure Version 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"
    }
  ]
}

Regroupement Temporel des Métriques d'Entraînement

Lors de l'utilisation de la Version 2 d'Exportation et lorsque "Inclure les Métriques d'Entraînement" est activé, vous pouvez contrôler la granularité des données de séries temporelles :

  • Minutes : Regroupe les métriques d'entraînement par intervalles de minute
  • Secondes : Regroupe les métriques d'entraînement par intervalles de seconde (plus détaillé, fichier plus volumineux)

Conseils

  • Inclure les Données de Route : Activez cette option pour obtenir des informations de route GPS pour les entraînements en extérieur
  • Inclure les Métriques d'Entraînement : Activez cela pour obtenir des données détaillées de séries temporelles pour des métriques comme la fréquence cardiaque, la puissance et la cadence
  • Version d'Exportation : Utilisez la Version 2 pour la structure de données la plus complète
  • Exportation GPX : Les données de route peuvent également être exportées sous forme de fichiers GPX séparés pour une utilisation dans des applications de cartographie

Documentation Connexe