Instructions for the complete automation of the prologation of the domain registration period (DomainRenew).

Table of Contents

Basics of the JSON and XML API

All important information for the use of the JSON and XML API you can find in the General API Basics and the XML API Basics  and JSON API Basics.

Process Overview

Flow Chart

Task names, codes and routes

Task nameCodeRoute
DomainRenew0101003PUT /domain/ {name} /renew
PollInfo0905GET /poll
PollConfirm0906PUT /poll/$id
DomainInfo0105GET / domain/$name

Requirements

Inquire domain data

For the DomainRenew request, the due date of the domain is required. It can be retrieved with a DomainInfo request. The due date is indicated in the payable field.

In the example it is 2020-12-31 12:00:00.

Request
GET /domain/example.com
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "S0105",
        "text": "Domain data has been inquired successfully.",
        "type": "SUCCESS"
    },
    "object": {
        "type": "domain",
        "value": "example.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": "example.com",
            "payable": "2020-12-31T00:00:00.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>2020-12-31 00:00:00</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>Domain data has been inquired successfully.</text>
      <type>success</type>
      <object>
        <type>domain</type>
        <value>example.com</value>
      </object>
    </status>
  </result>
 <stid>20180926-stid</stid>
</response>

Process

Renew domain

The DomainRenew task is used to start the domain prologation of the domain registration period. The previously determined due date is required in the request, e.g. to prevent an accidental double prolongation.

Domain renew - example

Request
PUT /domain/$name/renew
{
      "period": {
          "period": 1,
          "unit": "YEAR"
      },
      "payable": "2020-12-31T12:00:00.000+0200",
      "removeCancelation": false
}
Response
{
    "stid": "20180928-stid",
    "status": {
        "code": "N0101003",
        "text": "Domain renew has been started successfully.",
        "type": "NOTIFY"
    },
    "object": {
        "type": "domain",
        "value": "example.com"
    },
    "data": [
        {
            "id": 4295611341
        }
    ]
}
Request
<request>
  <auth>
    <user>USER</user>
    <password>PASSWORD</password>
    <context>CONTEXT</context>
  </auth>
  <task>
    <code>0101003</code>
    <domain>
      <name>example.com</name>
      <period>1</period>
      <payable>2020-12-31 12:00:00</payable>
      <remove_cancellation>no</remove_cancellation>
    </domain>
  </task>
</request>
Response
<response>
  <result>
    <data>
      <domain_job>
        <job>
          <id>123456</id>
          <status>RUNNING</status>
        </job>
      </domain_job>
    </data>
    <status>
      <code>N0101003</code>
      <text>Domain renew has been started successfully.</text>
      <type>notify</type>
      <object>
        <type>domain</type>
        <value>example.com</value>
      </object>
    </status>
  </result>
 <stid>20180928-stid</stid>
</response>


Receiving notifications

The  DomainCancelationCreate task creates a cancelation request. This triggers the creation of a second cancelation request, which is processed later at the time defined in the request (=asynchronous processing).
Once this second request has been processed, a system notification is generated, indicating whether the deletion was successful or not. The notification can be retrieved using the Polling and Push methods.

Inquiring domain data

After a successful renew, you can determine the new due date of the domain (payable field) with a DomainInfo request. Since the domain registration period in this example was extended by one year, the payable field has the new value 2021-12-31 00:00:00.

Request
GET /domain/example.com
Response
{
    "stid": "20180926-stid",
    "status": {
        "code": "S0105",
        "text": "Domain data has been inquired successfully.",
        "type": "SUCCESS"
    },
    "object": {
        "type": "domain",
        "value": "example.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": "example.com",
            "payable": "2021-12-31T00:00:00.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>2021-12-31 00:00:00</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>Domain data has been inquired successfully.</text>
      <type>success</type>
      <object>
        <type>domain</type>
        <value>example.com</value>
      </object>
    </status>
  </result>
 <stid>20180926-stid</stid>
</response>