Add public API v1 with API key auth, rate limiting, and docs page

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Mark
2026-05-31 23:29:18 +03:00
co-authored by Claude Sonnet 4.6
parent 68d01448d2
commit a583a13da1
17 changed files with 1602 additions and 1 deletions
+23
View File
@@ -0,0 +1,23 @@
<?php
use App\Http\Controllers\Api\V1\GameApiController;
use App\Http\Controllers\Api\V1\MetaApiController;
use App\Http\Controllers\Api\V1\UserApiController;
use Illuminate\Support\Facades\Route;
Route::prefix('api/v1')->middleware(['api.key', 'throttle:api'])->group(function () {
// Games
Route::get('/games', [GameApiController::class, 'index']);
Route::get('/games/search', [GameApiController::class, 'search']);
Route::get('/games/top-rated', [GameApiController::class, 'topRated']);
Route::get('/games/new-releases', [GameApiController::class, 'newReleases']);
Route::get('/games/{game:slug}', [GameApiController::class, 'show']);
// Meta
Route::get('/genres', [MetaApiController::class, 'genres']);
Route::get('/platforms', [MetaApiController::class, 'platforms']);
// Users (public profiles)
Route::get('/users/{user:slug}', [UserApiController::class, 'show']);
Route::get('/users/{user:slug}/library', [UserApiController::class, 'library']);
});
+13
View File
@@ -81,6 +81,18 @@ Route::get('/sitemap.xml', function () {
return response()->file($path, ['Content-Type' => 'application/xml']);
})->name('sitemap');
// API Key Management
Route::middleware('auth')->group(function () {
Route::get('/settings/api-keys', [\App\Http\Controllers\ApiKeyController::class, 'index'])->name('settings.api-keys');
Route::post('/settings/api-keys', [\App\Http\Controllers\ApiKeyController::class, 'store'])->name('settings.api-keys.store');
Route::delete('/settings/api-keys/{apiKey}', [\App\Http\Controllers\ApiKeyController::class, 'destroy'])->name('settings.api-keys.destroy');
});
// API Docs (public)
Route::get('/api/docs', function () {
return view('api.docs');
})->name('api.docs');
// Dashboard (Breeze default, keep for now)
Route::get('/dashboard', function () {
return redirect()->route('home');
@@ -94,3 +106,4 @@ Route::middleware('auth')->group(function () {
});
require __DIR__.'/auth.php';
require __DIR__.'/api.php';