Guías
Multi-tenant
Cómo Inspow aísla los datos por organización (tenant).
Inspow es multi-tenant: cada Organización (en el código, tenant) opera aislada. Sus datos (Usuarios, Beneficiarios, Suscripciones, Planes, Facturas, Registros de Asistencia, Menús de Comida) pertenecen a una sola organización y nunca se mezclan con los de otra.
Identificación del tenant
Sección titulada «Identificación del tenant»La organización no se toma de una cabecera del cliente, sino de una credencial verificada. El middleware acepta dos formas en Authorization:
- JWT (
Bearer <token>): eltenant_idse lee del token. - API Key (token con prefijo
ak_): se valida la clave y se resuelve su organización.
El subdominio puede aportar una pista del slug, pero por sí solo no da acceso: sin credencial válida no hay tenant_id.
Estados de la organización
Sección titulada «Estados de la organización»El acceso depende del estado (status) de la organización:
| Estado | Valor | Acceso a la API |
|---|---|---|
| Prueba | trial | Permitido mientras no expire el periodo; vencida → HTTP 402 (SAAS_ACCOUNT_LOCKED) |
| Activa | active | Permitido |
| Suspendida | suspended | Bloqueado: HTTP 402 (SAAS_ACCOUNT_LOCKED) si la pausa es por pago de la cuenta; HTTP 503 en otros casos |
| Cerrada | closed | Bloqueado de forma permanente (HTTP 403) |
Una organización nueva nace en trial con 14 días de prueba; al expirar, la API responde
402 hasta que la cuenta regularice su Plan.
Según tu sector
Sección titulada «Según tu sector»El tipo de organización lo define el campo vertical. En la API las personas atendidas son
siempre beneficiarios (beneficiaries); lo que cambia es cómo los llama la app:
- Gimnasio (
gym): Miembros - Colegio (
school): Beneficiarios - Academia (
academy): Estudiantes - Club (
club): Socios - Coworking (
coworking): Coworkers - Clínica (
clinic): Pacientes
Gestión de organizaciones
Sección titulada «Gestión de organizaciones»Las operaciones sobre /tenants requieren admin:tenants (super-admin), salvo la lectura del propio tenant:
| Método | Ruta | Permiso |
|---|---|---|
| POST | /tenants | admin:tenants |
| GET | /tenants | admin:tenants |
| GET | /tenants/:id | read:tenant-info (solo el propio) |
| PATCH | /tenants/:id | admin:tenants |
| POST | /tenants/:id/suspend | admin:tenants |
| POST | /tenants/:id/activate | admin:tenants |
| DELETE | /tenants/:id | admin:tenants (cierre lógico) |
| GET | /tenants/:id/preferences | read:tenant-preferences |
| PATCH | /tenants/:id/preferences | update:tenant-preferences |
| GET | /tenants/:id/feature-flags | read:tenant-features |
| PATCH | /tenants/:id/feature-flags | admin:tenants |
El borrado es un cierre lógico: pasa la organización a closed, no elimina los datos.