Webhook é um método simples e independente, que facilita com que uma API forneça informações em tempo real sempre que um evento acontece.
A Loggi identifica a mudança de status e envia o rastreio do pacote em tempo real pelo Webhook, e o parceiro também pode consultar a lista de status atualizada.
A API precisa ser implementada para que seja possível receber a requisição no formato definido.

Como configurar o webhook

Contate nosso time de vendas fornecendo o endpoint para recebimento dos status do pacote.

O endpoint deverá ser HTTPS e seguir os padrões REST API, retornando código de status de resposta 200 (Ok) ou 201 (Created).

Autenticação do endpoint
O endpoint deverá receber o Header Authorization na requisição com as credenciais de autenticação.

A autenticação deve ser Basic Authentication conforme exemplo abaixo. Para isso, também é necessário fornecer o username e password para nosso time de vendas.

Authorization: Basic ${username:password}

Testes
Nosso time de vendas organizará as seções de testes. Caso preferir, forneça outro endpoint para realização dos testes.

Payload da requisição

A requisição será feita através do método POST, enviando um payload em JSON no body conforme exemplo abaixo.

curl --request POST \
  --url https://webhook.api.com/tracking \
  --header 'Accept: application/json'
{
  "packages": [
    {
      "loggiKey": "KIF511LG3LGGA3U8G28B4200NA",
      "trackingCode": "SH1007503594LG",
      "status": {
        "code": "5",
        "highLevelStatus": "Entregue",
        "description": "O pacote foi recebido no endereço de entrega.",
        "actionRequired": null,
        "updatedTime": "2021-05-05T10:40:18.941518Z"
      },
      "location":{
        "city":"São Paulo"
        "state":"SP"
      },
      "promisedDate": "2021-05-05",
      "requestTime": "2021-05-05T10:43:18.941518Z",
      "trackingHistory": [
        {
          "status": {
            "code": "5",
            "highLevelStatus": "Entregue",
            "description": "O pacote foi recebido no endereço de entrega.",
            "actionRequired": null,
            "updatedTime":"2021-05-05T10:40:18.941518Z"
          },
          "location":{
            "city":"São Paulo"
            "state":"SP"
          }
        },
        {
          "status": {
            "code": "11",
            "highLevelStatus": "Saiu para entrega",
            "description": "O pacote saiu para entrega ao destinatário.",
            "actionRequired": null,
            "updatedTime":"2021-05-04T17:36:16.941518Z"
          }
        },
        {
          "status": {
          	"code": "6",
            "highLevelStatus": "Com problema",
            "description": "Algo deu errado e o pacote está parado. Resolva o problema para seguir com o envio.",
            "actionRequired": {
              "reasonDescription": "Confira se está tudo certo com as informações do destinatário. Se tiver errado, corrija ou interrompa o envio.",
              "reasonLabel":"Aguardando tratativa"
            },
            "updatedTime":"2021-05-04T15:10:12.941518Z"
          }
        },
        {
          "status": {
            "code": "3",
            "highLevelStatus": "Em processamento",
            "description": "O pacote já foi coletado e está em processamento.",
            "actionRequired": null,
            "updatedTime":"2021-05-04T14:25:15.941518Z"
          },
          "location":{
            "city":"São Paulo"
            "state":"SP"
          }
        },
        {
          "status": {
            "code": "1",
            "highLevelStatus": "Adicionado",
            "description": "A etiqueta de envio já foi criada e o pacote está pronto para a coleta.",
            "actionRequired": null,
            "updatedTime":"2021-05-04T12:53:12.941518Z"
          }
        }
      ]
    }
  ]
}

Request schema type: object

[Object] packages
Objeto que representa os dados de rastreio de um pacote.

String packages[i].loggiKey
Chave que identifica unicamente um pacote dentro da Loggi.

String packages[i].trackingCode
Código de rastreio de um pacote.

Object packages[i].status
Objeto que representa as informações do status de um pacote.

Integer packages[i].status.code
Código numérico referente ao estado do pacote.

String packages[i].status.highLevelStatus
Status geral do pacote em formato legível.

String packages[i].status.description
Breve descrição do status do pacote.

Object packages[i].status.actionRequired
Objeto que representa uma ação que deve ser tomada pelo embarcador para continuar a entrega.

String packages[i].status.updatedTime
Data que o pacote entrou no status atual.

Object packages[i].location
Objeto que representa a localização do pacote em seu status atual.

String packages[i].location.city
Cidade de onde a localização foi inferida para o status.

String packages[i].location.state
Estado (UF) de onde a localização foi inferida para o status.

String packages[i].promisedDate
Estimativa de data para a primeira tentativa de entrega.

String packages[i].requestTime
Timestamp do momento da requisição.

[Object] packages[i].trackingHistory
Histórico de status de um pacote.

Object packages[i].trackingHistory[i].status
Objeto que representa as informações do status de um pacote.

Object packages[i].trackingHistory[i].location
Objeto que representa a localização do pacote em um dado status.

Lista de Status codes

Confira a lista na página anterior da TrackingAPI:
https://loggi-platform.readme.io/reference#trackingapi