Zum Inhalt

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, beispielsweise vserver-1234
  • template: Name des zu verwendenden Betriebssystem-Templates. Die möglichen Werte können Sie über GET /api/reseller/products abrufen. 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.

EinstellungBeschreibungValidierungErforderlich
cpu_coresAnzahl der CPU-KerneGanzzahl von 1 bis 10, Schrittweite: 1Ja
ramArbeitsspeicher in MBGanzzahl von 1024 bis ORG_MAX_RAM, Schrittweite: 1024Ja
disk_sizeFestplattengröße in GBGanzzahl von 10 bis 1000, Schrittweite: 10Ja
usernameBenutzername für den VPSZeichenkette mit 3 bis 32 Zeichen, A-Z, a-z, 0-9Ja
passwordPasswort für den VPSZeichenketteJa
template_nameBetriebssystem-Template, siehe obenAuswahlwert, siehe obenJa
hostnameHostname für den VPSZeichenkette, gültiger HostnameJa
ipv4_addressesAnzahl der IPv4-AdressenGanzzahl von 1 bis 10, Schrittweite: 1Ja
traffic_displayVerfügbares Traffic-Volumen in GBGanzzahl ab 128, Schrittweite: 128Ja
backup_countAnzahl der zulässigen BackupsGanzzahl ab 5, Schrittweite: 1Ja
snapshot_countAnzahl der zulässigen SnapshotsGanzzahl ab 2, Schrittweite: 1Ja
ha_upgradeUpgrade auf einen HA VPSBoolescher WertJa
10g_upgradeUpgrade auf einen 10-Gbit/s-UplinkBoolescher WertJa

Die Preise entnehmen Sie bitte Ihrem Reseller-Vertrag.

Dedicated Server

Folgende Einstellungen müssen Sie angeben:

  • hostname: Gültiger Hostname für den Server, beispielsweise vserver-1234
  • template: Name des zu verwendenden Betriebssystem-Templates. Die möglichen Werte können Sie über GET /api/reseller/products abrufen.
  • ip4_subnet_size: Größe des zuzuweisenden IPv4-Subnetzes, zulässige Werte: 25 bis 29
  • ip4_count: Anzahl der zuzuweisenden IPv4-Adressen, zulässige Werte: NULL oder 1 bis 10
  • ip6_subnet_size: Größe des zuzuweisenden IPv6-Subnetzes, zulässige Werte: 48 bis 64
  • existing_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, beispielsweise example.com
  • action: Entweder register oder transfer
  • authcode: Optional bei der Übertragung einer bestehenden Domain
  • nameservers: 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 und dig <domain> NS @<nameserver> die korrekten Nameserver zurückgibt.

  • ownercRef: Optional, ID eines bereits vorhandenen OwnerC-Kontakts

  • ownercData: Optional, als Zeichenkette serialisiertes JSON-Objekt mit den Kontaktdaten, siehe unten
  • admincRef: Optional, ID eines bereits vorhandenen AdminC-Kontakts
  • admincData: 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. ;)