Download the PHP package exbil/reselling-api-client without Composer
On this page you can find all versions of the php package exbil/reselling-api-client. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download exbil/reselling-api-client
More information about exbil/reselling-api-client
Files in exbil/reselling-api-client
Package reselling-api-client
Short Description Official PHP client for the Exbil Reselling Portal API — Root Server, Cloud Services, Game Server, TeamSpeak, VPN, Mailcow, Domain and Accounting endpoints.
License MIT
Informations about the package reselling-api-client
Exbil Reselling API Client
PHP API Client for the Exbil Reselling Portal.
Installation
Quick Start
Authentication
All API requests require an API key transmitted as Bearer Token:
For the sandbox environment use the sandbox base URL:
You can verify the configured key and inspect its scoped permissions at any time:
API Reference
Accounting
Billing, invoices, credit and usage.
| Method | Description |
|---|---|
getUserData() |
Team/user billing information |
getCreditStatus() |
Current credit status |
getUsage() |
Current month usage summary |
getUsageDetails(array $filters) |
Detailed usage records |
getInvoices() |
All invoices |
getInvoice(int $id) |
Single invoice |
Domain
Domain registration, transfer, DNS management and handles.
Main Methods
| Method | Description |
|---|---|
getAll() |
All domains |
get(string $domain) |
Single domain |
checkAvailability(string $domain) |
Check availability |
checkBulkAvailability(array $domains) |
Bulk availability check (max 50) |
register(string $domain, array $handles, array $nameservers, int $period) |
Register domain |
transfer(string $domain, string $authcode, array $handles, array $nameservers) |
Transfer domain |
sync(string $domain) |
Sync from registrar |
getAuthcode(string $domain) |
Get authcode |
updateHandles(string $domain, array $handles) |
Update handles |
requestDeletion(string $domain) |
Request deletion |
cancelDeletion(string $domain) |
Cancel deletion |
Pricing ($client->domain()->pricing())
| Method | Description |
|---|---|
getAll() |
All domain prices |
getTlds() |
Available TLDs |
getByTld(string $tld) |
Pricing for specific TLD |
Handle ($client->domain()->handle())
| Method | Description |
|---|---|
getTypes() |
Available handle types |
getAll() |
All handles |
get(string\|int $id) |
Single handle |
create(array $data) |
Create handle |
update(string\|int $id, array $data) |
Update handle |
delete(string\|int $id) |
Delete handle |
setDefault(string\|int $id) |
Set as default |
Nameserver ($client->domain()->nameserver())
| Method | Description |
|---|---|
get(string $domain) |
Get nameservers |
update(string $domain, array $nameservers) |
Update nameservers |
DNS ($client->domain()->dns())
| Method | Description |
|---|---|
get(string $domain) |
Get DNS records |
create(string $domain, array $record) |
Create record |
update(string $domain, string\|int $recordId, array $data) |
Update record |
bulkUpdate(string $domain, array $records) |
Bulk update records |
delete(string $domain, string\|int $recordId) |
Delete record |
getZones(string $domain) |
Get DNS zones |
createZone(string $domain, array $zone) |
Create zone |
updateZone(string $domain, string\|int $zoneId, array $data) |
Update zone |
deleteZone(string $domain, string\|int $zoneId) |
Delete zone |
Root Server
Manage virtual servers.
Main Methods
| Method | Description |
|---|---|
getAll(array $filters) |
All servers (filters: state, datacenter_id, cluster_id) |
get(int $vmId) |
Single server |
create(string $clusterSlug, array $config) |
Create server |
update(int $vmId, array $config) |
Resize server |
delete(int $vmId) |
Delete server |
resetRootPassword(int $vmId, ?string $password) |
Reset root password |
reinstall(int $vmId, array $config) |
Reinstall server |
getStats(int $vmId) |
Live statistics (CPU, RAM, network) |
getLogs(int $vmId, int $limit) |
Server logs |
getTasks(int $vmId, int $limit) |
Running/completed tasks |
Location ($client->rootServer()->location())
| Method | Description |
|---|---|
getAll() |
All datacenters |
getClusters(string $datacenterSlug) |
Clusters of a datacenter |
Cluster ($client->rootServer()->cluster())
| Method | Description |
|---|---|
getAll() |
All clusters |
get(string $clusterSlug) |
Single cluster |
getOsList(string $clusterSlug) |
Available operating systems |
getPrices(string $clusterSlug) |
Price list of a cluster |
calculatePrice(string $clusterSlug, array $config) |
Calculate price |
Power ($client->rootServer()->power())
| Method | Description |
|---|---|
start(int $vmId) |
Start server |
stop(int $vmId) |
Shutdown server (graceful) |
reboot(int $vmId) |
Reboot server |
forceStop(int $vmId) |
Power off server (force) |
VPN
VPN accounts and configurations.
Main Methods
| Method | Description |
|---|---|
getServers() |
All VPN servers |
getPorts() |
Available ports |
getPricing() |
Pricing |
getGeoIP() |
GeoIP info of current request |
checkUsername(string $username) |
Check username availability |
Account ($client->vpn()->account())
| Method | Description |
|---|---|
getAll() |
All VPN accounts |
get(int $id) |
Single account |
create(string $username, ?string $password) |
Create account |
delete(int $id) |
Delete account |
sync(int $id) |
Sync account |
changePassword(int $id, string $password) |
Change password |
enable(int $id) |
Enable account |
disable(int $id) |
Disable account |
Note: Suspended accounts cannot be enabled via API. Contact support to lift the suspension.
Config ($client->vpn()->config())
| Method | Description |
|---|---|
getOpenVpn(int $accountId, int $serverId, int $portId) |
OpenVPN config (JSON) |
downloadOpenVpn(int $accountId, int $serverId, int $portId) |
OpenVPN .ovpn download |
getWireGuard(int $accountId, int $serverId) |
WireGuard config (JSON) |
downloadWireGuard(int $accountId, int $serverId) |
WireGuard .conf download |
Mailcow
Email domains, mailboxes and aliases.
Main Methods
| Method | Description |
|---|---|
getNodes(?string $datacenter) |
All Mailcow nodes |
getLoadBalancerStats(?string $datacenter) |
Load balancer statistics |
calculatePrice(string $nodeOrDc, int $mailboxes, int $aliases, int $quotaMb) |
Calculate price |
getAll(?string $id) |
All or single domain |
get(string\|int $id) |
Single domain |
create(string $nodeOrDc, array $config) |
Create domain |
update(string\|int $id, array $config) |
Update domain |
delete(string\|int $id) |
Delete domain |
Mailbox ($client->mailcow()->mailbox())
| Method | Description |
|---|---|
getAll(string $domain, ?int $id) |
Get mailboxes |
get(string $domain, int $mailboxId) |
Single mailbox |
create(string $domain, string $address, array $config) |
Create mailbox |
update(string $domain, string $address, array $config) |
Update mailbox |
delete(string $domain, string $localPart) |
Delete mailbox |
Alias ($client->mailcow()->alias())
| Method | Description |
|---|---|
getAll(string $domain, ?int $id) |
Get aliases |
get(string $domain, int $aliasId) |
Single alias |
create(string $domain, string $address, array $goto) |
Create alias |
update(string $domain, string $address, array $goto, ?bool $active) |
Update alias |
delete(string $domain, string $localPart) |
Delete alias |
Domain Admin ($client->mailcow()->domainAdmin())
| Method | Description |
|---|---|
getAll(string $domain, ?int $id) |
Get domain admins |
get(string $domain, int $adminId) |
Single admin |
create(string $domain, string $username, ?string $password) |
Create admin |
update(string $domain, string $username, array $config) |
Update admin |
delete(string $domain, string $username) |
Delete admin |
Cloud Services
Container based services — game servers (Minecraft, TeamSpeak, CS2, Rust, Palworld, …), databases (MySQL, MariaDB, PostgreSQL, MongoDB, Redis, …), web stacks (Caddy, Apache+PHP, Node.js, Python, Bun, …), discord bots, and ~250 other templates. Services and backups are addressed by their UUID.
Main Methods
| Method | Description |
|---|---|
templates() |
Order catalogue — every active template + node bindings + field_schema |
getAll(array $filters = []) |
All cloud services (filters: status, per_page, team_id) |
get(string $uuid) |
Service details incl. live status |
create(array $config) |
Create a service (node_id, template_slug, name, memory_limit, disk_limit, cpu_limit, …) |
delete(string $uuid) |
Delete a service |
reinstall(string $uuid, array $options = []) |
Reinstall a service — see options below |
status(string $uuid) |
Live resource usage / status |
metrics(string $uuid, string $range = '24h') |
Recorded resource history — 1h, 24h, 7d or 30d |
sendCommand(string $uuid, string $command) |
Send a console command (one-shot REST) |
consoleToken(string $uuid, string $type = 'serial') |
Open a single-use console session and return its URL — serial or vnc |
allocations(string $uuid) |
List every port allocation with role + protocol + description |
setRootPassword(string $uuid, string $password) |
Change the container's root password (SSH, SFTP, console) |
setDomain(string $uuid, ?string $domain) |
Point a domain at the service, or null to clear it |
reinstall($uuid, $options) options array
| Key | Type | Description |
|---|---|---|
cloudservice |
string |
Switch to a different service template at the same time (template-switch reinstall). |
environment |
array |
Override environment variables for the (possibly new) template. |
consoleToken($uuid) — console session
Cloud Services run as Proxmox LXC containers. A container's console is an interactive TTY on the node, not a log stream, so this hands back a ready single-use URL rather than a token you assemble a socket from.
Open the URL directly — a browser tab, or an iframe:
The proxy consumes the ticket on first connect, so the URL cannot be reused;
call consoleToken() again for another session. Log in as root with the
password from the service record.
Changed: before the LXC backend this returned
token,subprotocols,websocket_urlandstats_websocket_urlfor a daemon WebSocket. Those keys are gone.sendCommand()is likewise unavailable — a container has no single foreground process to pipe stdin into — and answers 501.
Power ($client->cloudServices()->power())
| Method | Description |
|---|---|
start(string $uuid) |
Start service |
stop(string $uuid) |
Stop service (graceful) |
restart(string $uuid) |
Restart service |
kill(string $uuid) |
Kill service (force stop) |
Files ($client->cloudServices()->files())
| Method | Description |
|---|---|
list(string $uuid, string $dir = '/') |
List a directory |
read(string $uuid, string $file) |
Read file contents |
write(string $uuid, string $file, string $content) |
Write a file |
upload(string $uuid, string $filePath, string $dir = '/') |
Upload a local file |
download(string $uuid, string $file) |
Get a download URL |
delete(string $uuid, array $files) |
Delete files |
compress(string $uuid, array $files, string $output) |
Compress into an archive |
decompress(string $uuid, string $file, string $target) |
Extract an archive |
Backups ($client->cloudServices()->backups())
Each service has a slot quota (default 3) and a size cap (default
100 GB). Archives are encrypted at rest with AES-256-GCM and tagged
with the team that created or uploaded them — restores across team
boundaries are refused with 403 unless the caller passes
force => true.
| Method | Description |
|---|---|
getAll(string $uuid) |
All backups for a service (with team_id, cloudservice_id, origin, is_locked) |
quota(string $uuid) |
Slot accounting: included, used, paid, ceiling and the monthly price of an extra slot |
create(string $uuid, ?string $name = null, array $ignoredFiles = []) |
Create a backup of the current volume |
upload(string $uuid, string $filePath) |
Upload a .tar.gz archive previously downloaded from this platform |
delete(string $uuid, string $backupId) |
Delete a backup (sends a deletion-certificate mail to the owner) |
restore(string $uuid, string $backupId, array $options = []) |
Restore a backup — stop, extract, chown, auto-start |
toggleLock(string $uuid, string $backupId) |
Toggle the lock flag (locked backups skip retention sweeps) |
download(string $uuid, string $backupId, string $targetPath) |
Stream the encrypted archive to a local path |
Network ($client->cloudServices()->network())
Per-server IPv6 lifecycle. Up to four addresses out of the operator's routed prefix.
| Method | Description |
|---|---|
status(string $uuid) |
Node prefix + upstream healthcheck snapshot |
listIpv6(string $uuid) |
Addresses bound to the server (primary first) |
orderIpv6(string $uuid) |
Allocate one more (HTTP 503 if transit down) |
releaseIpv6(string $uuid, int $addressId) |
Release one by daemon-side id |
A 503 response carries a detail.last_checked_at + detail.last_error
explaining why the upstream is down; surface that to the operator
rather than retrying blindly.
TeamSpeak
Order and manage TeamSpeak servers — power, slots, settings, channels, connected clients, privilege tokens, bans and snapshot backups.
Channels ($client->teamSpeak()->channels())
Clients ($client->teamSpeak()->clients())
Security ($client->teamSpeak()->security())
Backups ($client->teamSpeak()->backups())
Error Handling
Asynchronous Operations
Many operations are executed asynchronously and return a 202 status:
- Server create/delete/resize
- Power operations (start, stop, reboot)
- Mailcow domain/mailbox/alias create/update/delete
- VPN account create/delete/enable/disable
The response typically contains a job ID or task information for tracking.
License
BSD-2-Clause