85 lines
1.9 KiB
Markdown
85 lines
1.9 KiB
Markdown
# 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
|
|
|
|
```http
|
|
POST /api/v1/webhooks/onboard HTTP/1.1
|
|
Host: 10.10.10.122:8080
|
|
Content-Type: application/json
|
|
X-Webhook-Secret: <shared-secret>
|
|
|
|
```
|
|
|
|
## Response 200
|
|
|
|
```json
|
|
{
|
|
"accepted": true,
|
|
"event": "account.created"
|
|
}
|
|
```
|
|
|
|
## Response 401
|
|
|
|
```json
|
|
{
|
|
"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
|
|
|
|
```bash
|
|
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 |
|