Suche in diesem Bereich

Skip to end of metadata
Go to start of metadata

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 Nutzunge der JSON- und XML-API finden Sie unter den folgenden Links:

Prozess-Übersicht

Ablauf-Diagramm


Auftragstypen, Codes und Routen

AuftragstypCodeRoute
DomainCancelationCreate

0103101

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

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 asynchrone Benachrichtigungen unter :

Einen DomainCancelationCreate-Auftrag starten

Für eine Domain-Löschung müssen Sie 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 es als Wert des Feldes registryWhen angegeben.
    Formatyyyy-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 abfragen und bestätigen

Der Auftragstyp DomainCancelationCreate erzeugt einen Kündigungsauftrag.
Dieser stößt das Anlegen eines zweiten Kündigungsauftrages an, der asynchron zu dem in der Kündigung definierten Zeitpunkt abgearbeitet wird.
Ist dieser zweite Auftrag abgearbeitet, wird eine Auftrags-Benachrichtigung gesendet, die Aufschluss darüber gibt, ob die Löschung erfolgreich war oder nicht.
Sie müssen die Benachrichtigung mit dem Auftragstyp PollInfo abrufen.  Das Abrufen müssen Sie mit dem Auftragstyp PollConfirm bestätigen.

Da zu dem Zeitpunkt, an dem die Kündigung angelegt wird, der asynchrone Auftrag nicht existiert, kann das System vorab keine JobID senden. Um festzustellen,  ob dies der Auftrag zur gewünschten Löschung ist, prüfen Sie, ob diese Schlüsselwörter 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.

PollInfo - Beispiele

Request
GET /poll
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "S0905",
        "text": "Die Benachrichtigung wurde erfolgreich abgerufen.",
        "type": "SUCCESS"
    },
    "object": {
        "type": "message",
        "value": "3512542",
        "summary": 1
    },
    "data": [
        {
            "object": {
                "created": "2018-06-18T15:18:36.000+0200",
                "updated": "2018-11-12T11:33:00.000+0100",
                "owner": {},
                "updater": {},
                "name": "example.com",
                "expire": "2021-06-18T15:18:36.000+0200",
                "payable": "2021-06-18T15:18:36.000+0200",
                "ownerc": {
                    "id": 100
                },
                "adminc": {
                    "id": 100
                },
                "techc": {
                    "id": 100
                },
                "zonec": {
                    "id": 100
                },
                "registryStatus": "HOLD_LOCK",
                "nameServers": [
                    {
                        "name": "c.ns14.net"
                    },
                    {
                        "name": "d.ns14.net"
                    }
                ],
                "lastAction": "UPDATE",
                "trustee": false,
                "privacy": false,
                "authinfo": "xU72xTAn/z9ckOVi",
                "domainsafe": false,
                "autoRenewStatus": "TRUE",
                "registrarStatus": "HOLD",
                "registrarStatusReason": "ocval",
                "rddsOptIn": "NOT_SET"
            },
            "type": "domain",
            "id": 3512542,
            "job": {
                "created": "2018-11-12T11:33:02.000+0100",
                "updated": "2018-11-12T11:33:37.000+0100",
                "status": "SUCCESS",
                "execution": "2018-11-12T11:33:35.000+0100",
                "id": 4297255411,
                "type": "domain",
                "subType": "VGRS-TEST_com",
                "action": "delete"
            }
        }
    ]
}
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>