Network Working Group | J. Gould |
Internet-Draft | L. Jia |
Intended status: Standards Track | VeriSign, Inc. |
Expires: April 25, 2019 | R. Carney |
J. Kolker | |
GoDaddy Inc. | |
October 22, 2018 |
Registry Mapping for the Extensible Provisioning Protocol (EPP)
draft-gould-carney-regext-registry-04
This document describes an Extensible Provisioning Protocol (EPP) mapping for provisioning registry zones (e.g. top-level domains) in a Domain Name Registry. The attributes of a registry zone include the features and policies of the registry zone.
This Internet-Draft is submitted in full conformance with the provisions of BCP 78 and BCP 79.
Internet-Drafts are working documents of the Internet Engineering Task Force (IETF). Note that other groups may also distribute working documents as Internet-Drafts. The list of current Internet-Drafts is at https://datatracker.ietf.org/drafts/current/.
Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet-Drafts as reference material or to cite them other than as "work in progress."
This Internet-Draft will expire on April 25, 2019.
Copyright (c) 2018 IETF Trust and the persons identified as the document authors. All rights reserved.
This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (https://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
This document describes an extension mapping for version 1.0 of the Extensible Provisioning Protocol (EPP). This document describes a Domain Name Registry Mapping, referred to as Registry Mapping, for the Extensible Provisioning Protocol (EPP). A Domain Name Registry can service one or more registry zones (e.g. top-level domains) with a variety of supported services and policies. A registry zone, also referred to as a "zone" in this document, is a domain name that the Domain Name Registry supports provisioning operations to manage. The registry zone and the associated DNS zone has an overlapping data set, where the registry zone is the source for the generation of a DNS zone. A registry zone is typically a top-level domain name, but it can be a domain name at any domain name level. A registry zone can be the source for multiple resolution services like DNS and WHOIS.
This mapping enables the provisioning of the features and policies of the registry zones in the Domain Name Registry. A Domain Name Registry MAY support a subset of all of the commands defined in this mapping and can authorize different clients to execute specific commands. For example, all clients may be capable of executing the EPP Query Commands, while internal clients or pre-defined external clients may be capable of executing the EPP Transform Commands for a specific set of zones. It is up to server policy what commands are supported and to define the clients that are authorized to execute the commands for the registry zones. The server MUST return a 2101 error response for an unimplemented command and MUST return a 2201 error response for an unauthorized command. The server policy can be defined out-of-band or in a seperate EPP extension.
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.
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.
The XML namespace prefix "registry" is used for the namespace "urn:ietf:params:xml:ns:epp:registry-0.2", 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 zone name is an element that includes an OPTIONAL "form" attribute that defines the form of the zone name as either "aLabel" or "uLabel", with the default value of "aLabel". The "aLabel" form of a zone name contains all ASCII name labels that conform to [RFC0952] and [RFC1123]. The "uLabel" form of a zone name that includes one or more non-ASCII name labels that can be represented as ASCII labels using [RFC5890].
At the time of this writing, [RFC5890] 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.
A schedule is defined using the <registry:schedule> element, with the required "frequency" attribute that defines the frequency of execution. The "frequency" attribute has the possible values of "daily", "weekly", and "monthy". The time zone is defined using the XML schema "time" type conventions of UTC and offsets from UTC, or using the OPTIONAL "tz" attribute that defines the named time zone. For example, the named Eastern time zone can be specified using the setting "tz=EST5EDT".
When the "frequency" attribute is set to "weekly", the "dayOfWeek" attribute MUST be set with a value between 0 (Sunday) to 6 (Saturday), to define the day of week of execution.
When the "frequency" attribute is set to "monthy", the "dayOfMonth" attribute MUST be set with a value between 1 and 31, to define the day of month of execution. Execution will not occur in the current month if the "dayOfMonth" value is out-of-range for the current month (e.g, 29 - 31).
The following are examples of different <registry:schedule> element definitions:
Example daily schedule at 2 PM in the Eastern time zone:
<registry:schedule frequency="daily" tz="EST5EDT"> 14:00:00 </registry:schedule>
Example daily schedule at 5 PM EST (5 UTC offset):
<registry:schedule frequency="daily"> 07:00:00-05:00 </registry:schedule>
Example weekly schedule at midnight UTC on Sunday:
<registry:schedule frequency="weekly" dayOfWeek="0"> 00:00:00Z </registry:schedule>
Example monthly schedule at 5 PM UTC on the 15th of the month:
<registry:schedule frequency="monthly" dayOfMonth="15"> 17:00:00Z </registry:schedule>
A regular expression element contains a <registry:expression> child element that defines the regular expression to apply with an OPTIONAL <registry:description> child element that describes the regular expression with an OPTIONAL "lang" attribute that defines the language of the description, with a default value of "en" (English). The <registry:expression> element MUST conform to the Perl-compatible Regular Expression (PCRE) syntax. Programming languages support different sets of PCRE features, so the server SHOULD define a PCRE that leverages features that are supported by a broad set of client programming languages.
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: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: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:unsupportedData>fail </registry:unsupportedData> <registry:batch> <registry:batchJob> <registry:name>localTzBatch</registry:name> <registry:description> Batch with multiple local time schedules (name and offset) </registry:description> <registry:schedule frequency="daily" tz="EST5EDT"> 04:00:00 </registry:schedule> <registry:schedule frequency="daily"> 07:00:00-05:00 </registry:schedule> </registry:batchJob> <registry:batchJob> <registry:name>multiBatchSchedule</registry:name> <registry:description> Batch with multiple UTC schedules </registry:description> <registry:schedule frequency="daily"> 12:00:00Z </registry:schedule> <registry:schedule frequency="weekly" dayOfWeek="0"> 00:00:00Z </registry:schedule> <registry:schedule frequency="monthly" dayOfMonth="15"> 17:00:00Z </registry:schedule> </registry:batchJob> </registry:batch> <registry:system> <registry:zone form="aLabel">EXAMPLE </registry:zone> <registry:zone form="aLabel">EXAMPLE2 </registry:zone> </registry:system> <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:aLabelSupported>true </registry:aLabelSupported> <registry:uLabelSupported>false </registry:uLabelSupported> <registry:nameRegex> <registry:expression> ^[a-zA-Z\d][a-zA-Z\d\-]{4,49}$ </registry:expression> <registry:description> 5 to 50 DNS characters starting with alphanumeric </registry:description> </registry:nameRegex> <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>1</registry:max> </registry:contact> <registry:contact type="tech"> <registry:min>1</registry:min> <registry:max>1</registry:max> </registry:contact> <registry:contact type="billing"> <registry:min>0</registry:min> <registry:max>0</registry:max> </registry:contact> <registry:contact type="custom" name="abuse" description="Abuse Contact" > <registry:min>0</registry:min> <registry:max>1</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:exceedMaxExDate command="renew"> fail </registry:exceedMaxExDate> <registry:exceedMaxExDate command="transfer"> clip </registry:exceedMaxExDate> <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:expiryPolicy>autoRenew </registry:expiryPolicy> <registry:nullAuthInfoSupported>false </registry:nullAuthInfoSupported> <registry:hostModelSupported>hostObj </registry:hostModelSupported> </registry:domain> <registry:host> <registry:internal> <registry:minIP>1</registry:minIP> <registry:maxIP>13</registry:maxIP> <registry:sharePolicy>perSystem </registry:sharePolicy> <registry:uniqueIpAddressesRequired>false </registry:uniqueIpAddressesRequired> </registry:internal> <registry:external> <registry:minIP>0</registry:minIP> <registry:maxIP>0</registry:maxIP> <registry:sharePolicy>perSystem </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:invalidIP>http://www.example.com/invalidip-1.txt </registry:invalidIP> <registry:invalidIP>http://www.example.com/invalidip-2.txt </registry:invalidIP> </registry:host> <registry:contact> <registry:contactIdRegex> <registry:expression>^.*$ </registry:expression> </registry:contactIdRegex> <registry:contactIdPrefix>EX </registry:contactIdPrefix> <registry:sharePolicy>perZone </registry:sharePolicy> <registry:postalInfoTypeSupport>locOrInt </registry:postalInfoTypeSupport> <registry:postalInfo> <registry:locCharRegex> <registry:expression>^.*$ </registry:expression> </registry:locCharRegex> <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:privacyContactSupported>true </registry:privacyContactSupported> <registry:proxyContactSupported>true </registry:proxyContactSupported> </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 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="urn:ietf:params:xml:ns:epp:registry-0.2"> C: <registry:name>EXAMPLE1</registry:name> C: <registry:name>EXAMPLE2</registry:name> C: <registry:name>EXAMPLE3</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: "urn:ietf:params:xml:ns:epp:registry-0.2"> S: <registry:cd> S: <registry:name avail="0">EXAMPLE1</registry:name> S: <registry:reason>Client not authorized S: </registry:reason> S: </registry:cd> S: <registry:cd> S: <registry:name avail="0">EXAMPLE2 S: </registry:name> S: <registry:reason>Already supported S: </registry:reason> S: </registry:cd> S: <registry:cd> S: <registry:name avail="1">EXAMPLE3 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 one of the following three child elements:
Example <info> command to query for a summary set of attributes for all of the accessible and available 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="urn:ietf:params:xml:ns:epp:registry-0.2"> C: <registry:all scope="both"/> C: </registry:info> C: </info> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
Example <info> command to query for the full set of "EXAMPLE" 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="urn:ietf:params:xml:ns:epp:registry-0.2"> C: <registry:name>EXAMPLE</registry:name> C: </registry:info> C: </info> C: <clTRID>ABC-12345</clTRID> C: </command> C:</epp>
Example <info> command to query for registry system 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="urn:ietf:params:xml:ns:epp:registry-0.2"> C: <registry:system/> 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 three 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="urn:ietf:params:xml:ns:epp:registry-0.2"> S: <registry:zoneList> S: <registry:zone accessible="true"> 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 accessible="false"> 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="urn:ietf:params:xml:ns:epp:registry-0.2"> S: <registry:zone accessible="true"> 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>
Example <info> response to query for the registry system 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="urn:ietf:params:xml:ns:epp:registry-0.2"> S: <registry:system> S: <registry:maxConnections>200 S: </registry:maxConnections> S: <registry:idleTimeout>600000 S: </registry:idleTimeout> S: <registry:absoluteTimeout>86400000 S: </registry:absoluteTimeout> S: <registry:commandTimeout>10000 S: </registry:commandTimeout> S: <registry:transLimit perMs="1000">10 S: </registry:transLimit> S: </registry:system> 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="urn:ietf:params:xml:ns:epp:registry-0.2"> 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="urn:ietf:params:xml:ns:epp:registry-0.2"> S: <registry:name>EXAMPLE</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="urn:ietf:params:xml:ns:epp:registry-0.2"> 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="urn:ietf:params:xml:ns:epp:registry-0.2"> C: <registry:zone> C: <registry:name>EXAMPLE</registry:name> C: ... C: </registry:zone> C: </registry:update> C: </update> 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="urn:ietf:params:xml:ns:epp:registry-0.2" 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="urn:ietf:params:xml:ns:epp:registry-0.2" 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="registry:zoneNameType" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Child elements of the <delete> command. --> <complexType name="sNameType"> <sequence> <element name="name" type="registry:zoneNameType"/> </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> <attribute name="scope" default="accessible"> <simpleType> <restriction base="token"> <enumeration value="accessible"/> <enumeration value="available"/> <enumeration value="both"/> </restriction> </simpleType> </attribute> </complexType> </element> <element name="name" type="registry:zoneNameType"/> <element name="system"> <complexType/> </element> </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="registry:zoneNameType"/> <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="registry:zoneNameType"> <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:zoneInfDataType"/> <element name="system" type="registry:systemType"/> </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="registry:zoneNameType"/> <element name="crDate" type="dateTime"/> <element name="upDate" type="dateTime" minOccurs="0"/> </sequence> <attribute name="accessible" type="boolean" default="true"/> </complexType> <complexType name="zoneType"> <sequence> <element name="name" type="registry:zoneNameType"/> <element name="group" type="token" minOccurs="0"/> <element name="services" type="registry:servicesType" minOccurs="0"/> <element name="crID" type="eppcom:clIDType" minOccurs="0"/> <element name="crDate" type="dateTime" minOccurs="0"/> <element name="upID" type="eppcom:clIDType" minOccurs="0"/> <element name="upDate" type="dateTime" minOccurs="0"/> <element name="unsupportedData" type="registry:unsupportedDataType" minOccurs="0"/> <element name="batch" type="registry:batchType" minOccurs="0"/> <element name="system" type="registry:zoneSystemType" 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="zoneInfDataType"> <complexContent> <extension base="registry:zoneType"> <attribute name="accessible" type="boolean" default="true"/> </extension> </complexContent> </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="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="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="aLabelSupported" type="boolean" minOccurs="0" default="true"/> <element name="uLabelSupported" type="boolean" minOccurs="0" default="false"/> <element name="nameRegex" type="registry:regexType" minOccurs="0"/> <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="description" minOccurs="0" > <complexType> <simpleContent> <extension base="normalizedString"> <attribute name="lang" type="language" default="en"/> </extension> </simpleContent> </complexType> </element> </sequence> </complexType> <simpleType name="zoneFormType"> <restriction base="token"> <enumeration value="aLabel"/> <enumeration value="uLabel"/> </restriction> </simpleType> <complexType name="zoneNameType"> <simpleContent> <extension base="eppcom:labelType"> <attribute name="form" type="registry:zoneFormType" default="aLabel"/> </extension> </simpleContent> </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="tech"/> <enumeration value="billing"/> <enumeration value="custom"/> </restriction> </simpleType> </attribute> <attribute name="name" type="token"/> <attribute name="description" type="token"/> </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> <simpleType name="exceedMaxExDateEnumType"> <restriction base="token"> <enumeration value="fail"/> <enumeration value="clip"/> <enumeration value="disableRenewal"/> </restriction> </simpleType> <complexType name="exceedMaxExDateType"> <simpleContent> <extension base="registry:exceedMaxExDateEnumType"> <attribute name="command" type="token" use="required"/> </extension> </simpleContent> </complexType> <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="flags" type="unsignedShort" minOccurs="0" maxOccurs="unbounded"/> <element name="protocol" type="unsignedByte" minOccurs="0" maxOccurs="unbounded"/> <element name="alg" type="token" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="dsInterfaceType"> <sequence> <element name="min" type="unsignedShort"/> <element name="max" type="unsignedShort"/> <element name="alg" type="token" minOccurs="0" maxOccurs="unbounded"/> <element name="digestType" type="token" minOccurs="0" maxOccurs="unbounded"/> </sequence> </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="scheduleType"> <simpleContent> <extension base="time"> <attribute name="frequency" use="required" > <simpleType> <restriction base="token"> <enumeration value="daily"/> <enumeration value="weekly"/> <enumeration value="monthly"/> </restriction> </simpleType> </attribute> <attribute name="dayOfWeek" > <simpleType> <restriction base="byte"> <minInclusive value="0"/> <maxInclusive value="6"/> </restriction> </simpleType> </attribute> <attribute name="dayOfMonth" > <simpleType> <restriction base="byte"> <minInclusive value="1"/> <maxInclusive value="31"/> </restriction> </simpleType> </attribute> <attribute name="tz" type="token"/> </extension> </simpleContent> </complexType> <complexType name="batchJobType"> <sequence> <element name="name" type="token"/> <element name="description" type="token" minOccurs="0"/> <!-- UNIX crontab job schedule format --> <element name="schedule" type="registry:scheduleType" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Information about the batch jobs --> <complexType name="batchType"> <sequence> <element name="batchJob" type="registry:batchJobType" minOccurs="1" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Information the TLDs that makeup the system, which is associated with the "perSystem" sharePolicy. --> <complexType name="zoneSystemType"> <sequence> <element name="zone" type="registry:zoneNameType" minOccurs="1" maxOccurs="unbounded"/> </sequence> </complexType> <simpleType name="expiryPolicyType"> <restriction base="token"> <enumeration value="autoRenew"/> <enumeration value="autoDelete"/> <enumeration value="autoExpire"/> <enumeration value="autoParked"/> </restriction> </simpleType> <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="unbounded"/> <element name="ns" type="registry:minMaxType"/> <element name="childHost" type="registry:minMaxType" minOccurs="0"/> <element name="period" type="registry:dPeriodType" minOccurs="0" maxOccurs="unbounded"/> <element name="exceedMaxExDate" type="registry:exceedMaxExDateType" 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="expiryPolicy" type="registry:expiryPolicyType" minOccurs="0" default="autoRenew"/> <element name="nullAuthInfoSupported" type="boolean" minOccurs="0" default="false"/> <element name="hostModelSupported" default="hostObj" minOccurs="0"> <simpleType> <restriction base="token"> <enumeration value="hostObj"/> <enumeration value="hostAttr"/> </restriction> </simpleType> </element> </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> <simpleType name="postalInfoTypeSupportType"> <restriction base="token"> <enumeration value="loc"/> <enumeration value="int"/> <enumeration value="locOrInt"/> <enumeration value="locAndInt"/> <enumeration value="intOptLoc"/> <enumeration value="locOptInt"/> </restriction> </simpleType> <complexType name="intHostPolicyType"> <sequence> <element name="minIP" type="unsignedShort"/> <element name="maxIP" type="unsignedShort"/> <element name="sharePolicy" type="registry:intHostSharePolicyType" minOccurs="0"/> <element name="uniqueIpAddressesRequired" type="boolean" minOccurs="0" default="false"/> </sequence> </complexType> <complexType name="extHostPolicyType"> <sequence> <element name="minIP" type="unsignedShort"/> <element name="maxIP" type="unsignedShort"/> <element name="sharePolicy" type="registry:extHostSharePolicyType" minOccurs="0"/> <element name="uniqueIpAddressesRequired" type="boolean" minOccurs="0" default="false"/> </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"/> <element name="maxCheckHost" type="unsignedShort" minOccurs="0"/> <element name="supportedStatus" type="registry:supportedStatusType" minOccurs="0"/> <element name="invalidIP" type="anyURI" minOccurs="0" maxOccurs="unbounded"/> </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="locCharRegex" type="registry:regexType" minOccurs="0"/> <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"/> </sequence> </complexType> <complexType name="contactType"> <sequence> <element name="contactIdRegex" type="registry:regexType" minOccurs="0"/> <element name="contactIdPrefix" type="token" minOccurs="0"/> <element name="sharePolicy" type="registry:contactSharePolicyType" minOccurs="0"/> <element name="postalInfoTypeSupport" type="registry:postalInfoTypeSupportType"/> <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="privacyContactSupported" type="boolean" minOccurs="0" default="true"/> <element name="proxyContactSupported" type="boolean" minOccurs="0" default="true"/> </sequence> </complexType> <complexType name="transLimitType"> <simpleContent> <extension base="int"> <attribute name="perMs" type="int" use="required"/> </extension> </simpleContent> </complexType> <complexType name="systemType"> <sequence> <element name="maxConnections" type="int" minOccurs="0"/> <element name="idleTimeout" type="int" minOccurs="0"/> <element name="absoluteTimeout" type="int" minOccurs="0"/> <element name="commandTimeout" type="int" minOccurs="0"/> <element name="transLimit" type="registry:transLimitType" minOccurs="0"/> </sequence> </complexType> <simpleType name="unsupportedDataType"> <restriction base="token"> <enumeration value="fail"/> <enumeration value="ignore"/> </restriction> </simpleType> </schema> END
This document uses URNs to describe XML namespaces and XML schemas conforming to a registry mechanism described in [RFC3688].
Registration request for the registry namespace:
Registration request for the registry XML schema:
The EPP extension described in this document should be registered by the IANA in the EPP Extension Registry described in [RFC7451]. The details of the registration are as follows:
Name of Extension: "Registry Mapping for the Extensible Provisioning Protocol (EPP)"
Document status: Standards Track
Reference: (insert reference to RFC version of this document)
Registrant Name and Email Address: IESG, <iesg@ietf.org>
TLDs: Any
IPR Disclosure: TBD
Status: Active
Notes: None
Note to RFC Editor: Please remove this section and the reference to RFC 7942 before publication.
This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in RFC 7942. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.
According to RFC 7942, "this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit".
Organization: Verisign Inc.
Name: Verisign EPP SDK
Description: The Verisign EPP SDK includes both a full client implementation and a full server stub implementation of draft-gould-carney-regext-registry.
Level of maturity: Development
Coverage: All aspects of the protocol are implemented.
Licensing: GNU Lesser General Public License
Contact: jgould@verisign.com
URL: https://www.verisign.com/en_US/channel-resources/domain-registry-products/epp-sdks
The mapping extensions described in this document do not provide any security services beyond those described by EPP and protocol layers used by EPP. The security considerations described in these other specifications apply to this specification as well.
The authors wish to thank the following persons for their feedback and suggestions:
[pcre] | Hazel, P., "Perl-compatible Regular Expressions (PCRE)", October 2016. |