ligbox-ops-platform/specs/043-desk-client-activation-sync/contracts/desk-activate-account-api.md
Ligbox Spec Hub 2d2b74fad8 docs(spec-043): mapa activação cliente e ligações cruzadas
Documenta Wizard→Desk→FOSS→OpenPanel→Odoo com contratos, rollback e
registo SPEC-REGISTRY antes da implementação das fases de activação.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-01 15:06:19 +00:00

2.8 KiB

Contrato — API Desk «Activar conta» (planeada)

Spec: 043 · depende de activation-field-mapping.md

Status: 📋 Planeada — não implementada
Base URL: https://desk.ligbox.com.br/api/v1


POST /billing/accounts/{id}/activate

Dispara sequência FOSS → OpenPanel → Odoo → (opcional) wizard mail-bundle.

Autenticação

Bearer session Desk + RBAC: finance | ops_lead | super_admin (039)

Request body

{
  "plan_code": "ligbox-mail-business",
  "config": {
    "seats": 25,
    "mail_gb": 30,
    "files_gb": 200
  },
  "provision_mail": true,
  "notes": "Validado por Roger — contrato verbal OK"
}
Campo Obrigatório Descrição
plan_code sim Slug produto FOSS / plan_name OpenPanel
config se ligbox-mail-custom seats, mail_gb, files_gb
provision_mail não (default true) Chamar wizard mail-bundle após FOSS
notes não Audit log

Response 200

{
  "ok": true,
  "billing_account_id": 42,
  "domain": "empresa.com.br",
  "billing_state": "provisioning",
  "steps": {
    "foss": { "client_id": 101, "order_id": 55, "created": true },
    "openpanel": { "username": "empresa1x", "domain": "empresa.com.br", "success": true },
    "odoo": { "partner_id": 88, "created": true },
    "wizard": { "provisioned": true, "mail_host": "mail.empresa.com.br" }
  },
  "activated_at": "2026-07-01T12:00:00Z",
  "activated_by": "roger"
}

Response 207 (parcial)

{
  "ok": false,
  "billing_state": "provisioning",
  "steps": {
    "foss": { "client_id": 101, "order_id": 55 },
    "openpanel": { "error": "user already exists" },
    "odoo": { "partner_id": 88 }
  },
  "message": "OpenPanel falhou — FOSS e Odoo OK"
}

Erros

HTTP Condição
400 plan_code inválido ou billing_state não permite activação
403 RBAC insuficiente
404 billing_account não existe
409 billing_active
502 FOSS/Odoo indisponível

GET /billing/accounts/{id}/activation-preview

Devolve payload read-only com mapeamento que será enviado a FOSS/OP/Odoo (para UI staff antes de confirmar).

Response 200

{
  "domain": "empresa.com.br",
  "company_profile": { "...": "..." },
  "mapped": {
    "foss_client": { "email": "admin@empresa.com.br", "company": "...", "company_vat": "..." },
    "openpanel": { "plan_name": "ligbox-mail-business", "domain": "empresa.com.br" },
    "odoo_partner": { "name": "...", "vat": "...", "email": "..." }
  },
  "billing_state": "awaiting_billing_validation"
}

Implementar em projects/ops-desk/api/app/billing_routes.py + vm123/client_provision.py