PHP Client Example

PHP Client Example

A simple PHP client for the HytaleAdminAPI.

Base Class

<?php

class HytaleAdminAPI
{
    private string $baseUrl;
    private string $token;

    public function __construct(string $host = 'localhost', int $port = 5550, string $token = '')
    {
        $this->baseUrl = "http://{$host}:{$port}/api";
        $this->token = $token;
    }

    private function getHeaders(bool $json = false): array
    {
        $headers = [
            'Accept: application/json',
            'X-Admin-Token: ' . $this->token,
        ];
        if ($json) {
            $headers[] = 'Content-Type: application/json';
        }
        return $headers;
    }

    public function get(string $endpoint): array
    {
        $ch = curl_init("{$this->baseUrl}{$endpoint}");
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_HTTPHEADER => $this->getHeaders(),
            CURLOPT_TIMEOUT => 10,
        ]);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true) ?? [];
    }

    public function post(string $endpoint, array $data = []): array
    {
        $ch = curl_init("{$this->baseUrl}{$endpoint}");
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_POST => true,
            CURLOPT_POSTFIELDS => json_encode($data),
            CURLOPT_HTTPHEADER => $this->getHeaders(true),
            CURLOPT_TIMEOUT => 10,
        ]);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true) ?? [];
    }

    public function delete(string $endpoint): array
    {
        $ch = curl_init("{$this->baseUrl}{$endpoint}");
        curl_setopt_array($ch, [
            CURLOPT_RETURNTRANSFER => true,
            CURLOPT_CUSTOMREQUEST => 'DELETE',
            CURLOPT_HTTPHEADER => $this->getHeaders(),
            CURLOPT_TIMEOUT => 10,
        ]);
        $response = curl_exec($ch);
        curl_close($ch);
        return json_decode($response, true) ?? [];
    }

    // Convenience methods
    public function getStatus(): array { return $this->get('/status'); }
    public function getPlayers(): array { return $this->get('/players'); }
    public function getStats(): array { return $this->get('/stats'); }
    public function sendChat(string $msg): array { return $this->post('/chat/send', ['message' => $msg]); }
    public function banPlayer(string $player, string $reason = ''): array { return $this->post('/bans/add', ['player' => $player, 'reason' => $reason]); }
}

Usage

$api = new HytaleAdminAPI('192.168.1.100', 5550, 'your-api-token-here');

// Server status
$status = $api->getStatus();
echo "Server: {$status['data']['status']} — Players: {$status['data']['players']['online']}/{$status['data']['players']['max']}";

// List players
$players = $api->getPlayers();
foreach ($players['data'] as $player) {
    echo "{$player['name']} — {$player['health']} HP\n";
}

// Send chat
$api->sendChat('Welcome to the server!');