Documentation Index
Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
Use this file to discover all available pages before exploring further.
Autenticación
La API usa Auth0 como proveedor de identidad principal, con tokens JWT validados mediante JWKS. Además, soporta autenticación por API Key para integraciones y un flujo especial para la app mobile.Flujos de autenticación
Auth0 (flujo principal)
| Claim | Descripción |
|---|---|
sub | ID de Auth0 del usuario |
https://auth.vivla.com/email | Email del usuario |
https://auth.vivla.com/org_id | ID de organización |
https://auth.vivla.com/org_name | Nombre de organización |
https://auth.vivla.com/tools | Permisos de herramientas (mapa tool → role) |
auth0_id. El avatar se sube a Cloudinary si es necesario.
API Key
Mobile (vivla-mobile)
Combinado (Auth0 o API Key)
El guardAuth0OrApiKeyGuard intenta primero API Key (más rápido), luego Auth0 JWT. Usado en endpoints como inbox messages que pueden recibir requests de usuarios autenticados o de integraciones.
Guards disponibles
| Guard | Ubicación | Uso |
|---|---|---|
Auth0AuthGuard | src/auth/guards/auth0-auth.guard.ts | Guard principal para todas las rutas protegidas |
RolesGuard | src/auth/guards/roles.guard.ts | Verifica roles: admin, moderator, user |
ToolAccessGuard | src/auth/guards/tool-access.guard.ts | Verifica acceso a herramientas con jerarquía (viewer < editor < admin) |
ApiKeyAuthGuard | src/auth/guards/api-key-auth.guard.ts | Valida header X-API-Key |
Auth0OrApiKeyGuard | src/auth/guards/auth0-or-api-key.guard.ts | Intenta API Key, fallback a Auth0 |
MobileAuthGuard | src/chat/mobile/guards/mobile-auth.guard.ts | Valida credenciales mobile |
Decoradores
| Decorador | Descripción |
|---|---|
@Public() | Marca el endpoint como público (sin autenticación) |
@Roles(role1, role2, ...) | Requiere uno de los roles especificados |
@RequireTool(toolSlug, level) | Requiere acceso a una herramienta con nivel mínimo |
@CurrentUser() | Inyecta el objeto de usuario autenticado completo |
@CurrentUserId() | Inyecta solo el ID del usuario |
Jerarquía de permisos de herramientas
ElToolAccessGuard implementa una jerarquía de acceso:
editor, un usuario con nivel admin también tiene acceso. Los permisos se obtienen de:
- Claims del JWT de Auth0 (
https://auth.vivla.com/tools) - Metadata del usuario en la base de datos
Objeto de usuario autenticado
El cache de usuarios tiene un TTL de 5 minutos. Las signing keys de JWKS se cachean por 10 minutos. Esto optimiza el rendimiento evitando consultas a Auth0 y a la base de datos en cada request.