ConvoyPanel/routes/api-admin.php
2023-11-30 22:59:23 -06:00

213 lines
8.4 KiB
PHP

<?php
use Convoy\Http\Controllers\Admin;
use Convoy\Http\Middleware\Admin\Server\ValidateServerStatusMiddleware;
use Illuminate\Support\Facades\Route;
/*
|--------------------------------------------------------------------------
| Location Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/locations
|
*/
Route::prefix('/locations')->group(function () {
Route::get('/', [Admin\LocationController::class, 'index']);
Route::post('/', [Admin\LocationController::class, 'store']);
Route::prefix('/{location}')->group(function () {
Route::put('/', [Admin\LocationController::class, 'update']);
Route::delete('/', [Admin\LocationController::class, 'destroy']);
});
});
/*
|--------------------------------------------------------------------------
| Node Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/nodes
|
*/
Route::prefix('/nodes')->group(function () {
Route::get('/', [Admin\Nodes\NodeController::class, 'index']);
Route::post('/', [Admin\Nodes\NodeController::class, 'store']);
Route::prefix('/{node}')->group(function () {
Route::get('/', [Admin\Nodes\NodeController::class, 'show']);
Route::put('/', [Admin\Nodes\NodeController::class, 'update']);
Route::delete('/', [Admin\Nodes\NodeController::class, 'destroy']);
/*
|--------------------------------------------------------------------------
| Node ISOs Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/nodes/{node}/isos
|
*/
Route::resource('/isos', Admin\Nodes\IsoController::class)
->only(['index', 'store', 'update', 'destroy']);
/*
|--------------------------------------------------------------------------
| Node Templates Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/nodes/{node}/template-groups
|
*/
Route::prefix('/template-groups')->group(function () {
Route::get('/', [Admin\Nodes\TemplateGroupController::class, 'index']);
Route::post('/', [Admin\Nodes\TemplateGroupController::class, 'store']);
Route::post(
'/reorder', [Admin\Nodes\TemplateGroupController::class, 'updateOrder'],
);
Route::prefix('/{template_group}')->group(function () {
Route::put('/', [Admin\Nodes\TemplateGroupController::class, 'update']);
Route::delete('/', [Admin\Nodes\TemplateGroupController::class, 'destroy']);
Route::prefix('/templates')->group(function () {
Route::get('/', [Admin\Nodes\TemplateController::class, 'index']);
Route::post('/', [Admin\Nodes\TemplateController::class, 'store']);
Route::post(
'/reorder',
[Admin\Nodes\TemplateController::class, 'updateOrder'],
);
Route::get('/{template}', [Admin\Nodes\TemplateController::class, 'show']);
Route::delete('/{template}', [Admin\Nodes\TemplateController::class, 'destroy'],
);
});
Route::resource('templates', Admin\Nodes\TemplateController::class)
->only(['index', 'store', 'update', 'destroy']);
});
});
/*
|--------------------------------------------------------------------------
| Node Addresses Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/nodes/{node}/addresses
|
*/
Route::resource('addresses', Admin\Nodes\AddressController::class)
->only(['index', 'store', 'update', 'destroy']);
/*
|--------------------------------------------------------------------------
| Node Helpers Routes
|--------------------------------------------------------------------------
*/
Route::get('/tools/query-remote-file', [Admin\Nodes\IsoController::class, 'queryLink']);
});
});
/*
|--------------------------------------------------------------------------
| Server Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/servers
|
*/
Route::prefix('/servers')->group(function () {
Route::get('/', [Admin\ServerController::class, 'index']);
Route::post('/', [Admin\ServerController::class, 'store']);
Route::group(['prefix' => '/{server}', 'middleware' => ValidateServerStatusMiddleware::class],
function () {
Route::get('/', [Admin\ServerController::class, 'show'])->withoutMiddleware(
ValidateServerStatusMiddleware::class,
);
Route::patch('/', [Admin\ServerController::class, 'update'])->withoutMiddleware(
ValidateServerStatusMiddleware::class,
);
Route::delete('/', [Admin\ServerController::class, 'destroy']);
Route::prefix('/settings')->group(function () {
Route::patch('/build', [Admin\ServerController::class, 'updateBuild']);
Route::post('/suspend', [Admin\ServerController::class, 'suspend']);
Route::post('/unsuspend', [Admin\ServerController::class, 'unsuspend']);
});
});
});
/*
|--------------------------------------------------------------------------
| Address Pool Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/address-pools
|
*/
Route::prefix('/address-pools')->group(function () {
Route::get('/', [Admin\AddressPools\AddressPoolController::class, 'index']);
Route::post('/', [Admin\AddressPools\AddressPoolController::class, 'store']);
Route::prefix('/{address_pool}')->group(function () {
Route::get('/', [Admin\AddressPools\AddressPoolController::class, 'show']);
Route::put('/', [Admin\AddressPools\AddressPoolController::class, 'update']);
Route::delete('/', [Admin\AddressPools\AddressPoolController::class, 'destroy']);
Route::get(
'/attached-nodes',
[Admin\AddressPools\AddressPoolController::class, 'getAttachedNodes'],
);
Route::prefix('/addresses')->group(function () {
Route::get('/', [Admin\AddressPools\AddressController::class, 'index']);
Route::post('/', [Admin\AddressPools\AddressController::class, 'store']);
Route::put('/{address}', [Admin\AddressPools\AddressController::class, 'update']);
Route::delete('/{address}', [Admin\AddressPools\AddressController::class, 'destroy']);
});
});
});
/*
|--------------------------------------------------------------------------
| User Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/users
|
*/
Route::resource('users', Admin\UserController::class)
->only(['index', 'show', 'store', 'update', 'destroy']);
/*
|--------------------------------------------------------------------------
| Coterm Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/coterms
|
*/
Route::prefix('/coterms')->group(function () {
Route::get('/', [Admin\CotermController::class, 'index']);
Route::post('/', [Admin\CotermController::class, 'store']);
Route::prefix('/{coterm}')->group(function () {
Route::get('/', [Admin\CotermController::class, 'show']);
Route::put('/', [Admin\CotermController::class, 'update']);
Route::post('/reset-coterm-token', [Admin\CotermController::class, 'resetCotermToken']);
Route::delete('/', [Admin\CotermController::class, 'destroy']);
Route::get('/nodes', [Admin\CotermController::class, 'getAttachedNodes']);
Route::put('/nodes', [Admin\CotermController::class, 'updateAttachedNodes']);
});
});
/*
|--------------------------------------------------------------------------
| API Token Controller Routes
|--------------------------------------------------------------------------
|
| Endpoint: /api/admin/tokens
|
*/
Route::resource('tokens', Admin\TokenController::class)
->only(['index', 'store', 'destroy']);