>
Appendix A – XML Registry-Registrar Protocol Details
The following is a detailed description of the XML
Registry-registrar protocol.
OXRS uses a standard
message format expressed as an XML payload.
“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 …
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>
“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.
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.
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:
<OXRScommand>
<commandtype>OXRSadd:{domain,
nameserver, registrar}</commandtype>
… res1add
command body …
</OXRScommand>
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
<OXRScommand>
<commandtype>OXRSadd:domain</commandtype>
<domainname>… domain name … </domainname>
<sequence:ns>
<seq>… name server sequence …</seq>
<name>… name server name …</name>
</sequence>
</OXRScommand>
<OXRScommand>
<commandtype>OXRSadd:domain</commandtype>
<domainname>mydomain.com</domainname>
<sequence:ns>
<seq>1</seq>
<name>ns1.mydomainns.com</name>
</sequence>
</OXRScommand>
<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>
<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>
OXRSadd registrar
syntax:
<OXRScommand>
<commandtype>OXRSadd:registrar</commandtype>
<registrarid> … unique registrar identifier …
</registrarid>
<registrarname> … registrar name …
</registrarname>
<registrarpwd> … registrars pwd …
</registrarpwd>
</OXRScommand>
<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.
Overview:
The OXRSverify function is used to verify the existence of a
particular domain.
Need to determine the need for sequencing for the domain
name “verifies”.
<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>
The OXRSdelete function is used to delete a particular
domain, nameserver or registrant.
<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>
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>
The OXRSversion function is used to determine the version of
a particular OXRSversion executing.
The OXRSupdate function is used to update information about
a particular domain, nameserver or registrant.
<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>
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>
The OXRSrenew function is used to delete a particular
domain, nameserver or registrant.
The contact information that we keep about a particular name
server or registrant may also need to be renewed.
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>
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>