API-Dokumentation

Inhaltsverzeichnis

  1. Letzte Änderungen
  2. Allgemeine Informationen
  3. Authentifizierung
    1. Authentifizierungs-Token erstellen
  4. DNS-Funktionen
    1. DNS-Zonenliste abfragen
    2. DNS-Zone abfragen
    3. DNS-Recordliste abfragen
    4. DNS-Record hinzufügen
    5. DNS-Records löschen
    6. DNS-Records Commiten
  5. Impressum

Letzte Änderungen

Allgemeine Informationen

Die API befindet sich aktuell in einer Testphase (Beta) kontrollieren Sie unbedingt jede Aktion um Fehlkonfigurationen und Ausfälle Ihrer gebuchten Produkte zu vermeiden.

Die API antwortet mit verschiedenen HTTP-Statuscodes die wie allgemein üblich interpretiert werden sollten.

Authentifizierung

Sie Authentifizieren sich bei der API über ein Authentifizierungs-Token, welches im Header jeder Anfrage mitgesendet werden muss.
Authorization: Bearer %TOKEN%

Um dieses temporäre Token zu erstellen, nutzen Sie die Funktion Authentifizierungs-Token erstellen.

Authentifizierungs-Token erstellen

Um ein Token zu erhalten, benötigen Sie ein API-Benutzerkonto. Dies können Sie in der API-Benutzerkontenverwaltung in unserem Webinterface einrichten.

Pfad: /auth/token
Methode: POST
Parameter Notwendig Typ Beschreibung
login Ja String Der Benutzername des API-Kontos für den ein Token erstellt werden soll.
password Ja String Das zum Benutzernamen zugehörige Passwort.

Rückgabe

Sie erhalten ein JSON kodiertes Objekt mit folgenden Feldern zurück:

Feld Typ Beschreibung
token String Ihr temporäres Authentifizierungs-Token um alle weiteren Funktionen der API zu benutzen.
expires Int Die Gültigkeitsdauer des Tokens in Sekunden.

Beispiel

Anfrage
curl --request POST --data '{"login":"%USERNAME%","password":"%PASSWORD%"}' https://beta.api.core-networks.de/auth/token
Antwort
{"token":"%TOKEN%","expires":%EXPIRES%}

DNS-Funktionen

DNS-Zonenliste abfragen

Mit der nachfolgenden Funktion erhalten Sie eine Liste alle DNS-Zonen die Sie aktuell angelegt haben.

Pfad: /dnszones/
Methode: GET

Rückgabe

Sie erhalten ein JSON kodiertes Array mit Objekten zurück, welches je für eine Zone steht. Die Objekte enthalten die folgenden Felder:

Feld Typ Beschreibung
name String Name der Zone
type String Der Zonentyp. Dieser kann entweder "master" oder "slave" enthalten.

Beispiel

Anfrage
curl -H "Authorization: Bearer %TOKEN%" https://beta.api.core-networks.de/dnszones/
Antwort
[{"name":"example.com","type":"master"},{"name":"example.net","type":"slave"}]

DNS-Zone abfragen

Mit der nachfolgenden Funktion erhalten Sie detaillierte Informationen zu einer DNS-Zone.

Pfad: /dnszones/%ZONE%
Methode: GET

Rückgabe

Sie erhalten ein JSON kodiertes Objekten mit folgenden Feldern zurück:

Feld Typ Beschreibung
active Bool Status ob die Zone auf den Nameservern aktiv ist.
dnssec Bool Status ob die Zone mittels DNSSEC signiert wird.
master NULL | String Bei Slave-Zonen die IP-Adresse (IPv4/IPv6) des Master-Servers.
name String Name der Zone
tsig NULL | Objekt Wenn der Zone ein TSIG-Schlüssel hinterlegt ist wird dieser als Objekt mit folgenden Feldern zurückgegeben:
Feld Typ Beschreibung
algo String Genutzter Algorithmus
secret String Base64 kodierter Schlüssel
type String Der Zonentyp. Dieser kann entweder "master" oder "slave" enthalten.

Beispiel

Anfrage
curl -H "Authorization: Bearer %TOKEN%" https://beta.api.core-networks.de/dnszones/example.com
Antwort
{"active":true,"dnssec":true,"master":null,"name":"example.com","tsig":null,"type":"master"}

DNS-Recordliste abfragen

Diese Funktion gibt Ihnen eine Liste der zur Zone gehörenden DNS-Records zurück.

Diese Liste kann von den DNS-Records, die die Nameserver ausliefern abweichen sofern noch kein Commit durchgeführt wurde oder die DNS-Zone Fehler enthält und daher nicht von den Nameservern angenommen wird.

Pfad: /dnszones/%ZONE%/records/
Methode: GET

Rückgabe

Sie erhalten ein JSON kodiertes Array mit Objekten zurück, welches je für einen DNS-Record steht. Die Objekte enthalten die folgenden Felder:

Feld Typ Beschreibung
name String Name des Records relativ zur Zone. z.B. "www" oder "@" für die Apex Zone (Root) selbst.
ttl Int TTL des DNS-Records
type String Record-Type
data String Dateninhalt des Records

Filter

