Lista todos os webhooks configurados na instância ou retorna um único por label
Auth:Documentation Index
Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt
Use this file to discover all available pages before exploring further.
TokenAccount ou TokenInstance • Rate-limit: Global (100/min) • Idempotente: sim
?label=<nome>, retorna o único webhook desse label (ou 404).
webhooks[] com todos os webhooks da instância (habilitados e desabilitados), ordenado alfabeticamente por label.
?label=analytics-pipeline, retorna apenas o webhook desse label no campo webhook do envelope (ou 404 se não existir).
?label=default. Útil quando você criou o webhook sem especificar label e quer ler somente essa entrada em vez da lista completa.
?label=, retorna webhooks[] (ordenado alfabeticamente por label, sempre presente, vem [] se nenhum webhook existir, e inclui também os com enabled=false para inspeção operacional). Com ?label=<nome>, retorna o objeto único em webhook (mesmo shape do POST). O authorization vem descriptografado quando ENCRYPTION_KEY está configurada; se a chave foi rotacionada e algum valor não decifra, o campo retorna criptografado em vez de derrubar o request.
?label=. Ordenado alfabeticamente por label. Sempre retornado mesmo sem nenhum webhook (webhooks: []).?label=<nome>. Mesmo shape do POST.TokenAccount ou TokenInstance.webhook no envelope). Ausente, retorna a lista (webhooks[]).Passar ?label= (vazio) ainda é considerado “presente” → vira "default" e busca a linha desse label.enabled=false, operadores veem o histórico completo. Para listar só ativos, filtre no cliente por w.enabled === true.authorization descriptografado: se ENCRYPTION_KEY está configurada e o valor estiver criptografado at-rest, o repositório descriptografa antes de retornar. Se a chave foi rotacionada e algum valor não decifra, o campo retorna criptografado (com warning no log) em vez de derrubar o request.webhook_queue e processado por workers em paralelo.
| Tentativa | Próximo retry |
|---|---|
| 1 (fail) | +1s |
| 2 (fail) | +5s |
| 3 (fail) | +30s |
| 4 (fail) | +5min |
| 5 (fail) | +30min |
| 6+ | +1h (cap) |
max_attempts (default 5), status vira failed (DLQ). A linha não é deletada automaticamente, operadores podem inspecionar last_error e re-enfileirar manualmente (UPDATE webhook_queue SET status='pending', next_retry_at=now()).
webhook_queue (resumo para ops)| Coluna | Descrição |
|---|---|
id | BIGSERIAL PK |
instance_name | Nome da instância |
url | Destino final (já com sufixo /event-name se byEvents) |
payload | BYTEA, corpo JSON do evento |
auth_header | Authorization configurado (encriptado at-rest) |
event_type | Nome do evento (message.exchange etc.) |
status | pending | delivered | failed |
attempts | Contador de tentativas |
max_attempts | Default 5 |
next_retry_at | Próxima janela de tentativa |
last_error | Última mensagem de erro do consumer |
created_at / updated_at | Timestamps |
POST ao seu webhook chega com:
| HTTP | error.message | Aplica em |
|---|---|---|
| 400 | label too long (max 50 chars) | ?label= |
| 400 | label may only contain letters, digits, underscore or dash | ?label= |
| 401 | Invalid token | ambos |
| 404 | Instance not found | ambos |
| 404 | Webhook not configured for this label | ?label= |
| 429 | Rate limit exceeded. Try again later. | ambos |
| 500 | Failed to get instance | ambos |
| 500 | Failed to list webhook configurations | sem query |
POST /api/events/webhook/:instance