Appendix F

XML Registry-Registrar Protocol Details

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, either:

(1) the OXRScommandgroup sequence should be set "on" such that the sequence of response is equal to the sequence of request arrivals; or (2) the original request should be 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

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

OXRSadd generic syntax:

<OXRScommand>
            <commandtype>OXRSadd:{domain, name server, 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 name server:

OXRSadd name server 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 name server 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 name servers to edit for on the initial release.

OXRSverify function

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

            The OXRSverify domain is used 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

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

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

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

OXRSupdate Function

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

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

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

OXRSnew domain:

The contact information that the registry keeps 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>