dummybot/routes/api.php

59 lines
3.2 KiB
PHP

<?php
use App\Http\Controllers\Auth\AuthController;
use App\Http\Controllers\TaskController;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Route;
// ─── Auth ───
Route::post('auth/register', [AuthController::class, 'register']);
Route::post('auth/login', [AuthController::class, 'login']);
Route::middleware('auth:sanctum')->group(function () {
Route::get ('auth/me', [AuthController::class, 'me']);
Route::post('auth/logout', [AuthController::class, 'logout']);
});
// ─── Endpoints del DummyBot (ESP32) ───
// Usa el token del dispositivo en Authorization: Bearer <token>
Route::middleware('auth.device')->prefix('device')->group(function () {
Route::get ('tasks/pending', [TaskController::class, 'pending']);
Route::post ('tasks', [TaskController::class, 'store']);
Route::post ('tasks/{task}/done', [TaskController::class, 'done']);
Route::post ('tasks/{task}/snooze', [TaskController::class, 'snooze']);
Route::delete('tasks/{task}', [TaskController::class, 'destroy']);
Route::post ('heartbeat', function (Request $r) {
return response()->json([
'ok' => true,
'server_time' => now()->toIso8601String(),
'device' => $r->attributes->get('device')?->only('id','name'),
]);
});
});
// ─── Web UI (mismo backend; usa sesiones + Sanctum) ───
// Tareas
Route::middleware('auth:sanctum')->group(function () {
Route::get ('/tasks', [TaskController::class, 'index']);
Route::post ('/tasks', [TaskController::class, 'store']);
Route::put ('/tasks/{task}', [TaskController::class, 'update']);
Route::delete('/tasks/{task}', [TaskController::class, 'destroy']);
Route::post ('/tasks/{task}/done', [TaskController::class, 'done']);
Route::post ('/tasks/{task}/snooze', [TaskController::class, 'snooze']);
Route::post ('/tasks/{task}/restore',[TaskController::class, 'restore']);
Route::get ('/tasks/stats', [TaskController::class, 'stats']);
// Proyectos
Route::get ('/projects', [\App\Http\Controllers\Api\ProjectController::class, 'index']);
Route::post ('/projects', [\App\Http\Controllers\Api\ProjectController::class, 'store']);
Route::put ('/projects/{project}',[\App\Http\Controllers\Api\ProjectController::class, 'update']);
Route::delete('/projects/{project}',[\App\Http\Controllers\Api\ProjectController::class, 'destroy']);
// Tags
Route::get ('/tags', [\App\Http\Controllers\Api\TagController::class, 'index']);
Route::post ('/tags', [\App\Http\Controllers\Api\TagController::class, 'store']);
Route::delete('/tags/{tag}', [\App\Http\Controllers\Api\TagController::class, 'destroy']);
// Devices
Route::get ('/devices', [\App\Http\Controllers\Api\DeviceController::class, 'index']);
Route::post ('/devices', [\App\Http\Controllers\Api\DeviceController::class, 'store']);
Route::post ('/devices/{device}/rotate', [\App\Http\Controllers\Api\DeviceController::class, 'rotate']);
Route::delete('/devices/{device}',[\App\Http\Controllers\Api\DeviceController::class, 'destroy']);
});