Vivla API
vivla-api es la API REST principal de VIVLA. Está construida con NestJS 11 (Node.js 22+) y sirve a la app móvil de copropietarios, al panel de CX y a calendar-manager. Aquí vive la lógica de negocio del producto: reservas, calendario, temporadas, llaves de intercambio y alquiler de semanas.
Esta documentación describe el estado actual del código. Cada regla apunta a su archivo:línea en el repositorio para que puedas verificarla.
Este tab se escribe de forma nativa en el repo
docs, no en vivla-api. El repositorio de la API no aloja su propia carpeta de documentación, así que la wiki la mantiene aparte.Versionado por URI
La API versiona por URI. Cada ruta empieza por su versión:/v1/... o /v2/.... No hay prefijo global de API. El versionado se activa en src/main.ts:39 con VersioningType.URI.
La dualidad v1 / v2
vivla-api convive con dos bases de datos a la vez. Entender cuál manda en cada dato es lo más importante de este backend.- v1 — Firestore
- v2 — PostgreSQL (TypeORM)
Fuente de verdad de reservas y calendario. Las reservas, los slots del calendario, las temporadas por casa y los estados de las estancias viven en Firestore (Firebase). Los endpoints
/v1/... leen y escriben aquí.El calendario de cada casa se guarda en config/{año}/{calendar_ref} con subcolecciones por temporada (src/bookings/calendars/v1/calendars.repository.ts:69).Módulos
La API se organiza en módulos NestJS (src/app.module.ts).
| Módulo | Qué contiene |
|---|---|
| Bookings | Reservas: crear, cancelar, alquilar, intercambiar. v1 (Firestore) y v2 (experiencias + llaves). |
| Calendars | Calendario de cada casa, slots, temporadas, disponibilidad. Vive dentro de bookings/calendars. |
| Homes | Casas y propiedades. Controllers v1/v2 + variantes admin y tools. |
| Users | Usuarios y perfiles. Controllers v1/v2 + variantes admin y tools. |
| Auth | Autenticación y guard de permisos (PermissionGuard + @RequirePermission). |
| Notifications | Envío de notificaciones (push / buzón Firestore). |
| Invitations | Invitaciones de asistentes a reservas. |
| Configuration | Tabla configurations (parámetros clave/valor). |
| ScheduledJobs | Crons: caducidad de llaves, bono anual, refresco de caché, transfers. |
| Firestore / Database | Conexión a Firestore (v1) y a Postgres/TypeORM (v2). |
| Common | Filtros de error, i18n, utilidades, entidades compartidas. |
Por dónde seguir
Endpoints de reservas
Referencia de endpoints público/admin de v1 y v2, más los de calendario.
Reglas de reserva
Cada validación que impone el código, con su
archivo:línea.Calendario y temporadas
Enum de temporadas, fechas por casa, coste en llaves y check-in/out.
Llaves e intercambio
Wallet, caducidad, los dos motores de intercambio y ThirdHome.
Alquiler
Flujo de alquiler, estados, precio manual y Hostaway.
Crons y configuración
Tareas programadas, tabla
configurations y variables de entorno.