Tipos de datos de la API de Google Health

En la siguiente tabla, se incluye la lista completa de tipos de datos, con varias columnas para ayudarte a comprender la representación de cada tipo en la API de Google Health, así como el permiso en el que está disponible cada uno.

Tabla: Tipos de datos de la API de Google Health
Tipo de datos
  dataType Parámetro
  filter
Operaciones
disponibles
Alcance
Gasto calórico activo
active-energy-burned
active_energy_burned
Tipo de registro: Intervalo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutos activos
active-minutes
active_minutes
Tipo de registro: Intervalo

Dispositivos compatibles

  • Fitbit Air
  • Fitbit Alta
  • Fitbit Alta HR
  • Fitbit Blaze
  • Fitbit Charge 2
  • Fitbit Charge 3
  • Fitbit Flex 2
  • Fitbit Inspire
  • Fitbit Inspire HR
  • Pixel Watch 4
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutos en zona activa
active-zone-minutes
active_zone_minutes
Tipo de registro: Intervalo

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Nivel de actividad
activity-level
activity_level
Tipo de registro: Intervalo
lista, reconciliar .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitud
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glucemia
blood-glucose
blood_glucose
Tipo de registro: Muestra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Body Fat
body-fat
body_fat
Tipo de registro: Muestra

Dispositivos compatibles

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Calorías en la zona de frecuencia cardíaca
calories-in-heart-rate-zone
calories_in_heart_rate_zone
Tipo de registro: Intervalo
acumulado, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Temperatura corporal central
core-body-temperature
core_body_temperature
Tipo de registro: Muestra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidad de la frecuencia cardíaca diaria
daily-heart-rate-variability
daily_heart_rate_variability
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zonas de frecuencia cardíaca diarias
daily-heart-rate-zones
daily_heart_rate_zones
Tipo de registro: Diario
lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturación de oxígeno diaria
daily-oxygen-saturation
daily_oxygen_saturation
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frecuencia respiratoria diaria
daily-respiratory-rate
daily_respiratory_rate
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frecuencia cardíaca en reposo diaria
daily-resting-heart-rate
daily_resting_heart_rate
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Derivaciones diarias de la temperatura durante el sueño
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 máx. diario
daily-vo2-max
daily_vo2_max
Tipo de registro: Diario

Dispositivos compatibles

lista, reconciliar .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distancia
distance
distance
Tipo de registro: Intervalo

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Electrocardiograma (ECG)
electrocardiogram
electrocardiogram
Tipo de registro: Sesión

Dispositivos compatibles

list .ecg.readonly
Ejercicio
exercise
exercise
Tipo de registro: Sesión

Dispositivos compatibles

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Pisos
reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Comida
food
food
Tipo de registro: Comida
list, get .nutrition.readonly
.nutrition.writeonly
Unidad de medida de alimentos
food-measurement-unit
food_measurement_unit
Tipo de registro: Comida

Dispositivos compatibles

list, get .nutrition.readonly
.nutrition.writeonly
Frecuencia cardíaca
heart-rate
heart_rate
Tipo de registro: Muestra

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidad de la frecuencia cardíaca
heart-rate-variability
heart_rate_variability
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Altura
height
height
Tipo de registro: Muestra
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Registro de hidratación
hydration-log
hydration_log
Tipo de registro: Sesión
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notificación de arritmias
irregular-rhythm-notification
irregular_rhythm_notification
Tipo de registro: Sesión
list .irn.readonly
Período menstrual
menstrual-period
menstrual_period
Tipo de registro: Intervalo
create, update, batchDelete .reproductive_health.writeonly
Estados de ánimo
moods
moods
Tipo de registro: Muestra
create, update, batchDelete .mindfulness.writeonly
Registro de nutrición
nutrition-log
nutrition_log
Tipo de registro: Muestra

Dispositivos compatibles

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Prueba de ovulación
ovulation-test
ovulation_test
Tipo de registro: Muestra
create, update, batchDelete .reproductive_health.writeonly
Saturación de oxígeno
oxygen-saturation
oxygen_saturation
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Resumen de sueño de la frecuencia respiratoria
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO2 máx. en carreras
run-vo2-max
run_vo2_max
Tipo de registro: Muestra

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Período sedentario
sedentary-period
sedentary_period
Tipo de registro: Intervalo

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sueño
sleep
sleep
Tipo de registro: Sesión

