Anleitung zur vollständigen Automatisierung der Löschung einer Domain.

Inhaltsverzeichnis dieser Seite

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

AuftragstypCodeRoute
DomainCancelationCreate

0103101

POST /domain/ {name} / cancelation
PollConfirm0906PUT /poll/$id
DomainInfo0105GET / domain/$name

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.

Weitere Details zu asynchronen Benachrichtigungen findest du auf der Seite Asynchrone Benachrichtigungen.

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

Request
POST /domain/{name}/cancelation
{
  "execution": "EXPIRE",
  "type": "DELETE"
}
Response
{
    "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
<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
<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

Request
POST /domain/{name}/cancelation
{
  "execution": "NOW",
  "type": "DELETE"
}
Response
{
    "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
<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
<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

Request
POST /domain/{name}/cancelation
{
  "execution": "DATE",
  "type": "DELETE",
  "registryWhen": "2018-09-27T08:31:38.126Z"
}
Response
{
    "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
<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
<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:

  • data / job / action = delete
  • data / job / type = domain
  • data / object / name

Diese drei Zeilen zeigen an, dass es sich um die Aktion "Löschung" handelt, dass der Objekttyp, der gelöscht wurde "Domain" ist  und, dass der Name der Domain hier "example.com" ist.

Die Systembenachrichtigungen können mit den Methoden Polling und Push abgerufen bzw. zugesendet werden.