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.

Campos de tipo de dados

A tabela de tipos de dados da API Google Health inclui várias colunas de campo para ajudar você a entender a representação e os requisitos de cada tipo de dado. Estas são as colunas:

Tabela: descrições dos campos de tipo de dados da API Google Health
Campo Descrição
dataType O identificador separado por hífens (por exemplo, active-minutes) usado em URLs de endpoint.
Parâmetro filter O identificador separado por sublinhados (por exemplo, active_minutes) usado como valor do parâmetro de filtro dataType em solicitações de resumo diário e resumo.
Tipo de registro

Indica a estrutura e o formato dos dados gravados. Internamente, isso se alinha à representação de recurso dos pontos de dados. Os valores possíveis são:

  • Interval (Representa medições registradas durante um período.)
  • Sample (representa medições instantâneas).
  • Daily (representa medições agregadas ou registradas diariamente)
  • Session (representa um bloco contínuo de gravação, como um treino ou uma sessão de eletrocardiograma (ECG)).
  • Food (representa um item alimentar ou uma entidade de dados relacionada à nutrição).
Operações disponíveis Lista os métodos de API compatíveis com o tipo de dados (como list, create e rollUp).
Escopo Os escopos OAuth necessários para acessar o tipo de dados.
Suporte a webhook Indica que o tipo de dados oferece suporte a notificações em tempo real usando webhooks quando novos dados são sincronizados.
Suporte a zeros reais Indica que o tipo de dados aceita o registro de valores zero explícitos para diferenciar entre um valor zero ativo (como zero minutos ativos) e dados ausentes ou não registrados.
Resolução de armazenamento O intervalo mínimo de gravação ou amostragem em que os pontos de dados são armazenados (por exemplo, 1 minuto para steps). Para resumos, isso representa o windowSize mínimo recomendado para garantir uma agregação distribuída uniformemente sem artefatos de dados de subintervalo.
Dispositivos compatíveis Uma lista expansível de dispositivos físicos que podem gravar e sincronizar esse tipo de dado com a API Google Health (usando o app Fitbit).

Tabela: tipos de dados da API Google Health
Tipo de dado Available
operations
Escopo
Calorias ativas queimadas
dataType:active-energy-burned
filter parameter:active_energy_burned
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Minutos ativos
dataType:active-minutes
filter parameter:active_minutes
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto

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
dataType:active-zone-minutes
filter parameter:active_zone_minutes
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Nível de atividade
dataType:activity-level
filter parameter:activity_level
Tipo de registro : Intervalo
list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Altitude
dataType:altitude
filter parameter:altitude
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Glicose no sangue
dataType:blood-glucose
filter parameter:blood_glucose
Tipo de registro : amostra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Gordura corporal
dataType:body-fat
filter parameter:body_fat
Tipo de registro : amostra

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
dataType:calories-in-heart-rate-zone
filter parameter:calories_in_heart_rate_zone
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Temperatura corporal central
dataType:core-body-temperature
filter parameter:core_body_temperature
Tipo de registro : amostra
list, get, reconcile, rollup, dailyRollup .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Variabilidade da frequência cardíaca diária
dataType:daily-heart-rate-variability
filter parameter: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
dataType:daily-heart-rate-zones
filter parameter:daily_heart_rate_zones
Tipo de registro : diário
list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Saturação diária de oxigênio
dataType:daily-oxygen-saturation
filter parameter: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
dataType:daily-respiratory-rate
filter parameter: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
dataType:daily-resting-heart-rate
filter parameter: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 de temperatura do sono
dataType:daily-sleep-temperature-derivations
filter parameter: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
dataType:daily-vo2-max
filter parameter:daily_vo2_max
Tipo de registro : diário

Dispositivos compatíveis

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Distância
dataType:distance
filter parameter:distance
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto

Dispositivos compatíveis

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

Dispositivos compatíveis

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

Dispositivos compatíveis

