> Contemporary Report

Appendix A – XML Registry-Registrar Protocol Details

 

The following is a detailed description of the XML Registry-registrar protocol.

Overview:

OXRS  uses a standard message format expressed as an XML payload.

OXRScommand:

“OXRScommand“ is the standard delimiter of an atomic registry server command. As such the embedded instructions are considered to be atomic in nature.  It is used to identify the scope of a logical transaction.  It may represent an atomic physical transaction if sent outside of the boundary of an “OXRScommand” group. The command body is the actual function being requested by the client.

Definition:

<OXRScommand>

… command body …

</OXRScommand>

OXRScommandgroup:

“OXRScommandgroup” is used to identify a group of commands to be sent to the registry server. OXRScommandgroup includes one or more OXRScommands as part of its delimited payload.

Definition:

<OXRScommandgroup>

        {<OXRScommandgroupscope>{all,none}</OXRScommandgroupscope>}

{<OXRScommandgroupreturn>{isolated, list, none}</OXRScommandgroupreturn>}

{<OXRScommandgroupsequence>{on, off}</OXRScommandgroupsequence>}

<OXRScommand>

…command body…

</OXRScommand>

<OXRScommand>

 …command body…

</OXRScommand>

</OXRScommandgroup>

OXRScomandgroupscope:

“OXRScommandgroupscope” identifies the atomicity of the execution of any updates invoked by OXRScommandgroup.

all:

Specifying “all” as OXRScommandgroupscope directs OXRS to treat all of the contained OXRScommands as a single unit of work.

none:

Specifying “none” as OXRScommandgroupscope directs OXRS  to treat each of the contained OXRScommands as an isolated unit of work.

OXRScommandgroupreturn:

The OXRScommandgroupreturn identifies the atomicity of the response to any OXRScommandgroup.

isolated:

Specifying “isolated” as OXRScommandgroupreturn directs OXRS to treat all of the contained OXRScommands as a isolated requests and as such send a response for each command as soon as the OXRScommand is completed. Important Note: If the OXRScommandgroupscope is set to all, then the “isolated” option if specified is  overridden with “list”.

list:

Specifying “list” as OXRScommandgroupreturn directs OXRS to treat all of the contained OXRScommands as a group of requests and as such send a single for the group as soon as the OXRScommand is completed for the entire group. To retain request/response context one of the following should take place:

Either: The OXRScommandgroup sequence should be set “on” such that the sequence of response is equal to the sequence of request arrivals.

Or: The original request is returned as part of the response to allow client applications to process the results.

none:

Specifying “none” as OXRScommandgroupreuturn directs OXRS  to not send any response to the request. (i.e none is needed).

OXRScommandgroupsequence:

on:

Specifying “on” for the OXRScommandgroupsequence indicates that the requests should be processed in the order of arrival and that a sequence identifier should be attached to each of the requests (and responses).

off:

Specifying “off” for the OXRScommandgroupsequence indicates that the requests should be processed any order, regardless of the order of arrival. In this mode a unique identifier (either user supplied or system generated) to enable the matching of the request response pairs.

OXRSadd Function

Overview:

The OXRSadd function is used to add resources such as domains, nameserver and registrants to OXRS . The OXRSadd function is typed by the type of resource being added.

Description: 

OXRSadd generic syntax:

<OXRScommand>

        <commandtype>OXRSadd:{domain, nameserver, registrar}</commandtype>

        … res1add command body …

</OXRScommand>

OXRSadd domain:

It should be mandatory to add the name server at the time of registering the domain

The syntax should express a consistent format for dates and number of years, time period

OXRS add domain syntax:

<OXRScommand>

<commandtype>OXRSadd:domain</commandtype>

<domainname>… domain name … </domainname>

<sequence:ns>

<seq>… name server sequence …</seq>

<name>… name server name …</name>

</sequence>

</OXRScommand>

OXRSadd domain example:

<OXRScommand>

<commandtype>OXRSadd:domain</commandtype>

<domainname>mydomain.com</domainname>

<sequence:ns>

<seq>1</seq>

<name>ns1.mydomainns.com</name>

</sequence>

</OXRScommand>

OXRSadd nameserver:

OXRSadd nameserver syntax:

<OXRScommand>

<commandtype>OXRSadd:nameserver</commandtype>

<sequence:ns>

        <seq> … name server sequence </seq> 

<name> … name server name </name>

<ip> … name server ip address …</ip>

