Pular para o conteúdo
⚙️ HOW-TO

Provisionar um tenant no Group

Crie um schema Postgres isolado para um novo cliente em segundos, via Admin UI ou API.

O que é provisioning

Provisioning cria automaticamente toda a infraestrutura de banco de dados para um novo tenant:

  1. Clona o schema template do Group para um novo schema isolado (clone_schema_to_tenant)
  2. Cria a role Postgres exclusiva do tenant (proj_<group>_<tenant>_service)
  3. Aplica os GRANTs corretos (a role do tenant só acessa seu próprio schema)
  4. Registra o tenant em proj_management.group_tenants

Tempo médio: 1–3 segundos. O processo é idempotente — chamar duas vezes com o mesmo slug não duplica o schema.

Via Admin UI

  1. Acesse Platform → Groups → [nome do group] → Tenants.
  2. Clique em + Novo Tenant.
  3. Preencha:
    • Slug: identificador do tenant (ex: empresa-xyz). Usado no nome do schema.
    • Nome: nome legível (ex: "Empresa XYZ Ltda").
    • Email do owner: email do administrador do tenant (opcional).
  4. Clique em Provisionar.
  5. Aguarde o status Ativo. O schema proj_<group>_<tenant> está pronto.

Via API

bash — provisionar tenant via API
curl -X POST \
  https://superdb.com.br/platform/v1/groups/crm-saas/tenants \
  -H "Authorization: Bearer $PLATFORM_ADMIN_JWT" \
  -H "Content-Type: application/json" \
  -d '{
    "slug": "empresa-xyz",
    "display_name": "Empresa XYZ Ltda",
    "owner_email": "admin@empresa-xyz.com.br"
  }'
json — resposta
{
  "id": "ten_01HYZ...",
  "slug": "empresa-xyz",
  "display_name": "Empresa XYZ Ltda",
  "schema_name": "proj_crm-saas_empresa-xyz",
  "status": "active",
  "provisioned_at": "2026-05-14T10:05:00Z"
}

Troubleshooting

Timeout durante provisioning

O schema template é clonado com todas as tabelas. Se o template for muito grande (>500 tabelas), o processo pode demorar mais. Verifique nos logs: docker logs auth --tail=50 | grep "clone_schema". O timeout padrão é 30 segundos — aumente via variável PROVISION_TIMEOUT_MS se necessário.

Erro: schema já existe

O slug informado já foi usado anteriormente. Escolha um slug diferente ou delete o tenant existente antes de recriar.

GRANTs não aplicados

Verifique se a migration de GRANTs do platform_admin foi aplicada no banco. Execute:

sql
SELECT has_schema_privilege(
  'proj_crm-saas_empresa-xyz_service',
  'proj_crm-saas_empresa-xyz',
  'USAGE'
);

Se retornar false, re-execute a migration de GRANTs ou contate o suporte.

Essa página ajudou?