You are viewing an old version of this page. View the current version.
Compare with Current
View Page History
« Previous
Version 75
Next »
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 Nutzunge der JSON- und XML-API finden Sie unter den folgenden Links:
Prozess-Übersicht
Ablauf-Diagramm
Auftragstypen-Namen, 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
Domainkontakte
Für die Bestellung einer .com Domain wird ein Domaininhaber (OwnerC), ein administrativer Kontakt (AdminC) und ein technischer Kontakt (TechC) benötigt. Sie können bereits vorhandene Kontakte verwenden oder neue anlegen.
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": {
"resultCode": "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>
<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>Domainkontakt wurde erfolgreich angelegt.</text>
<type>success</type>
<object>
<type>handle</type>
<value>100</value>
</object>
</status>
</result>
</response>
Ablauf
Das Registrieren von Domains ist ein asynchroner Prozess, da die Registry in die Verarbeitung des Auftrages involviert ist Die Auftrags-Benachrichtigungen werden bei Erhalt im System zur Verfügung gestellt und können durch Polling abgerufen werden.
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 Domaininhaber, 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.
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": {
"resultCode": "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>
<?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>
Auftrags-Benachrichtigung per Polling abrufen
Der Auftragstyp DomainCreate erzeugt automatisch einen Auftrag für die Registrierung der Domain.
Ist der Auftrag abgearbeitet, wird eine Auftrags-Benachrichtigung , 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 PollMessage mit dem Auftragstyp PollInfo abrufen. Das Abrufen müssen Sie mit dem Auftragstyp PollConfirm bestätigen.
PollInfo - Beispiele
{
"stid": "20180926-stid",
"status": {
"resultCode": "S0905",
"text": "Die Benachrichtigung wurde erfolgreich abgerufen.",
"type": "SUCCESS"
},
"object": {
"type": "message",
"value": "1819917"
},
"data": [
{
"summary": 1,
"message": {
"id": 1819917,
"job": {
"id": 4295609745,
"domain": {
"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"
}
},
"stid": "20180926-stid",
"object": {
"type": "domain",
"value": "example.com"
},
"status": {
"resultCode": "S0101",
"type": "SUCCESS"
}
}
}
]
}
<request>
<auth>
<user>USER</user>
<context>CONTEXT</context>
<password>PASSWORD</password>
</auth>
<task>
<code>0905</code>
</task>
</request>
<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
{
"stid": "20180926-stid",
"status": {
"resultCode": "S0906",
"text": "Die Benachrichtigung wurde erfolgreich bestätigt.",
"type": "SUCCESS"
},
"object": {
"type": "message",
"value": "1819853"
}
}
<request>
<auth>
<user>USER</user>
<context>CONTEXT</context>
<password>PASSWORD</password>
</auth>
<task>
<code>0906</code>
<message>
<id>650664</id>
</message>
</task>
</request>
<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>
<stid>20181015-app1-3162</stid>
</result>
</response>
Domaindaten abrufen
Nach erfolgreicher Registrierung können Sie die im System hinterlegten Registrierungsdaten mit dem Auftragstyp DomainInfo abfragen. Die können so feststellen, ob die Domain mit den gewünschten Daten registriert wurde.
{
"stid": "20180926-stid",
"status": {
"resultCode": "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>