Dispositivos compatibles

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Pasos
steps
steps
Tipo de registro: Intervalo

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Datos de largos de natación
swim-lengths-data
swim_lengths_data
Tipo de registro: Intervalo

Dispositivos compatibles

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Síntomas
symptoms
symptoms
Tipo de registro: Muestra
create, update, batchDelete .logged_symptoms.writeonly
Tiempo en la zona de frecuencia cardíaca
time-in-heart-rate-zone
time_in_heart_rate_zone
Tipo de registro: Intervalo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Calorías totales
total-calories
total_calories
Tipo de registro: Intervalo

Dispositivos compatibles

acumulado, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO2 máx.
vo2-max
vo2_max
Tipo de registro: Muestra

Dispositivos compatibles

lista, reconciliar .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Peso
weight
weight
Tipo de registro: Muestra

Dispositivos compatibles

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly

Restricciones de la consulta

Cuando consultes puntos de datos, resúmenes o resúmenes diarios desde la API, ten en cuenta las siguientes restricciones:

  • Requisitos de filtro: Algunos tipos de datos derivados de solo lectura, como total-calories, requieren un filtro que especifique la hora de inicio de un intervalo (con hora física o civil).
  • Límites de rango de consultas: Los extremos de agregación de resumen y resumen diario aplican límites máximos de rango de consultas según el tipo de datos:
    • Un período máximo de consulta de 14 días para calories-in-heart-rate-zone, heart-rate, active-minutes y total-calories
    • Un período máximo de consulta de 90 días para todos los demás tipos de datos

Disponibilidad de los datos

Las actualizaciones de los datos del usuario solo están disponibles después de que sincroniza su monitor de actividad o ingresa manualmente datos nuevos en la app de Fitbit para dispositivos móviles o en la app web. El dispositivo Fitbit y la app de Fitbit para dispositivos móviles se pueden sincronizar automáticamente cada 15 minutos cuando la app de Fitbit está abierta en el dispositivo móvil y ambos tienen una conexión de datos activa y están dentro del alcance de Bluetooth. Si el usuario hace un seguimiento de la actividad con MobileTrack, este se sincroniza cada hora siempre que la app esté abierta.

Cómo consultar datos históricos

Uno de los principales beneficios de la API de Google Health es la capacidad de hacer un seguimiento del rendimiento de un usuario y supervisar sus signos vitales durante períodos prolongados. Puedes consultar los datos de un usuario desde el momento en que se registraron; la API no impone limitaciones ni restricciones en la cantidad de datos históricos que puede consumir tu aplicación.

Sin embargo, las consultas de datos históricos siguen sujetas a los límites de frecuencia estándar. Para administrar la estabilidad del sistema y evitar cargas útiles excesivas, la API de Google Health usa la paginación automática con tamaños de página específicos del extremo. Ten en cuenta los siguientes límites y comportamientos:

  • Paginación automática: Si consultas un intervalo extenso de datos, la API solo devolverá la primera página de resultados hasta el límite de tamaño de página para ese endpoint, junto con un nextPageToken. Debes usar nextPageToken para solicitar páginas posteriores.
  • Tamaños de página variables: Los límites de la función de límite dependen del extremo y el tipo de datos. En la mayoría de los tipos de datos, el tamaño de la página tiene un límite máximo de 10,000. Sin embargo, para ciertos tipos de datos, como exercise y sleep, el tamaño de página predeterminado y máximo se limita a 25. Por ejemplo, si un cliente solicita todos los datos de sueño de los últimos 10 años, la API solo devolverá 25 sesiones de sueño en la primera página.
  • Restricciones de períodos para el resumen de datos: Para los extremos de resumen y agregación de datos (como rollUp y dailyRollUp), los períodos de la consulta se restringen según el tipo de datos:
    • Un período máximo de 14 días para calories-in-heart-rate-zone, heart-rate, active-minutes y total-calories.
    • Un período máximo de 90 días para todos los demás tipos de datos acumulados

Según el volumen de datos históricos que necesite tu aplicación, recuperar todo el conjunto de datos requerirá paginar las páginas de forma secuencial. Ten esto en cuenta cuando diseñes el proceso de sincronización de datos de tu aplicación.

