Documentación de rutas: Guest Invitation ************ VER INVITACION **************** GET /guest/invitation/:code - Autenticación: Pública (no requiere token). - Descripción: Devuelve la información de una invitación de invitado aún no aceptada, usando el código enviado por email. Parámetros - :code (path): Código de invitación (string). Usualmente es un token de 6 dígitos enviado al correo del invitado. Cabeceras opcionales - Accept: application/json Respuesta 200 OK Estructura (ejemplo): { "id": number, "clientId": number, "email": string, "token": string, // token/código de la invitación "isAccepted": false, "areaReservationId": number, "createdAt": string, // ISO datetime "areaReservation": { "id": number, "area_id": number, "day": string|null, // según datos "status": number|string,// según datos "area": { "id": number, "name": string }, "client": { "id": number, "personalData": { "id": number, "firstname": string, "lastname": string, "email": string|null, "face_image_id": number|null, "picture_image_id": number|null } }, "areaReservationSlots": [ { "start": string, "end": string } ] } } Códigos de estado - 200 OK: Invitación encontrada y no aceptada; se devuelve su información. - 404 Not Found: No existe una invitación con ese código o ya fue aceptada. - 500 Internal Server Error: Error inesperado del servidor. Notas - El código de invitación proviene del correo enviado al invitado cuando se genera la invitación. - Si la invitación ya fue aceptada (isAccepted = true), esta ruta responderá 404. - Esta ruta es de solo lectura y no modifica el estado de la invitación. ************ ACEPTAR INVITACION **************** POST /guest/invitation/:code - Autenticación: Pública (no requiere token). - Descripción: Acepta la invitación asociada al código y registra al invitado en la reservación (añade al invitado con sus datos personales y foto). Body (JSON) requerido: { "documentNumber": "string", // obligatorio "documentTypeId": number, // obligatorio, debe existir en document_types.id "firstname": "string", // obligatorio, max 100 "lastname": "string", // obligatorio, max 100 "base64": "string" // obligatorio, imagen en base64 (hasta ~700KB) } Parámetros - :code (path): Código/token de la invitación enviado por email. Comportamiento - Busca una invitación con token = :code y isAccepted = false. - Marca la invitación como aceptada (isAccepted = true) y modifica el token internamente. - Inserta al invitado en la reservación (usando los datos del body y la imagen base64). Respuestas - 200 OK: Invitación aceptada; devuelve la invitación (serializada) con su información relacionada. - 404 Not Found: No existe una invitación válida para ese código (o ya fue aceptada). - 422 Unprocessable Entity: Validación fallida en el body (campos requeridos o documentTypeId inexistente). - 500 Internal Server Error: Error inesperado del servidor.