VDS Host
Reseller VPS Server VPS-Konfigurator Dedizierte API Über uns Blog Kontakt Anmelden
codeReseller API v1

API-Doku

Verwalten Sie jede VDS-Operation aus dem Panel programmatisch. Basispfad /api/reseller/v1 — alle Anfragen sind HMAC-signiert.

Überblick

Die Reseller-API stellt Servererstellung, Energieverwaltung, Konsolenzugriff, OS-Installation, Formatieren, Firewall, Backup und Zusatz-IP-Operationen über REST bereit. Alle Antworten sind im JSON-Format.

# Taban yol
BASE https://api.vdshost.com/api/reseller/v1

# Tüm istekler şu başlıkları taşır
X-Api-Key: rk_live_xxxxxxxx
X-Timestamp: 1719230400
X-Signature: hmac_sha256(...)

Authentifizierung (HMAC)

Jede Anfrage wird mit dem Paar api_key und api_secret signiert. Die Signatur wird clientseitig erzeugt; die serverseitige reseller.api-Middleware prüft die HMAC-Signatur, die IP-Whitelist und das Ratenlimit. Der Zeitstempel schützt vor Replay-Angriffen.

# İmza şeması (istemci tarafı)
payload = method + "\n" + path + "\n" + timestamp + "\n" + body
signature = hmac_sha256(api_secret, payload)

# Örnek (curl)
curl -X POST https://api.vdshost.com/api/reseller/v1/vm \
  -H "X-Api-Key: KEY" \
  -H "X-Timestamp: TS" \
  -H "X-Signature: SIG" \
  -d '{"product_id":42,"os":"ubuntu-22.04"}'
info IP-Whitelist: Ihr API-Schlüssel akzeptiert nur Aufrufe von den im Panel definierten IP-Adressen. Schlüssel werden in der Tabelle reseller_api_keys verwaltet, alle Aufrufe in reseller_api_logs protokolliert.

Fehlercodes

CodeBedeutung
200 / 201 / 202Erfolg / erstellt / eingereiht
400Ungültiger Anfragetext
401Signatur ungültig oder fehlt
403IP nicht auf Whitelist / keine Berechtigung
409Replay erkannt (Timestamp-Wiederholung)
429Ratenlimit überschritten

Konto & Produkte

GET/api/reseller/v1/account

Gibt aktives Guthaben, aktuelle Rabattstufe (TIER) und Kontostatus zurück.

# Yanıt
{
  "balance": 3250.00,
  "tier": "Gold",
  "discount": 28,
  "currency": "USD"
}
GET/api/reseller/v1/products

Listet verkaufsfertige VDS-Produkte und die Stückpreise für individuelle Konfigurationen auf.

# Yanıt
[
  { "id": 42, "name": "VDS M", "cpu": 4, "ram": 8, "disk": 100, "price": 14.00 }
]

Server-Lebenszyklus

GET/api/reseller/v1/vm

Listet alle VDS-Instanzen des Kontos mit ihrem Status auf.

[
  { "id": "vm_8f3a21", "status": "running", "ip": "185.x.x.x" }
]
GET/api/reseller/v1/vm/{id}

Gibt Ressourcen, Netzwerk, Status und Ressourcenstatistiken eines einzelnen Servers zurück.

{
  "id": "vm_8f3a21",
  "status": "running",
  "cpu": 4, "ram": 8, "disk": 100,
  "usage": { "cpu": 12.4, "bw": 820.5 }
}
POST/api/reseller/v1/vm

Stellt einen neuen VDS bereit. Senden Sie product_id für ein fertiges Produkt oder cpu/ram/disk für eine individuelle Konfiguration. Der Preis wird mit dem guthabenbasierten Rabatt berechnet.

# İstek
{
  "cpu": 4, "ram": 8, "disk": 160,
  "os": "ubuntu-22.04", "hostname": "web-01"
}

# Yanıt 201
{ "id": "vm_8f3a21", "status": "provisioning" }
POST/api/reseller/v1/vm/{id}/resize

Aktualisiert die CPU-, RAM- oder Disk-Ressourcen eines bestehenden Servers.

