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
Ablauf-Diagramm

Auftragstypen, Codes und Routen
Ablauf
Das Löschen 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.
Einen DomainCancelationCreate-Auftrag starten
Für eine Domain-Löschung musst du einen Kündigungsauftrag (DomainCancelationCreate) mit dem Kündigungstyp DELETE anlegen.
Für den Zeitpunkt der Löschung (Ausführungstyp) gibt es drei Möglichkeiten:
- EXPIRE: Löschung zum Laufzeitende der Domain
- NOW: sofortige Löschung
- DATE: Löschung zum angegebenen Datum.
Bei XML wird das Datum im Tag execdate
(=execution date) gesetzt.
Format : yyyy-MM-dd oder yyyy-MM-dd hh:mm:ss
Beispiel : 2019-06-18 16:33:24
Bei JSON wird das Datum als Wert des Feldes registryWhen
angegeben.
Format : yyyy-MM-dd'T'HH:mm:ssSSSZ
Beispiel : 2019-06-18T16:33:24.000+0200
DomainCancelationCreate - Beispiel: Domain zum Laufzeitende kündigen - Ausführungstyp: EXPIRE
POST /domain/{name}/cancelation
{
"execution": "EXPIRE",
"type": "DELETE"
}
{
"stid": "20180927-stid",
"messages": [
{
"text": "Der Auftrag wird zum Ablauf der Domain ausgefuehrt.",
"messageCode": "MSG010315",
"status": "NOTICE"
}
],
"status": {
"code": "S0103101",
"text": "Domainkuendigung wurde erfolgreich angelegt.",
"type": "SUCCESS"
},
"object": {
"type": "domain",
"value": "example.com"
},
"data": [
{
"created": "2018-09-27T15:10:30.000+0200",
"updated": "2018-09-27T15:10:30.000+0200",
"owner": {
"user": "USER",
"context": CONTEXT
},
"updater": {
"user": "USER",
"context": CONTEXT
},
"domain": "example.com",
"type": "DELETE",
"execution": "EXPIRE",
"registryWhen": "2019-06-18T16:33:24.000+0200",
"logId": 213218
}
]
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0103101</code>
<cancelation>
<execdate>EXPIRE</execdate>
<type>delete</type>
<domain>example.com</domain>
</cancelation>
</task>
</request>
<response>
<result>
<data>
<cancelation>
<execdate>expire</execdate>
<changed>2018-09-27 16:00:49</changed>
<domain>example.com</domain>
<type>DELETE</type>
<registry_when_date>2019-06-18 16:37:39</registry_when_date>
<log_id>213221</log_id>
<created>2018-09-27 16:00:49</created>
</cancelation>
</data>
<msg>
<text>Der Auftrag wird zum Ablauf der Domain ausgefuehrt.</text>
<code>MSG010315</code>
<type>notice</type>
</msg>
<status>
<code>S0103101</code>
<text>Domainkuendigung wurde erfolgreich angelegt.</text>
<type>success</type>
<object>
<type>domain</type>
<value>example.com</value>
</object>
</status>
</result>
<ctid />
<stid>20180927-stid</stid>
</response>
DomainCancelationCreate - Beispiel: Domain sofort kündigen - Ausführungstyp: NOW
POST /domain/{name}/cancelation
{
"execution": "NOW",
"type": "DELETE"
}
{
"stid": "20180927-stid",
"status": {
"code": "S0103101",
"text": "Domainkuendigung wurde erfolgreich angelegt.",
"type": "SUCCESS"
},
"object": {
"type": "domain",
"value": "ephenodrom1001.com"
},
"data": [
{
"created": "2018-09-27T15:08:29.000+0200",
"updated": "2018-09-27T15:08:29.000+0200",
"owner": {
"user": "USER",
"context": CONTEXT
},
"updater": {
"user": "USER",
"context": 4
},
"domain": "example.com",
"type": "DELETE",
"execution": "NOW",
"registryWhen": "2018-09-27T15:08:28.000+0200",
"logId": 213217
}
]
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0103101</code>
<cancelation>
<execdate>NOW</execdate>
<type>delete</type>
<domain>example.com</domain>
</cancelation>
</task>
</request>
<response>
<result>
<data>
<cancelation>
<execdate>now</execdate>
<changed>2018-09-27 15:58:58</changed>
<domain>example.com</domain>
<type>DELETE</type>
<registry_when_date>2018-09-27 15:58:58</registry_when_date>
<log_id>213220</log_id>
<created>2018-09-27 15:58:58</created>
</cancelation>
</data>
<status>
<code>S0103101</code>
<text>Domainkuendigung wurde erfolgreich angelegt.</text>
<type>success</type>
<object>
<type>domain</type>
<value>example.com</value>
</object>
</status>
</result>
<ctid />
<stid>20180927-stid</stid>
</response>
DomainCancelationCreate - Beispiel: Domain zu einem festgelegten Datum kündigen - Ausführungstyp: DATE
POST /domain/{name}/cancelation
{
"execution": "DATE",
"type": "DELETE",
"registryWhen": "2018-09-27T08:31:38.126Z"
}
{
"stid": "20180927-app2-dev-12144",
"messages": [
{
"text": "Der Auftrag wird zum angegebenen Datum ausgefuehrt.",
"messageCode": "MSG010316",
"status": "NOTICE"
}
],
"status": {
"code": "S0103101",
"text": "Domainkuendigung wurde erfolgreich angelegt.",
"type": "SUCCESS"
},
"object": {
"type": "domain",
"value": "example.com"
},
"data": [
{
"created": "2018-09-27T12:08:52.000+0200",
"updated": "2018-09-27T12:08:52.000+0200",
"owner": {
"user": "USER",
"context": CONTEXT
},
"updater": {
"user": "USER",
"context": CONTEXT
},
"domain": "example.com",
"type": "DELETE",
"execution": "DATE",
"registryWhen": "2018-10-27T10:31:38.126+0200",
"logId": 213211
}
]
}
<request>
<auth>
<user>USER</user>
<password>PASSWORD</password>
<context>CONTEXT</context>
</auth>
<task>
<code>0103101</code>
<cancelation>
<execdate>2018-09-28 12:00:00</execdate>
<type>delete</type>
<domain>example.com</domain>
</cancelation>
</task>
</request>
<response>
<result>
<data>
<cancelation>
<execdate>2018-09-28 12:00:00</execdate>
<changed>2018-09-27 10:49:48</changed>
<domain>example.com</domain>
<type>DELETE</type>
<registry_when_date>2018-09-28 12:00:00</registry_when_date>
<log_id>213207</log_id>
<created>2018-09-27 10:49:48</created>
</cancelation>
</data>
<msg>
<text>Der Auftrag wird zum angegebenen Datum ausgefuehrt.</text>
<code>MSG010316</code>
<type>notice</type>
</msg>
<status>
<code>S0103101</code>
<text>Domainkuendigung wurde erfolgreich angelegt.</text>
<type>success</type>
<object>
<type>domain</type>
<value>example.com</value>
</object>
</status>
</result>
<ctid />
<stid>20180927-stid</stid>
</response>
Benachrichtigungen erhalten
Der Auftragstyp DomainCancelationCreate erzeugt einen Kündigungsauftrag.
Dieser stößt das Anlegen eines zweiten Kündigungsauftrages an, der erst später zu dem in der Kündigung definierten Zeitpunkt abgearbeitet wird (= asynchrone Verarbeitung).
Ist dieser zweite Auftrag abgearbeitet, wird eine Systembenachrichtigung gesendet, die Aufschluss darüber gibt, ob die Löschung erfolgreich war oder nicht. Da zu dem Zeitpunkt, an dem die Kündigung angelegt wird, der später angelegte Auftrag noch nicht existiert, kann das System vorab keine JobID senden. Um festzustellen, ob dies der Auftrag zur gewünschten Löschung ist, prüfe, ob diese Keywords in der später gesendeten Systemantwort, die hier genannten Werte enthalten:
Die Systembenachrichtigungen können mit den Methoden Polling und Push abgerufen bzw. zugesendet werden.