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:
| 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:
|
| 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). |
| Tipo de dado | Available operations |
Escopo |
|---|---|---|
|
Calorias ativas queimadas
dataType:
active-energy-burnedfilter 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-minutesfilter parameter: active_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 |
|
Minutos na faixa ativa
dataType:
active-zone-minutesfilter 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-levelfilter parameter: activity_level
Tipo de registro : Intervalo
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Altitude
dataType:
altitudefilter 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-glucosefilter 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-fatfilter 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-zonefilter 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-temperaturefilter 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-variabilityfilter 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-zonesfilter 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-saturationfilter 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-ratefilter 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-ratefilter 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-derivationsfilter 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-maxfilter 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:
distancefilter 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:
electrocardiogramfilter parameter: electrocardiogram
Tipo de registro : sessão
Dispositivos compatíveis
|
list | .ecg.readonly |
|
Exercício
dataType:
exercisefilter 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:
floorsfilter parameter: floors
Tipo de registro : Intervalo
Resolução de armazenamento : 1 minuto
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Comida
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Unidade de medida de alimentos
dataType:
food-measurement-unitfilter parameter: food_measurement_unit
Tipo de registro : alimentos
Dispositivos compatíveis
|
list, get | .nutrition.readonly.nutrition.writeonly |
|
Frequência cardíaca
dataType:
heart-ratefilter 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-variabilityfilter parameter: heart_rate_variability
Tipo de registro : amostra
Dispositivos compatíveis
|
list, reconcile | .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 hidratação
|
list, get, reconcile, rollup, dailyRollup, create, update, batchDelete | .nutrition.readonly.nutrition.writeonly |
|
Notificação de ritmo irregular
dataType:
irregular-rhythm-notificationfilter parameter: irregular_rhythm_notification
Tipo de registro : sessão
|
list | .irn.readonly |
|
Período menstrual
dataType:
menstrual-periodfilter parameter: menstrual_period
Tipo de registro : Intervalo
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Humores
|
create, update, batchDelete | .mindfulness.writeonly |
|
Registro de alimentação
dataType:
nutrition-logfilter 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-testfilter parameter: ovulation_test
Tipo de registro : amostra
|
create, update, batchDelete | .reproductive_health.writeonly |
|
Saturação de oxigênio
dataType:
oxygen-saturationfilter 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-summaryfilter 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-maxfilter 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-periodfilter parameter: sedentary_period
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Dormir
dataType:
sleepfilter parameter: sleep
Tipo de registro : sessão
Dispositivos compatíveis
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
|
Etapas
dataType:
stepsfilter 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-datafilter parameter: swim_lengths_data
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Sintomas
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Tempo na faixa de frequência cardíaca
dataType:
time-in-heart-rate-zonefilter 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-caloriesfilter 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-maxfilter parameter: vo2_max
Tipo de registro : amostra
Dispositivos compatíveis
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Peso
dataType:
weightfilter 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-minutesetotal-calories. - Um período máximo de consulta de 90 dias para todos os outros tipos de dados.
- Um período máximo de consulta de 14 dias para
- Tamanho da janela de agrupamento:ao chamar o endpoint
rollUp, a duraçãowindowSizeprecisa ser de pelo menos 1 segundo ("1s"). Durações inferiores a um segundo são rejeitadas comINVALID_ARGUMENT. Além disso, escolha umwindowSizeigual ou maior que a resolução de armazenamento do tipo de dados (como"60s"para tipos de dados de intervalo de um minuto, comostepsedistance) 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 onextPageTokenpara 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
exerciseesleep, 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
rollUpedailyRollUp), 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-minutesetotal-calories. - Um período máximo de 90 dias para todos os outros tipos de dados de agregação.
- Um período máximo de 14 dias para
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:
- 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.
- 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.
- 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.