agrega dados de um determinado tipo ou fluxo em buckets divididos por um determinado um tipo de limite. Vários conjuntos de dados de diversos tipos e de diversas origens podem ser agregadas em exatamente um tipo de bucket por solicitação. Faça o teste agora.
Solicitação
Solicitação HTTP
POST https://www.googleapis.com/fitness/v1/users/userId/dataset:aggregate
Parâmetros
Nome do parâmetro | Valor | Descrição |
---|---|---|
Parâmetros de caminho | ||
userId |
string |
Agregar dados sobre a pessoa identificada. Use me para indicar
o usuário autenticado. Somente me é compatível no momento.
|
Autorização
Esta solicitação requer autorização com pelo menos um dos seguintes escopos:
Escopo |
---|
https://www.googleapis.com/auth/fitness.activity.read |
https://www.googleapis.com/auth/fitness.activity.write |
https://www.googleapis.com/auth/fitness.location.read |
https://www.googleapis.com/auth/fitness.location.write |
https://www.googleapis.com/auth/fitness.body.read |
https://www.googleapis.com/auth/fitness.body.write |
https://www.googleapis.com/auth/fitness.nutrition.read |
https://www.googleapis.com/auth/fitness.nutrition.write |
https://www.googleapis.com/auth/fitness.blood_pressure.read |
https://www.googleapis.com/auth/fitness.blood_pressure.write |
https://www.googleapis.com/auth/fitness.blood_glucose.read |
https://www.googleapis.com/auth/fitness.blood_glucose.write |
https://www.googleapis.com/auth/fitness.oxygen_saturation.read |
https://www.googleapis.com/auth/fitness.oxygen_saturation.write |
https://www.googleapis.com/auth/fitness.body_temperature.read |
https://www.googleapis.com/auth/fitness.body_temperature.write |
https://www.googleapis.com/auth/fitness.reproductive_health.read |
https://www.googleapis.com/auth/fitness.reproductive_health.write |
Para mais informações, consulte a página de autenticação e autorização.
Corpo da solicitação
No corpo da solicitação, forneça os dados com a seguinte estrutura:
{ "startTimeMillis": long, "endTimeMillis": long, "aggregateBy": [ { "dataTypeName": string, "dataSourceId": string } ], "filteredDataQualityStandard": [ string ], "bucketByTime": { "durationMillis": long, "period": { "type": string, "value": integer, "timeZoneId": string } }, "bucketBySession": { "minDurationMillis": long }, "bucketByActivityType": { "minDurationMillis": long, "activityDataSourceId": string }, "bucketByActivitySegment": { "minDurationMillis": long, "activityDataSourceId": string } }
Nome da propriedade | Valor | Descrição | Observações |
---|---|---|---|
startTimeMillis |
long |
O início de uma janela de tempo. Os dados que cruzam com essa janela de tempo serão agregados. A hora está em milissegundos desde o período, inclusive. | |
endTimeMillis |
long |
O fim de uma janela de tempo. Os dados que cruzam com essa janela de tempo serão agregados. A hora está em milissegundos desde o período, inclusive. | |
aggregateBy[] |
list |
A especificação dos dados a serem agregados. Pelo menos uma especificação "aggregateBy" precisa ser fornecida. Todos os dados especificados serão agregados usando os mesmos critérios de agrupamento por classes. Haverá um conjunto de dados na resposta para cada especificaçãoaggregateBy. | |
aggregateBy[].dataTypeName |
string |
O tipo de dados a serem agregados. Todas as fontes que fornecem esse tipo de dado contribuirão para a agregação. A resposta conterá um único conjunto de dados para o nome desse tipo de dados. O conjunto de dados terá o ID de origem de dados derivad: | |
aggregateBy[].dataSourceId |
string |
Um ID de fonte de dados para agregar. Somente os dados do ID da fonte de dados especificado serão incluídos na agregação. Se especificada, essa fonte de dados precisa existir. os escopos do OAuth nas credenciais fornecidas precisam conceder acesso de leitura a esse tipo de dados. O conjunto de dados na resposta terá o mesmo ID de origem de dados. Observação: os dados podem ser agregados por dataTypeName ou dataSourceId, não por ambos. | |
filteredDataQualityStandard[] |
list |
NÃO preencha este campo. Ela é ignorada. | |
bucketByTime |
nested object |
Especifica que os dados serão agregados por um único intervalo de tempo. Mutuamente exclusivo de outras especificações de agrupamento por classes. | |
bucketByTime.durationMillis |
long |
Especifica que os intervalos de resultados agregam dados de acordo com os períodos de tempo de duraçãoMillis exatos. Os prazos que não contiverem dados serão incluídos na resposta com um conjunto de dados vazio. | |
bucketByTime.period |
nested object |
||
bucketByTime.period.type |
string |
Os valores aceitáveis são:
|
|
bucketByTime.period.value |
integer |
||
bucketByTime.period.timeZoneId |
string |
org.joda.timezone.DateTimeZone | |
bucketBySession |
nested object |
Especifica que os dados serão agregados por sessões de usuários. Os dados que não estiverem no período de uma sessão não serão incluídos na resposta. Mutuamente exclusivo de outras especificações de agrupamento por classes. | |
bucketBySession.minDurationMillis |
long |
Especifica que apenas as sessões com duração maior que minDurationMillis são consideradas e usadas como um contêiner de dados agregados. | |
bucketByActivityType |
nested object |
Especifica que os dados serão agregados pelo tipo de atividade sendo realizada quando os dados foram registrados. Todos os dados registrados durante um determinado tipo de atividade (para o período determinado) serão agregados no mesmo bucket. Os dados registrados enquanto o usuário não estava ativo não serão incluídos na resposta. Mutuamente exclusivo de outras especificações de agrupamento por classes. | |
bucketByActivityType.minDurationMillis |
long |
Especifica que apenas segmentos de atividade com duração maior que minDurationMillis são considerados e usados como um contêiner de dados agregados. | |
bucketByActivityType.activityDataSourceId |
string |
O stream de atividades padrão será usado se um activityDataSourceId específico não for especificado. | |
bucketByActivitySegment |
nested object |
Especifica que os dados serão agregados a cada segmento de atividade registrado para um usuário. Semelhante a bucketByActivitySegment, mas o agrupamento é feito para cada segmento de atividade em vez de todos os segmentos do mesmo tipo. Mutuamente exclusivo de outras especificações de agrupamento por classes. | |
bucketByActivitySegment.minDurationMillis |
long |
Especifica que apenas segmentos de atividade com duração maior que minDurationMillis são considerados e usados como um contêiner de dados agregados. | |
bucketByActivitySegment.activityDataSourceId |
string |
O stream de atividades padrão será usado se um activityDataSourceId específico não for especificado. |
Resposta
Se for bem-sucedido, esse método retornará um corpo de resposta com esta estrutura:
{ "bucket": [ { "type": string, "startTimeMillis": long, "endTimeMillis": long, "dataset": [ users.dataSources.datasets Resource ], "session": { "id": string, "name": string, "description": string, "startTimeMillis": long, "endTimeMillis": long, "modifiedTimeMillis": long, "application": { "packageName": string, "version": string, "detailsUrl": string, "name": string }, "activityType": integer, "activeTimeMillis": long }, "activity": integer } ] }
Nome da propriedade | Valor | Descrição | Observações |
---|---|---|---|
bucket[] |
list |
Uma lista de buckets que contém os dados agregados. | |
bucket[].type |
string |
O tipo de bucket indica como a agregação de dados é executada nele.
Os valores aceitáveis são:
|
|
bucket[].startTimeMillis |
long |
É o horário de início dos dados agregados, em milissegundos desde a época, inclusive. | |
bucket[].endTimeMillis |
long |
É o horário de término dos dados agregados, em milissegundos desde a época, inclusive. | |
bucket[].dataset[] |
list |
Haverá um conjunto de dados por AggregateBy na solicitação. | |
bucket[].session |
nested object |
Disponível para Bucket.Type.SESSION | |
bucket[].session.id |
string |
Um identificador gerado pelo cliente que é exclusivo em todas as sessões desse usuário específico. | |
bucket[].session.name |
string |
Um nome legível da sessão. | |
bucket[].session.description |
string |
Uma descrição da sessão. | |
bucket[].session.startTimeMillis |
long |
Um horário de início, em milissegundos desde o período, inclusive. | |
bucket[].session.endTimeMillis |
long |
Um horário de término, em milissegundos desde o período, inclusive. | |
bucket[].session.modifiedTimeMillis |
long |
Carimbo de data/hora que indica quando a sessão foi modificada pela última vez. | |
bucket[].session.application |
nested object |
O aplicativo que criou a sessão. | |
bucket[].session.application.packageName |
string |
Nome do pacote deste aplicativo. Ele é usado como um identificador exclusivo quando criado por aplicativos Android, mas não pode ser especificado por clientes REST. Os clientes REST terão o número do projeto do desenvolvedor refletido nos IDs do fluxo de dados da fonte de dados, e não no packageName. | |
bucket[].session.application.version |
string |
Versão do aplicativo. Atualize esse campo sempre que o aplicativo for alterado de maneira que afete a computação dos dados. | |
bucket[].session.application.detailsUrl |
string |
Um URI opcional que pode ser usado para vincular de volta ao aplicativo. | |
bucket[].session.application.name |
string |
O nome deste aplicativo. Isso é obrigatório para clientes REST, mas não aplicamos a exclusividade desse nome. Ele é fornecido como uma questão de conveniência para outros desenvolvedores que querem identificar qual REST criou um aplicativo ou fonte de dados. | |
bucket[].session.activityType |
integer |
O tipo de atividade que esta sessão representa. | |
bucket[].session.activeTimeMillis |
long |
Tempo de atividade da sessão. Embora start_time_millis e end_time_millis definam o tempo completo da sessão, o tempo ativo pode ser menor e especificado por "active_time_millis". Se o tempo inativo durante a sessão for conhecido, ele também precisará ser inserido por um ponto de dados com.google.activity.segment com um valor de atividade STILL |
|
bucket[].activity |
integer |
Disponível para Bucket.Type.ACTIVITY_TYPE, Bucket.Type.ACTIVITY_SEGMENT |
Confira!
Use o APIs Explorer abaixo para chamar esse método em dados ativos e ver a resposta.