Mark notification as read
PUT/company/notifications/read/:id
Actualiza el estado de una notificación para marcarla como leída, registrando la fecha y hora actual de la lectura.
Objetivo
Permitir a las empresas marcar notificaciones como leídas para mantener un seguimiento preciso de las alertas pendientes y mejorar la experiencia de usuario.
Casos de uso
- Interacción del usuario: Cuando el usuario hace clic en una notificación
- Sincronización multi-dispositivo: Marcar como leída en todos los dispositivos
- Lectura masiva: Marcar múltiples notificaciones en lote
- Gestión de notificaciones: Actualización del estado desde el panel de notificaciones
Flujo de actualización
flowchart TD
A[PUT /read/{id}] --> B{ID Provided?}
B -->|No| C[Check Body]
B -->|Yes| D[Use Path ID]
C -->|Found| E[Use Body ID]
C -->|Not Found| F[Check Query]
F -->|Found| G[Use Query ID]
F -->|Not Found| H[400 Bad Request]
D --> I{User Authenticated?}
E --> I
G --> I
I -->|No| J[404 USER_NOT_FOUND]
I -->|Yes| K{Company Exists?}
K -->|No| L[401 CIA_NOT_FOUND]
K -->|Yes| M{Notification Exists?}
M -->|No| N[404 NOTIFICATION_NOT_FOUND]
M -->|Yes| O[Update Notification]
O --> P[Set isRead: true]
P --> Q[Set readedAt: now]
Q --> R[Save to Database]
R --> S[Return Notification - 200]
Flexibilidad de parámetros
El ID de la notificación puede enviarse de tres formas (en orden de prioridad):
- Path parameter (recomendado):
/company/notifications/read/{id} - Query parameter:
/company/notifications/read?id={id} - Request body:
{ "id": "{id}" }
El sistema verifica en este orden: body → query → params
Campos actualizados
isRead: Se establece en true
readedAt: Se establece con la fecha y hora actual del servidor
Notas importantes
- La operación es idempotente: llamar al endpoint múltiples veces con el mismo ID no causa errores
- Si la notificación ya estaba marcada como leída, se actualiza
readedAtnuevamente - Solo se pueden marcar notificaciones que existen en el sistema
- No se valida que la notificación pertenezca a la empresa del usuario (por diseño actual)
- La fecha
readedAtse establece en formato UTC del servidor
Errores
- 401 CIA_NOT_FOUND: El usuario no tiene una empresa asociada
- 404 USER_NOT_FOUND: El token no corresponde a un usuario válido
- 404 NOTIFICATION_NOT_FOUND: El ID no corresponde a una notificación existente
Request
Responses
- 200
- 401
- 404
Notificación marcada como leída exitosamente
No autorizado. El usuario no tiene una empresa asociada.
CIA_NOT_FOUND:
- El usuario autenticado no tiene una empresa asignada
- La empresa fue desactivada o eliminada
Recurso no encontrado. Puede ser por dos razones:
USER_NOT_FOUND:
- El token contiene un ID de usuario que no existe
NOTIFICATION_NOT_FOUND:
- El ID proporcionado no corresponde a ninguna notificación
- La notificación fue eliminada previamente