list, get, reconcile, create, update, batchDelete .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Andares
dataType:floors
filter parameter:floors
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Comida
dataType:food
filter parameter:food
Tipo de registro : alimentos
list, get .nutrition.readonly
.nutrition.writeonly
Unidade de medida de alimentos
dataType:food-measurement-unit
filter parameter:food_measurement_unit
Tipo de registro : alimentos

Dispositivos compatíveis

list, get .nutrition.readonly
.nutrition.writeonly
Frequência cardíaca
dataType:heart-rate
filter parameter:heart_rate
Tipo de registro : amostra
Resolução de armazenamento : 1 segundo (1s)

Dispositivos compatíveis

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

Dispositivos compatíveis

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

Dispositivos compatíveis

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

Dispositivos compatíveis

list, reconcile .health_metrics_and_measurements.readonly
.health_metrics_and_measurements.writeonly
Resumo do sono com taxa respiratória
dataType:respiratory-rate-sleep-summary
filter parameter:respiratory_rate_sleep_summary
Tipo de registro : amostra

Dispositivos compatíveis

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

Dispositivos compatíveis

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

Dispositivos compatíveis

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

Dispositivos compatíveis

list, get, reconcile, create, update, batchDelete .sleep.readonly
.sleep.writeonly
Etapas
dataType:steps
filter parameter:steps
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto

Dispositivos compatíveis

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

Dispositivos compatíveis

list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Sintomas
dataType:symptoms
filter parameter:symptoms
Tipo de registro : amostra
create, update, batchDelete .logged_symptoms.writeonly
Tempo na faixa de frequência cardíaca
dataType:time-in-heart-rate-zone
filter parameter:time_in_heart_rate_zone
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
list, reconcile, rollup, dailyRollup .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Total de calorias
dataType:total-calories
filter parameter:total_calories
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto

Dispositivos compatíveis

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

Dispositivos compatíveis

list, reconcile .activity_and_fitness.readonly
.activity_and_fitness.writeonly
Peso
dataType:weight
filter parameter:weight
Tipo de registro : amostra

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 do intervalo (usando hora física 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.
  • Tamanho da janela de agrupamento:ao chamar o endpoint rollUp, a duração windowSize precisa ser de pelo menos 1 segundo ("1s"). Durações inferiores a um segundo são rejeitadas com INVALID_ARGUMENT. Além disso, escolha um windowSize igual ou maior que a resolução de armazenamento do tipo de dados (como "60s" para tipos de dados de intervalo de um minuto, como steps e distance) para evitar uma distribuição desigual entre os subintervalos. Para mais detalhes, consulte Tamanho da janela de rollup e resolução de armazenamento subjacente.

Tipos de dados diários x de intervalo

Para determinadas métricas fisiológicas, como variabilidade da frequência cardíaca (VFC) ou saturação de oxigênio (SpO₂), a API Google Health oferece dois tipos de dados distintos: uma versão Diária e uma versão Intervalo. Entender a diferença é fundamental para escolher a métrica certa para seu caso de uso:

  • Diário: um único resumo pré-agregado para o dia inteiro. Use isso para tendências de alto nível e painéis diários para economizar no processamento.

  • Intervalo: medições granulares de alta resolução feitas ao longo do dia. Use isso para criar gráficos de flutuações intradiárias ou realizar análises detalhadas por hora.

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 alguns 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 intervalo de datas de consolidação:para endpoints de consolidação e agregação de dados (como rollUp e dailyRollUp), os intervalos de datas 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 agregaçã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 a performance 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 inicial "quente":busca e renderiza apenas os dados dos 7 a 14 dias mais recentes durante a sequência de carga principal. Isso garante que os usuários vejam os dados imediatamente, sem precisar 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 baixa prioridade 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.
  • Agrupe ou sequencie 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 tente novamente 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 projetados 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 horário 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 de 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 vai conter 25 horas de dados. Um "avanço de primavera" 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 as 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.