name('api.crawl.serve'); Route::get('shot/{uuid}.webp', [ShotController::class, 'serve'])->name('api.shot.serve'); // All other API routes require Sanctum authentication Route::middleware(['auth:sanctum'])->group(function () { // Crawl endpoints Route::prefix('crawl')->group(function () { Route::post('/', [CrawlController::class, 'crawl'])->name('api.crawl.create'); Route::get('/{uuid}', [CrawlController::class, 'status'])->name('api.crawl.status'); Route::get('/', [CrawlController::class, 'index'])->name('api.crawl.index'); // Optional: list all crawl jobs }); // Screenshot endpoints Route::prefix('shot')->group(function () { Route::post('/', [ShotController::class, 'shot'])->name('api.shot.create'); Route::get('/{uuid}', [ShotController::class, 'status'])->name('api.shot.status'); Route::get('/', [ShotController::class, 'index'])->name('api.shot.index'); // Optional: list all screenshot jobs }); }); // Health check endpoint (no auth required) Route::get('/health', function () { return response()->json([ 'status' => 'healthy', 'timestamp' => now()->toISOString(), 'service' => 'crawlshot' ]); })->name('api.health');