POST para a URL do endpoint com o corpo JSON (envelope) e headers de identificação.
Requisição enviada
Headers
Envelope
Dados do evento. O conteúdo depende do
tipo; veja o catálogo de eventos.Validar o token
Compare o headerX-Gestio-Webhook-Token com o token que você guardou no cadastro do endpoint. Se for diferente ou estiver ausente, responda 401 e não processe o evento.
Responder ao evento
Regras da chamada:
- Tempo limite de 10 segundos. Responda rápido: grave o evento e processe depois, de forma assíncrona.
- Redirecionamentos não são seguidos. Uma resposta
3xxconta como falha definitiva; cadastre a URL final. - O corpo da sua resposta é ignorado e não é gravado.
Novas tentativas
Falhas temporárias são repetidas com intervalos crescentes, num total de 6 tentativas (o envio inicial e mais 5):
Se todas falharem, o log fica com a situação
Falha e pode ser reenviado manualmente.
Cada tentativa com falha incrementa o contador de falhas do endpoint. Com 20 falhas seguidas, o endpoint é desativado automaticamente. Veja Ativar e desativar.
Boas práticas
Trate duplicidades pelo id
Trate duplicidades pelo id
O envio é feito pelo menos uma vez. Guarde os
id já processados e ignore os repetidos. Um mesmo pedido processado de novo no Gestio gera um log com outro id; para esse caso, use os dados do evento (por exemplo, numeroDoPedido) para decidir se deve atualizar o registro.Responda primeiro, processe depois
Responda primeiro, processe depois
Grave o envelope e responda
200 antes de executar regras demoradas. O limite é de 10 segundos.Ignore os envios de teste
Ignore os envios de teste
Envios de teste têm
teste: true e dados fictícios. Responda 2xx para confirmar a conectividade, mas não as processe como eventos reais.Ignore campos desconhecidos
Ignore campos desconhecidos
Novos campos podem ser adicionados a
dados sem mudar a versao do envelope. Seu sistema não deve falhar ao receber campos que não conhece.Não dependa da ordem
Não dependa da ordem
Eventos podem chegar fora de ordem, principalmente após novas tentativas. Use
ocorridoEm quando a ordem importar.