Files
pterodactyl_addon/routes/addon-client.php
2026-06-11 20:33:44 -05:00

62 lines
3.3 KiB
PHP

<?php
/**
* Addon API Routes — Client API
* Loaded by AddonServiceProvider
*
* @author Ball Studios <https://git.balls.studio>
* @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'],
], 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']);
});
});