Tipos de dados da API Google Health

A tabela a seguir contém a lista completa de tipos de dados, com várias colunas para ajudar você a entender a representação de cada tipo na API Google Health, bem como o escopo em que cada um está disponível.

Tabela: tipos de dados da API Google Health
Tipo de dados
  dataType Parâmetro
  filter
Operações
disponíveis
Escopo
Calorias queimadas em atividade
active-energy-burned
active_energy_burned
Tipo de registro : Intervalo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutos ativos
active-minutes
active_minutes
Tipo de registro : Intervalo

Dispositivos compatíveis

  • 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 na faixa ativa
active-zone-minutes
active_zone_minutes
Tipo de registro : Intervalo

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Nível de atividade
activity-level
activity_level
Tipo de registro : Intervalo
list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
altitude
altitude
Tipo de registro : Intervalo
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glicose no sangue
blood-glucose
blood_glucose
Tipo de registro : Exemplo
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Gordura corporal
body-fat
body_fat
Tipo de registro : Exemplo

Dispositivos compatíveis

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Calorias consumidas na zona de frequência cardíaca
calories-in-heart-rate-zone
calories_in_heart_rate_zone
Tipo de registro : Intervalo
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Temperatura corporal central
core-body-temperature
core_body_temperature
Tipo de registro : Exemplo
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidade da frequência cardíaca diária
daily-heart-rate-variability
daily_heart_rate_variability
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Zonas de frequência cardíaca diárias
daily-heart-rate-zones
daily_heart_rate_zones
Tipo de registro : diário
list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturação de oxigênio diária
daily-oxygen-saturation
daily_oxygen_saturation
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frequência respiratória diária
daily-respiratory-rate
daily_respiratory_rate
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Frequência cardíaca em repouso diária
daily-resting-heart-rate
daily_resting_heart_rate
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Derivações diárias da temperatura do sono
daily-sleep-temperature-derivations
daily_sleep_temperature_derivations
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO₂ máx. diário
daily-vo2-max
daily_vo2_max
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distância
distance
distance
Tipo de registro : Intervalo

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Eletrocardiograma (ECG)
electrocardiogram
electrocardiogram
Tipo de registro : sessão

Dispositivos compatíveis

list .ecg.readonly
Exercício
exercise
exercise
Tipo de registro : sessão

Dispositivos compatíveis

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

Dispositivos compatíveis

list, get .nutrition.readonly
.nutrition.writeonly
Frequência cardíaca
heart-rate
heart_rate
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidade da frequência cardíaca
heart-rate-variability
heart_rate_variability
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Altura
height
height
Tipo de registro : Exemplo
list, get, reconcile, create, update, batchDelete .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Registro de hidratação
hydration-log
hydration_log
Tipo de registro : sessão
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Notificação de ritmo irregular
irregular-rhythm-notification
irregular_rhythm_notification
Tipo de registro : sessão
list .irn.readonly
Período menstrual
menstrual-period
menstrual_period
Tipo de registro : Intervalo
create, update, batchDelete .reproductive_health.writeonly
Humores
moods
moods
Tipo de registro : Exemplo
create, update, batchDelete .mindfulness.writeonly
Registro de alimentação
nutrition-log
nutrition_log
Tipo de registro : Exemplo

Dispositivos compatíveis

list, get, reconcile, rollup, dailyRollup, create, update, batchDelete .nutrition.readonly
.nutrition.writeonly
Teste de ovulação
ovulation-test
ovulation_test
Tipo de registro : Exemplo
create, update, batchDelete .reproductive_health.writeonly
Saturação de oxigênio
oxygen-saturation
oxygen_saturation
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Resumo do sono com ritmo respiratório
respiratory-rate-sleep-summary
respiratory_rate_sleep_summary
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
VO₂ máx. da corrida
run-vo2-max
run_vo2_max
Tipo de registro : Exemplo

Dispositivos compatíveis

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

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Dormir
sleep
sleep
Tipo de registro : sessão

