Notifications API (In-App & Push)

Controlador: app/Http/Controllers/Api/NotificationController.php (724 líneas)


Notificaciones In-App

GET /api/notifications (protegida)

Todas las notificaciones del usuario, paginadas (20 por página).

Response:

{
  "success": true,
  "data": {
    "current_page": 1,
    "data": [
      {
        "id": 150,
        "user_id": 1,
        "from_user_id": 5,
        "type": "like",
        "post_id": 42,
        "data": { "liker_username": "marialop", ... },
        "read_at": null,
        "created_at": "2025-06-20T...",
        "from_user_data": {
          "id": 5,
          "name": "María López",
          "username": "marialop",
          "imagen": "uuid.jpg",
          "insignia": null,
          "imagen_url": "https://dominio.com/perfiles/uuid.jpg"
        },
        "post_data": {
          "id": 42,
          "titulo": "Mi post",
          "tipo": "imagen",
          "imagen": "post.webp",
          "imagen_url": "https://dominio.com/uploads/post.webp"
        },
        "message": "María López le dio like a tu publicación",
        "time_ago": "hace 5 minutos"
      }
    ]
  }
}

Transformación: Cada notificación se enriquece con:

Las relaciones originales (fromUser, post, user) se ocultan del JSON final con unset().


GET /api/notifications/unread (protegida)

Solo notificaciones no leídas (sin paginación, devuelve todas). Misma transformación.

Response adicional: count con el total de no leídas.


GET /api/notifications/count (protegida)

Endpoint ligero para obtener solo el conteo de no leídas (para badges).

Response:

{
  "success": true,
  "count": 7
}