Endpoints
O endpoint é uma URL de um Consumer, com a lista de tipos de evento que ela recebe e o secret que assina as entregas. Um Consumer pode ter vários: o estoque e o ERP da mesma empresa, cada um com os tipos que interessam a ele.
Cadastrar
Seção intitulada “Cadastrar”curl -X POST https://api.notyfacil.com.br/v1/endpoints \ -H "Authorization: Bearer $NOTYFACIL_KEY" \ -H "Content-Type: application/json" \ -d '{"consumer":"cliente-42","url":"https://padariadoze.com.br/webhooks","events":["pedido.pago"]}'const resposta = await fetch('https://api.notyfacil.com.br/v1/endpoints', { method: 'POST', headers: { Authorization: `Bearer ${process.env.NOTYFACIL_KEY}`, 'Content-Type': 'application/json', }, body: JSON.stringify({ consumer: 'cliente-42', url: 'https://padariadoze.com.br/webhooks', events: ['pedido.pago'], }),})
const { id, secret } = await resposta.json()$ch = curl_init('https://api.notyfacil.com.br/v1/endpoints');curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ 'Authorization: Bearer ' . getenv('NOTYFACIL_KEY'), 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'consumer' => 'cliente-42', 'url' => 'https://padariadoze.com.br/webhooks', 'events' => ['pedido.pago'], ]),]);$endpoint = json_decode(curl_exec($ch), true);{ "id": "ep_01JB8Y1D6TQ4X8N2VK5HWZ3RFM", "url": "https://padariadoze.com.br/webhooks", "events": ["pedido.pago"], "secret": "whsec_…" }Quais eventos o endpoint recebe
Seção intitulada “Quais eventos o endpoint recebe”- Com
events, o endpoint recebe só os tipos da lista, que precisam estar cadastrados. - Sem
events, ou com a lista vazia, recebe todos os tipos, inclusive os que forem cadastrados depois.
A inscrição vale para os eventos publicados daqui para a frente. Para mandar a um endpoint novo um evento antigo, use o replay.
Regras de URL
Seção intitulada “Regras de URL”A URL é validada no cadastro e de novo a cada entrega, porque o DNS de um host pode mudar entre um momento e outro.
httpsobrigatório no ambiente de produção.- Portas 80 e 443.
- Sem usuário e senha embutidos na URL. Se o receptor exige credencial, use os headers fixos.
- O host não pode resolver para uma rede privada, de loopback ou de metadados de nuvem.
- Até 2.048 caracteres.
- Redirecionamento não é seguido: cadastre a URL final.
Headers fixos
Seção intitulada “Headers fixos”Headers que vão em toda entrega para o endpoint, para receptores que exigem uma credencial própria além da assinatura:
curl -X PUT https://api.notyfacil.com.br/v1/endpoints/ep_01JB8Y1D6TQ4X8N2VK5HWZ3RFM/headers \ -H "Authorization: Bearer $NOTYFACIL_KEY" \ -H "Content-Type: application/json" \ -d '{"headers":{"X-Api-Key":"chave-que-o-receptor-exige"}}'A lista substitui a anterior inteira, e {} remove todos. São até 20 headers, com nome de até 128
caracteres e valor de até 1.024. Os headers que nós controlamos não podem ser definidos:
Webhook-Id, Webhook-Timestamp, Webhook-Signature, Content-Type, Content-Length, Host,
Connection, Transfer-Encoding e User-Agent.
Alterar
Seção intitulada “Alterar”PATCH troca a URL, os tipos ou a situação do endpoint. Campo ausente fica como está; em events, a lista
substitui a inscrição inteira.
curl -X PATCH https://api.notyfacil.com.br/v1/endpoints/ep_01JB8Y1D6TQ4X8N2VK5HWZ3RFM \ -H "Authorization: Bearer $NOTYFACIL_KEY" \ -H "Content-Type: application/json" \ -d '{"events":["pedido.pago","pedido.cancelado"]}'Situação
Seção intitulada “Situação”O campo status de um endpoint é um destes:
status |
O que quer dizer |
|---|---|
Enabled |
Recebe entregas. |
DisabledAutomatically |
Desligado depois de 20 falhas seguidas. Veja como reativar. |
DisabledManually |
Desligado à mão, com PATCH e "status":"disabled". |
Para desligar e religar, mande status no PATCH, com disabled ou enabled. A resposta usa os
nomes da tabela.
Referência: endpoints