J. Gould | |
L. Jia | |
VeriSign, Inc. | |
January 10, 2014 |
Registry Mapping for the Extensible Provisioning Protocol (EPP)
verisign_epp-extension_registry_v01
This document describes an Extensible Provisioning Protocol (EPP) mapping for provisioning zones (e.g. top-level domains) in a Domain Name Registry. The attributes of a zone include the features and policies of the zone.
COPYRIGHT NOTIFICATION
Copyright 2014 VeriSign, Inc. All rights reserved. VERISIGN; the Verisign logo; and other trademarks, service marks and Verisign designs are registered or unregistered trademarks of VeriSign Inc. and its subsidiaries in the United States and foreign countries. Copyright laws and international treaties protect this document, and any Verisign product to which it relates.
VERISIGN PROPRIETARY INFORMATION
This document is the property of VeriSign, Inc. and its subsidiaries (together "Verisign") It may be used by recipient only for the purpose for which it was transmitted and must be returned upon request or when no longer needed by recipient. It may not be copied or communicated without the prior written consent of Verisign.
NOTICE AND CAUTION
Concerning U.S. Patent or Trademark Rights
Verisign and other trademarks, service marks and logos are registered or unregistered trademarks of Verisign and its subsidiaries in the United States and in foreign countries. The inclusion in this document, the associated on-line file or the associated software of any information covered by any other patent, trademark or service mark rights does not constitute nor imply a grant of or authority to exercise, any right or privilege protected by such patent, trademark or service mark. All such rights and privileges are vested in the patent, trademark or service mark owner and no other person may exercise such rights without express permission, authority or license secured from the patent, trademark or service mark owner.
This document describes an extension mapping for version 1.0 of the Extensible Provisioning Protocol (EPP) [RFC5730]. This document describes a Domain Name Registry Mapping, referred to as Registry Mapping, for the Extensible Provisioning Protocol (EPP) [RFC5730]. A Domain Name Registry can service one or more zones (e.g. top-level domains) with a variety of supported services and policies. This mapping enables the provisioning of the zones in the Domain Name Registry. A Domain Name Registry MAY support a subset of all of the commands defined in this mapping.
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119 [RFC2119].
XML is case sensitive. Unless stated otherwise, XML specifications and examples provided in this document MUST be interpreted in the character case presented in order to develop a conforming implementation.
In examples, "C:" represents lines sent by a protocol client and "S:" represents lines returned by a protocol server. Indentation and white space in examples are provided only to illustrate element relationships and are not a REQUIRED feature of this protocol.
"registry-1.0" is used as an abbreviation for "http://www.verisign.com/epp/registry-1.0". The XML namespace prefix "registry" is used, but implementations MUST NOT depend on it and instead employ a proper namespace-aware XML parser and serializer to interpret and output the XML documents.
An EPP registry object has attributes and associated values that may be viewed and modified by the sponsoring client or the server. This section describes each attribute type in detail. The formal syntax for the attribute values described here can be found in the "Formal Syntax" section of this document and in the appropriate normative references.
The syntax for zone names described in this document MUST conform to [RFC0952] and [RFC1123]. At the time of this writing, [RFC3490] describes a standard to use certain ASCII name labels to represent non-ASCII name labels. These conformance requirements might change in the future as a result of progressing work in developing standards for internationalized names.
Date and time attribute values MUST be represented in Universal Coordinated Time (UTC) using the Gregorian calendar. The extended date-time form using upper case "T" and "Z" characters defined in XML Schema Part 2 MUST be used to represent date-time values, as XML Schema does not support truncated date-time forms or lower case "T" and "Z" characters.
The Zone object, represented by the <registry:zone> element, is the primary object managed by this mapping. The Zone object can apply to any zone level (top level, second level, third level, etc.). The <registry:zone> element contains the following child elements:
Example of a <registry:zone> element:
<registry:zone> <registry:name>EXAMPLE</registry:name> <registry:group>STANDARD</registry:group> <registry:subProduct>EXAMPLE</registry:subProduct> <registry:related> <registry:fields type="sync"> <registry:field>clID</registry:field> <registry:field>registrant</registry:field> <registry:field>ns</registry:field> </registry:fields> <registry:zoneMember type="equal">EXAMPLE </registry:zoneMember> <registry:zoneMember type="equal">EXAMPLE2 </registry:zoneMember> <registry:zoneMember type="equal">EXAMPLE3 </registry:zoneMember> </registry:related> <registry:phase type="sunrise"> <registry:startDate>2012-11-01T00:00:00.0Z </registry:startDate> <registry:endDate>2012-12-01T00:00:00.0Z </registry:endDate> </registry:phase> <registry:phase type="claims" name="landrush"> <registry:startDate>2012-12-01T00:00:00.0Z </registry:startDate> <registry:endDate>2012-12-08T00:00:00.0Z </registry:endDate> </registry:phase> <registry:phase type="claims" name="open"> <registry:startDate>2012-12-08T00:00:00.0Z </registry:startDate> <registry:endDate>2013-02-01T00:00:00.0Z </registry:endDate> </registry:phase> <registry:phase type="open"> <registry:startDate>2013-02-01T00:00:00.0Z</registry:startDate> </registry:phase> <registry:services> <registry:objURI required="true"> urn:ietf:params:xml:ns:domain-1.0 </registry:objURI> <registry:objURI required="true"> urn:ietf:params:xml:ns:host-1.0 </registry:objURI> <registry:objURI required="true"> urn:ietf:params:xml:ns:contact-1.0 </registry:objURI> <registry:svcExtension> <registry:extURI required="true"> urn:ietf:params:xml:ns:rgp-1.0 </registry:extURI> <registry:extURI required="true"> urn:ietf:params:xml:ns:secDNS-1.1 </registry:extURI> <registry:extURI required="true"> http://www.verisign-grs.com/epp/namestoreExt-1.1 </registry:extURI> <registry:extURI required="false"> http://www.verisign.com/epp/idnLang-1.0 </registry:extURI> </registry:svcExtension> </registry:services> <registry:slaInfo> <registry:sla type="downtime" unit="min"> 864 </registry:sla> <registry:sla type="rtt" command="domain:check" unit="ms"> 2000 </registry:sla> <registry:sla type="rtt" command="domain:info" unit="ms"> 2000 </registry:sla> <registry:sla type="rtt" command="domain:create" unit="ms"> 4000 </registry:sla> <registry:sla type="rtt" command="domain:update" unit="ms"> 4000 </registry:sla> <registry:sla type="rtt" command="domain:renew" unit="ms"> 4000 </registry:sla> <registry:sla type="rtt" command="domain:delete" unit="ms"> 4000 </registry:sla> <registry:sla type="rtt" command="domain:transfer" unit="ms"> 4000 </registry:sla> </registry:slaInfo> <registry:crID>clientX</registry:crID> <registry:crDate>2012-10-01T00:00:00.0Z </registry:crDate> <registry:upID>clientY</registry:upID> <registry:upDate>2012-10-15T00:00:00.0Z </registry:upDate> <registry:domain> <registry:domainName level="2"> <registry:minLength>5 </registry:minLength> <registry:maxLength>50 </registry:maxLength> <registry:alphaNumStart>true </registry:alphaNumStart> <registry:alphaNumEnd>false </registry:alphaNumEnd> <registry:onlyDnsChars>true </registry:onlyDnsChars> <registry:regex> <registry:expression>^\w+.*$ </registry:expression> <registry:explanation>Alphanumeric </registry:explanation> </registry:regex> <registry:regex> <registry:expression>^\d+.*$ </registry:expression> </registry:regex> <registry:reservedNames> <registry:reservedName>reserved1 </registry:reservedName> </registry:reservedNames> </registry:domainName> <registry:idn> <registry:idnVersion>4.1 </registry:idnVersion> <registry:idnaVersion>2008 </registry:idnaVersion> <registry:unicodeVersion>6.0 </registry:unicodeVersion> <registry:encoding>Punycode </registry:encoding> <registry:commingleAllowed>false </registry:commingleAllowed> <registry:language code="LANG-1"> <registry:table> http://www.iana.org/idn-tables/test_tab1_1.1.txt </registry:table> <registry:variantStrategy>blocked </registry:variantStrategy> </registry:language> </registry:idn> <registry:premiumSupport>false </registry:premiumSupport> <registry:contact type="admin"> <registry:min>1</registry:min> <registry:max>4</registry:max> </registry:contact> <registry:ns> <registry:min>0</registry:min> <registry:max>13</registry:max> </registry:ns> <registry:childHost> <registry:min>0</registry:min> </registry:childHost> <registry:period command="create"> <registry:length> <registry:min unit="y">1</registry:min> <registry:max unit="y">10</registry:max> <registry:default unit="y">1</registry:default> </registry:length> </registry:period> <registry:transferHoldPeriod unit="d">5 </registry:transferHoldPeriod> <registry:gracePeriod command="create" unit="d">5 </registry:gracePeriod> <registry:gracePeriod command="renew" unit="d">5 </registry:gracePeriod> <registry:gracePeriod command="transfer" unit="d">5 </registry:gracePeriod> <registry:gracePeriod command="autoRenew" unit="d">45 </registry:gracePeriod> <registry:rgp> <registry:redemptionPeriod unit="d">30 </registry:redemptionPeriod> <registry:pendingRestore unit="d">7 </registry:pendingRestore> <registry:pendingDelete unit="d">5 </registry:pendingDelete> </registry:rgp> <registry:dnssec> <registry:dsDataInterface> <registry:min>0</registry:min> <registry:max>13</registry:max> <registry:alg>3</registry:alg> <registry:digestType>1</registry:digestType> </registry:dsDataInterface> <registry:maxSigLife> <registry:clientDefined>false </registry:clientDefined> </registry:maxSigLife> </registry:dnssec> <registry:maxCheckDomain>5 </registry:maxCheckDomain> <registry:supportedStatus> <registry:status>ok </registry:status> <registry:status>clientDeleteProhibited </registry:status> <registry:status>serverDeleteProhibited </registry:status> <registry:status>clientHold </registry:status> <registry:status>serverHold </registry:status> <registry:status>clientRenewProhibited </registry:status> <registry:status>serverRenewProhibited </registry:status> <registry:status>clientTransferProhibited </registry:status> <registry:status>serverTransferProhibited </registry:status> <registry:status>clientUpdateProhibited </registry:status> <registry:status>serverUpdateProhibited </registry:status> <registry:status>inactive </registry:status> <registry:status>pendingDelete </registry:status> <registry:status>pendingTransfer </registry:status> </registry:supportedStatus> <registry:authInfoRegex> <registry:expression>^.*$</registry:expression> </registry:authInfoRegex> </registry:domain> <registry:host> <registry:internal> <registry:minIP>1</registry:minIP> <registry:maxIP>13</registry:maxIP> <registry:sharePolicy>perZone </registry:sharePolicy> </registry:internal> <registry:external> <registry:minIP>0</registry:minIP> <registry:maxIP>0</registry:maxIP> <registry:sharePolicy>perZone </registry:sharePolicy> </registry:external> <registry:nameRegex> <registry:expression>^.*$ </registry:expression> </registry:nameRegex> <registry:maxCheckHost>5 </registry:maxCheckHost> <registry:supportedStatus> <registry:status>ok</registry:status> <registry:status>clientDeleteProhibited </registry:status> <registry:status>serverDeleteProhibited </registry:status> <registry:status>clientUpdateProhibited </registry:status> <registry:status>serverUpdateProhibited </registry:status> <registry:status>linked </registry:status> <registry:status>pendingDelete </registry:status> <registry:status>pendingTransfer </registry:status> </registry:supportedStatus> </registry:host> <registry:contact> <registry:contactIdRegex> <registry:expression>^.*$ </registry:expression> </registry:contactIdRegex> <registry:sharePolicy>perZone </registry:sharePolicy> <registry:intSupport>true</registry:intSupport> <registry:locSupport>false</registry:locSupport> <registry:postalInfo> <registry:name> <registry:minLength>5</registry:minLength> <registry:maxLength>15</registry:maxLength> </registry:name> <registry:org> <registry:minLength>2</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:org> <registry:address> <registry:street> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> <registry:minEntry>1</registry:minEntry> <registry:maxEntry>3</registry:maxEntry> </registry:street> <registry:city> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:city> <registry:sp> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:sp> <registry:pc> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:pc> </registry:address> <registry:voiceRequired>false </registry:voiceRequired> <registry:voiceExt> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:voiceExt> <registry:faxExt> <registry:minLength>1</registry:minLength> <registry:maxLength>40</registry:maxLength> </registry:faxExt> <registry:emailRegex> <registry:expression>^.+\..+$ </registry:expression> </registry:emailRegex> </registry:postalInfo> <registry:maxCheckContact>5</registry:maxCheckContact> <registry:authInfoRegex> <registry:expression>^.*$</registry:expression> </registry:authInfoRegex> <registry:clientDisclosureSupported>false </registry:clientDisclosureSupported> <registry:supportedStatus> <registry:status>ok </registry:status> <registry:status>clientDeleteProhibited </registry:status> <registry:status>serverDeleteProhibited </registry:status> <registry:status>clientTransferProhibited </registry:status> <registry:status>serverTransferProhibited </registry:status> <registry:status>clientUpdateProhibited </registry:status> <registry:status>serverUpdateProhibited </registry:status> <registry:status>linked </registry:status> <registry:status>pendingDelete </registry:status> <registry:status>pendingTransfer </registry:status> </registry:supportedStatus> <registry:transferHoldPeriod unit="d">5 </registry:transferHoldPeriod> </registry:contact> </registry:zone>
A detailed description of the EPP syntax and semantics can be found in the EPP core protocol specification [RFC5730]. The command mappings described here are specifically for use in provisioning and managing TLD names via EPP.
EPP [RFC5730] provides three commands to retrieve object information: <check> to determine if an object is known to the server, <info> to retrieve detailed information associated with an object, and <transfer> to retrieve object transfer status information.
The EPP <check> command is used to determine if the server currently supports a zone. If the response indicates that the zone is not available, then it is currently supported; otherwise it MAY be available to be created by an authorized client.
In addition to the standard EPP command elements, the <check> command MUST contain a <registry:check> element that identifies the registry namespace. The >registry:check> element contains the following child elements:
Example <check> command:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> C: <command> C: <check> C: <registry:check C: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:name>zone1</registry:name> C: <registry:name>zone2</registry:name> C: <registry:name>zone3</registry:name> C: </registry:check> C: </check> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
When a <check> command has been processed successfully, the EPP <resData> element MUST contain a child <registry:chkData> element that identifies the registry namespace. The <registry:chkData> element contains one or more <registry:cd> elements that contain the following child elements:
Example <check> response:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <resData> S: <registry:chkData S: xmlns:registry= S: "http://www.verisign.com/epp/registry-1.0"> S: <registry:cd> S: <registry:name avail="0">zone1</registry:name> S: <registry:reason>Client not authorized S: </registry:reason> S: </registry:cd> S: <registry:cd> S: <registry:name avail="0">zone2 S: </registry:name> S: <registry:reason>Already supported S: </registry:reason> S: </registry:cd> S: <registry:cd> S: <registry:name avail="1">zone3 S: </registry:name> S: </registry:cd> S: </ registry:chkData> S: </resData> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54322-XYZ</svTRID> S: </trID> S: </response> S:</epp>
An EPP error response MUST be returned if a <check> command cannot be processed for any reason.
The EPP <info> command is used to retrieve information associated with a zone object. The response to this command MAY vary depending on the identity of the querying client, use of authorization information, and server policy towards unauthorized clients. Server policy determines which OPTIONAL elements are returned.
In addition to the standard EPP command elements, the <info> command MUST contain a <registry:info> element that identifies the registry namespace. The <registry:info> element contains the following one of the two child elements:
Example <info> command to query for a summary set of attributes for all of the supported zone objects:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> C: <command> C: <info> C: <registry:info C: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:all/> C: </registry:info> C: </info> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
Example <info> command to query for the full set of "zone1" zone object attributes:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> C: <command> C: <info> C: <registry:info C: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:name>zone1</registry:name> C: </registry:info> C: </info> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
When an <info> command has been processed successfully, the EPP <resData> element MUST contain a child <registry:infData> element that identifies the registry namespace. The <registry:infData> element contains one of the two following child elements:
Example <info> response to a query for a summary of all of the supported zone objects:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <resData> S: <registry:infData S: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> S: <registry:zoneList> S: <registry:zone> S: <registry:name>EXAMPLE1</registry:name> S: <registry:crDate>2012-10-01T00:00:00.0Z S: </registry:crDate> S: <registry:upDate>2012-10-15T00:00:00.0Z S: </registry:upDate> S: </registry:zone> S: <registry:zone> S: <registry:name>EXAMPLE2</registry:name> S: <registry:crDate>2012-09-01T00:00:00.0Z S: </registry:crDate> S: <registry:upDate>2012-09-19T00:00:00.0Z S: </registry:upDate> S: </registry:zone> S: </registry:zoneList> S: </registry:infData> S: </resData> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54322-XYZ</svTRID> S: </trID> S: </response> S:</epp>
Example <info> response to query for the full set of "EXAMPLE" zone object attributes:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <resData> S: <registry:infData S: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> S: <registry:zone> S: <registry:name>EXAMPLE</registry:name> S: ... S: </registry:zone> S: </registry:infData> S: </resData> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54322-XYZ</svTRID> S: </trID> S: </response> S:</epp>
An EPP error response MUST be returned if an <info> command cannot be processed for any reason.
Transfer semantics do not directly apply to zone objects, so there is no mapping defined for the EPP <transfer> query command.
EPP provides five commands to transform objects: <create> to create an instance of an object, <delete> to delete an instance of an object, <renew> to extend the validity period of an object, <transfer> to manage object sponsorship changes, and <update> to change information associated with an object.
The EPP <create> command provides a transform operation that allows a client to create a zone object. In addition to the standard EPP command elements, the <create> command MUST contain a <registry:create> element that identifies the registry namespace. The <registry:create> element contains the following child elements:
Example <create> command:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" C: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> C: <command> C: <create> C: <registry:create C: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:zone> C: <registry:name>EXAMPLE</registry:name> C: ... C: </registry:zone> C: </registry:create> C: </create> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
When a <create> command has been processed successfully, the EPP <resData> element MUST contain a child <registry:creData> element that identifies the registry namespace. The <registry:creData> element contains the following child elements:
Example <create> response:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <resData> S: <registry:creData S: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> S: <registry:name>zone1</registry:name> S: <registry:crDate>2012-10-30T22:00:00.0Z S: </registry:crDate> S: </registry:creData> S: </resData> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54321-XYZ</svTRID> S: </trID> S: </response> S:</epp>
An EPP error response MUST be returned if a <create> command can not be processed for any reason.
The EPP <delete> command provides a transform operation that allows a client to delete a zone object. In addition to the standard EPP command elements, the <delete> command MUST contain a <registry:delete> element that identifies the registry namespace. The <registry:delete> element contains the following child elements:
Example <delete> command:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> C: <command> C: <delete> C: <registry:delete C: xmlns: registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:name>EXAMPLE</registry:name> C: </registry:delete> C: </delete> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
When a <delete> zone has been processed successfully, a server MUST respond with an EPP response with no <resData> element.
Example <delete> response:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54321-XYZ</svTRID> S: </trID> S: </response> S:</epp>
An EPP error response MUST be returned if a <delete> command can not be processed for any reason.
Renew semantics do not directly apply to zone objects, so there is no mapping defined for the EPP <renew> command.
Transfer semantics do not directly apply to zone objects, so there is no mapping defined for the EPP <transfer> command.
The EPP <update> command provides a transform operation that allows a client to modify the attributes of a zone object. In addition to the standard EPP command elements, the <update> command MUST contain a <registry:update> element that identifies the registry namespace. The <registry:update> element contains the following child elements:
Example <update> command:
C:<?xml version="1.0" encoding="UTF-8" standalone="no"?> C:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> C: <command> C: <update> C: <registry:update C: xmlns:registry="http://www.verisign.com/epp/registry-1.0"> C: <registry:zone> C: <registry:name>EXAMPLE</registry:name> C: ... C: </registry:zone> C: </registry:update> C: </create> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
When an <update> command has been processed successfully, a server MUST respond with an EPP response with no <resData> element.
Example <update> command:
S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0"> S: <response> S: <result code="1000"> S: <msg>Command completed successfully</msg> S: </result> S: <trID> S: <clTRID>ABC-12345</clTRID> S: <svTRID>54321-XYZ</svTRID> S: </trID> S: </response> S:</epp>
An EPP error response MUST be returned if an <update> command can not be processed for any reason.
One schema is presented here that is the EPP Registry Mapping Schema.
The formal syntax presented here is a complete schema representation of the object mapping suitable for automated validation of EPP XML instances. The BEGIN and END tags are not part of the schema; they are used to note the beginning and ending of the schema for URI registration purposes.
BEGIN <?xml version="1.0" encoding="UTF-8"?> <schema xmlns:registry= "http://www.verisign.com/epp/registry-1.0" xmlns:epp="urn:ietf:params:xml:ns:epp-1.0" xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.verisign.com/epp/registry-1.0" elementFormDefault="qualified"> <!-- Import common element types. --> <import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0"/> <annotation> <documentation> Extensible Provisioning Protocol v1.0 Registry Mapping Schema. </documentation> </annotation> <!-- Child elements found in EPP commands. --> <element name="check" type="registry:mNameType"/> <element name="create" type="registry:createType"/> <element name="delete" type="registry:sNameType"/> <element name="info" type="registry:infoType"/> <element name="update" type="registry:updateType"/> <!-- Child elements of the <check> command. --> <complexType name="mNameType"> <sequence> <element name="name" type="eppcom:labelType" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Child elements of the <delete> command. --> <complexType name="sNameType"> <sequence> <element name="name" type="eppcom:labelType"/> </sequence> </complexType> <!-- Child elements of the <create> command. --> <complexType name="createType"> <sequence> <element name="zone" type="registry:zoneType"/> </sequence> </complexType> <complexType name="updateType"> <sequence> <element name="zone" type="registry:zoneType"/> </sequence> </complexType> <!-- Child elements of the <info> command. --> <complexType name="infoType"> <sequence> <choice> <element name="all"> <complexType/> </element> <element name="name" type="eppcom:labelType"/> </choice> </sequence> </complexType> <!-- Child response elements. --> <element name="chkData" type="registry:chkDataType"/> <element name="creData" type="registry:creDataType"/> <element name="infData" type="registry:infDataType"/> <!-- <create> response elements. --> <complexType name="creDataType"> <sequence> <element name="name" type="eppcom:labelType"/> <element name="crDate" type="dateTime"/> </sequence> </complexType> <!-- <check> response elements. --> <complexType name="chkDataType"> <sequence> <element name="cd" type="registry:checkType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="checkType"> <sequence> <element name="name" type="registry:checkNameType"/> <element name="reason" type="eppcom:reasonType" minOccurs="0"/> </sequence> </complexType> <complexType name="checkNameType"> <simpleContent> <extension base="eppcom:labelType"> <attribute name="avail" type="boolean" use="required"/> </extension> </simpleContent> </complexType> <!-- <info> response elements. --> <complexType name="infDataType"> <choice> <element name="zoneList" type="registry:zoneListType"/> <element name="zone" type="registry:zoneType"/> </choice> </complexType> <complexType name="zoneListType"> <sequence> <element name="zone" type="registry:zoneSummaryType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="zoneSummaryType"> <sequence> <element name="name" type="string"/> <element name="crDate" type="dateTime"/> <element name="upDate" type="dateTime" minOccurs="0"/> </sequence> </complexType> <complexType name="zoneType"> <sequence> <element name="name" type="eppcom:labelType"/> <element name="group" type="token" minOccurs="0"/> <element name="subProduct" type="token" minOccurs="0"/> <element name="related" type="registry:relatedType" minOccurs="0"/> <element name="phase" type="registry:phaseType" minOccurs="0" maxOccurs="unbounded"/> <element name="services" type="registry:servicesType" minOccurs="0"/> <element name="slaInfo" type="registry:slaInfoType" minOccurs="0"/> <element name="crID" type="eppcom:clIDType" minOccurs="0"/> <element name="crDate" type="dateTime"/> <element name="upID" type="eppcom:clIDType" minOccurs="0"/> <element name="upDate" type="dateTime" minOccurs="0"/> <element name="domain" type="registry:domainType"/> <element name="host" type="registry:hostType"/> <element name="contact" type="registry:contactType" minOccurs="0"/> </sequence> </complexType> <complexType name="slaInfoType"> <sequence> <element name="sla" type="registry:slaType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="slaType"> <simpleContent> <extension base="decimal"> <attribute name="type" type="string" use="required"/> <attribute name="subtype" type="string" use="optional"/> <attribute name="command" type="string" use="optional"/> <attribute name="unit" type="string" use="optional"/> </extension> </simpleContent> </complexType> <complexType name="fieldsType"> <sequence> <element name="field" type="token" maxOccurs="unbounded"/> </sequence> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="shared"/> <enumeration value="sync"/> </restriction> </simpleType> </attribute> </complexType> <complexType name="zoneMemberType"> <simpleContent> <extension base="eppcom:labelType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="primary"/> <enumeration value="primaryBasedOnCrDate"/> <enumeration value="alternate"/> <enumeration value="equal"/> </restriction> </simpleType> </attribute> </extension> </simpleContent> </complexType> <complexType name="relatedType"> <sequence> <element name="fields" type="registry:fieldsType" minOccurs="0"/> <element name="zoneMember" type="registry:zoneMemberType" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="servicesType"> <sequence> <element name="objURI" type="registry:uriType" maxOccurs="unbounded"/> <element name="svcExtension" type="registry:svcExtensionType" minOccurs="0"/> </sequence> </complexType> <complexType name="svcExtensionType"> <sequence> <element name="extURI" type="registry:uriType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="phaseType"> <sequence> <element name="startDate" type="dateTime"/> <element name="endDate" type="dateTime" minOccurs="0"/> </sequence> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="pre-delegation"/> <enumeration value="pre-launch"/> <enumeration value="sunrise"/> <enumeration value="landrush"/> <enumeration value="claims"/> <enumeration value="open"/> <enumeration value="custom"/> </restriction> </simpleType> </attribute> <attribute name="mode" default="fcfs"> <simpleType> <restriction base="token"> <enumeration value="fcfs"/> <enumeration value="pending-registration"/> <enumeration value="pending-application"/> </restriction> </simpleType> </attribute> <attribute name="name" use="optional" type="token"/> </complexType> <complexType name="uriType"> <simpleContent> <extension base="anyURI"> <attribute name="required" type="boolean" use="required"/> </extension> </simpleContent> </complexType> <complexType name="reservedNamesType"> <choice> <element name="reservedName" type="normalizedString" minOccurs="0" maxOccurs="unbounded"/> <element name="reservedNameURI" type="anyURI" minOccurs="0"/> </choice> </complexType> <complexType name="domainNameType"> <sequence> <element name="minLength" type="unsignedShort" minOccurs="0"/> <element name="maxLength" type="unsignedShort" minOccurs="0"/> <element name="alphaNumStart" type="boolean" minOccurs="0" default="false"/> <element name="alphaNumEnd" type="boolean" minOccurs="0" default="false"/> <element name="onlyDnsChars" type="boolean" minOccurs="0" default="true"/> <element name="regex" type="registry:regexType" minOccurs="0" maxOccurs="unbounded"/> <element name="reservedNames" type="registry:reservedNamesType" minOccurs="0"/> </sequence> <attribute name="level" use="required"> <simpleType> <restriction base="unsignedShort"> <minInclusive value="2"/> </restriction> </simpleType> </attribute> </complexType> <complexType name="regexType"> <sequence> <element name="expression" type="string"/> <element name="explanation" minOccurs="0"> <complexType> <simpleContent> <extension base="normalizedString"> <attribute name="lang" type="language" default="en"/> </extension> </simpleContent> </complexType> </element> </sequence> </complexType> <simpleType name="variantStrategyType"> <restriction base="token"> <enumeration value="blocked"/> <enumeration value="restricted"/> <enumeration value="open"/> </restriction> </simpleType> <complexType name="languageType"> <sequence> <element name="table" type="anyURI" minOccurs="0"/> <element name="variantStrategy" type="registry:variantStrategyType" minOccurs="0"/> </sequence> <attribute name="code" type="language" use="required"/> </complexType> <complexType name="idnType"> <sequence> <element name="idnVersion" type="token" minOccurs="0"/> <element name="idnaVersion" type="token"/> <element name="unicodeVersion" type="token"/> <element name="encoding" type="token" minOccurs="0" default="Punycode"/> <element name="commingleAllowed" type="boolean" minOccurs="0" default="false"/> <element name="language" type="registry:languageType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="dContactType"> <complexContent> <extension base="registry:minMaxType"> <attribute name="type" use="required"> <simpleType> <restriction base="token"> <enumeration value="admin"/> <enumeration value="billing"/> <enumeration value="tech"/> </restriction> </simpleType> </attribute> </extension> </complexContent> </complexType> <complexType name="minMaxType"> <sequence> <element name="min" type="unsignedShort"/> <element name="max" type="unsignedShort" minOccurs="0"/> </sequence> </complexType> <complexType name="minMaxPeriod"> <sequence> <element name="min" type="registry:periodType"/> <element name="max" type="registry:periodType"/> <element name="default" type="registry:periodType"/> </sequence> </complexType> <complexType name="dPeriodType"> <choice> <element name="length" type="registry:minMaxPeriod"/> <element name="serverDecided"> <complexType/> </element> </choice> <attribute name="command" type="token" use="required"/> </complexType> <complexType name="gPeriodType"> <simpleContent> <extension base="registry:periodType"> <attribute name="command" type="token" use="required"/> </extension> </simpleContent> </complexType> <complexType name="periodType"> <simpleContent> <extension base="unsignedShort"> <attribute name="unit" type="registry:pUnitType" use="required"/> </extension> </simpleContent> </complexType> <simpleType name="pUnitType"> <restriction base="token"> <enumeration value="y"/> <enumeration value="m"/> <enumeration value="d"/> <enumeration value="h"/> </restriction> </simpleType> <complexType name="rgpType"> <sequence> <element name="redemptionPeriod" type="registry:periodType"/> <element name="pendingRestore" type="registry:periodType"/> <element name="pendingDelete" type="registry:periodType"/> </sequence> </complexType> <complexType name="keyInterfaceType"> <sequence> <element name="min" type="unsignedShort"/> <element name="max" type="unsignedShort"/> <element name="alg" type="token" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="dsInterfaceType"> <complexContent> <extension base="registry:keyInterfaceType"> <sequence> <element name="digestType" type="token" minOccurs="0" maxOccurs="unbounded"/> </sequence> </extension> </complexContent> </complexType> <complexType name="maxSigLifeType"> <sequence> <element name="clientDefined" type="boolean" minOccurs="0" default="false"/> <element name="default" type="int" minOccurs="0"/> <element name="min" type="int" minOccurs="0"/> <element name="max" type="int" minOccurs="0"/> </sequence> </complexType> <complexType name="dnssecType"> <sequence> <choice> <element name="dsDataInterface" type="registry:dsInterfaceType"/> <element name="keyDataInterface" type="registry:keyInterfaceType"/> </choice> <element name="maxSigLife" type="registry:maxSigLifeType"/> <element name="urgent" type="boolean" minOccurs="0" default="false"/> </sequence> </complexType> <complexType name="supportedStatusType"> <sequence> <element name="status" type="token" minOccurs="1" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="keyValuesType"> <sequence> <element name="value" maxOccurs="unbounded"> <complexType> <simpleContent> <extension base="normalizedString"> <attribute name="key" type="token" use="required"/> </extension> </simpleContent> </complexType> </element> </sequence> </complexType> <complexType name="domainType"> <sequence> <element name="domainName" type="registry:domainNameType" maxOccurs="unbounded"/> <element name="idn" type="registry:idnType" minOccurs="0"/> <element name="premiumSupport" type="boolean" minOccurs="0" default="false"/> <element name="contactsSupported" type="boolean" minOccurs="0" default="true"/> <element name="contact" type="registry:dContactType" minOccurs="0" maxOccurs="3"/> <element name="ns" type="registry:minMaxType"/> <element name="childHost" type="registry:minMaxType"/> <element name="period" type="registry:dPeriodType" minOccurs="0" maxOccurs="unbounded"/> <element name="transferHoldPeriod" type="registry:periodType"/> <element name="gracePeriod" type="registry:gPeriodType" minOccurs="0" maxOccurs="unbounded"/> <element name="rgp" type="registry:rgpType" minOccurs="0"/> <element name="dnssec" type="registry:dnssecType" minOccurs="0"/> <element name="maxCheckDomain" type="unsignedShort"/> <element name="supportedStatus" type="registry:supportedStatusType" minOccurs="0"/> <element name="authInfoRegex" type="registry:regexType" minOccurs="0"/> <element name="customData" type="registry:keyValuesType" minOccurs="0"/> </sequence> </complexType> <simpleType name="intHostSharePolicyType"> <restriction base="token"> <enumeration value="perZone"/> <enumeration value="perSystem"/> </restriction> </simpleType> <simpleType name="extHostSharePolicyType"> <restriction base="token"> <enumeration value="perRegistrar"/> <enumeration value="perZone"/> <enumeration value="perSystem"/> </restriction> </simpleType> <complexType name="intHostPolicyType"> <sequence> <element name="minIP" type="unsignedShort"/> <element name="maxIP" type="unsignedShort"/> <element name="sharePolicy" type="registry:intHostSharePolicyType" minOccurs="0"/> </sequence> </complexType> <complexType name="extHostPolicyType"> <sequence> <element name="minIP" type="unsignedShort"/> <element name="maxIP" type="unsignedShort"/> <element name="sharePolicy" type="registry:extHostSharePolicyType" minOccurs="0"/> </sequence> </complexType> <complexType name="hostType"> <sequence> <element name="internal" type="registry:intHostPolicyType"/> <element name="external" type="registry:extHostPolicyType"/> <element name="nameRegex" type="registry:regexType" minOccurs="0" maxOccurs="unbounded"/> <element name="maxCheckHost" type="unsignedShort"/> <element name="supportedStatus" type="registry:supportedStatusType" minOccurs="0"/> <element name="customData" type="registry:keyValuesType" minOccurs="0"/> </sequence> </complexType> <complexType name="minMaxLength"> <sequence> <element name="minLength" type="unsignedShort"/> <element name="maxLength" type="unsignedShort"/> </sequence> </complexType> <simpleType name="contactSharePolicyType"> <restriction base="token"> <enumeration value="perZone"/> <enumeration value="perSystem"/> </restriction> </simpleType> <complexType name="streetType"> <complexContent> <extension base="registry:minMaxLength"> <sequence> <element name="minEntry" type="unsignedShort"/> <element name="maxEntry" type="unsignedShort"/> </sequence> </extension> </complexContent> </complexType> <complexType name="contactAddressType"> <sequence> <element name="street" type="registry:streetType"/> <element name="city" type="registry:minMaxLength"/> <element name="sp" type="registry:minMaxLength"/> <element name="pc" type="registry:minMaxLength"/> </sequence> </complexType> <complexType name="postalType"> <sequence> <element name="name" type="registry:minMaxLength"/> <element name="org" type="registry:minMaxLength"/> <element name="address" type="registry:contactAddressType"/> <element name="voiceRequired" type="boolean" minOccurs="0" default="false"/> <element name="voiceExt" type="registry:minMaxLength" minOccurs="0"/> <element name="faxExt" type="registry:minMaxLength" minOccurs="0"/> <element name="emailRegex" type="registry:regexType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="contactType"> <sequence> <element name="contactIdRegex" type="registry:regexType" minOccurs="0"/> <element name="sharePolicy" type="registry:contactSharePolicyType" minOccurs="0"/> <element name="intSupport" type="boolean"/> <element name="locSupport" type="boolean"/> <element name="postalInfo" type="registry:postalType"/> <element name="maxCheckContact" type="unsignedShort"/> <element name="authInfoRegex" type="registry:regexType" minOccurs="0"/> <element name="clientDisclosureSupported" type="boolean" minOccurs="0" default="false"/> <element name="supportedStatus" type="registry:supportedStatusType" minOccurs="0"/> <element name="transferHoldPeriod" type="registry:periodType" minOccurs="0"/> <element name="customData" type="registry:keyValuesType" minOccurs="0"/> </sequence> </complexType> </schema> END
The mapping extensions described in this document do not provide any security services beyond those described by EPP [RFC5730] and protocol layers used by EPP. The security considerations described in these other specifications apply to this specification as well.