EagleIX
Webhooks

Endpoints da API

Referencia completa dos endpoints da API de webhooks

Autenticacao

Todos os endpoints da API publica (/api/v1/webhooks) exigem o header Idempotency-Key com um UUID valido em requisicoes POST e PUT. Isso garante que requisicoes duplicadas sejam tratadas de forma segura.

Idempotency-Key: 550e8400-e29b-41d4-a716-446655440000

A chave de idempotencia expira em 24 horas. Requisicoes com a mesma chave e mesmo body retornam a resposta cacheada. Requisicoes com a mesma chave mas body diferente retornam 409 Conflict.


Criar webhook

POST /api/v1/webhooks

Request

{
  "nome": "meu-webhook-pix",
  "url": "https://meu-servico.com/webhook",
  "tipo": "ATUALIZACAO_STATUS_PIX",
  "secret": "minha-chave-secreta-com-pelo-menos-32-caracteres",
  "ativo": true
}
CampoTipoObrigatorioValidacao
nomestringsimMax 100 caracteres
urlstringsimHTTPS, IP publico, max 500 caracteres
tipoenumsimATUALIZACAO_STATUS_PIX ou FALHA_WEBHOOK
secretstringsimMin 32, max 500 caracteres
ativobooleannaoDefault: true

Response 201 Created

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "nome": "meu-webhook-pix",
  "url": "https://meu-servico.com/webhook",
  "tipo": "ATUALIZACAO_STATUS_PIX",
  "ativo": true,
  "criadoEm": "2026-05-01T12:00:00",
  "atualizadoEm": "2026-05-01T12:00:00"
}

Erros

StatusCodigoCausa
400VALIDATION_ERRORCampos invalidos
409DUPLICATE_URLURL ja registrada em outro webhook
409DUPLICATE_IDEMPOTENCY_KEYMesma chave de idempotencia com body diferente
422INVALID_URLURL nao e HTTPS ou resolve para IP privado

Listar webhooks

GET /api/v1/webhooks

Query parameters

ParametroTipoObrigatorioDescricao
tipoenumnaoFiltrar por tipo: ATUALIZACAO_STATUS_PIX ou FALHA_WEBHOOK
ativobooleannaoFiltrar por status ativo/inativo
pageintnaoPagina (default: 0)
sizeintnaoItens por pagina (1-100, default: 50)

Response 200 OK

Retorna um objeto paginado do Spring com a lista de webhooks no campo content.

{
  "content": [
    {
      "id": "550e8400-e29b-41d4-a716-446655440000",
      "nome": "meu-webhook-pix",
      "url": "https://meu-servico.com/webhook",
      "tipo": "ATUALIZACAO_STATUS_PIX",
      "ativo": true,
      "criadoEm": "2026-05-01T12:00:00",
      "atualizadoEm": "2026-05-01T12:00:00"
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "number": 0,
  "size": 50
}

Buscar webhook por ID

GET /api/v1/webhooks/{id}

Response 200 OK

{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "nome": "meu-webhook-pix",
  "url": "https://meu-servico.com/webhook",
  "tipo": "ATUALIZACAO_STATUS_PIX",
  "ativo": true,
  "criadoEm": "2026-05-01T12:00:00",
  "atualizadoEm": "2026-05-01T12:00:00"
}

Erros

StatusCodigoCausa
404NOT_FOUNDWebhook nao encontrado

Atualizar webhook

PUT /api/v1/webhooks/{id}

Atualizacao parcial — envie apenas os campos que deseja alterar.

Request

{
  "nome": "novo-nome",
  "url": "https://novo-endpoint.com/webhook",
  "secret": "nova-chave-secreta-com-pelo-menos-32-caracteres",
  "ativo": false
}
CampoTipoObrigatorioValidacao
nomestringnaoMax 100 caracteres
urlstringnaoHTTPS, IP publico, max 500 caracteres
secretstringnaoMin 32, max 500 caracteres
ativobooleannao

O campo tipo nao pode ser alterado apos a criacao.

Response 200 OK

Retorna o webhook atualizado no mesmo formato de WebhookResponse.


Excluir webhook

DELETE /api/v1/webhooks/{id}

Exclusao logica (soft delete). O webhook nao recebera mais eventos, mas seus registros de entrega sao mantidos.

Response 204 No Content


Listar entregas de um webhook

GET /api/v1/webhooks/{id}/entregas

Query parameters

ParametroTipoObrigatorioDescricao
statusenumnaoSUCESSO, FALHA ou AGUARDANDO_RETENTATIVA
pageintnaoPagina (default: 0)
sizeintnaoItens por pagina (1-100, default: 50)

Response 200 OK

{
  "content": [
    {
      "id": "660e8400-e29b-41d4-a716-446655440001",
      "webhookId": "550e8400-e29b-41d4-a716-446655440000",
      "eventoId": "770e8400-e29b-41d4-a716-446655440002",
      "status": "SUCESSO",
      "tentativas": 1,
      "httpStatus": 200,
      "responseBody": "{\"ok\":true}",
      "payloadEnviado": [
        {
          "numeroDocumento": "12345678901",
          "status": "SETTLED",
          "valor": 15000,
          "end2end": "E12345678202301011200abcdef12345",
          "razaoRejeicao": null
        }
      ],
      "tentadoEm": "2026-05-01T12:00:00",
      "proximaTentativaEm": null
    }
  ],
  "totalElements": 1,
  "totalPages": 1,
  "number": 0,
  "size": 50
}

Retentar entrega

POST /api/v1/webhooks/{id}/entregas/{entregaId}/retry

Cria uma nova tentativa de entrega para uma entrega com status FALHA.

Response 202 Accepted

Retorna um novo WebhookEntregaResponse com a nova tentativa de entrega.


Respostas de erro

Todas as respostas de erro seguem o formato:

{
  "codigo": "VALIDATION_ERROR",
  "mensagem": "Falha de validacao",
  "detalhes": [
    { "campo": "url", "erro": "must not be blank" }
  ],
  "traceId": "abc123def456",
  "timestamp": "2026-05-01T12:00:00Z"
}
CampoTipoDescricao
codigostringCodigo do erro
mensagemstringMensagem legivel
detalhesarrayLista de erros de campo (apenas em erros de validacao)
traceIdstringID de rastreamento OpenTelemetry
timestampstringTimestamp ISO-8601

On this page