Skip to content

Webhooks de Saída

Status: Planejado

O MIDDAG Account suportará webhooks de saída para notificar sistemas externos quando eventos de domínio ocorrerem. Isso permite que você construa integrações customizadas sem modificar o plugin.

Como funciona

Quando um evento significativo acontece no plugin (um entitlement é ativado, um pedido é pago, uma organização é atualizada), o plugin envia uma requisição HTTP POST para uma ou mais URLs configuradas. O sistema receptor processa o evento e toma qualquer ação que seja apropriada.

Catálogo de eventos

Eventos de organização

EventoDisparado quando
organization.createdUma nova organização é criada
organization.updatedDados da organização são modificados
organization.verifiedStatus de verificação da organização muda

Eventos de entitlement

EventoDisparado quando
entitlement.activatedUm entitlement torna-se ativo
entitlement.suspendedUm entitlement é suspenso
entitlement.expiredUm entitlement atinge sua expiração
entitlement.cancelledUm entitlement é cancelado
entitlement.renewedUm entitlement é renovado

Eventos de pedido

EventoDisparado quando
order.createdUm novo pedido é realizado
order.paidO pagamento de um pedido é confirmado
order.refundedUm pedido é reembolsado

Eventos de cotação

EventoDisparado quando
quote.createdUma nova cotação é criada
quote.acceptedUm cliente aceita uma cotação
quote.paidUma cotação é paga
quote.expiredUma cotação ultrapassa sua data de expiração

Eventos de licença

EventoDisparado quando
license.activatedUma licença é ativada em um site
license.deactivatedUma licença é desativada
license.expiredUma licença expira

Eventos de solicitação de serviço

EventoDisparado quando
ticket.createdUma nova solicitação de serviço é aberta
ticket.completedUma solicitação de serviço é resolvida
ticket.sla_breachedUma meta de SLA é violada

Eventos de fatura

EventoDisparado quando
invoice.issuedUma fatura é emitida
tax_invoice.issuedUma NFSe é emitida com sucesso
tax_invoice.failedA emissão de uma NFSe falha

Formato do payload

Cada payload de webhook segue um envelope consistente:

json
{
    "event": "entitlement.activated",
    "timestamp": "2026-05-04T14:30:00Z",
    "version": "1",
    "data": {
        "id": 42,
        "code": "PLG-202605-0001",
        "organization_id": 7,
        "status": "active",
        "class": "plugin"
    }
}
CampoDescrição
eventTipo de evento do catálogo acima
timestampTimestamp ISO 8601 de quando o evento ocorreu
versionVersão do schema do payload (atualmente "1")
dataDados específicos do evento (a entidade ou DTO relevante)

O campo data contém a mesma estrutura retornada pela REST API para a entidade correspondente.

Política de retentativa

TentativaAtrasoObservações
1ImediataPrimeira tentativa de entrega
21 minutoPrimeira retentativa
35 minutosSegunda retentativa
430 minutosTerceira retentativa
52 horasRetentativa final

Uma entrega é considerada bem-sucedida quando o servidor receptor responde com um código de status HTTP 2xx. Qualquer outra resposta (ou timeout) aciona uma retentativa.

Após todas as tentativas de retentativa serem esgotadas, o evento é marcado como falho. Eventos com falha são visíveis na interface admin e podem ser retentados manualmente.

Verificação de assinatura

Cada webhook de saída inclui um header de assinatura para que o sistema receptor possa verificar que a requisição originou-se do MIDDAG Account:

X-Middag-Signature: sha256=<digest hexadecimal HMAC-SHA256>

A assinatura é calculada como HMAC-SHA256(webhook_secret, corpo_bruto_da_requisição). O sistema receptor deve:

  1. Ler o header X-Middag-Signature.
  2. Calcular o HMAC-SHA256 do corpo bruto da requisição usando o segredo compartilhado.
  3. Comparar o valor calculado com o valor do header usando uma comparação em tempo constante.
  4. Rejeitar a requisição se os valores não corresponderem.

Configuração

Endpoints de webhook são configurados por organização na interface admin:

ConfiguraçãoDescrição
URLO endpoint HTTPS que recebe os POSTs de webhook
SegredoSegredo compartilhado para verificação de assinatura HMAC
EventosQuais eventos enviar (selecione do catálogo)
AtivoHabilitar ou desabilitar o endpoint

Múltiplos endpoints podem ser configurados por organização. Cada endpoint pode se inscrever em um conjunto diferente de eventos.

Requisitos para endpoints receptores

  • Devem aceitar requisições HTTP POST.
  • Devem responder em até 30 segundos.
  • Devem utilizar HTTPS (endpoints HTTP não são permitidos).
  • Devem retornar HTTP 200 para confirmar o recebimento.
  • Devem validar o header X-Middag-Signature.

Garantias de entrega

Webhooks utilizam entrega at-least-once. O mesmo evento pode ser entregue mais de uma vez (devido a retentativas ou problemas de infraestrutura). Sistemas receptores devem ser idempotentes -- processar o mesmo evento duas vezes deve produzir o mesmo resultado. Utilize a combinação event + timestamp + data.id para detectar duplicatas.