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.
Tipo de dadosdataType
Parâmetro filter |
Operações disponíveis |
Escopo |
|---|---|---|
|
Calorias queimadas em atividade
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutos ativos
active-minutesactive_minutes
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Minutos na faixa ativa
active-zone-minutesactive_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
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Altitude
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Glicose no sangue
|
list, get, reconcile, rollup, dailyRollup | .health_metrics_and_measurements.readonly.health_metrics_and_measurements.writeonly |
Gordura corporal
body-fatbody_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-zonecalories_in_heart_rate_zone
Tipo de registro : Intervalo
|
rollup, 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 |
Variabilidade da frequência cardíaca diária
daily-heart-rate-variabilitydaily_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-zonesdaily_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-saturationdaily_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-ratedaily_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-ratedaily_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-derivationsdaily_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-maxdaily_vo2_max
Tipo de registro : diário
Dispositivos compatíveis
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Distância
distancedistance
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Eletrocardiograma (ECG)
electrocardiogramelectrocardiogram
Tipo de registro : sessão
Dispositivos compatíveis
|
list | .ecg.readonly |
Exercício
exerciseexercise
Tipo de registro : sessão
Dispositivos compatíveis
|
list, get, reconcile, create, update, batchDelete | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Andares
|
reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
|
Comida
|
list, get | .nutrition.readonly.nutrition.writeonly |
Unidade de medida de alimentos
food-measurement-unitfood_measurement_unit
Tipo de registro : alimentos
Dispositivos compatíveis
|
list, get | .nutrition.readonly.nutrition.writeonly |
Frequência cardíaca
heart-rateheart_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-variabilityheart_rate_variability
Tipo de registro : Exemplo
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
irregular-rhythm-notificationirregular_rhythm_notification
Tipo de registro : sessão
|
list | .irn.readonly |
Período menstrual
menstrual-periodmenstrual_period
Tipo de registro : Intervalo
|
create, update, batchDelete | .reproductive_health.writeonly |
Humores
moodsmoods
Tipo de registro : Exemplo
|
create, update, batchDelete | .mindfulness.writeonly |
Registro de alimentação
nutrition-lognutrition_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-testovulation_test
Tipo de registro : Exemplo
|
create, update, batchDelete | .reproductive_health.writeonly |
Saturação de oxigênio
oxygen-saturationoxygen_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-summaryrespiratory_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-maxrun_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-periodsedentary_period
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Dormir
sleepsleep
Tipo de registro : sessão
Dispositivos compatíveis
|
list, get, reconcile, create, update, batchDelete | .sleep.readonly.sleep.writeonly |
Etapas
stepssteps
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-dataswim_lengths_data
Tipo de registro : Intervalo
Dispositivos compatíveis
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Sintomas
symptomssymptoms
Tipo de registro : Exemplo
|
create, update, batchDelete | .logged_symptoms.writeonly |
|
Tempo na faixa de frequência cardíaca
|
list, reconcile, rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Total de calorias
total-caloriestotal_calories
Tipo de registro : Intervalo
Dispositivos compatíveis
|
rollup, dailyRollup | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
VO₂ máx.
vo2-maxvo2_max
Tipo de registro : Exemplo
Dispositivos compatíveis
|
list, reconcile | .activity_and_fitness.readonly.activity_and_fitness.writeonly |
Peso
weightweight
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-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
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 determinados 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 período de agregação:para endpoints de agregação e rollup de dados (como
rollUpedailyRollUp), 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-minutesetotal-calories. - Um período máximo de 90 dias para todos os outros tipos de dados de consolidaçã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 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:
- 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 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.