Retentativas
A GDREdu garante a entrega de webhooks mesmo em caso de falhas temporárias no receptor. Quando uma entrega falha, ela é re-agendada com backoff progressivo.
Backoff
| Tentativa | Quando | Observação |
|---|---|---|
| 1 (inicial) | Imediato | Primeira tentativa |
| 2 (retry 1) | +1 minuto | Após primeira falha |
| 3 (retry 2) | +5 minutos | Após segunda falha |
| 4 (retry 3) | +10 minutos | Após terceira falha |
| 5 (retry 4) | +1 hora | Após quarta falha |
| 6 (retry 5) | +6 horas | Após quinta falha |
| — (final) | — | Status IGNORED após 6 tentativas sem sucesso |
Total: 1 tentativa inicial + 5 retentativas = 6 tentativas. Após 6 falhas, o evento é marcado como IGNORED e não é mais tentado.
Quando uma tentativa é considerada falha
Uma tentativa é considerada falha se:
- O receptor responde com status HTTP ≥ 300 (4xx, 5xx)
- O receptor não responde em até 30 segundos (timeout)
- A conexão falha (DNS, TCP, TLS, etc.)
Respostas com status 2xx são consideradas sucesso.
Inspecionar o histórico de entregas
Para cada webhook, você pode listar todas as entregas via GET /v1/webhooks/:id/deliveries:
curl "https://api.gdredu.com/v1/webhooks/<webhook-id>/deliveries?limit=20" \
-H "Authorization: Bearer gdredu_live_..." \
-H "x-branch-id: branch-id-aqui"Cada entrega retorna:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"event": "equipment.recognized",
"status": "RETRYING",
"attempt": 2,
"nextAttemptAt": "2026-06-19T08:06:00.000Z",
"responseStatus": 500,
"responseError": "HTTP 500",
"durationMs": 1234,
"deliveredAt": null,
"ignoredAt": null,
"createdAt": "2026-06-19T08:00:12.000Z"
}| Campo | Significado |
|---|---|
status | PENDING (na fila) | SUCCESS (entregue) | RETRYING (vai tentar de novo) | IGNORED (desistiu) |
attempt | Número da tentativa atual (1 a 5; 6 = ignored) |
nextAttemptAt | Quando a próxima tentativa será feita (null se SUCCESS ou IGNORED) |
responseStatus | Status HTTP retornado pelo receptor (null se timeout/erro de rede) |
responseError | Mensagem de erro (timeout, conexão recusada, etc) |
durationMs | Tempo total da tentativa em ms |
deliveredAt | Quando foi entregue com sucesso (null se falhou) |
ignoredAt | Quando foi marcada como IGNORED (null se ainda tentando) |
Boas práticas
- Responda rápido: processe o evento de forma assíncrona e responda
200 OKem < 1s. - Implemente idempotência: use o header
X-GDREdu-Delivery-Idpara evitar processar o mesmo evento duas vezes. - Monitore entregas com falha: implemente alertas no seu lado quando ver
RETRYINGouIGNORED. - Reaja rápido em
IGNORED: investigue logs do seu lado e faça rotação do secret se necessário.
Updated about 21 hours ago
Did this page help you?
