response()->json(['status' => 'ok', 'app' => 'queue'])); Route::post('/devices/heartbeat', DeviceHeartbeatController::class)->name('api.devices.heartbeat'); Route::post('/service-events', ServiceEventController::class)->name('api.service-events'); Route::prefix('v1/public')->group(function () { Route::post('/join', [PublicQueueController::class, 'join'])->name('api.public.join'); Route::get('/tickets/{qrToken}', [PublicQueueController::class, 'show'])->name('api.public.ticket'); Route::post('/tickets/{qrToken}/delay', [PublicQueueController::class, 'delay'])->name('api.public.ticket.delay'); Route::post('/tickets/{qrToken}/cancel', [PublicQueueController::class, 'cancel'])->name('api.public.ticket.cancel'); }); Route::middleware(['auth:sanctum', 'qms.setup'])->prefix('v1')->group(function () { Route::get('/queues', [ServiceQueueController::class, 'index'])->name('api.queues.index'); Route::get('/queues/{serviceQueue}/waiting', [ServiceQueueController::class, 'waiting'])->name('api.queues.waiting'); Route::post('/queues/{serviceQueue}/pause', [ServiceQueueController::class, 'pause'])->name('api.queues.pause'); Route::post('/queues/{serviceQueue}/resume', [ServiceQueueController::class, 'resume'])->name('api.queues.resume'); Route::get('/tickets', [TicketController::class, 'index'])->name('api.tickets.index'); Route::post('/tickets', [TicketController::class, 'store'])->name('api.tickets.store'); Route::get('/tickets/{ticket}', [TicketController::class, 'show'])->name('api.tickets.show'); Route::post('/tickets/{ticket}/action', [TicketController::class, 'action'])->name('api.tickets.action'); Route::post('/queues/{serviceQueue}/call-next', [TicketController::class, 'callNext'])->name('api.queues.call-next'); Route::get('/counters', [CounterController::class, 'index'])->name('api.counters.index'); Route::post('/counters', [CounterController::class, 'store'])->name('api.counters.store'); Route::get('/appointments', [AppointmentController::class, 'index'])->name('api.appointments.index'); Route::post('/appointments', [AppointmentController::class, 'store'])->name('api.appointments.store'); Route::post('/appointments/{appointment}/check-in', [AppointmentController::class, 'checkIn'])->name('api.appointments.check-in'); Route::get('/workflows', [WorkflowController::class, 'index'])->name('api.workflows.index'); Route::get('/workflows/{workflow}', [WorkflowController::class, 'show'])->name('api.workflows.show'); Route::get('/queues/{serviceQueue}/rules', [QueueRuleController::class, 'index'])->name('api.rules.index'); Route::post('/queues/{serviceQueue}/rules', [QueueRuleController::class, 'store'])->name('api.rules.store'); Route::get('/analytics/overview', [AnalyticsController::class, 'overview'])->name('api.analytics.overview'); Route::get('/reports/{type}', [ReportController::class, 'show'])->name('api.reports.show'); Route::get('/branches', [BranchController::class, 'index'])->name('api.branches.index'); Route::post('/branches', [BranchController::class, 'store'])->name('api.branches.store'); }); Route::middleware(['auth.service:qms'])->prefix('v1')->group(function () { Route::get('/integrations/status', [IntegrationController::class, 'status'])->name('api.integrations.status'); Route::post('/integrations/provision', [IntegrationController::class, 'provision'])->name('api.integrations.provision'); Route::patch('/integrations', [IntegrationController::class, 'update'])->name('api.integrations.update'); }); Route::middleware(['auth.service:qms', 'qms.integration'])->prefix('v1')->group(function () { Route::get('/queues', [ServiceQueueController::class, 'index'])->name('api.service.queues.index'); Route::get('/queues/{serviceQueue}/waiting', [ServiceQueueController::class, 'waiting'])->name('api.service.queues.waiting'); Route::post('/queues/{serviceQueue}/call-next', [TicketController::class, 'callNext'])->name('api.service.queues.call-next'); Route::get('/tickets', [TicketController::class, 'index'])->name('api.service.tickets.index'); Route::post('/tickets/{ticket}/action', [TicketController::class, 'action'])->name('api.service.tickets.action'); Route::get('/counters', [CounterController::class, 'index'])->name('api.service.counters.index'); Route::get('/counters/{counter}/console', [ConsoleApiController::class, 'show'])->name('api.service.counters.console'); Route::post('/counters/{counter}/console', [ConsoleApiController::class, 'action'])->name('api.service.counters.console.action'); });