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:
co-authored by
Claude Sonnet 4.6
parent
68d01448d2
commit
a583a13da1
@@ -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']);
|
||||
});
|
||||
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user