Controlador: app/Http/Controllers/Api/TaskController.php (188 líneas)
Usa apiResource que genera CRUD completo automáticamente. Todos los endpoints son protegidos (auth:sanctum).
/api/tasks (protegida)Listar tareas del usuario autenticado (paginado 20).
Query params:
| Param | Tipo | Descripción |
|—|—|—|
| status | string | Filtrar por: pending, in_progress, completed, cancelled |
| priority | string | Filtrar por: low, medium, high |
| overdue | boolean | Si true, solo tareas vencidas (due_date < now AND status in pending/in_progress) |
| sort_by | string | Ordenar por: created_at (default), priority, due_date |
| sort_order | string | desc (default) o asc |
Ejemplos:
GET /api/tasks?status=pending&priority=high
GET /api/tasks?overdue=true
GET /api/tasks?sort_by=priority&sort_order=asc
Response:
{
"success": true,
"data": {
"current_page": 1,
"data": [
{
"id": 1,
"uuid_cliente": "550e8400-e29b-41d4-a716-446655440000",
"title": "Estudiar para examen",
"description": "Capítulos 3-5",
"status": "pending",
"priority": "high",
"due_date": "2025-06-25",
"estimated_pomodoros": 4,
"completed_at": null,
"pomodoro_sessions": [ ... ]
}
]
}
}
Eager loads: pomodoroSessions (para mostrar progreso de pomodoros).
/api/tasks (protegida)Crear una nueva tarea.
Request:
{
"title": "Estudiar para examen",
"description": "Capítulos 3-5",
"priority": "high",
"due_date": "2025-06-25",
"estimated_pomodoros": 4,
"uuid_cliente": "550e8400-e29b-41d4-a716-446655440000"
}
Validación:
title: required, string, max 255description: nullable, stringpriority: nullable, in: low, medium, highdue_date: nullable, dateestimated_pomodoros: nullable, integer, min 1uuid_cliente: nullable, UUID (se genera automáticamente si no se envía)Response (201):