- Start
- API-Referenz
- Automatisierung von Domain-Prozessen
Automatisierung der Domain-Registrierung
Anleitung zur vollständigen Automatisierung der Registrierung einer Domain, am Beispiel der Domain example.com.
.com ist eine generische Top-Level-Domain, die sich aufgrund fehlender Beschränkungen gut für die erste Implementierung eignet.
Grundlagen der JSON-und XML-API
Alle wichtigen Informationen für die Nutzung der JSON- und XML-API findest du bei den API-Grundlagen, den XML- und JSON-Grundlagen.
Prozessübersicht
Ablaufdiagramm

Auftragstypen, Codes und Routen
| Auftragstyp | Code | Route |
|---|---|---|
| ContactCreate | 0301 | POST /contact |
| DomainCreate | 0101 | POST /domain |
| PollInfo | 0905 | GET /poll |
| PollConfirm | 0906 | PUT /poll/$id |
| DomainInfo | 0105 | GET / domain/$name |
Voraussetzungen
Domain-Kontakte (Contact Create)
Für die Bestellung einer .com Domain wird ein Domain-Inhaber (OwnerC), ein administrativer Kontakt (AdminC) und ein technischer Kontakt (TechC) benötigt. Du kannst bereits vorhandene Kontakte verwenden oder neue anlegen.
Welche Daten ein Kontakt für die Registrierung einer Domain enthalten muß, hängt von der TLD ab. Jede Registry hat dabei ihre eigenen Richtlinien. Für einige TLDs werden sogenannte Erweiterungen (Extensions) benötigt. Detaillierte Informationen zu allen TLDs, die wir anbieten, findest du in der TLD Wissensdatenbank
ContactCreate - Beispiel
POST /contact
{
"type": "PERSON",
"fname": "John",
"lname": "Doe",
"organization": "Company",
"address": [
"123 Main Street"
],
"pcode": "12345",
"city": "Anytown",
"country": "DE",
"state": "BY",
"phone": "+49-0-0",
"email": "john.doe@domain.com"
}{
"stid": "20180926-app3-dev-4889",
"status": {
"code": "S0301",
"text": "Domain-Kontakt wurde erfolgreich angelegt.",
"type": "SUCCESS"
},
"object": {
"type": "handle",
"value": "23102255"
},
"data": [
{
"created": "2018-09-26T15:18:53.000+0200",
"updated": "2018-09-26T15:18:53.000+0200",
"id": 23102255,
"owner": {
"user": "USER",
"context": CONTEXT
},
"updater": {
"user": "USER",
"context": CONTEXT
},
"alias": "John-Doe",
"type": "PERSON",
"fname": "John",
"lname": "Doe",
"organization": "Company",
"address": [
"123 Main Street"
],
"pcode": "12345",
"city": "Anytown",
"country": "DE",
"state": "BY",
"phone": "+49-0-0",
"email": "john.doe@domain.com",
"protection": "SHOW_NONE"
}
]
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0301</code>
<handle>
<type>PERSON</type>
<fname>John</fname>
<lname>Doe</lname>
<organization>Anycorp</organization>
<address>Anystreet</address>
<pcode>12345</pcode>
<city>Anytown</city>
<country>DE</country>
<state />
<phone>+49-0-0</phone>
<fax>+49-0-0</fax>
<email>john.doe@domain.com</email>
</handle>
</task>
</request><response>
<result>
<data />
<status>
<code>S0301</code>
<text>Domain-Kontakt wurde erfolgreich angelegt.</text>
<type>success</type>
<object>
<type>handle</type>
<value>100</value>
</object>
</status>
</result>
<stid>20180926-stid</stid>
</response>
Ablauf
Das Registrieren von Domains ist ein asynchroner Prozess, da die Registry in die Verarbeitung des Auftrages involviert ist. Die Benachrichtigungen werden bei Erhalt im System zur Verfügung gestellt und können durch Polling abgerufen werden.
Weitere Details zu den Benachrichtigungen findest du auf der Seite Systembenachrichtigungen.
DomainCreate-Auftrag starten
Mit dem Auftragstyp DomainCreate startest du die Registrierung der Domain. Folgende Werte sind erforderlich:
- Kontakte: Die Kontakt-ID der geforderten Kontakte. Bei .com-Domains wird ein Domain-Inhaber, ein administrativer sowie ein technischer Kontakt benötigt.
- Domain: Der Name der Domain
- Nameserver: Die gewünschten Nameserver. Die Anzahl der benötigten Nameserver ist abhängig von der TLD.
Welche weiteren Daten für eine Domain benötigt werden hängt von der TLD ab. Jede Registry hat dabei ihre eigenen Richtlinien. Weitere Informationen dazu findest du in der TLD Wissensdatenbank.
Domain Create - Beispiel
POST /domain
{
"name": "example.com",
"ownerc": {
"id": 100
},
"adminc": {
"id": 100
},
"techc": {
"id": 100
},
"nameServers": [
{
"name": "a.ns14.net"
},
{
"name": "b.ns14.net"
},
{
"name": "c.ns14.net"
},
{
"name": "d.ns14.net"
}
]
}{
"stid": "20180926-stid",
"status": {
"code": "N0101",
"text": "Die Domainregistrierung wurde erfolgreich gestartet.",
"type": "NOTIFY"
},
"object": {
"type": "domain",
"value": "example.com"
}
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0101</code>
<domain>
<name>example.com</name>
<ownerc>100</ownerc>
<adminc>100</adminc>
<techc>100</techc>
<nserver>
<name>a.ns14.net</name>
</nserver>
<nserver>
<name>b.ns14.net</name>
</nserver>
<nserver>
<name>c.ns14.net</name>
</nserver>
<nserver>
<name>d.ns14.net</name>
</nserver>
<confirm_order>1</confirm_order>
<period>1</period>
</domain>
</task>
</request><response>
<result>
<data>
<domain_job>
<job>
<id>123456</id>
<status>RUNNING</status>
</job>
</domain_job>
</data>
<status>
<code>N0101</code>
<text>Die Domainregistrierung wurde erfolgreich gestartet.</text>
<type>notify</type>
<object>
<type>domain</type>
<value>example.com</value>
</object>
</status>
</result>
<stid>20181015-dev-3282</stid>
</response>
Benachrichtigungen erhalten
Der Auftragstyp DomainCreate erzeugt automatisch einen Auftrag für die Registrierung der Domain.
Ist der Auftrag abgearbeitet, wird eine Benachrichtigung versendet, die Aufschluss darüber gibt, ob die Registrierung erfolgreich war oder nicht.
Die Benachrichtigung kann mit den Methoden Polling und Push abgerufen bzw. zugesendet werden.
Domain-Daten ermitteln (Domain Info)
Nach erfolgreicher Registrierung kannst du die im System hinterlegten Registrierungsdaten mit dem Auftragstyp DomainInfo abfragen. So kannst du feststellen, ob die Domain mit den gewünschten Daten registriert wurde.
GET /domain/example.com{
"stid": "20180926-stid",
"status": {
"code": "S0105",
"text": "Domaindaten wurden erfolgreich ermittelt.",
"type": "SUCCESS"
},
"object": {
"type": "domain",
"value": "domain.com"
},
"data": [
{
"created": "2018-09-26T14:54:03.000+0200",
"updated": "2018-09-26T14:54:10.000+0200",
"owner": {
"user": "USER",
"context": CONTEXT
},
"updater": {
"user": "USER",
"context": CONTEXT
},
"name": "domain.com",
"payable": "2019-09-26T14:54:03.000+0200",
"ownerc": {
"id": 100
},
"adminc": {
"id": 100
},
"techc": {
"id": 100
},
"registryStatus": "LOCK",
"nameServers": [
{
"name": "a.ns14.net"
},
{
"name": "b.ns14.net"
},
{
"name": "c.ns14.net"
},
{
"name": "d.ns14.net"
}
],
"trustee": false,
"privacy": false,
"authinfo": "J/w0Xpn66I87YVty",
"domainsafe": false,
"validCertificate": false,
"autoRenewStatus": "TRUE",
"registrarStatus": "ACTIVE",
"rddsOptIn": "NOT_SET"
}
]
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0105</code>
<domain>
<name>example.com</name>
</domain>
</task>
</request><response>
<result>
<data>
<domain>
<name>example.com</name>
<payable>2019-09-26 14:54:03</payable>
<ownerc>100</ownerc>
<adminc>100</adminc>
<techc>100</techc>
<registry_status>LOCK</registry_status>
<nserver>
<name>a.ns14.net</name>
</nserver>
<nserver>
<name>b.ns14.net</name>
</nserver>
<nserver>
<name>c.ns14.net</name>
</nserver>
<nserver>
<name>d.ns14.net</name>
</nserver>
<period>1</period>
<status>SUCCESS</status>
<use_trustee>false</use_trustee>
<use_privacy>false</use_privacy>
<authinfo>J/w0Xpn66I87YVty</authinfo>
<domainsafe>false</domainsafe>
<certificate>false</certificate>
<autorenew>true</autorenew>
<registrar_status>ACTIVE</registrar_status>
<rdds_opt_in>NOT_SET</rdds_opt_in>
<owner>
<user>USER</user>
<context>CONTEXT</context>
</owner>
<updater>
<user>USER</user>
<context>CONTEXT</context>
</updater>
<created>2018-09-26 14:54:03</created>
<updated>2018-09-26 14:54:10</updated>
</domain>
</data>
<status>
<code>S0105</code>
<text>Domaindaten wurden erfolgreich ermittelt.</text>
<type>success</type>
<object>
<type>domain</type>
<value>domain.com</value>
</object>
</status>
</result>
<stid>20180926-stid</stid>
</response>