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.
Tipo de datosdataType
Parámetro filter |
Operaciones disponibles |
Alcance |
|---|---|---|
|
Gasto calórico activo
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutos activos
active-minutesactive_minutes
Tipo de registro: Intervalo
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutos en zona activa
active-zone-minutesactive_zone_minutes
Tipo de registro: Intervalo
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Nivel de actividad
|
lista, reconciliar | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Altitud
altitudealtitude
Tipo de registro: Intervalo
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Glucemia
blood-glucoseblood_glucose
Tipo de registro: Muestra
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Body Fat
body-fatbody_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-zonecalories_in_heart_rate_zone
Tipo de registro: Intervalo
|
acumulado, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Temperatura corporal central
|
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-variabilitydaily_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-zonesdaily_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-saturationdaily_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-ratedaily_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-ratedaily_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-derivationsdaily_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-maxdaily_vo2_max
Tipo de registro: Diario
Dispositivos compatibles
|
lista, reconciliar | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Distancia
distancedistance
Tipo de registro: Intervalo
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Electrocardiograma (ECG)
electrocardiogramelectrocardiogram
Tipo de registro: Sesión
Dispositivos compatibles
|
list | .ecg.readonly |
Ejercicio
exerciseexercise
Tipo de registro: Sesión
Dispositivos compatibles
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Pisos
floorsfloors
Tipo de registro: Intervalo
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Comida
|
list, get | .nutrition.readonly.nutrition.writeonly |
Unidad de medida de alimentos
food-measurement-unitfood_measurement_unit
Tipo de registro: Comida
Dispositivos compatibles
|
list, get | .nutrition.readonly.nutrition.writeonly |
Frecuencia cardíaca
heart-rateheart_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-variabilityheart_rate_variability
Tipo de registro: Muestra
Dispositivos compatibles
|
lista, reconciliar | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Altura
|
list, get, reconcile, create, update, batchDelete | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
|
Registro de hidratación
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Notificación de arritmias
irregular-rhythm-notificationirregular_rhythm_notification
Tipo de registro: Sesión
|
list | .irn.readonly |
Período menstrual
menstrual-periodmenstrual_period
Tipo de registro: Intervalo
|
create, update, batchDelete | .reproductive_health.writeonly |
Estados de ánimo
moodsmoods
Tipo de registro: Muestra
|
create, update, batchDelete | .mindfulness.writeonly |
Registro de nutrición
nutrition-lognutrition_log
Tipo de registro: Muestra
Dispositivos compatibles
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
Prueba de ovulación
ovulation-testovulation_test
Tipo de registro: Muestra
|
create, update, batchDelete | .reproductive_health.writeonly |
Saturación de oxígeno
oxygen-saturationoxygen_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-summaryrespiratory_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-maxrun_vo2_max
Tipo de registro: Muestra
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Período sedentario
sedentary-periodsedentary_period
Tipo de registro: Intervalo
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Sueño
sleepsleep
Tipo de registro: Sesión
Dispositivos compatibles
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
Pasos
stepssteps
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-dataswim_lengths_data
Tipo de registro: Intervalo
Dispositivos compatibles
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Síntomas
symptomssymptoms
Tipo de registro: Muestra
|
create, update, batchDelete | .logged_symptoms.writeonly |
Tiempo en la zona de frecuencia cardíaca
time-in-heart-rate-zonetime_in_heart_rate_zone
Tipo de registro: Intervalo
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Calorías totales
total-caloriestotal_calories
Tipo de registro: Intervalo
Dispositivos compatibles
|
acumulado, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
VO2 máx.
vo2-maxvo2_max
Tipo de registro: Muestra
Dispositivos compatibles
|
lista, reconciliar | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Peso
weightweight
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-minutesytotal-calories - Un período máximo de consulta de 90 días para todos los demás tipos de datos
- Un período máximo de consulta de 14 días para
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 usarnextPageTokenpara 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
exerciseysleep, 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
rollUpydailyRollUp), 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-minutesytotal-calories. - Un período máximo de 90 días para todos los demás tipos de datos acumulados
- Un período máximo de 14 días para
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:
- 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.
- 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.
- 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.