Receber a mensagem de um provedor
Onde o provedor externo (Mercado Pago, Stripe, Asaas) entrega os webhooks dele. Você não
chama esta URL: você a cola no painel do provedor. Ela é anônima, porque quem autentica é o
token no caminho e a assinatura do provedor, e fica fora de /v1 porque não pode mudar
quando a API ganhar uma versão nova: trocá-la obrigaria a recadastrar cada provedor.
O contrato de status existe para não fazer o provedor retentar à toa, porque gateways
desativam webhooks que falham demais. Por isso quota esgotada e fonte pausada respondem
202: a mensagem fica gravada e não é repassada, e o aviso vai para você, e não para o
provedor, que não tem como resolver.
O corpo é lido cru, até 256 KB, e repassado sem alteração, com o Content-Type original.
Corpo da requisição
Seção intitulada “Request Body”O corpo do provedor, como ele o enviou: JSON, form-urlencoded ou o que o provedor usar.
object
Exemplogerado
{}object
Exemplogerado
Respostas
Seção intitulada “Responses”Aceita. deliveries é quantos destinos vão receber, e é zero quando a fonte está pausada ou a
quota do plano acabou. Quando o provedor reenvia um evento que já chegou, a resposta é a da
mensagem original, e nada novo é criado.
object
Exemplo
{ "id": "in_01JB8Z0M5V3H7Q2KX9WRC4D6TN", "deliveries": 1}A assinatura do provedor não confere. A tentativa fica registrada, sem o corpo.
Token desconhecido. A resposta é a mesma de uma rota que não existe, para não revelar quais tokens existem.
O corpo passa de 256 KB.
Limite de requisições por segundo da fonte. É um balde separado do da API: uma rajada do provedor não consome o limite das suas chamadas.
Headers
Seção intitulada “Headers”Segundos até a próxima janela.
O provedor da fonte exige um segredo de verificação, e a fonte ainda não tem um.
object
Exemplogerado
{ "type": "example", "title": "example", "status": 1, "detail": "example", "instance": "example"}