Sie können die Liste der zurückgegebenen Records filtern, indem Sie die gesuchten Felder als GET Parameter an die URL anhängen. Sofern Sie mehrmals nach dem gleichen Feld filtern möchten, muss dieser Parameter als Array übergeben werden.

Beispiel 1

Abfrage alles NS-Records der Zone.

Anfrage
curl -H "Authorization: Bearer %TOKEN%" https://beta.api.core-networks.de/dnszones/example.com/records/?type=NS
Antwort
[{"name":"@","ttl":"86400","type":"NS","data":"ns2.core-networks.eu."},{"name":"@","ttl":"86400","type":"NS","data":"ns3.core-networks.com."},{"name":"@","ttl":"86400","type":"NS","data":"ns1.core-networks.de."}]

Beispiel 2

Abfrage alles NS- sowie SOA-Records der Zone.

Anfrage
curl -H "Authorization: Bearer %TOKEN%" https://beta.api.core-networks.de/dnszones/example.com/records/?type[]=NS\&type[]=SOA
Antwort
[{"name":"@","ttl":"86405","type":"SOA","data":"ns1.core-networks.de. hostmaster.core-networks.de. 2017122001 28800 7200 604800 1800"},{"name":"@","ttl":"86400","type":"NS","data":"ns2.core-networks.eu."},{"name":"@","ttl":"86400","type":"NS","data":"ns3.core-networks.com."},{"name":"@","ttl":"86400","type":"NS","data":"ns1.core-networks.de."}]

DNS-Record hinzufügen

Mit dieser Funktion fügen Sie der Zone DNS-Records hinzu.

Aktuell ist es notwendig, dass Sie nachdem Sie alle gewünschten Records hinzugefügt bzw. gelöscht haben die Änderungen an die Nameserver übertragen. Hierzu nutzen Sie die Funktion Commit. Wird kein Commit durchgeführt, bleiben die Änderungen dennoch in der Datenbank und werden mit dem nächsten Commit Live gehen.

Pfad: /dnszones/%ZONE%/records/
Methode: POST

Als POST-Daten übermitteln Sie ein JSON Objekt mit folgenden Parametern

Feld Notwendig Typ Beschreibung
name Ja String Name des Records
ttl Nein Int TTL des DNS-Records
type Ja String Record-Type
data Ja String Dateninhalt des Records

Beim Hinzufügen eines bereits existierenden Records, wird kein zweiter erstellt, aber auch kein Fehler gemeldet.

Beispiel

curl -H "Authorization: Bearer %TOKEN%" --request POST --data '{"name":"www","ttl":3600,"type":"A","data":"127.0.0.1"}' https://beta.api.core-networks.de/dnszones/example.com/records/

DNS-Records löschen

Diese Funktion löscht alle DNS-Records einer Zone die zu dem übergebenen DNS-Record passen.

Wenn Sie keinen DNS-Record in den POST-Daten übermitteln werden sämtliche DNS-Records der Zone gelöscht.

Aktuell ist es notwendig, dass Sie nachdem Sie alle gewünschten Records hinzugefügt bzw. gelöscht haben die Änderungen an die Nameserver übertragen. Hierzu nutzen Sie die Funktion Commit. Wird kein Commit durchgeführt, bleiben die Änderungen dennoch in der Datenbank und werden mit dem nächsten Commit Live gehen.

Pfad: /dnszones/%ZONE%/records/delete
Methode: POST

Als POST-Daten übermitteln Sie ein JSON Objekt das dem zu löschenden DNS-Record entspricht. Sie können mehrere DNS-Records löschen indem Sie einzelne Felder weglassen.

Beispiel

Löschen aller Records mit Namen "www" und dem Dateninhalt "127.0.0.1" der Zone "example.com"

curl -H "Authorization: Bearer %TOKEN%" --request POST --data '{"name":"www","data":"127.0.0.1"}' https://beta.api.core-networks.de/dnszones/example.com/records/delete

Hinweise

SOA-Records müssen und können auch nicht gelöscht werden. Wenn Sie einen SOA-Record erstellen, überschreibt dieser den bisherigen.

Sofern Sie zwei absolut identische DNS-Records habe, können Sie diese nicht einzeln löschen. Sie müssen hier zunächst beide löschen und anschließend einen wieder hinzufügen.

DNS-Records Committen

Unser aktuelles Backend für die Nameserver ist nicht für die hochfrequente Bearbeitung der DNS-Records geeignet. Damit Sie größere Änderungen an DNS-Zonen dennoch zügig durchführen können ohne auf die Nameserver warten zu müssen, werden Änderungen an den DNS-Records nicht sofort an die Nameserver übertragen. Stattdessen müssen Sie, wenn Sie mit den Änderungen der DNS-Records fertig sind, einen Commit an die Zone senden.

Wird kein Commit durchgeführt, bleiben die Änderungen dennoch in der Datenbank und werden mit dem nächsten API-Commit oder auch von internen Prozessen auf die Nameserver übertragen.

Pfad: /dnszones/%ZONE%/records/commit
Methode: POST

Beispiel

curl -H "Authorization: Bearer %TOKEN%" --request POST https://beta.api.core-networks.de/dnszones/example.com/records/commit