</sequence>

</OXRScommand>

OXRSadd nameserver example:

<OXRScommand>

<commandtype>OXRSadd:nameserver</commandtype>

<sequence:ns>

        <seq>1</seq>

<name>ns1.myns1.com</name>

<ip>111.222.111.1</ip>

<seq>2</seq>

<name>ns2.myns2.com</name>

<ip>111.222.111.2</ip>

</sequence>

</OXRScommand>

OXRSadd registrar:

OXRSadd registrar syntax:

<OXRScommand>

<commandtype>OXRSadd:registrar</commandtype>

<registrarid> … unique registrar identifier … </registrarid>

<registrarname> … registrar name … </registrarname>

<registrarpwd> … registrars pwd … </registrarpwd>

</OXRScommand>

OXRSadd registrar example:

<OXRScommand>

<commandtype>OXRSadd:registrar</commandtype>

<registrarid> 12345 </registrarid>

<registrarname> my registrar </registrarname>

<registrarpwd> rover </registrarpwd>

</OXRScommand>

There should be no limit on the maximum ratios of nameservers to edit for on the initial release.

OXRSverify function

Overview:

The OXRSverify function is used to verify the existence of a particular domain.

Description: 

OXRSverify domain:

Need to determine the need for sequencing for the domain name “verifies”.

OXRSverify domain syntax:

<OXRScommand>

<commandtype>OXRSverify:domain</commandtype>

<sequence:domain>

        <seq> name sequence </seq>  

<name> … domain name </name>

</sequence>

</OXRScommand>

OXRSverify single domain example:

<OXRScommand>

<commandtype>OXRSverify:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

</sequence>

</OXRScommand>

OXRSverify multiple domains example:

<OXRScommand>

<commandtype>OXRSverify:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

<seq>2</seq>

<name>myotherdomain.com</name>

</sequence>

</OXRScommand>

 OXRSdelete Function

Overview:

The OXRSdelete function is used to delete a particular domain, nameserver or registrant.

Description: 

OXRSdelete domain:

OXRSdelete domain syntax:

<OXRScommand>

<commandtype>OXRSdelete:domain</commandtype>

<sequence:domain>

        <seq> name sequence </seq>  

<name> … domain name </name>

</sequence>

</OXRScommand>

OXRSdelete single domain example:

<OXRScommand>

<commandtype>OXRSdelete:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

</sequence>

</OXRScommand>

OXRSdelete multiple domains example:

<OXRScommand>

<commandtype>OXRSdelete:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

<seq>2</seq>

<name>myotherdomain.com</name>

</sequence>

</OXRScommand>

 OXRSversion Function

Overview:

The OXRSversion function is used to determine the version of a particular OXRSversion executing.

 OXRSupdate Function

Overview:

The OXRSupdate function is used to update information about a particular domain, nameserver or registrant.

Description: 

OXRSupdate domain:

OXRSupdate domain syntax:

<OXRScommand>

<commandtype>OXRSupdate:domain</commandtype>

<sequence:domain>

        <seq> name sequence </seq>  

<name> … domain name </name>

</sequence>

</OXRScommand>

OXRSupdate single domain example:

<OXRScommand>

<commandtype>OXRSupdate:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

</sequence>

</OXRScommand>

OXRSupdate multiple domains example:

<OXRScommand>

<commandtype>OXRSupdate:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

<seq>2</seq>

<name>myotherdomain.com</name>

</sequence>

</OXRScommand>

OXRSrenew Function

Overview:

The OXRSrenew function is used to delete a particular domain, nameserver or registrant.

Description: 

OXRSnew domain:

The contact information that we keep about a particular name server or registrant may also need to be renewed.

OXRSrenew domain syntax:

Need to add syntax to identify the number of years as part of the renewal information

<OXRScommand>

<commandtype>OXRSrenew:domain</commandtype>

<sequence:domain>

        <seq> name sequence </seq>  

<name> … domain name </name>

</sequence>

</OXRScommand>

 

 

OXRSrenew single domain example:

<OXRScommand>

<commandtype>OXRSrenew:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

</sequence>

</OXRScommand>

OXRSrenew multiple domains example:

<OXRScommand>

<commandtype>OXRSrenew:domain</commandtype>

<sequence:domain>

        <seq>1</seq>

<name>mydomain.com</name>

<seq>2</seq>

<name>myotherdomain.com</name>

</sequence>

</OXRScommand>