middleware(['collect.cors', 'throttle:collect']) ->name('collect.legacy'); Route::get('/collect/pixel/{trackingId}', [CollectController::class, 'pixel']) ->middleware(['collect.cors', 'throttle:collect']) ->name('collect.pixel.legacy'); Route::get('/pixel', [CollectController::class, 'pixel']) ->middleware(['collect.cors', 'throttle:collect']) ->name('collect.pixel.query'); // Original endpoints (kept for backward compatibility) Route::get('/t/{trackingId}.js', [TrackingScriptController::class, 'script']) ->middleware('collect.cors') ->name('tracking.script'); Route::middleware('collect.cors')->group(function () { Route::post('/e', [CollectController::class, 'store']) ->middleware('throttle:collect') ->name('collect.store'); Route::get('/p', [CollectController::class, 'pixel']) ->middleware('throttle:collect') ->name('collect.pixel'); }); // Ad-blocker resistant endpoints (use these in production) Route::get('/cdn/resources/{trackingId}.js', [TrackingScriptController::class, 'script']) ->middleware('collect.cors') ->name('tracking.script.alt'); Route::middleware('collect.cors')->group(function () { Route::post('/cdn/feedback', [CollectController::class, 'store']) ->middleware('throttle:collect') ->name('collect.store.alt'); Route::get('/cdn/status.gif', [CollectController::class, 'pixel']) ->middleware('throttle:collect') ->name('collect.pixel.alt'); }); Route::prefix('v1')->middleware(['auth:sanctum', 'throttle:api'])->name('api.v1.')->group(function () { Route::get('websites', [ApiWebsiteController::class, 'index'])->name('websites.index'); Route::get('websites/{website}/stats', [ApiWebsiteController::class, 'stats'])->name('websites.stats'); Route::get('websites/{website}/pages', [ApiWebsiteController::class, 'pages'])->name('websites.pages'); Route::get('websites/{website}/referrers', [ApiWebsiteController::class, 'referrers'])->name('websites.referrers'); Route::get('websites/{website}/events', [ApiWebsiteController::class, 'events'])->name('websites.events'); Route::get('websites/{website}/visitors', [ApiWebsiteController::class, 'visitors'])->name('websites.visitors'); });