Para garantizar un rendimiento óptimo y evitar errores de la API, sigue estos lineamientos cuando consultes datos históricos:

Sincronización de datos por fases (carga activa frente a carga en frío)

  • Carga "activa" inicial: Recupera y renderiza solo los datos de los últimos 7 a 14 días durante la secuencia de carga principal. Esto garantiza que los usuarios vean los datos de inmediato sin tener que esperar a que se ejecuten las consultas durante mucho tiempo.
  • Carga "en frío" en segundo plano: Delega la recuperación de datos históricos más antiguos a una cola asíncrona de menor prioridad o a un proceso en segundo plano después de que se renderice la IU principal.

Fragmentación de consultas para la agregación

  • Dado que los extremos de resumen y resumen diario aplican un límite máximo de período (14 o 90 días, según el tipo de datos), debes dividir las consultas de agregación históricas grandes en intervalos más pequeños y secuenciales dentro de estos límites.
  • Agrupa o secuencia estas subconsultas de forma segura para respetar los límites de simultaneidad y mantener indicadores de progreso de la IU estables.

Aprovecha los resúmenes agregados previamente

Reestructura los paneles generales y los gráficos de tendencias para usar extremos de resumen previamente agregados (como DailyRollUpDataPoints). Esto reducirá drásticamente la sobrecarga de procesamiento en el backend y el tiempo de transferencia de red al cliente.

Manejo de errores resiliente (reintentos inteligentes)

  • Implementa un control estricto de la retirada exponencial cuando se alcancen los límites de frecuencia (429 Too Many Requests) y los tiempos de espera de la puerta de enlace del servidor (504 Gateway Timeout). Nunca reintentes cargas útiles grandes que hayan fallado de inmediato. Los reintentos instantáneos multiplican la congestión del backend y agravan la degradación del sistema.

Acceso de terceros

Los dispositivos Fitbit no pueden comunicarse directamente con aplicaciones o servicios de terceros. Estos dispositivos están diseñados para comunicarse y sincronizarse exclusivamente con la app de Fitbit para dispositivos móviles.

El dispositivo sincroniza los datos automáticamente durante el día, cada vez que se abre la app de Fitbit o cada 15 minutos si el Bluetooth está activo y la app se ejecuta en segundo plano. Una vez que se completa este proceso de sincronización, los datos están disponibles para los servicios de terceros a través de la API de Google Health.

Estándares de distancia

Las distancias de ejercicio, como elevationGainMillimeters, se miden en milímetros como unidad estándar por los siguientes motivos:

  1. Mantener la precisión de los datos: El motivo más importante para usar milímetros es garantizar que no perdamos precisión en los datos que leemos y proporcionamos. Usar una unidad de medida precisa, como los milímetros, nos permite representar las medidas con alta exactitud.
  2. Estandarización: Los milímetros son la unidad estandarizada diseñada para todos nuestros servicios. Esta coherencia ayuda a garantizar una experiencia uniforme para los desarrolladores que interactúan con diferentes partes de la API.
  3. Amplio soporte del sistema de medición: Usar una unidad base, como los milímetros, facilita a los desarrolladores la conversión a cualquier otra unidad elegida, independientemente de si trabajan con sistemas métricos, imperiales o de otro tipo.

Duración variable del día

El control del tiempo de la API de Health prioriza el tiempo del usuario para tener en cuenta las duraciones variables del día causadas por el horario de verano o los viajes. Cada punto de datos se almacena con una marca de tiempo UTC física y el desplazamiento de UTC activo en el momento del evento. Esto permite que el sistema haga lo siguiente:

  • Asigna el evento a un instante físico preciso.
  • Corrige la hora según el contexto local del usuario para la agregación.

Horario de verano

Cuando se produce el horario de verano, un "retraso" genera un día civil de 25 horas, y el resumen de esa fecha contendrá 25 horas de datos. Un "adelanto" genera un día civil de 23 horas en el que la hora vuelve a la hora estándar.

Viajes

Los viajes a través de zonas horarias pueden causar variaciones aún más significativas en la duración física de un solo día civil.

Usa el extremo dailyRollUp para conciliar las diferencias de zona horaria. Asigna automáticamente los datos al día del calendario en el que se registraron según la hora local del usuario, lo que permite "unir" el día a pesar de los cambios de zona horaria.