Responder invitación de ubicación
Permite aceptar o rechazar una invitación personal a una ubicación desde Notificaciones. Al aceptar, Antylogic activa la ubicación y asegura la pertenencia a la organización; al rechazar, elimina la invitación pendiente si todavía no estaba aceptada.
En este artículo
Esta guía cubre la decisión personal del usuario invitado a una ubicación. El flujo se realiza desde el panel de Notificaciones y no permite responder por otra persona, cambiar roles ni editar datos de usuario.
En el demo ES, el ejemplo se documenta con Grupo Marea Demo, Demo Marea y Marea Mercado. La ruta devuelve `204 No Content`, por lo que el resultado se verifica con la desaparición de la invitación y la recarga de ubicaciones aceptadas.
Antes de empezar
- El usuario debe haber iniciado sesión en Antylogic.
- Debe existir una invitación pendiente a una ubicación para el usuario actual.
- Para documentar el flujo desde la interfaz, debe existir una notificación `location_invite` visible en Notificaciones.
- En el runtime demo ES, la captura requiere preparar temporalmente una invitación para Demo Marea a Marea Mercado y limpiarla al terminar.
Instrucciones
- 1.
Abrir las notificaciones personales
Desde la cabecera de la aplicación, abre el menú de usuario y entra en `Notificaciones`. La app carga las notificaciones de la cuenta actual con `GET /api/app/me/notifications?page_size=50`.
- 2.
Revisar la invitación
Comprueba que la invitación corresponde a Marea Mercado dentro de Grupo Marea Demo. La decisión se toma desde las acciones de la notificación: `Aceptar` o `Rechazar`.
- 3.
Aceptar la invitación
Pulsa `Aceptar` y confirma en el modal `Aceptar invitación`. La app envía `PUT /api/app/me/locations/{locationId}` con `status` igual a `accepted` para activar la membresía de ubicación del usuario actual.
- 4.
Rechazar la invitación
Si el usuario no debe incorporarse a esa ubicación, pulsa `Rechazar` y confirma en el modal. La app envía la misma ruta con `status` igual a `rejected`; si la relación seguía invitada, se elimina.
- 5.
Comprobar el resultado
Después de aceptar o rechazar, revisa que la invitación ya no aparece en Notificaciones. Si se aceptó, la ubicación debe aparecer entre las ubicaciones disponibles cuando la app recargue sus datos.
Validaciones y límites
- La ruta solo admite `PUT`; otros métodos sobre `/api/app/me/locations/{locationId}` devuelven `405 Method Not Allowed`.
- El body debe ser JSON válido con `status`, y solo se aceptan `accepted` o `rejected` después de normalizar el valor.
- La operación usa el usuario autenticado: no acepta `user_id`, `org_id`, `location_id` ni roles en el payload.
- La ubicación debe existir y debe haber una membresía propia del usuario para esa ubicación.
- Al aceptar, `user_locations` pasa a `accepted` y la organización asociada queda aceptada si no existía o seguía invitada.
- Al rechazar, no se guarda un estado `rejected`; si la membresía seguía `invited`, se borra la relación pendiente.
- Si la membresía de ubicación ya estaba aceptada, un rechazo posterior no borra esa pertenencia aceptada.
- La documentación existente menciona `{locationMembershipId}`, pero la implementación usa ese segmento como `{locationId}`.
- La interfaz actual prioriza la respuesta de organización cuando la notificación trae `organization`; una captura fiel de esta ruta puede requerir un fixture específico de documentación.
Resultado esperado
Al aceptar, Demo Marea queda con acceso aceptado a Marea Mercado, la organización necesaria queda aceptada si hacía falta y la notificación `location_invite` se elimina. Al rechazar, la invitación pendiente desaparece y no se persiste ningún estado `rejected`.