* @license MIT */ use Illuminate\Support\Facades\Route; use Pterodactyl\Addons\AdvancedAdmin\Http\Controllers\Client\NetworkMetricsController; use Pterodactyl\Addons\AdvancedAdmin\Http\Controllers\Client\ServerRoleController; use Pterodactyl\Addons\AdvancedAdmin\Http\Controllers\Client\FileRevisionController; use Pterodactyl\Addons\AdvancedAdmin\Http\Controllers\Client\AutocompleteController; Route::group([ 'prefix' => 'api/client/servers/{server}', 'middleware' => [ 'api', 'auth:sanctum', 'addon.ratelimit', \Pterodactyl\Http\Middleware\Api\Client\SubstituteClientBindings::class, ], ], function () { // ── Network Traffic ─────────────────────────────────────────────────────── Route::prefix('addons/network')->group(function () { Route::get('live', [NetworkMetricsController::class, 'live']) ->middleware('throttle:addon-network-live'); Route::get('history', [NetworkMetricsController::class, 'history']); Route::get('ports', [NetworkMetricsController::class, 'ports']); Route::get('flows', [NetworkMetricsController::class, 'flows']); }); // ── Roles & Permissions ─────────────────────────────────────────────────── Route::prefix('addons/roles')->group(function () { Route::get('users', [ServerRoleController::class, 'listUsers']); Route::post('assign', [ServerRoleController::class, 'assign']); Route::delete('assign', [ServerRoleController::class, 'unassign']); }); Route::prefix('addons/permissions')->group(function () { Route::get('effective/{userId}', [ServerRoleController::class, 'effectivePermissions']); Route::put('override', [ServerRoleController::class, 'setOverride']); }); // ── File Revisions ──────────────────────────────────────────────────────── Route::prefix('addons/files/revisions')->group(function () { Route::get('/', [FileRevisionController::class, 'index']); Route::get('/{revision}', [FileRevisionController::class, 'show']); Route::get('/{revision}/diff', [FileRevisionController::class, 'diff']); Route::get('/{revision}/download', [FileRevisionController::class, 'download']); Route::post('/{revision}/restore', [FileRevisionController::class, 'restore']) ->middleware('throttle:addon-revisions-restore'); Route::delete('/{revision}', [FileRevisionController::class, 'destroy']); }); // ── Console Autocomplete ────────────────────────────────────────────────── Route::prefix('addons/console')->group(function () { Route::get('autocomplete', [AutocompleteController::class, 'suggest']) ->middleware('throttle:addon-console-autocomplete'); Route::get('players', [AutocompleteController::class, 'players']); }); });