REST API de Monitoramento (versão 1)
Abaixo é apresentada a API REST disponível relacionada com dados de eventos de monitoramento.
Caso qualquer requisição a API apresentada nesta página seja considerada como não monitorada conforme regras de inclusões e exclusões, será respondido com código de erro 403.
POST /lumis/api/rest/lumis/monitor/v1/events/{eventId}/data
Adiciona uma ocorrência de um evento monitorado.
A persistência das informações podem ocorrer de forma assíncrona, por isto uma resposta de sucesso desta operação indica que o pedido de adição foi aceito, mas problemas nas informações fornecidas ou no ambiente pode impedir que seja de fato persistido.
Cabeçalhos de Requisição
Esta operação requer cabeçalhos na requisição compatíveis com:
Cabeçalho | Valor |
---|---|
Content-Type | application/json ou plain/text (para maior compatibilidade com navigator.sendBeacon ) |
Accept | application/json |
Parâmetros da Requisição
Nome | Descrição | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
fromEventClient |
Se
Em geral não se deve habilitar esse parâmetro se esta requisição não partiu do mesmo navegador e contexto que provocou a ocorrência do evento sendo registrada.
Este parâmetro por padrão assume valor |
Corpo da Requisição
O corpo da requisição deve ser um objeto JSON com os valores para os campos do evento sendo registrado. Valores para campos que não estejam na definição do evento não serão armazenados.
O tipo do valor do JSON deve ser compatível com o tipo do campo do evento, conforme a tabela abaixo:
Tipo do atributo | Tipo no JSON |
---|---|
boolean | boolean |
double, long | number |
keyword, string, text, url | string |
datetime | string no formato ISO 8601 ou number com quantidade de milisegundos desde 1/1/1970 00:00 GMT. Se declarado em ISO 8601 sem fuso horário definido, será interpretado como no fuso horário padrão da JVM do LumisXP. |
No caso de campo multivalorado, o valor deve ser um array do tipo correspondente. No caso de campo complexo, o valor deve ser um objeto (ou array de objetos se for complexo multivalorado) contendo os valores para seus campos internos.
Alguns campos quando preenchidos podem gerar valores padrões para outros campos caso estes não tenham sido explicitados. O fato de ser capaz ou não gerar o valor para os outros campos depende se foi possível inferir a partir de seu valor qual seria o valor correspondente dos demais. A tabela abaixo lista quais campos podem gerar quais outros campos:
Campo com valor fornecido | Campos com valores padrões gerados |
---|---|
lum_client.ip | lum_client.geoLocation |
lum_client.userAgent.string | lum_client.device.type |
lum_client.lumisUserSessionId | lum_client.lumisLoggedInUserId |
lum_client.origin.url | lum_client.origin.* |
lum_client.url | lum_website.id, lum_webresource.rendered.path, lum_request.mode.id, lum_client.origin.campaign.* |
lum_user.trackId | lum_user.* |
lum_object.id (se identificador de conteúdo) | lum_object.*, lum_object.serviceinstance.id |
lum_object.serviceinstance.id | lum_object.serviceinstance.*, lum_object.serviceinstance.channel.id |
lum_object.serviceinstance.channel.id | lum_object.serviceinstance.channel.* |
lum_serviceinterfaceinstance.id | lum_serviceinterfaceinstance.*, lum_serviceinterface.id, lum_serviceinstance.id, lum_service.id |
lum_serviceinstance.id | lum_serviceinstance.*, lum_service.id |
lum_serviceinstance.channel.id | lum_event.projectId |
lum_webresource.rendered.path, lum_website.id | lum_webresource.rendered.id |
lum_webresource.rendered.id | lum_webresource.rendered.*, lum_page.id, lum_page.channel.id |
lum_page.id | lum_page.*, lum_page.channel.id |
lum_page.channel.id | lum_page.channel.*, lum_website.id, lum_event.projectId |
lum_website.id | lum_website.*, lum_event.projectId |
lum_file.id | lum_file.* |
Esta geração de valores padrões pode ocorrer em cascata. Por exemplo, lum_client.url
pode gerar valor padrão para
lum_webresource.rendered.path
, que por sua vez pode gerar valor padrão para lum_page.id
, que
por sua vez pode gerar valor padrão para lum_page.channel.id
, que por sua vez pode gerar valor padrão
para lum_page.channel.*
.
O campo lum_page.channel.id
possui como valor padrão o identificador do canal raiz do website correspondente à URL
utilizada na requisição para esta operação. Este valor padrão só será utilizado se o campo não está presente no corpo e nem
for inferido a partir de outro campo.
No caso de ser utilizado este valor padrão, ele também será utilizado para gerar valores para campos deduzidos a partir deste,
conforme apresentado na tabela acima.
O campo lum_event.datetime
possui como valor padrão o instante atual.
Para que lum_event.datetime
seja mais consistente com o relógio
do servidor desta operação, recomenda-se utilizar o campo lum_event.datetime.offset
ao invés do
horário absoluto em lum_event.datetime
quando se deseja indicar que o evento ocorreu
há algum tempo conhecido atrás.
O valor do campo lum_event.datetime.offset
representa uma variação de tempo em milisegundos e seu valor
deve ser inteiro não negativo. Quando se utilizado este campo, o campo lum_event.datetime
é calculado
substruindo o offset do instante atual.
Com exceção de lum_user.trackId
, os campos lum_user.*
não podem ser especificados
diretamente. Eles serão calculados a partir do valor obtido para o campo lum_user.trackId
.
O identificador do projeto (lum_event.projectId
), caso não esteja presente na coleta, será inferido a partir dos seguintes campos na dada ordem:
lum_page.channel.id
lum_serviceinstance.channel.id
lum_website.id
Resposta de Sucesso
A resposta desta operação em caso de sucesso será o corpo vazio e código de resposta 204.
Resposta de Erro
Esta operação responde como erro o objeto JSON padrão de erro.
Caso não exista evento correspondente ao identificador especificado, o código de resposta será 404.
Caso o evento esteja desabilitado, o código de resposta será 409.
Exemplo de Requisição
No exemplo abaixo é registrada a ocorrência de um evento customizado com identificador my.custom.event
.
Assumindo que este evento já está definido no portal, e possui vários campos nativos e alguns customizados.
Neste exemplo estamos assumindo que vários campos nativos poderão ser identificados a partir de informações que
o navegador inclui naturalmente na requisição. Observe que esta chamada apenas será capaz de preencher corretamente
esses campos automaticamente se for disparada da página em que ocorreu o evento e se o navegador incluiu as
informações padrões esperadas, tais como cabeçalhos de Referer
, Cookie
, User-Agent
.
POST /lumis/api/rest/lumis/monitor/v1/events/my.custom.event/data?fromEventClient=true HTTP/1.1
Content-Type: application/json
Accept: application/json
(... outros cabeçalhos ...)
{
"lum_client": {
"origin": {
"url": "http://www.example.org/referer_of_current_page"
}
},
"my_custom_event_data": {
"field1": "some value",
"field2": "2016-09-03T13:00Z",
"field3": 12345
}
}
No exemplo abaixo é registrada uma ocorrência similar à de cima, mas explicitando vários campos que no exemplo anterior teria sido deduzidos diretamente dos dados naturalmente incluídos na requisição pelo navegador.
POST /lumis/api/rest/lumis/monitor/v1/events/my.custom.event/data?fromEventClient=false HTTP/1.1
Content-Type: application/json
Accept: application/json
(... outros cabeçalhos ...)
{
"lum_client": {
"lumisClientId": "4028E38161D8ACCD0161D8AE730804ED",
"httpSessionId": "4BF0922714E97A71D8B575F9CAE3F366",
"origin": {
"url": "http://www.example.org/referer_of_current_page"
},
"ip": "127.0.0.1",
"userAgent": {
"string": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:60.0) Gecko/20100101 Firefox/60.0"
},
"lumisUserSessionId": "02KmNRsaHpR3dJ2abxK7toklmhpj5zDc",
"locale": "pt_BR",
"url": "http://www.example.org/my_current_page/"
},
"lum_server": {
"id": "LumisPortalServer"
},
"lum_user": {
"trackId": "qmIb4Glytq-F2_zSe66Pa3ypEWtP4LXb"
},
"my_custom_event_data": {
"field1": "some value",
"field2": "2016-09-03T13:00Z",
"field3": 12345
}
}