Dispositivos compatíveis

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

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Dados de voltas de natação
swim-lengths-data
swim_lengths_data
Tipo de registro : Intervalo

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sintomas
symptoms
symptoms
Tipo de registro : Exemplo
create, update, batchDelete .logged_symptoms.writeonly
Tempo na faixa de frequência 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
Total de calorias
total-calories
total_calories
Tipo de registro : Intervalo

Dispositivos compatíveis

rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
VO₂ máx.
vo2-max
vo2_max
Tipo de registro : Exemplo

Dispositivos compatíveis

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Peso
weight
weight
Tipo de registro : Exemplo

Dispositivos compatíveis

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

Restrições de consulta

Ao consultar pontos de dados, resumos ou resumos diários da API, considere as seguintes restrições:

  • Requisitos de filtro:alguns tipos de dados derivados somente leitura, como total-calories, exigem um filtro que especifique um horário de início de intervalo (usando tempo físico ou civil).
  • Limites de intervalo de consulta:os endpoints de agregação de rollup e rollup diário impõem limites máximos de intervalo de consulta com base no tipo de dados:
    • Um período máximo de consulta de 14 dias para calories-in-heart-rate-zone, heart-rate, active-minutes e total-calories.
    • Um período máximo de consulta de 90 dias para todos os outros tipos de dados.

Disponibilidade de dados

As atualizações dos dados do usuário só ficam disponíveis depois que ele sincroniza o monitor fitness ou insere manualmente novos dados no app Fitbit móvel ou no app da web. O dispositivo Fitbit e o app Fitbit móvel podem ser sincronizados automaticamente a cada 15 minutos quando o app Fitbit está aberto no dispositivo móvel e os dois têm uma conexão de dados ativa e estão dentro do alcance do Bluetooth. Se o usuário estiver monitorando a atividade com o MobileTrack, ele será sincronizado a cada hora enquanto o app estiver aberto.

Consultar dados históricos

Um dos principais benefícios da API Google Health é a capacidade de acompanhar o desempenho de um usuário e monitorar os sinais vitais dele por longos períodos. Você pode consultar os dados de um usuário desde que eles foram registrados. A API não impõe limitações ou restrições à quantidade de dados históricos que seu aplicativo pode consumir.

No entanto, a consulta de dados históricos ainda é regida pelos limites de taxa padrão. Para gerenciar a estabilidade do sistema e evitar payloads excessivos, a API Google Health usa paginação automática com tamanhos de página específicos do endpoint. Observe os seguintes limites e comportamentos:

  • Paginação automática:se você consultar um período longo de dados, a API vai retornar apenas a primeira página de resultados até o limite de tamanho da página para esse endpoint, além de um nextPageToken. Use o nextPageToken para solicitar as páginas seguintes.
  • Tamanhos de página variáveis:os limites de capping dependem do endpoint e do tipo de dados. Para a maioria dos tipos de dados, os tamanhos de página são limitados a um máximo de 10.000. No entanto, para determinados tipos de dados, como exercise e sleep, o tamanho padrão e máximo da página é limitado a 25. Por exemplo, se um cliente solicitar todos os dados de sono dos últimos 10 anos, a API ainda vai retornar apenas 25 sessões de sono na primeira página.
  • Restrições de período de agregação:para endpoints de agregação e rollup de dados (como rollUp e dailyRollUp), os períodos de consulta são restritos com base no tipo de dados:
    • Um período máximo de 14 dias para calories-in-heart-rate-zone, heart-rate, active-minutes e total-calories.
    • Um período máximo de 90 dias para todos os outros tipos de dados de consolidação.

Dependendo do volume de dados históricos que seu aplicativo precisa, a recuperação de todo o conjunto de dados exigirá paginação sequencial. Tenha isso em mente ao projetar o processo de sincronização de dados do aplicativo.

Para garantir o desempenho ideal e evitar erros de API, siga estas diretrizes ao consultar dados históricos:

