Suche in diesem Bereich

Skip to end of metadata
Go to start of metadata

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.

Inhaltsverzeichnis dieser Seite

Grundlagen der JSON-und XML-API

Alle wichtigen Informationen für die Nutzung der JSON- und XML-API finden Sie unter den folgenden Links:

Prozess-Übersicht

Ablaufdiagramm

Auftragstypen, Codes und Routen

AuftragstypCodeRoute
ContactCreate0301POST /contact
DomainCreate0101POST /domain
PollInfo0905GET /poll
PollConfirm0906PUT /poll/$id
DomainInfo0105GET / domain/$name

Voraussetzungen

Domain-Kontakte

Für die Bestellung einer .com Domain wird ein Domain-Inhaber (OwnerC), ein administrativer Kontakt (AdminC) und ein technischer Kontakt (TechC) benötigt. Sie können 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 Kontakt-Erweiterungen (Extensions) benötigt. Detaillierte Informationen zu allen TLDs, die wir anbieten, finden Sie in der TLD Wissensdatenbank

ContactCreate  - Beispiel

Request
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"
}
Response
{
    "stid": "20180926-app3-dev-4889",
    "status": {
        "code": "S0301",
        "text": "Domainkontakt 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
<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
<response>
  <result>
    <data />
    <status>
      <code>S0301</code>
      <text>Domainkontakt 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 Auftragsbenachrichtigungen werden bei Erhalt im System zur Verfügung gestellt und können durch Polling abgerufen werden.

Weitere Details zu asynchrone Benachrichtigungen unter:

DomainCreate-Auftrag starten

Mit dem Auftragstyp DomainCreate starten Sie 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 finden Sie in der TLD Wissensdatenbank.

Domain Create - Beispiel

Request
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"
        }
    ]
}
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "N0101",
        "text": "Die Domainregistrierung wurde erfolgreich gestartet.",
        "type": "NOTIFY"
    },
    "object": {
        "type": "domain",
        "value": "example.com"
    }
}
Request
<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
<?xml version="1.0" encoding="UTF-8"?>
<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>

Auftragsbenachrichtigung per Polling abrufen

Der Auftragstyp DomainCreate erzeugt automatisch einen Auftrag für die Registrierung der Domain.
Ist der Auftrag abgearbeitet, wird eine Auftragsbenachrichtigung versendet, die Aufschluss darüber gibt, ob die Registrierung erfolgreich war oder nicht. Da Sie diese über das Polling-Verfahren abrufen können, wird Sie auch als "Poll Message "bezeichnet

Sie müssen die Poll Message mit dem Auftragstyp PollInfo abrufen.  Das Abrufen müssen Sie mit dem Auftragstyp PollConfirm bestätigen.

PollInfo - Beispiele

Request
GET /poll
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "S0905",
        "text": "Die Benachrichtigung wurde erfolgreich abgerufen.",
        "type": "SUCCESS"
    },
    "object": {
        "type": "Message",
        "value": "1819853",
        "summary": 1
    },
    "data": [
        {
            "id": 1819853,
            "job": {
                "created": "2019-02-12T14:54:26.000+0100",
                "updated": "2019-02-12T14:54:49.000+0100",
                "status": "SUCCESS",
                "execution": "2019-02-12T14:54:47.000+0100",
                "id": 4297370748
            },
            "stid": "20190212-app2-dev-21143",
            "object": {
                "type": "Domain",
                "value": "testpollingdomain23.com",
                "data": {
                    "created": "2018-09-26T15:11:21.000+0200",
                    "owner": {},
                    "updater": {},
                    "name": "example.com",
                    "expire": "2019-09-26T15:11:20.000+0200",
                    "payable": "2019-09-26T15:11:21.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"
                        }
                    ],
                    "lastAction": "CREATE",
                    "authinfo": "gg9o3FFL/hzNbuPw",
                    "autoRenewStatus": "TRUE",
                    "registrarStatus": "ACTIVE",
                    "rddsOptIn": "NOT_SET"
                }
            }
        }
    ]
}
Request
<request>
    <auth>
        <user>USER</user>
        <context>CONTEXT</context>
        <password>PASSWORD</password>
    </auth>
    <task>
        <code>0905</code>
    </task>
</request>
Response
<response>
    <result>
        <data>
            <summary>1</summary>
            <message>
                <id>1855680</id>
                <owner>
                    <user>alex_normal_plus</user>
                    <context>4</context>
                </owner>
                <job>
                    <domain>
                        <name>example.com</name>
                        <expire>2019-10-15 14:02:40</expire>
                        <payable>2019-10-15 14:02:41</payable>
                        <ownerc>100</ownerc>
                        <adminc>100</adminc>
                        <techc>100</techc>
                        <nic_member_label>VGRS-TEST</nic_member_label>
                        <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>
                        <authinfo>S0Lygv+ZkNbniICm</authinfo>
                        <autorenew>true</autorenew>
                        <confirm_order>1</confirm_order>
                        <confirm_owner_consent>0</confirm_owner_consent>
                        <registrar_status>ACTIVE</registrar_status>
                        <rdds_opt_in>NOT_SET</rdds_opt_in>
                        <owner/>
                        <updater/>
                        <created>2018-10-15 14:02:41</created>
                    </domain>
                    <job_id>4295625406</job_id>
                    <status>
                        <code>S0101</code>
                        <type>success</type>
                        <object>
                            <type>domain</type>
                            <value>example.com</value>
                        </object>
                    </status>
                    <stid>20181015-app1-3788</stid>
                </job>
                <created>2018-10-15 14:03:02</created>
            </message>
        </data>
        <status>
            <code>S0905</code>
            <text>Die Benachrichtigung wurde erfolgreich abgerufen.</text>
            <type>success</type>
            <object>
                <type>message</type>
                <value>1855680</value>
            </object>
        </status>
    </result>
 <stid>20181015-app1-3805</stid>
</response>


PollConfirm - Beispiele

Request
PUT /poll/{id}
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "S0906",
        "text": "Die Benachrichtigung wurde erfolgreich bestätigt.",
        "type": "SUCCESS"
    },
    "object": {
        "type": "message",
        "value": "1819853"
    }
}
Request
<request>
    <auth>
        <user>USER</user>
        <context>CONTEXT</context>
        <password>PASSWORD</password>
    </auth>
    <task>
        <code>0906</code>
       <message>
            <id>650664</id>
        </message>
    </task>
</request>
Response
<response>
    <result>
        <data>
            <summary>0</summary>
            <message>
                <id>650664</id>
            </message>
        </data>
        <status>
            <code>S0906</code>
            <text>Die Benachrichtigung wurde erfolgreich bestätigt.</text>
            <type>success</type>
            <object>
                <type>message</type>
                <value>650664</value>
            </object>
        </status>
  </result>
 <stid>20181015-app1-3162</stid>
</response>

Domain-Daten abrufen

Nach erfolgreicher Registrierung können Sie die im System hinterlegten Registrierungsdaten mit dem Auftragstyp DomainInfo abfragen. Sie können so feststellen,  ob die Domain mit den gewünschten Daten registriert wurde.

Request
GET /domain/example.com
Response
{
    "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
<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
<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>