Treinos - Formato de Exportação JSON

Documentação sobre a estrutura de treinos em exportações JSON

Last updated: February 6, 2026

On this page

Treinos

Os dados de treino incluem todas as suas sessões de exercício registradas no Apple Health, como corrida, ciclismo, natação, treino de força e mais. Nas exportações JSON, os treinos são armazenados no array workouts.

Versões de Exportação

O Health Auto Export suporta duas versões de exportação de treinos:

  • Versão 2 (Recomendada): Formato aprimorado com metadados mais detalhados e dados estruturados
  • Versão 1 (Legacy): Formato mais antigo mantido para compatibilidade com fluxos de trabalho existentes

Treinos Versão 2

A Versão 2 fornece uma estrutura abrangente com campos opcionais que são incluídos apenas quando os dados estão disponíveis.

Estrutura Básica

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

Campos Obrigatórios

  • id (String): Identificador único do treino
  • name (String): Nome do tipo de treino (ex: "Running", "Cycling", "Swimming")
  • start (Date): Hora de início do treino no formato yyyy-MM-dd HH:mm:ss Z
  • end (Date): Hora de término do treino no formato yyyy-MM-dd HH:mm:ss Z
  • duration (Number): Duração do treino em segundos

Campos Opcionais

Os seguintes campos são incluídos apenas quando os dados estão disponíveis:

Informações de Localização

{
  "location": "Outdoor",
  "isIndoor": false
}
  • location (String): Um entre "Indoor", "Outdoor", "Pool", "Open Water"
  • isIndoor (Boolean): Se o treino foi realizado em ambiente fechado

Energia e Intensidade

{
  "activeEnergyBurned": {
    "qty": 350,
    "units": "kcal"
  },
  "totalEnergy": {
    "qty": 450,
    "units": "kcal"
  },
  "intensity": {
    "qty": 8.5,
    "units": "MET"
  }
}
  • activeEnergyBurned (Object): Calorias ativas queimadas durante o treino
  • totalEnergy (Object): Calorias totais (ativas + em repouso) queimadas
  • intensity (Object): Valor do equivalente metabólico da tarefa (MET)

Distância e Velocidade

{
  "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): Distância total percorrida
  • speed (Object): Velocidade atual ou média
  • avgSpeed (Object): Velocidade média durante todo o treino
  • maxSpeed (Object): Velocidade máxima atingida

Unidades:

  • Distância: "mi" (milhas) ou "km" (quilômetros)
  • Velocidade: "mph" (milhas por hora) ou "kmph" (quilômetros por hora)

Elevação

{
  "elevationUp": {
    "qty": 500,
    "units": "ft"
  },
  "elevationDown": {
    "qty": 450,
    "units": "ft"
  }
}
  • elevationUp (Object): Elevação total ganha
  • elevationDown (Object): Elevação total perdida

Unidades: "ft" (pés) ou "m" (metros)

Dados Ambientais

{
  "temperature": {
    "qty": 72,
    "units": "degF"
  },
  "humidity": {
    "qty": 65,
    "units": "%"
  }
}
  • temperature (Object): Temperatura ambiente durante o treino
  • humidity (Object): Porcentagem de umidade relativa

Unidades de Temperatura: "degF" (Fahrenheit) ou "degC" (Celsius)

Campos Específicos de Natação

{
  "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): Comprimento de cada volta
  • strokeStyle (String): Um entre:
    • "Backstroke"
    • "Breaststroke"
    • "Butterfly"
    • "Freestyle"
    • "Mixed"
    • "Kickboard"
    • "Unknown"
  • swolfScore (Number): Pontuação de eficiência de natação
  • salinity (String): "Fresh Water" ou "Salt Water"
  • totalSwimmingStrokeCount (Object): Número total de braçadas
  • swimCadence (Object): Braçadas por minuto

Dados de Passos e Cadência

{
  "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): Array de medições de contagem de passos ao longo do tempo
  • stepCadence (Object): Passos por minuto
  • flightsClimbed (Object): Número de lances de escadas subidos

Dados de Frequência Cardíaca

{
  "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): Resumo com frequência cardíaca mínima, média e máxima
  • maxHeartRate (Object): Frequência cardíaca máxima durante o treino
  • avgHeartRate (Object): Frequência cardíaca média durante o treino
  • heartRateData (Array): Medições detalhadas de frequência cardíaca durante todo o treino
  • heartRateRecovery (Array): Medições de frequência cardíaca durante o período de recuperação

Arrays de Dados de Séries Temporais

Muitas métricas podem ser incluídas como arrays de séries temporais quando "Incluir Métricas de Treino" está habilitado:

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

Estrutura QuantityData:

  • date (Date): Timestamp da medição
  • qty (Number): Valor da quantidade
  • units (String): Unidade de medida
  • source (String, opcional): Dispositivo ou aplicativo fonte dos dados

Estrutura HeartRateData:

  • date (Date): Timestamp da medição
  • Min (Number): Frequência cardíaca mínima
  • Avg (Number): Frequência cardíaca média
  • Max (Number): Frequência cardíaca máxima
  • units (String): Unidade (tipicamente "bpm")
  • source (String, opcional): Dispositivo ou aplicativo fonte dos dados

Dados de Rota

Quando "Incluir Dados de Rota" está habilitado e o treino tem dados 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
    }
  ]
}

Campos de Localização:

  • latitude (Number): Coordenada de latitude GPS
  • longitude (Number): Coordenada de longitude GPS
  • altitude (Number): Elevação em metros
  • course (Number): Direção de viagem em graus (0-360)
  • courseAccuracy (Number): Precisão da medição de curso em graus
  • horizontalAccuracy (Number): Precisão da posição horizontal em metros
  • verticalAccuracy (Number): Precisão da posição vertical em metros
  • timestamp (Date): Hora em que a localização foi registrada
  • speed (Number): Velocidade em metros por segundo
  • speedAccuracy (Number): Precisão da medição de velocidade em m/s

Metadados

{
  "metadata": {
    "customField": "value",
    "anotherField": 123
  }
}
  • metadata (Object): Metadados personalizados adicionais associados ao treino

Treinos Versão 1 (Legacy)

A Versão 1 usa uma estrutura mais simples. Para novas exportações, a Versão 2 é recomendada.

Estrutura Versão 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"
    }
  ]
}

Agrupamento Temporal de Métricas de Treino

Ao usar a Versão 2 de Exportação e quando "Incluir Métricas de Treino" está habilitado, você pode controlar a granularidade dos dados de séries temporais:

  • Minutos: Agrupa as métricas de treino por intervalos de minuto
  • Segundos: Agrupa as métricas de treino por intervalos de segundo (mais detalhado, arquivo maior)

Dicas

  • Incluir Dados de Rota: Habilite esta opção para obter informações de rota GPS para treinos ao ar livre
  • Incluir Métricas de Treino: Habilite isso para obter dados detalhados de séries temporais para métricas como frequência cardíaca, potência e cadência
  • Versão de Exportação: Use a Versão 2 para a estrutura de dados mais abrangente
  • Exportação GPX: Os dados de rota também podem ser exportados como arquivos GPX separados para uso em aplicativos de mapeamento

Documentação Relacionada