Application Servers (src/Applications/Servers)

Admin-level API for managing servers. This section covers the admin Builders, DTOs, and shortcuts to the Client API from a given server context.

Setup

use Gigabait93\Pterodactyl;

$p = Pterodactyl::make('https://panel.example.com', 'ptlc_xxx'); // Client Admin token

List and get

  • Servers::all(): ServersListBuilder — call ->send() to get ServersListResponse (ListResponse subtype)
  • Servers::get(int $id): ServersItemBuilder — resolves an item context (admin)
  • Servers::external(string $externalId): ServersItemBuilder — by external id

Example

$list = $p->servers->all()->perPage(50)->send();
$firstId = $list->ok ? (int)($list->data[0]['attributes']['id'] ?? 0) : 0;
$server = $p->servers->get($firstId); // ServersItemBuilder

Filters & Sort (list)

// Filter servers and order
$list = $p->servers->all()
    ->filterName('prod')
    ->filterExternalId('crm-42')
    ->sort('name')        // asc
    // ->sort('name', true) // desc
    ->send();

DTOs (Params)

CreateServerParams (POST /servers)

Required in constructor:

  • name: string
  • userId: int
  • eggId: int
  • dockerImage: string
  • startup: string

Fluent setters:

  • setLimits(memory, swap, disk, io, cpu, threads?)
  • setFeatureLimits(databases, allocations, backups)
  • env(key, value) / envs([…])
  • useAllocation(defaultAllocationId, additionalIds = [])
  • useDeploy(locationIds = [], dedicatedIp = false, portRanges = [])
  • description(text), externalId(text)
  • skipScripts(bool), startOnCompletion(bool), oomDisabled(bool)

Call toArray() to produce payload.

ServerDetailsParams (PATCH /servers/{id}/details)

  • name(string)
  • user(int)
  • externalId(?string) — pass null to clear
  • description(?string)

toArray() includes only set fields.

ServerBuildParams (PATCH /servers/{id}/build)

  • allocation(int)
  • limits(memory?, swap?, disk?, io?, cpu?, threads?, oomDisabled?)
  • features(databases?, allocations?, backups?)

toArray() includes only set fields.

ServerStartupParams (PATCH /servers/{id}/startup)

  • egg(int)
  • startup(string)
  • image(string)
  • env(array<string, scalar>)
  • skipScripts(bool)
  • dockerImages(array<string,string>) optional

toArray() includes only set fields.

Admin actions (Servers)

Class: Gigabait93\Applications\Servers\Servers

  • create(CreateServerParams): ItemResponse
  • update(int $id, ServerDetailsParams): ItemResponse
  • build(int $id, ServerBuildParams): ItemResponse
  • startup(int $id, ServerStartupParams): ItemResponse
  • suspend(int $id): ActionResponse
  • unsuspend(int $id): ActionResponse
  • reinstall(int $id): ActionResponse
  • destroy(int $id): ActionResponse
  • forceDelete(int $id): ActionResponse
  • getUuid(string $uuid): ItemResponse — returns server item or 404 with error message

ServersItemBuilder

Namespace: Gigabait93\Applications\Servers\Builders\ServersItemBuilder

Represents a single server context (by panel id or external/...). Provides both admin and client-side shortcuts.

Admin operations:

  • suspend(): ActionResponse
  • unsuspend(): ActionResponse
  • reinstall(): ActionResponse (delegates to client Settings API)
  • destroy(): ActionResponse
  • forceDelete(): ActionResponse
  • update(ServerDetailsParams): ItemResponse
  • build(ServerBuildParams): ItemResponse
  • startup(ServerStartupParams): ItemResponse

Client shortcuts (uuidShort auto-resolved and cached):

  • Server: resources(), details(array $includes = []), websocket(), power(string $signal), command(string $command)
  • Files: filesList(path), fileRead(file), fileDownload(file), fileRename(old,new,path), fileCopy(file), fileWrite(file,content), fileCompress(files,path), fileDecompress(name,path), fileDestroy(files,path), fileMkdir(name,path), fileExists(path,name), uploadBuilder()
  • Database: dbList(), dbCreate(name, remote='%'), dbResetPassword(database), dbDestroy(database)
  • Backups: backupsList(), backupShow(id), backupDownload(id), backupCreate(name, ignored=''), backupDestroy(id), backupRestore(id, truncate=false), backupLockToggle(id)
  • Schedules: schedulesList(), scheduleShow(id), scheduleCreate(...), scheduleUpdate(...), scheduleExecute(id), scheduleDestroy(id), scheduleCreateTask(id, task), scheduleUpdateTask(id, taskId, task), scheduleDeleteTask(id, taskId)
  • Network (allocations): allocationsList(), allocationAssign(), allocationSetNote(id,note), allocationSetPrimary(id), allocationDestroy(id)
  • Startup (client): startupVars(), startupVarsUpdate(array $data)
  • Settings (client): settingsRename(name), settingsSetDockerImage(image)

The builder resolves uuidShort on first use via admin get() data and caches it.

Responses and errors

All methods return ListResponse, ItemResponse or ActionResponse. Non-2xx responses expose a short error message and explain() provides a human-friendly description based on Pterodactyl errors[]. Rate-limit headers are parsed when present.

Examples

Create a server (abridged):

use Gigabait93\Applications\Servers\Params\CreateServerParams;

$params = (new CreateServerParams(
    name: 'Prod-1',
    userId: 42,
    eggId: 15,
    dockerImage: 'ghcr.io/pterodactyl/yolks:java_17',
    startup: 'java -Xms128M -XmxM -jar '
))
    ->setLimits(memory: 4096, swap: 0, disk: 20000, io: 500, cpu: 200)
    ->setFeatureLimits(databases: 2, allocations: 2, backups: 5)
    ->env('SERVER_JARFILE', 'server.jar')
    ->useAllocation(defaultAllocationId: 1234);

$resp = $p->servers->create($params);

Suspend then rename via client Settings:

$server = $p->servers->get(123);
$server->suspend();
$server->settingsRename('Maintenance');