# Contrato — API Wizard `POST /api/internal/provision/mail-bundle` **Spec:** [043](../spec.md) · [035](../../035-ligbox-mail-bundles-foss-openpanel/spec.md) **VM:** 112 (`10.10.10.112:8090`) **Status:** ✅ Implementado no repo · deploy VM112 pendente **Auth:** `X-Ops-Internal-Token` (mesmo valor Desk `OPS_INTERNAL_TOKEN`) --- ## POST `/api/internal/provision/mail-bundle` Provisiona domínio Carbonio + conta gerente com quotas do bundle mail. ### Request ```json { "domain": "empresa.com.br", "admin_email": "admin@empresa.com.br", "admin_name": "João Silva", "seats": 25, "mail_gb_per_seat": 30, "files_gb_per_seat": 200, "foss_order_id": 55 } ``` | Campo | Obrigatório | Descrição | |-------|-------------|-----------| | `domain` | sim | Domínio cliente | | `admin_email` | sim | Conta gerente (`admin@{domain}`) | | `admin_name` | não | Display name Carbonio | | `seats` | não (default 25) | Licenças mail bundle | | `mail_gb_per_seat` | não (default 30) | Quota GB/caixa gerente | | `files_gb_per_seat` | não (default 200) | Nextcloud (fase 034) | | `foss_order_id` | não | Correlação FOSS order | ### Response 200 ```json { "ok": true, "domain": "empresa.com.br", "admin_email": "admin@empresa.com.br", "mail_host": "mail.empresa.com.br", "webmail_url": "https://mail.empresa.com.br/", "files_url": "https://files.empresa.com.br/", "seats": 25, "provisioned": true, "already_provisioned": false, "account_reused": false } ``` ### Erros | HTTP | Condição | |------|----------| | 401 | Token interno inválido | | 400 | Domínio/email inválido | | 502 | Carbonio/zmprov falhou | | 503 | `OPS_INTERNAL_TOKEN` ausente no wizard | --- ## GET `/api/internal/provision/mail-bundle/{domain}` Estado do bundle (sem senhas). --- ## Código | Artefacto | Path repo | |-----------|-----------| | Serviço | `projects/wizard/backend/app/services/mail_bundle.py` | | Router | `projects/wizard/backend/app/routers/internal_provision.py` | | Deploy VM112 | `deploy/vm112-wizard/deploy-mail-bundle-vm112.py` | | Cliente Desk | `projects/ops-desk/api/app/vm123/wizard_client.py` | --- ## Deploy VM112 ```bash # Na VM112 (SSH) cd /opt/ligbox-spec-hub/repos/ligbox-ops-platform # ou clone Forgejo git pull python3 deploy/vm112-wizard/deploy-mail-bundle-vm112.py systemctl restart ligbox-wizard # Teste curl -s -X POST http://127.0.0.1:8090/api/internal/provision/mail-bundle \ -H "X-Ops-Internal-Token: $OPS_INTERNAL_TOKEN" \ -H "Content-Type: application/json" \ -d '{"domain":"teste.ligbox.com.br","admin_email":"admin@teste.ligbox.com.br","seats":25}' ``` --- *Roger · 2026-07-01 · Spec 043 fecho ciclo mail-bundle*