Sincronização de dados em fases (carga quente x carregamento a frio)

  • Carga "quente" inicial:busca e renderiza apenas os dados dos últimos 7 a 14 dias durante a sequência de carga principal. Isso garante que os usuários vejam os dados imediatamente, sem esperar por consultas de longa duração.
  • Carregamento "frio" em segundo plano:delegue a recuperação de dados históricos mais antigos a uma fila assíncrona de prioridade mais baixa ou a um processo em segundo plano depois que a interface principal for renderizada.

Divisão de consultas para agregação

  • Como os endpoints de rollup e rollup diário impõem um limite máximo de período (14 ou 90 dias, dependendo do tipo de dados), é necessário dividir consultas de agregação históricas grandes em intervalos menores e sequenciais dentro desses limites.
  • Faça em lote ou em sequência essas subconsultas com segurança para respeitar os limites de simultaneidade e manter indicadores de progresso da interface estáveis.

Aproveitar consolidações pré-agregadas

Reestruture os painéis de visão geral e os gráficos de tendências para usar endpoints pré-agregados e de resumo (como DailyRollUpDataPoints). Isso vai reduzir drasticamente a sobrecarga de computação no back-end e o tempo de transferência de rede para o cliente.

Tratamento de erros resiliente (novas tentativas inteligentes)

  • Implemente o tratamento estrito de espera exponencial ao encontrar limites de taxa (429 Too Many Requests) e tempos limite de gateway do servidor (504 Gateway Timeout). Nunca repita payloads grandes e com falha imediatamente. As novas tentativas instantâneas multiplicam o congestionamento do back-end e agravam a degradação do sistema.

Acesso de terceiros

Os dispositivos Fitbit não podem se comunicar diretamente com aplicativos ou serviços de terceiros. Esses dispositivos foram criados para se comunicar e sincronizar exclusivamente com o app Fitbit móvel.

O dispositivo sincroniza dados automaticamente ao longo do dia, sempre que o app Fitbit está aberto ou a cada 15 minutos se o Bluetooth estiver ativo e o app estiver em execução em segundo plano. Depois que esse processo de sincronização é concluído, os dados ficam disponíveis para serviços de terceiros pela API Google Health.

Padrões de distância

As distâncias de exercícios, como elevationGainMillimeters, são medidas em milímetros como unidade padrão pelos seguintes motivos:

  1. Manter a precisão dos dados: o motivo mais importante para usar milímetros é garantir que não vamos perder a precisão dos dados que lemos e fornecemos. Usar uma unidade refinada como milímetros permite representar medições com alta precisão.
  2. Padronização: milímetros são a unidade padrão projetada em todos os nossos serviços. Essa consistência ajuda a garantir uma experiência uniforme para desenvolvedores que interagem com diferentes partes da API.
  3. Suporte amplo a sistemas de medição: usar uma unidade básica, como milímetros, facilita a conversão para qualquer outra unidade escolhida, seja métrica, imperial ou outros sistemas de medição.

Duração variável do dia

O processamento de tempo pela API Health prioriza o tempo do usuário para considerar a duração variável dos dias causada pelo horário de verão ou por viagens. Cada ponto de dados é armazenado com um carimbo de data/hora UTC físico e o ajuste UTC ativo no momento do evento. Isso permite que o sistema:

  • Mapeie o evento para um instante físico preciso.
  • Corrija o horário para o contexto local do usuário para agregação.

Horário de verão

Quando o horário de verão acontece, um "recuo" resulta em um dia civil de 25 horas, e a consolidação para essa data conterá 25 horas de dados. Um "avanço" resulta em um dia civil de 23 horas em que o horário volta para o horário padrão.

Viagem

Viajar por fusos horários pode causar variações ainda mais significativas na duração física de um único dia civil.

Use o endpoint dailyRollUp para conciliar diferenças de fuso horário. Ele atribui automaticamente os dados ao dia do calendário em que foram registrados, de acordo com a hora local do usuário, "unindo" o dia, apesar das mudanças de fuso horário.