Reseller-API¶
Wir stellen Ihnen eine REST-API zur Verfügung, über die Sie sämtliche Aktionen ausführen können, die auch im CCP-Portal verfügbar sind.
Authentifizierung¶
Einen API-Schlüssel können Sie unter Profil > API-Schlüssel erstellen.
Zur Authentifizierung müssen Sie den API-Schlüssel im HTTP-Header X-API-Key übermitteln.
Jede API-Anfrage muss außerdem den Header X-Organization-ID enthalten. Ihre Organisations-ID finden Sie in der Organisationsverwaltung.
Als Reseller können Sie auch die Organisations-ID eines Ihrer Endkunden angeben. Dadurch erhalten Sie über Ihr Reseller-Konto API-Zugriff auf sämtliche Ressourcen des jeweiligen Endkunden.
API-Dokumentation¶
Unter https://api.ccp.realtoxmedia.de/api/docs stellen wir Ihnen eine Swagger-Dokumentation mit Benutzeroberfläche zur Verfügung. Dort können Sie die API direkt testen.
Das CCP selbst verwendet für sein Frontend dieselbe API. Falls Ihnen eine Funktion oder Anfrage unklar ist, kann es daher hilfreich sein, die entsprechende Aktion im CCP auszuführen und die Anfrage sowie die Antwort in den Entwicklertools Ihres Browsers zu prüfen.
Bei Fragen helfen wir Ihnen selbstverständlich gerne weiter.
Bestell- und Erstellungsprozess¶
Produkte können Sie über POST /api/reseller/contracts bestellen.
Geben Sie entweder die UUID eines Endkunden oder den speziellen Wert __self__ an, um einen Vertrag für Ihre eigene Organisation zu erstellen. Bei Endkunden wird deren Standardorganisation verwendet.
Einstellungen für die Vertragserstellung¶
Abhängig vom jeweiligen Produkt müssen möglicherweise unterschiedliche Einstellungen übermittelt werden. Diese befinden sich im Element settings: {} des Request-Bodys und werden als Schlüssel-Wert-Paare angegeben.
Alle verfügbaren Optionen können Sie über den Endpoint GET /api/reseller/products abrufen. Jedes Produkt enthält einen Eintrag options. Darin finden Sie die verfügbaren Optionen einschließlich der von uns vorgegebenen Validierungsregeln, Zuordnungen und beispielsweise der zulässigen Werte für Auswahlfelder.
Regulärer VPS¶
Hierzu zählen alle regulären VPS-Modelle, darunter VPS, HA VPS, VDS und Storage VPS.
Folgende Einstellungen müssen Sie angeben:
hostname: Gültiger Hostname für den VPS, beispielsweisevserver-1234template: Name des zu verwendenden Betriebssystem-Templates. Die möglichen Werte können Sie überGET /api/reseller/productsabrufen. Die Template-Namen sind für alle Produkte identisch.
Konfigurierbarer VPS¶
Verwenden Sie hierfür das spezielle Produkt „VPS-Konfigurator“ mit der UUID fb8663c7-70b6-4d81-9750-c0d2b5697107.
| Einstellung | Beschreibung | Validierung | Erforderlich |
|---|---|---|---|
cpu_cores | Anzahl der CPU-Kerne | Ganzzahl von 1 bis 10, Schrittweite: 1 | Ja |
ram | Arbeitsspeicher in MB | Ganzzahl von 1024 bis ORG_MAX_RAM, Schrittweite: 1024 | Ja |
disk_size | Festplattengröße in GB | Ganzzahl von 10 bis 1000, Schrittweite: 10 | Ja |
username | Benutzername für den VPS | Zeichenkette mit 3 bis 32 Zeichen, A-Z, a-z, 0-9 | Ja |
password | Passwort für den VPS | Zeichenkette | Ja |
template_name | Betriebssystem-Template, siehe oben | Auswahlwert, siehe oben | Ja |
hostname | Hostname für den VPS | Zeichenkette, gültiger Hostname | Ja |
ipv4_addresses | Anzahl der IPv4-Adressen | Ganzzahl von 1 bis 10, Schrittweite: 1 | Ja |
traffic_display | Verfügbares Traffic-Volumen in GB | Ganzzahl ab 128, Schrittweite: 128 | Ja |
backup_count | Anzahl der zulässigen Backups | Ganzzahl ab 5, Schrittweite: 1 | Ja |
snapshot_count | Anzahl der zulässigen Snapshots | Ganzzahl ab 2, Schrittweite: 1 | Ja |
ha_upgrade | Upgrade auf einen HA VPS | Boolescher Wert | Ja |
10g_upgrade | Upgrade auf einen 10-Gbit/s-Uplink | Boolescher Wert | Ja |
Die Preise entnehmen Sie bitte Ihrem Reseller-Vertrag.
Dedicated Server¶
Folgende Einstellungen müssen Sie angeben:
hostname: Gültiger Hostname für den Server, beispielsweisevserver-1234template: Name des zu verwendenden Betriebssystem-Templates. Die möglichen Werte können Sie überGET /api/reseller/productsabrufen.ip4_subnet_size: Größe des zuzuweisenden IPv4-Subnetzes, zulässige Werte: 25 bis 29ip4_count: Anzahl der zuzuweisenden IPv4-Adressen, zulässige Werte:NULLoder 1 bis 10ip6_subnet_size: Größe des zuzuweisenden IPv6-Subnetzes, zulässige Werte: 48 bis 64existing_l2vpn: UUID eines vorhandenen L2VPN, das verwendet werden soll
Geben Sie entweder ip4_subnet_size oder ip4_count an.
Möchten Sie ein vorhandenes L2VPN als öffentliches VLAN verwenden, geben Sie dessen UUID an. Der Endkunde muss Zugriff auf das L2VPN haben, und das L2VPN muss sich am selben Standort wie der Dedicated Server befinden. Falls Sie kein L2VPN angeben, erstellen wir automatisch ein neues.
Webhosting¶
Es sind keine zusätzlichen Einstellungen erforderlich.
Domain¶
Verwenden Sie hierfür das spezielle Produkt domain-default mit der UUID 0d6d810e-dec2-4a06-8fe5-7d7698d97ae6.
domain: Gültiger Domainname, beispielsweiseexample.comaction: Entwederregisterodertransferauthcode: Optional bei der Übertragung einer bestehenden Domainnameservers: Optional, durch Leerzeichen getrennte Liste der Nameserver. Falls Sie keine Nameserver angeben, werden unsere Nameserver verwendet. Stellen Sie vor der Bestellung sicher, dass die DNS-Zone vorhanden ist unddig <domain> NS @<nameserver>die korrekten Nameserver zurückgibt.ownercRef: Optional, ID eines bereits vorhandenen OwnerC-KontaktsownercData: Optional, als Zeichenkette serialisiertes JSON-Objekt mit den Kontaktdaten, siehe untenadmincRef: Optional, ID eines bereits vorhandenen AdminC-KontaktsadmincData: Optional, als Zeichenkette serialisiertes JSON-Objekt mit den Kontaktdaten, siehe unten
Für OwnerC und AdminC müssen Sie jeweils entweder eine Referenz oder Kontaktdaten angeben.
Die Referenz ist die ID eines bereits vorhandenen Kontakts. Bei den Kontaktdaten handelt es sich um ein als Zeichenkette serialisiertes JSON-Objekt. Es darf nicht als direkt eingebettetes JSON-Objekt übermittelt werden.
Der Kontakt-Payload hat folgende Struktur:
```json { "label": "00000000-0000-0000-0000-000000000000", "first_name": "Max", "last_name": "Mustermann", "company_name": "Example GmbH", "street": "Example Street 12", "postal_code": "1010", "city": "Vienna", "country": "AT", "telephone": "+43.123456789", "email": "max.mustermann@example.test", "fax": "" } ````
Der Wert von label sollte eindeutig sein. Hierfür bietet sich beispielsweise eine interne Kontakt-ID aus Ihrem System an.
Das Feld fax ist optional.
Bei zahlreichen Top-Level-Domains, beispielsweise .de, ist die Angabe einer Telefonnummer erforderlich.
Je nach Domainendung können weitere Voraussetzungen gelten, beispielsweise ein Unternehmensnachweis, ein bestimmter Unternehmenssitz oder andere länderspezifische Anforderungen. Diese Voraussetzungen werden derzeit durch uns beziehungsweise die zuständige Registry geprüft.
Zukünftig stellen wir möglicherweise einen Endpoint bereit, über den Sie die jeweiligen Anforderungen bereits vor der Registrierung einer Domain abrufen können. Diese Einschränkungen werden in der Regel nicht von uns, sondern von der jeweiligen Registry vorgegeben.
Zur Erinnerung: Domains werden jährlich und nicht stündlich abgerechnet. ;)