Webhooks
Configure webhooks para enviar eventos do Defender360 para sistemas externos em tempo real.
Visao Geral
Webhooks permitem que o Defender360 notifique sistemas externos quando eventos ocorrem, como:
- Novo ticket criado
- Ticket atualizado ou resolvido
- SLA violado
- Alerta de integracao
- Usuario cadastrado
Como Funciona
1. Evento ocorre no Defender360
│
▼
2. Sistema enfileira o webhook
│
▼
3. POST enviado para URL configurada
│
▼
4. Resposta processada (sucesso/retry)Criar Webhook
Passo a Passo
- Acesse Configuracoes > Integracoes > Webhooks
- Clique em Novo Webhook
- Configure os campos:
| Campo | Descricao | Obrigatorio |
|---|---|---|
| Nome | Identificador do webhook | Sim |
| URL | Endpoint que recebera os eventos | Sim |
| Eventos | Quais eventos disparam | Sim |
| Secret | Chave para validacao de assinatura | Sim (auto-gerado) |
| Headers | Headers customizados | Nao |
| Ativo | Liga/desliga o webhook | Sim |
- Clique em Salvar
- Copie o Secret para validar as requisicoes
Eventos Disponiveis
Tickets
| Evento | Descricao |
|---|---|
ticket.created | Novo ticket aberto |
ticket.updated | Ticket atualizado (qualquer campo) |
ticket.status_changed | Status alterado |
ticket.assigned | Ticket atribuido |
ticket.escalated | Ticket escalado |
ticket.resolved | Ticket resolvido |
ticket.closed | Ticket fechado |
ticket.reopened | Ticket reaberto |
ticket.comment_added | Novo comentario |
SLA
| Evento | Descricao |
|---|---|
sla.warning | 75% do SLA consumido |
sla.critical | 90% do SLA consumido |
sla.breached | SLA violado |
Usuarios
| Evento | Descricao |
|---|---|
user.created | Usuario criado |
user.updated | Usuario atualizado |
user.deactivated | Usuario desativado |
user.login | Login realizado |
user.logout | Logout realizado |
Integracoes
| Evento | Descricao |
|---|---|
integration.connected | Integracao conectada |
integration.error | Erro na integracao |
integration.sync_completed | Sincronizacao concluida |
Formato do Payload
Estrutura Padrao
{
"id": "evt_abc123",
"type": "ticket.created",
"created_at": "2024-01-15T10:30:00Z",
"tenant_id": "tnt_xyz789",
"data": {
"id": "tkt_123",
"number": "TKT-0042",
"title": "Computador nao liga",
"status": "open",
"priority": "high",
"requester": {
"id": "usr_456",
"name": "Joao Silva",
"email": "joao@empresa.com"
},
"assignee": null,
"created_at": "2024-01-15T10:30:00Z"
}
}Campos do Evento
| Campo | Tipo | Descricao |
|---|---|---|
id | string | ID unico do evento |
type | string | Tipo do evento |
created_at | datetime | Data/hora do evento |
tenant_id | string | ID do tenant |
data | object | Dados especificos do evento |
Seguranca
Validacao de Assinatura
Cada webhook inclui uma assinatura HMAC no header:
X-Webhook-Signature: sha256=abc123...Valide a assinatura no seu servidor:
# Python
import hmac
import hashlib
def verify_signature(payload, signature, secret):
expected = hmac.new(
secret.encode(),
payload.encode(),
hashlib.sha256
).hexdigest()
return hmac.compare_digest(f"sha256={expected}", signature)// Node.js
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return signature === `sha256=${expected}`;
}Nunca processe webhooks sem validar a assinatura. Isso previne ataques de falsificacao.
HTTPS Obrigatorio
Webhooks sao enviados apenas para URLs HTTPS. Certifique-se de que seu endpoint:
- Usa certificado SSL valido
- Suporta TLS 1.2 ou superior
- Responde na porta 443
Retentativa (Retry)
Politica de Retry
Se seu endpoint falhar, o sistema tenta novamente:
| Tentativa | Atraso | Timeout |
|---|---|---|
| 1 | Imediato | 10s |
| 2 | 1 minuto | 10s |
| 3 | 5 minutos | 10s |
| 4 | 30 minutos | 10s |
| 5 | 2 horas | 10s |
| 6 | 6 horas | 10s |
Codigos de Sucesso
O webhook considera sucesso se receber:
200 OK201 Created202 Accepted204 No Content
Falha Permanente
Apos 6 tentativas sem sucesso, o evento vai para a Dead Letter Queue:
- Acesse Webhooks > Dead Letter
- Visualize eventos nao entregues
- Corrija o problema no endpoint
- Clique em Reenviar para tentar novamente
Headers Customizados
Adicione headers extras as requisicoes:
{
"X-Custom-Header": "valor",
"Authorization": "Bearer token_externo"
}Variaveis Dinamicas
Use variaveis nos headers:
| Variavel | Valor |
|---|---|
{{tenant_id}} | ID do tenant |
{{webhook_id}} | ID do webhook |
{{timestamp}} | Timestamp atual |
Exemplo:
{
"X-Tenant-ID": "{{tenant_id}}",
"X-Timestamp": "{{timestamp}}"
}Filtros
Filtrar por Condicao
Configure para disparar apenas quando:
| Filtro | Exemplo |
|---|---|
| Prioridade | Apenas tickets Critical ou High |
| Status | Apenas quando muda para Resolved |
| Categoria | Apenas categoria “Seguranca” |
| Cliente | Apenas clientes VIP |
Configurar Filtro
- Edite o webhook
- Na secao Filtros, clique em Adicionar Filtro
- Selecione o campo
- Defina a condicao
- Clique em Salvar
Monitoramento
Dashboard de Webhooks
Visualize o status de entrega:
| Metrica | Descricao |
|---|---|
| Eventos Enviados | Total de eventos disparados |
| Taxa de Sucesso | % entregue com sucesso |
| Tempo Medio | Latencia de entrega |
| Pendentes | Eventos aguardando retry |
| Falhas | Eventos na dead letter |
Logs de Eventos
Para cada webhook:
- Clique no webhook
- Acesse aba Logs
- Visualize:
- Payload enviado
- Response recebida
- Status HTTP
- Tempo de resposta
- Tentativas realizadas
Alertas
Configure alertas para:
- Taxa de sucesso abaixo de X%
- Tempo de resposta acima de Xs
- Eventos na dead letter
- Webhook desativado por falhas
Testar Webhook
Enviar Evento de Teste
- Acesse o webhook
- Clique em Testar
- Selecione o tipo de evento
- Visualize o payload que sera enviado
- Clique em Enviar Teste
- Verifique a resposta
Webhook de Debug
Use servicos como:
- webhook.site
- requestbin.com
- ngrok para testes locais
Use ngrok http 3000 --url https://webhook.defender360.ngrok.dev para expor seu servidor local e testar webhooks em tempo real.