group(function () { Route::get('health', [HealthController::class, 'index']); Route::get('health/db', [HealthController::class, 'database']); 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/lookup', [MachineController::class, 'lookup']); 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']); }); });