Files
backend/routes/api.php
T
2026-06-28 12:29:53 +02:00

82 lines
4.3 KiB
PHP

<?php
use App\Http\Controllers\Api\V1\AuthController;
use App\Http\Controllers\Api\V1\BookingController;
use App\Http\Controllers\Api\V1\EstablishmentController;
use App\Http\Controllers\Api\V1\Integration\MachineEventController;
use App\Http\Controllers\Api\V1\MachineController;
use App\Http\Controllers\Api\V1\Supervisor\AuthController as SupervisorAuthController;
use App\Http\Controllers\Api\V1\Supervisor\BookingController as SupervisorBookingController;
use App\Http\Controllers\Api\V1\Supervisor\DashboardController;
use App\Http\Controllers\Api\V1\Supervisor\MachineController as SupervisorMachineController;
use App\Http\Controllers\Api\V1\Supervisor\PricingController;
use App\Http\Controllers\Api\V1\Supervisor\PromotionController;
use App\Http\Controllers\Api\V1\Supervisor\WashController as SupervisorWashController;
use App\Http\Controllers\Api\V1\WalletController;
use App\Http\Controllers\Api\V1\WashController;
use Illuminate\Support\Facades\Route;
Route::prefix('v1')->group(function () {
Route::prefix('auth')->group(function () {
Route::post('register', [AuthController::class, 'register']);
Route::post('login', [AuthController::class, 'login']);
Route::post('refresh', [AuthController::class, 'refresh']);
Route::middleware(['auth:sanctum', 'auth.api.user'])->group(function () {
Route::post('logout', [AuthController::class, 'logout']);
Route::get('me', [AuthController::class, 'me']);
});
});
Route::middleware(['auth:sanctum', 'auth.api.user'])->group(function () {
Route::prefix('wallet')->group(function () {
Route::get('/', [WalletController::class, 'index']);
Route::get('transactions', [WalletController::class, 'transactions']);
Route::post('top-up/initiate', [WalletController::class, 'initiateTopUp']);
Route::post('top-up/confirm', [WalletController::class, 'confirmTopUp']);
});
Route::post('bookings', [BookingController::class, 'store']);
Route::get('bookings', [BookingController::class, 'index']);
Route::get('bookings/{uuid}', [BookingController::class, 'show']);
Route::patch('bookings/{uuid}/cancel', [BookingController::class, 'cancel']);
Route::patch('bookings/{uuid}/move', [BookingController::class, 'move']);
Route::post('washes/start', [WashController::class, 'start']);
Route::get('washes', [WashController::class, 'index']);
Route::get('washes/{uuid}', [WashController::class, 'show']);
});
Route::get('establishments', [EstablishmentController::class, 'index']);
Route::get('establishments/{uuid}', [EstablishmentController::class, 'show']);
Route::get('machines/{uuid}', [MachineController::class, 'show']);
Route::get('machines/{uuid}/availability', [MachineController::class, 'availability']);
Route::get('machines/{uuid}/pricing', [MachineController::class, 'pricing']);
Route::post('wallet/top-up/webhook/{provider}', [WalletController::class, 'webhook']);
Route::prefix('supervisor')->group(function () {
Route::post('auth/login', [SupervisorAuthController::class, 'login']);
Route::middleware(['auth.supervisor', 'supervisor.scope'])->group(function () {
Route::post('auth/logout', [SupervisorAuthController::class, 'logout']);
Route::get('dashboard', [DashboardController::class, 'index']);
Route::get('machines', [SupervisorMachineController::class, 'index']);
Route::get('bookings', [SupervisorBookingController::class, 'index']);
Route::get('washes', [SupervisorWashController::class, 'index']);
Route::get('pricing', [PricingController::class, 'index']);
Route::post('pricing', [PricingController::class, 'store']);
Route::put('pricing/{id}', [PricingController::class, 'update']);
Route::get('promotions', [PromotionController::class, 'index']);
});
});
Route::prefix('integrations/machines')
->middleware('machine.integration')
->group(function () {
Route::post('events', [MachineEventController::class, 'store']);
Route::post('heartbeat', [MachineEventController::class, 'heartbeat']);
Route::post('commands/{uuid}/ack', [MachineEventController::class, 'ackCommand']);
});
});