Reten Docs
Tenants

Configurar Tenant

Crear un nuevo tenant con su propio esquema de base de datos.

POST /api/tenant/setup

Crea un nuevo tenant, aprovisiona un esquema PostgreSQL dedicado, ejecuta las migraciones del tenant y crea un usuario administrador para el tenant.

Auth: Requerida — permiso tenant:create

Encabezados

EncabezadoRequeridoValor
AuthorizationSíBearer <access_token>

Cuerpo de la Solicitud

CampoTipoRequeridoDescripción
namestringSíNombre del tenant
slugstringSíSlug amigable para URL (único)
adminEmailstringSíCorreo electrónico del administrador del tenant
adminPasswordstringSíContraseña del administrador del tenant
adminFirstNamestringSíNombre del administrador
adminLastNamestringSíApellido del administrador

Ejemplo

curl -X POST https://api.reten.ai/api/tenant/setup \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Acme Corp",
    "slug": "acme-corp",
    "adminEmail": "admin@acme.com",
    "adminPassword": "SecurePass123!",
    "adminFirstName": "Acme",
    "adminLastName": "Admin"
  }'
const response = await fetch("https://api.reten.ai/api/tenant/setup", {
  method: "POST",
  headers: {
    "Authorization": "Bearer <token>",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    name: "Acme Corp",
    slug: "acme-corp",
    adminEmail: "admin@acme.com",
    adminPassword: "SecurePass123!",
    adminFirstName: "Acme",
    adminLastName: "Admin",
  }),
});
const tenant = await response.json();
import requests

response = requests.post(
    "https://api.reten.ai/api/tenant/setup",
    headers={"Authorization": "Bearer <token>"},
    json={
        "name": "Acme Corp",
        "slug": "acme-corp",
        "adminEmail": "admin@acme.com",
        "adminPassword": "SecurePass123!",
        "adminFirstName": "Acme",
        "adminLastName": "Admin",
    },
)
tenant = response.json()

Respuesta 201 Created

{
  "id": "660e8400-e29b-41d4-a716-446655440000",
  "name": "Acme Corp",
  "slug": "acme-corp"
}

Qué ocurre durante la configuración

  1. Crea el registro del tenant en el esquema público
  2. Crea (o vincula) el usuario administrador
  3. Crea el esquema PostgreSQL tenant_{id}
  4. Ejecuta todas las migraciones del tenant en el nuevo esquema
  5. Vincula el usuario administrador al tenant
  6. Siembra los catálogos de activity-config del tenant desde las constantes de defaults del backend — incluido user_retention_status_configs (los 12 estados de retención por defecto), las configs de activity-reason y las de task-result-type.

Respuestas de Error

EstadoDescripción
400Error de validación
409El slug ya existe