Open the menu

    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 true, os campos listados abaixo, caso consigam ter seu valor deduzido a partir de informações contidas na requisição feita para esta operação conforme descrito em cada campo, tal valor será usado para o campo caso o campo não tenha sido explicitado no corpo da requisição. Se false estes campos não terão valor padrão.

    CampoDescrição
    lum_client.ip O valor padrão é o IP que efetuou a requisição para esta operação. Este valor padrão é apropriado apenas se o IP do cliente que está efetuando esta requisição for o desejado para este registro.
    lum_client.locale O valor padrão é obtido da sessão atual do LumisXP a que a requisição feita para esta operação pertence. A sessão do LumisXP é identificada a partir de cookies presente na requisição. Este valor padrão é apropriado apenas se o idioma da sessão do LumisXP correspondente for o desejado para o evento sendo registrado.
    lum_client.userAgent.string O valor padrão é obtido do cabeçalho de requisição User-Agent. Este valor padrão é apropriado apenas se o navegador onde ocorreu o evento sendo registrado for o mesmo enviando a requisição para esta operação.
    lum_client.lumisClientId O valor padrão é obtido do cookie lumClientId. Este valor padrão é apropriado apenas se o navegador onde ocorreu o evento sendo registrado for o mesmo enviando a requisição para esta operação.
    lum_client.httpSessionId O valor padrão é obtido da requisição pelo servidor de aplicação. Este valor padrão é apropriado apenas se a sessão atual no site do LumisXP onde esta operação está sendo executada corresponder ao evento sendo registrado.
    lum_client.lumisUserSessionId O valor padrão é obtido da sessão atual do LumisXP a que a requisição feita para esta operação pertence. A sessão do LumisXP é identificada a partir de cookies presentes na requisição. Este valor padrão é apropriado apenas se a sessão atual no site do LumisXP onde esta operação está sendo executada corresponder ao evento sendo registrado.
    lum_client.url O valor padrão é obtido do cabeçalho de requisição Referer. Este valor padrão é apropriado apenas se a chamada para esta operação foi feita do mesmo navegador e a partir de página cuja URL corresponde ao evento sendo registrado.
    lum_user.trackId O valor padrão é obtido do cookie lumMonUid. Este valor padrão é apropriado apenas se o usuário que estaria sendo rastreado para este mesmo navegador pelo site do LumisXP onde esta operação está sendo executada corresponder ao evento sendo registrado.
    lum_server.id O valor padrão é o identificador do servidor LumisXP onde esta operação está sendo executada. Este valor padrão é apropriado apenas se o servidor LumisXP executando esta requisição corresponde ao evento sendo registrado, como por exemplo uma ação efetuada no LumisXP pelo mesmo navegador e mesma sessão, tendo qualquer eventual load balancer no caminho configurado com session affinity.

    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 true se o cabeçalho Referer e a URL da requisição feita a esta operação possuírem mesmo hostname e porta; caso contrário seu valor padrão é false.

    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 atributoTipo no JSON
    booleanboolean
    double, longnumber
    keyword, string, text, urlstring
    datetimestring 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:

    1. lum_page.channel.id
    2. lum_serviceinstance.channel.id
    3. 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
      }
    }