1.9 KiB
1.9 KiB
API Contract: POST /api/v1/webhooks/onboard
Service: Ligbox Ops Platform API (VM122)
Base URL (LAN): http://10.10.10.122:8080
Auth: Header X-Webhook-Secret
Request
POST /api/v1/webhooks/onboard HTTP/1.1
Host: 10.10.10.122:8080
Content-Type: application/json
X-Webhook-Secret: <shared-secret>
{
"event": "account.created",
"domain": "cliente.exemplo.com",
"session_id": "sess-abc123",
"data": {
"email": "admin@cliente.exemplo.com",
"account_verified": true,
"needs_review": false,
"dns_mode": "cloudflare",
"mail_aliases": ["suporte.cliente.exemplo.com"]
}
}
Response 200
{
"accepted": true,
"event": "account.created"
}
Response 401
{
"detail": "invalid webhook secret"
}
Event Types
| Event | Emissor (fase) | Cria ticket? |
|---|---|---|
account.created |
Phase B (MVP) | Sim |
domain.validated |
Phase D | Não (só audit log) |
dns.applied |
Phase D | Não |
onboarding.completed |
Phase D | Nota/update |
onboarding.failed |
Phase D | Sim (prioridade) |
Idempotency
Repetir o mesmo request (mesmo event + session_id + domain) retorna 200 accepted sem criar ticket duplicado.
cURL example
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.ops.ligbox",
"session_id": "demo-e2e-001",
"data": {
"email": "admin@teste.ops.ligbox",
"account_verified": true,
"needs_review": false
}
}'
Related endpoints (read-only)
| Method | Path | Descrição |
|---|---|---|
| GET | /health |
Health check API |
| GET | /api/v1/tenants |
Lista tenants |
| GET | /api/v1/desk/tickets |
Lista tickets (verificar criação) |
| GET | /api/v1/infra/vm112/status |
Poll health portal |