2.1 KiB
2.1 KiB
Quickstart: Webhook VM112 → Ops
Pré-requisitos
- VM112 portal activo:
curl http://10.10.10.112:8090/api/onboarding/health - VM122 ops activo:
curl http://10.10.10.122:8080/health - Secret igual em ambos
.env
1. Teste manual do receptor (sem portal)
curl -sf -X POST "http://10.10.10.122:8080/api/v1/webhooks/onboard" \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: ligbox-ops-dev-secret" \
-d '{"event":"account.created","domain":"teste.manual.ligbox","session_id":"qs-001","data":{"email":"admin@teste.manual.ligbox","account_verified":true,"needs_review":false}}'
curl -sf "http://10.10.10.122:8080/api/v1/desk/tickets" | python3 -m json.tool
2. Teste idempotência
Repetir o mesmo curl — deve aceitar mas não duplicar ticket (após implementação Phase A).
3. Teste auth failure
curl -sf -X POST "http://10.10.10.122:8080/api/v1/webhooks/onboard" \
-H "Content-Type: application/json" \
-H "X-Webhook-Secret: wrong-secret" \
-d '{"event":"account.created","domain":"x.com","session_id":"x"}'
# Esperado: HTTP 401
4. Teste E2E (após Phase B)
- Abrir portal onboarding VM112
- Completar criação de conta de teste
- Verificar ticket em
http://10.10.10.122:8091ou API tickets - Verificar activity log portal: entrada webhook OK ou warn
5. Teste Ops offline
# Na VM122: docker-compose stop api
# Completar onboarding no portal
# Portal deve retornar sucesso ao cliente
# Activity log: warn "ops webhook failed"
# Restaurar: docker-compose start api
6. Deploy checklist
VM122 (/opt/ligbox-ops-platform/):
WEBHOOK_SECRETdefinidodocker-compose up -d --build api- fail2ban active
VM112 (/opt/ibytera-mail-portal/):
OPS_WEBHOOK_URL,OPS_WEBHOOK_SECRET,OPS_WEBHOOK_ENABLED=true- Restart backend portal
- Sem alteração Carbonio
7. Rotação secret (produção)
NEW=$(openssl rand -hex 32)
# Actualizar .env VM122 WEBHOOK_SECRET=$NEW
# Actualizar .env VM112 OPS_WEBHOOK_SECRET=$NEW
# Restart ambos no mesmo maintenance window