# İstek
{ "cpu": 8, "ram": 16 }
# → 202 Accepted
POST/api/reseller/v1/vm/{id}/reinstall

Formatiert und installiert den Server mit dem gewählten Betriebssystem neu.

# İstek
{ "os": "debian-12" }
# → 202 Accepted
POST/api/reseller/v1/vm/{id}/terminate

Beendet den Server dauerhaft und gibt seine Ressourcen frei.

# → 200 OK
{ "id": "vm_8f3a21", "status": "terminated" }

Energie & Zugriff

POST/api/reseller/v1/vm/{id}/power

Starten, stoppen, neu starten oder erzwungen stoppen. action: start · stop · reboot · force_stop.

# İstek
{ "action": "reboot" }
# → 200 OK
GET/api/reseller/v1/vm/{id}/credentials

Gibt Benutzernamen und initiales Passwort des Servers sicher zurück.

{ "username": "root", "password": "••••••••" }
POST/api/reseller/v1/vm/{id}/password

Setzt das root-/Admin-Passwort des Servers zurück.

# → 200 OK
{ "password": "yeni-parola" }
POST/api/reseller/v1/vm/{id}/console

Erzeugt einen einmaligen, im Browser zugänglichen NoVNC/KVM-Konsolenlink.

# → 200 OK
{ "console_url": "https://console.vdshost.com/...", "expires_in": 120 }

Backup & Sicherheit

Backups

GET/api/reseller/v1/vm/{id}/backups

Listet die vorhandenen Backups des Servers auf.

[ { "backup_id": "bk_19c", "created_at": "2026-06-24T10:00:00Z" } ]
POST/api/reseller/v1/vm/{id}/backups

Erstellt ein sofortiges Backup.

# → 201 Created
{ "backup_id": "bk_19c" }
POST/api/reseller/v1/vm/{id}/backups/restore

Stellt das angegebene Backup wieder her.

# İstek
{ "backup_id": "bk_19c" }
# → 202 Accepted
DELETE/api/reseller/v1/vm/{id}/backups

Löscht das angegebene Backup.

# İstek
{ "backup_id": "bk_19c" }
# → 200 OK

Firewall

GET/api/reseller/v1/vm/{id}/firewall

Gibt die auf dem Server definierten Firewall-Regeln zurück.

[ { "id": 1, "port": 22, "proto": "tcp", "action": "allow" } ]
POST/api/reseller/v1/vm/{id}/firewall

Fügt eine neue Firewall-Regel hinzu.

# İstek
{ "port": 443, "proto": "tcp", "action": "allow" }
DELETE/api/reseller/v1/vm/{id}/firewall/{rule}

Entfernt die angegebene Firewall-Regel.

# → 200 OK

Integrationen

extensionWHMCS ModülüKostenlos

Wird als Servermodul installiert. Im Admin-Panel fügen Sie einen Upstream-Server hinzu und definieren das ServerConnection-Mapping: hostname = VDS-Host-Domain, username = api_key (maskiert), password = api_secret (maskiert). Ihr Produkt wird über upstream_product_id und Betriebssysteme über os_map zugeordnet. Bestellung, Bereitstellung, Energie, Formatieren und Beendigung laufen durchgängig automatisch.

# ServerConnection eşlemesi
hostname = api.vdshost.com
username = {api_key}  # maskeli
password = {api_secret} # maskeli
module_config = { "upstream_product_id": 42, "os_map": {...} }
extensionWiseCP ModülüÜcretsiz

Das WiseCP-Servermodul nutzt dieselbe Upstream-Logik wie WHMCS. Mit UpstreamServerModule + UpstreamApiClient ruft es den Basispfad /api/reseller/v1 auf. Produkt- und OS-Zuordnung werden in der Modulkonfiguration definiert; der gesamte VDS-Lebenszyklus wird über die WiseCP-Oberfläche verwaltet.

# UpstreamApiClient çağrıları
client.post('vm', body)     # oluştur
client.post('vm/{id}/power'# güç
client.post('vm/{id}/reinstall')
client.get('vm/{id}/backups')