diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 75a211ffb..d05af1397 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -6,6 +6,9 @@ use App\Extensions\Themes\Theme; use App\Models; use App\Models\ApiKey; use App\Models\Node; +use Dedoc\Scramble\Scramble; +use Dedoc\Scramble\Support\Generator\OpenApi; +use Dedoc\Scramble\Support\Generator\SecurityScheme; use Illuminate\Database\Eloquent\Relations\Relation; use Illuminate\Pagination\Paginator; use Illuminate\Support\Facades\Broadcast; @@ -66,6 +69,10 @@ class AppServiceProvider extends ServiceProvider $this->bootAuth(); $this->bootBroadcast(); + + Scramble::registerApi('application', ['api_path' => 'api/application', 'info' => ['version' => '1.0']]); + Scramble::registerApi('client', ['api_path' => 'api/client', 'info' => ['version' => '1.0']]); + Scramble::registerApi('remote', ['api_path' => 'api/remote', 'info' => ['version' => '1.0']]); } /** @@ -81,6 +88,9 @@ class AppServiceProvider extends ServiceProvider $this->app->singleton('extensions.themes', function () { return new Theme(); }); + + Scramble::extendOpenApi(fn (OpenApi $openApi) => $openApi->secure(SecurityScheme::http('bearer'))); + Scramble::ignoreDefaultRoutes(); } /** diff --git a/routes/docs.php b/routes/docs.php index 9348483ed..4355b3b8a 100644 --- a/routes/docs.php +++ b/routes/docs.php @@ -1,51 +1,21 @@ 'api'], function () { - Scramble::extendOpenApi(fn (OpenApi $openApi) => $openApi->secure(SecurityScheme::http('bearer'))); + Scramble::registerUiRoute(path: 'application', api: 'application'); + Scramble::registerJsonSpecificationRoute(path: 'application.json', api: 'application'); - Route::view('application', 'scramble::docs', ['api' => 'application'])->name('scramble.docs.api.application'); - Route::view('client', 'scramble::docs', ['api' => 'client'])->name('scramble.docs.api.client'); - Route::view('remote', 'scramble::docs', ['api' => 'remote'])->name('scramble.docs.api.remote'); + Scramble::registerUiRoute(path: 'client', api: 'client'); + Scramble::registerJsonSpecificationRoute(path: 'client.json', api: 'client'); - Route::get('application.json', function (Dedoc\Scramble\Generator $generator) { - config()->set('scramble.api_path', 'api/application'); - config()->set('scramble.info.description', ' - These are the Application API endpoints for admins. - They let you interact with your Panel on a root basis. - '); - - return $generator(); - })->name('scramble.docs.application'); - - Route::get('client.json', function (Dedoc\Scramble\Generator $generator) { - config()->set('scramble.api_path', 'api/client'); - config()->set('scramble.info.description', ' - These are the Client API endpoints for individual users. - They let your users interact with your Panel. - '); - - return $generator(); - })->name('scramble.docs.client'); - - Route::get('remote.json', function (Dedoc\Scramble\Generator $generator) { - config()->set('scramble.api_path', 'api/remote'); - config()->set('scramble.info.description', ' - These are the Remote API endpoints for Wings. - They let Wings interact with your Panel. - '); - - return $generator(); - })->name('scramble.docs.remote'); + Scramble::registerUiRoute(path: 'remote', api: 'remote'); + Scramble::registerJsonSpecificationRoute(path: 'remote.json', api: 'remote'); Route::get('', fn () => '