diff options
Diffstat (limited to 'doc/rfc/rfc3730.txt')
-rw-r--r-- | doc/rfc/rfc3730.txt | 3867 |
1 files changed, 3867 insertions, 0 deletions
diff --git a/doc/rfc/rfc3730.txt b/doc/rfc/rfc3730.txt new file mode 100644 index 0000000..9ceba7f --- /dev/null +++ b/doc/rfc/rfc3730.txt @@ -0,0 +1,3867 @@ + + + + + + +Network Working Group S. Hollenbeck +Request for Comments: 3730 VeriSign, Inc. +Category: Standards Track March 2004 + + + Extensible Provisioning Protocol (EPP) + +Status of this Memo + + This document specifies an Internet standards track protocol for the + Internet community, and requests discussion and suggestions for + improvements. Please refer to the current edition of the "Internet + Official Protocol Standards" (STD 1) for the standardization state + and status of this protocol. Distribution of this memo is unlimited. + +Copyright Notice + + Copyright (C) The Internet Society (2004). All Rights Reserved. + +Abstract + + This document describes an application layer client-server protocol + for the provisioning and management of objects stored in a shared + central repository. Specified in XML, the protocol defines generic + object management operations and an extensible framework that maps + protocol operations to objects. This document includes a protocol + specification, an object mapping template, and an XML media type + registration. + +Table of Contents + + 1. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 2 + 1.1. Conventions Used in This Document . . . . . . . . . . . 3 + 2. Protocol Description. . . . . . . . . . . . . . . . . . . . . 3 + 2.1. Transport Mapping Considerations. . . . . . . . . . . . 6 + 2.2. Protocol Identification . . . . . . . . . . . . . . . . 7 + 2.3. Hello Format. . . . . . . . . . . . . . . . . . . . . . 7 + 2.4. Greeting Format . . . . . . . . . . . . . . . . . . . . 8 + 2.5. Command Format. . . . . . . . . . . . . . . . . . . . . 11 + 2.6. Response Format . . . . . . . . . . . . . . . . . . . . 12 + 2.7. Protocol Extension Framework. . . . . . . . . . . . . . 16 + 2.7.1. Protocol Extension. . . . . . . . . . . . . . . 16 + 2.7.2. Object Extension. . . . . . . . . . . . . . . . 17 + 2.7.3. Command-Response Extension. . . . . . . . . . . 18 + 2.8. Object Identification . . . . . . . . . . . . . . . . . 19 + 2.9. Protocol Commands . . . . . . . . . . . . . . . . . . . 19 + 2.9.1. Session Management Commands . . . . . . . . . . 20 + 2.9.1.1. EPP <login> Command . . . . . . . . . 20 + + + +Hollenbeck Standards Track [Page 1] + +RFC 3730 EPP March 2004 + + + 2.9.1.2. EPP <logout> Command. . . . . . . . . 22 + 2.9.2. Query Commands. . . . . . . . . . . . . . . . . 23 + 2.9.2.1. EPP <check> Command . . . . . . . . . 24 + 2.9.2.2. EPP <info> Command. . . . . . . . . . 26 + 2.9.2.3. EPP <poll> Command. . . . . . . . . . 27 + 2.9.2.4. EPP <transfer> Query Command. . . . . 32 + 2.9.3. Object Transform Commands . . . . . . . . . . . 34 + 2.9.3.1. EPP <create> Command. . . . . . . . . 34 + 2.9.3.2. EPP <delete> Command. . . . . . . . . 35 + 2.9.3.3. EPP <renew> Command . . . . . . . . . 37 + 2.9.3.4. EPP <transfer> Command. . . . . . . . 38 + 2.9.3.5. EPP <update> Command. . . . . . . . . 41 + 3. Result Codes. . . . . . . . . . . . . . . . . . . . . . . . . 42 + 4. Formal Syntax . . . . . . . . . . . . . . . . . . . . . . . . 48 + 4.1. Base Schema . . . . . . . . . . . . . . . . . . . . . . 49 + 4.2. Shared Structure Schema . . . . . . . . . . . . . . . . 58 + 5. Internationalization Considerations . . . . . . . . . . . . . 60 + 6. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 61 + 7. Security Considerations . . . . . . . . . . . . . . . . . . . 62 + 8. Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . 62 + 9. References. . . . . . . . . . . . . . . . . . . . . . . . . . 63 + 9.1. Normative References. . . . . . . . . . . . . . . . . . 63 + 9.2. Informative References. . . . . . . . . . . . . . . . . 64 + Appendix A: Object Mapping Template . . . . . . . . . . . . . . . 65 + Appendix B: Media Type Registration: application/epp+xml. . . . . 67 + Author's Address. . . . . . . . . . . . . . . . . . . . . . . . . 68 + Full Copyright Statement. . . . . . . . . . . . . . . . . . . . . 69 + +1. Introduction + + This document describes specifications for the Extensible + Provisioning Protocol (EPP) version 1.0, an XML text protocol that + permits multiple service providers to perform object provisioning + operations using a shared central object repository. EPP is + specified using the Extensible Markup Language (XML) 1.0 as described + in [XML] and XML Schema notation as described in [XMLS-1] and [XMLS- + 2]. EPP meets and exceeds the requirements for a generic registry + registrar protocol as described in [RFC3375]. + + EPP content is identified by MIME media type application/epp+xml. + Registration information for this media type is included in an + appendix to this document. + + EPP is intended for use in diverse operating environments where + transport and security requirements vary greatly. It is unlikely + that a single transport or security specification will meet the needs + of all anticipated operators, so EPP was designed for use in a + + + + +Hollenbeck Standards Track [Page 2] + +RFC 3730 EPP March 2004 + + + layered protocol environment. Bindings to specific transport and + security protocols are outside the scope of this specification. + + This original motivation for this protocol was to provide a standard + Internet domain name registration protocol for use between domain + name registrars and domain name registries. This protocol provides a + means of interaction between a registrar's applications and registry + applications. It is expected that this protocol will have additional + uses beyond domain name registration. + + XML is case sensitive. Unless stated otherwise, XML specifications + and examples provided in this document MUST be interpreted in the + character case presented to develop a conforming implementation. + +1.1. Conventions Used In This Document + + 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 [RFC2119]. + + 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 is provided only to illustrate element + relationships and is not a REQUIRED feature of this protocol. + +2. Protocol Description + + EPP is a stateful XML protocol that can be layered over multiple + transport protocols. Protected using lower-layer security protocols, + clients exchange identification, authentication, and option + information, and then engage in a series of client-initiated + command-response exchanges. All EPP commands are atomic (there is no + partial success or partial failure) and designed so that they can be + made idempotent (executing a command more than once has the same net + effect on system state as successfully executing the command once). + + EPP provides four basic service elements: service discovery, + commands, responses, and an extension framework that supports + definition of managed objects and the relationship of protocol + requests and responses to those objects. + + An EPP server MUST respond to client-initiated communication (which + can be either a lower-layer connection request or an EPP service + discovery message) by returning a greeting to a client. A server + MUST promptly respond to each EPP command with a coordinated response + that describes the results of processing the command. The following + server state machine diagram illustrates the message exchange process + in detail: + + + +Hollenbeck Standards Track [Page 3] + +RFC 3730 EPP March 2004 + + + | + V + +-----------------+ +-----------------+ + | Waiting for | Connected | Prepare | + | Client |----------------->| Greeting | + +-----------------+ or <hello> +-----------------+ + ^ | + | Close Connection Send | + | or Idle Greeting | + +-----------------+ V + | End | Timeout +-----------------+ + | Session |<-----------------| Waiting for | + +-----------------+ | Client | + ^ ^ ^ Send +-------->| Authentication | + | | | Response | +-----------------+ + | | | +--------------+ | + | | | | Prepare Fail | | <login> + | | +-----| Response | | Received + | | Send +--------------+ V + | | 2501 ^ +-----------------+ + | | Response | | Processing | + | | +---------| <login> | + | | Auth Fail +-----------------+ + | | | + | | | Auth OK + | | V + | | Timeout +-----------------+ + | +----------------------------| Waiting for | + | | Command | + | Send x5xx +-----------------+ + | Response +-----------------+ Send ^ | + +-----------| Prepare | Response | | Command + | Response |----------+ | Received + +-----------------+ V + ^ +-----------------+ + Command | | Processing | + Processed +----------| Command | + +-----------------+ + + Figure 1: EPP Server State Machine + + EPP commands fall into three categories: session management commands, + query commands, and data transform commands. Session management + commands are used to establish and end persistent sessions with an + EPP server. Query commands are used to perform read-only object + information retrieval operations. Transform commands are used to + perform read-write object management operations. + + + + +Hollenbeck Standards Track [Page 4] + +RFC 3730 EPP March 2004 + + + Commands are processed by a server in the order they are received + from a client. Though an immediate response confirming receipt and + processing of the command is produced by the server, the protocol + includes features that allow for offline review of transform commands + before the requested action is actually completed. In such + situations the response from the server MUST clearly note that the + command has been received and processed, but the requested action is + pending. The state of the corresponding object MUST clearly reflect + processing of the pending action. The server MUST also notify the + client when offline processing of the action has been completed. + Object mappings SHOULD describe standard formats for notices that + describe completion of offline processing. + + EPP uses XML namespaces to provide an extensible object management + framework and to identify schemas required for XML instance parsing + and validation. These namespaces and schema definitions are used to + identify both the base protocol schema and the schemas for managed + objects. The specific strings used to associate URIs and namespaces + (such as the string "foo" in "xmlns:foo") in EPP are illustrative and + are not needed for interoperability. + + All XML instances SHOULD begin with an <?xml?> declaration to + identify the version of XML that is being used, optionally identify + use of the character encoding used, and optionally provide a hint to + an XML parser that an external schema file is needed to validate the + XML instance. Conformant XML parsers recognize both UTF-8 (defined + in RFC 2279 [RFC2279]) and UTF-16 (defined in RFC 2781 [RFC2781]); + per RFC 2277 [RFC2277] UTF-8 is the RECOMMENDED character encoding + for use with EPP. + + Character encodings other than UTF-8 and UTF-16 are allowed by XML. + UTF-8 is the default encoding assumed by XML in the absence of an + "encoding" attribute or a byte order mark (BOM), thus the "encoding" + attribute in the XML declaration is OPTIONAL if UTF-8 encoding is + used. + + Normative section 4.3.3 and non-normative appendix F of [XML] + describe use of a BOM to identify the character encoding in the + absence of an XML declaration or encapsulating headers. Appendix F + includes a BOM to represent UTF-8 encoding, though section 4.3.3 + notes that a BOM is not needed to identify UTF-8 encoding. Section + 4.3.3 was later amended (see [XMLE]) to clarify that a BOM MAY be + used to identify UTF-8 encoding. EPP clients and servers MUST accept + a UTF-8 BOM if present, though emitting a UTF-8 BOM is NOT + RECOMMENDED. + + + + + + +Hollenbeck Standards Track [Page 5] + +RFC 3730 EPP March 2004 + + + Example XML declarations: + + <?xml version="1.0" encoding="UTF-8" standalone="no"?> + + <?xml version="1.0" standalone="no"?> + + <?xml version="1.0" encoding="UTF-8"?> + + <?xml version="1.0"?> + +2.1. Transport Mapping Considerations + + As described previously, EPP can be layered over multiple transport + protocols. There are, however, a common set of considerations that + MUST be addressed by any transport mapping defined for EPP. These + include: + + - The transport mapping MUST preserve command order. + + - The transport mapping MUST address the relationship between + sessions and the client-server connection concept. + + - The transport mapping MUST preserve the stateful nature of the + protocol. + + - The transport mapping MUST frame data units. + + - The transport mapping MUST be onto a transport such as TCP + [RFC793] or SCTP [RFC2960] that provides congestion avoidance that + follows RFC 2914 [RFC2914], or if it maps onto a protocol such as + SMTP [RFC2821] or BEEP [RFC3080], then the performance issues need + to take into account issues of overload, server availability and + so forth. + + - The transport mapping MUST ensure reliability. + + - The transport mapping MUST explicitly allow or prohibit + pipelining. + + Pipelining, also known as command streaming, is when a client sends + multiple commands to a server without waiting for each corresponding + response. After sending the commands, the client waits for the + responses to arrive in the order corresponding to the completed + commands. Performance gains can sometimes be realized with + pipelining, especially with high latency transports, but there are + additional considerations associated with defining a transport + mapping that supports pipelining: + + + + +Hollenbeck Standards Track [Page 6] + +RFC 3730 EPP March 2004 + + + - Commands MUST be processed independent of each other. + + - Depending on the transport, pipelining MAY be possible in the form + of sending a complete session in a well-defined "batch". + + - The transport mapping MUST describe how an error in processing a + command affects continued operation of the session. + + A transport mapping MUST explain how all of these requirements are + met given the transport protocol being used to exchange data. + +2.2. Protocol Identification + + All EPP XML instances MUST begin with an <epp> element. This element + identifies the start of an EPP protocol element, the namespace used + within the protocol, and the location of the protocol schema. The + <epp> start element and the associated </epp> ending element MUST be + applied to all structures sent by both clients and servers. + + Example "start" and "end" EPP elements: + + <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + epp-1.0.xsd"> + </epp> + +2.3. Hello Format + + EPP MAY be carried over both connection-oriented and connection-less + transport protocols. An EPP client MAY request a <greeting> from an + EPP server at any time by sending a <hello> to a server. Use of this + element is essential in a connection-less environment where a server + can not return a <greeting> in response to a client-initiated + connection. An EPP <hello> MUST be an empty element with no child + elements. + + Example <hello>: + + 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <hello/> + C:</epp> + + + + + +Hollenbeck Standards Track [Page 7] + +RFC 3730 EPP March 2004 + + +2.4. Greeting Format + + An EPP server responds to a successful connection and <hello> element + by returning a <greeting> element to the client. An EPP greeting + contains the following elements: + + - An <svID> element that contains the name of the server. + + - An <svDate> element that contains the server's current date and + time in UTC. + + - An <svcMenu> element that identifies the services supported by the + server, including: + + - One or more <version> elements that identify the protocol versions + supported by the server. + + - One or more <lang> elements that contain the identifiers of the + text response languages known by the server. Language identifiers + MUST be structured as documented in [RFC3066]. + + - One or more <objURI> elements that contain namespace URIs + representing the objects that the server is capable of managing. + A server MAY limit object management privileges on a per-client + basis. + + - An OPTIONAL <svcExtension> element that contains one or more + <extURI> elements that contain namespace URIs representing object + extensions supported by the server. + + - A <dcp> (data collection policy) element that contains child + elements used to describe the server's privacy policy for data + collection and management. Policy implications usually extend + beyond the client-server relationship. Both clients and servers + can have relationships with other entities that need to know the + server operator's data collection policy to make informed + provisioning decisions. Policy information MUST be disclosed to + provisioning entities, though the method of disclosing policy data + outside of direct protocol interaction is beyond the scope of this + specification. Child elements include the following: + + - An <access> element that describes the access provided by the + server to the client on behalf of the originating data source. + The <access> element MUST contain one of the following child + elements: + + <all/>: Access is given to all identified data. + + + + +Hollenbeck Standards Track [Page 8] + +RFC 3730 EPP March 2004 + + + <none/>: No access is provided to identified data. + + <null/>: Data is not persistent, so no access is possible. + + <personal/>: Access is given to identified data relating to + individuals and organizational entities. + + <personalAndOther/>: Access is given to identified data + relating to individuals, organizational entities, and other + data of a non-personal nature. + + <other/>: Access is given to other identified data of a non- + personal nature. + + - One or more <statement> elements that describe data collection + purposes, data recipients, and data retention. Each <statement> + element MUST contain a <purpose> element, a <recipient> element, + and a <retention> element. + + The <purpose> element MUST contain one or more of the following child + elements that describe the purposes for which data is collected: + + <admin/>: Administrative purposes. Information can be used for + administrative and technical support of the provisioning system. + + <contact/>: Contact for marketing purposes. Information can be + used to contact individuals, through a communications channel + other than the protocol, for the promotion of a product or + service. + + <prov/>: Object provisioning purposes. Information can be used to + identify objects and inter-object relationships. + + <other/>: Other purposes. Information may be used in other ways + not captured by the above definitions. + + The <recipient> element MUST contain one or more of the following + child elements that describes the recipients of collected data: + + <other/>: Other entities following unknown practices. + + <ours>: Server operator and/or entities acting as agents or + entities for whom the server operator is acting as an agent. + An agent in this instance is defined as a third party that + processes data only on behalf of the service provider for the + completion of the stated purposes. The <ours> element contains + an OPTIONAL <recDesc> element that can be used to describe the + recipient. + + + +Hollenbeck Standards Track [Page 9] + +RFC 3730 EPP March 2004 + + + <public/>: Public forums. + + <same/>: Other entities following server practices. + + <unrelated/>: Unrelated third parties. + + The <retention> element MUST contain one of the following child + elements that describes data retention practices: + + <business/>: Data persists per business practices. + + <indefinite/>: Data persists indefinitely. + + <legal/>: Data persists per legal requirements. + + <none/>: Data is not persistent, and is not retained for more + than a brief period of time necessary to make use of it during + the course of a single online interaction. + + <stated/>: Data persists to meet the stated purpose. + + - An OPTIONAL <expiry> element that describes the lifetime of the + policy. The <expiry> element MUST contain one of the following + child elements: + + <absolute/>: The policy is valid from the current date and time + until it expires on the specified date and time. + + <relative/>: The policy is valid from the current date and time + until the end of the specified duration. + + Data collection policy elements are based on work described in the + World Wide Web Consortium's Platform for Privacy Preferences [P3P] + specification. + + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 10] + +RFC 3730 EPP March 2004 + + + Example greeting: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <greeting> + S: <svID>Example EPP server epp.example.com</svID> + S: <svDate>2000-06-08T22:00:00.0Z</svDate> + S: <svcMenu> + S: <version>1.0</version> + S: <lang>en</lang> + S: <lang>fr</lang> + S: <objURI>urn:ietf:params:xml:ns:obj1</objURI> + S: <objURI>urn:ietf:params:xml:ns:obj2</objURI> + S: <objURI>urn:ietf:params:xml:ns:obj3</objURI> + S: <svcExtension> + S: <extURI>http://custom/obj1ext-1.0</extURI> + S: </svcExtension> + S: </svcMenu> + S: <dcp> + S: <access><all/></access> + S: <statement> + S: <purpose><admin/><prov/></purpose> + S: <recipient><ours/><public/></recipient> + S: <retention><stated/></retention> + S: </statement> + S: </dcp> + S: </greeting> + S:</epp> + +2.5. Command Format + + An EPP client interacts with an EPP server by sending a command to + the server and receiving a response from the server. In addition to + the standard EPP elements, an EPP command contains the following + elements: + + - A command element whose tag corresponds to one of the valid EPP + commands described in this document. The command element MAY + contain either protocol-specified or object-specified child + elements. + + - An OPTIONAL <extension> element that MAY be used for server- + defined command extensions. + + + + + +Hollenbeck Standards Track [Page 11] + +RFC 3730 EPP March 2004 + + + - An OPTIONAL <clTRID> (client transaction identifier) element that + MAY be used to uniquely identify the command to the client. + Clients are responsible for maintaining their own transaction + identifier space to ensure uniqueness. + + Example command with object-specified child elements: + + 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <info> + C: <obj:info xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <obj:name>example</obj:name> + C: </obj:info> + C: </info> + C: <clTRID>ABC-12345</clTRID> + C: </command> + C:</epp> + +2.6. Response Format + + An EPP server responds to a client command by returning a response to + the client. EPP commands are atomic, so a command will either + succeed completely or fail completely. Success and failure results + MUST NOT be mixed. In addition to the standard EPP elements, an EPP + response contains the following elements: + + - One or more <result> elements that document the success or failure + of command execution. If the command was processed successfully, + only one <result> element MUST be returned. If the command was + not processed successfully, multiple <result> elements MAY be + returned to document failure conditions. Each <result> element + contains the following attribute and child elements: + + - A "code" attribute whose value is a four-digit, decimal number + that describes the success or failure of the command. + + - A <msg> element containing a human-readable description of the + response code. The language of the response is identified via + an OPTIONAL "lang" attribute. If not specified, the default + attribute value MUST be "en" (English). + + + + + + +Hollenbeck Standards Track [Page 12] + +RFC 3730 EPP March 2004 + + + - Zero or more OPTIONAL <value> elements that identify a client- + provided element (including XML tag and value) that caused a + server error condition. + + - Zero or more OPTIONAL <extValue> elements that can be used to + provide additional error diagnostic information, including: + + - A <value> element that identifies a client-provided element + (including XML tag and value) that caused a server error + condition. + + - A <reason> element containing a human-readable message that + describes the reason for the error. The language of the + response is identified via an OPTIONAL "lang" attribute. If + not specified, the default attribute value MUST be "en" + (English). + + - An OPTIONAL <msgQ> element that describes messages queued for + client retrieval. A <msgQ> element MUST NOT be present if there + are no messages queued for client retrieval. A <msgQ> element MAY + be present in responses to EPP commands other than the <poll> + command if messages are queued for retrieval. A <msgQ> element + MUST be present in responses to the EPP <poll> command if messages + are queued for retrieval. The <msgQ> element contains the + following attributes: + + - A "count" attribute that describes the number of messages that + exist in the queue. + + - An "id" attribute used to uniquely identify the message at the + head of the queue. + + The <msgQ> element contains the following OPTIONAL child elements + that MUST be returned in response to a <poll> request command and + MUST NOT be returned in response to any other command, including a + <poll> acknowledgement: + + - A <qDate> element that contains the date and time that the message + was enqueued. + + - A <msg> element containing a human-readable message. The language + of the response is identified via an OPTIONAL "lang" attribute. + If not specified, the default attribute value MUST be "en" + (English). This element MAY contain XML content for formatting + purposes, but the XML content is not specified by the protocol and + will thus not be processed for validity. + + + + + +Hollenbeck Standards Track [Page 13] + +RFC 3730 EPP March 2004 + + + - An OPTIONAL <resData> (response data) element that contains child + elements specific to the command and associated object. + + - An OPTIONAL <extension> element that MAY be used for server- + defined response extensions. + + - A <trID> (transaction identifier) element containing the + transaction identifier assigned by the server to the command for + which the response is being returned. The transaction identifier + is formed using the <clTRID> associated with the command if + supplied by the client and a <svTRID> (server transaction + identifier) that is assigned by and unique to the server. + + Transaction identifiers provide command-response synchronization + integrity. They SHOULD be logged, retained, and protected to + ensure that both the client and the server have consistent + temporal and state management records. + + Example response without <value> or <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg lang="en">Command completed successfully</msg> + S: </result> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 14] + +RFC 3730 EPP March 2004 + + + Example response with <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <resData> + S: <obj:creData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <obj:name>example</obj:name> + S: </obj:creData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + Example response with error value elements: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="2004"> + S: <msg>Parameter value range error</msg> + S: <value xmlns:obj="urn:ietf:params:xml:ns:obj"> + S: <obj:elem1>2525</obj:elem1> + S: </value> + S: </result> + S: <result code="2005"> + S: <msg>Parameter value syntax error</msg> + S: <value xmlns:obj="urn:ietf:params:xml:ns:obj"> + S: <obj:elem2>ex(ample</obj:elem2> + S: </value> + S: <extValue> + S: <value xmlns:obj="urn:ietf:params:xml:ns:obj"> + S: <obj:elem3>abc.ex(ample</obj:elem3> + S: </value> + S: <reason>Invalid character found.</reason> + + + +Hollenbeck Standards Track [Page 15] + +RFC 3730 EPP March 2004 + + + S: </extValue> + S: </result> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + Example response with notice of waiting server messages: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <msgQ count="5" id="12345"/> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + Command success or failure MUST NOT be assumed if no response is + returned or if a returned response is malformed. Protocol + idempotency ensures the safety of retrying a command in cases of + response delivery failure. + +2.7. Protocol Extension Framework + + EPP provides an extension framework that allows features to be added + at the protocol, object, and command-response levels. + +2.7.1. Protocol Extension + + The EPP extension framework allows for definition of new protocol + elements identified using XML namespace notation with a reference to + an XML schema that defines the namespace. The <epp> element that + identifies the beginning of a protocol instance includes multiple + child element choices, one of which is an <extension> element whose + children define the extension. For example, a protocol extension + element would be described in generic terms as follows: + + + + +Hollenbeck Standards Track [Page 16] + +RFC 3730 EPP March 2004 + + + C:<epp> + C: <extension> + C: <!-- One or more extension elements. --> + C: <ext:foo xmlns:ext="urn:ietf:params:xml:ns:ext" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:ext ext.xsd"> + C: <!-- One or more extension child elements. --> + C: </ext:foo> + C: </extension> + C:</epp> + + This document does not define mappings for specific extensions. + Extension specifications MUST be described in separate documents that + define the objects and operations subject to the extension. + +2.7.2. Object Extension + + EPP provides an extensible object management framework that defines + the syntax and semantics of protocol operations applied to a managed + object. This framework pushes the definition of each protocol + operation into the context of a specific object, providing the + ability to add mappings for new objects without having to modify the + base protocol. + + Protocol elements that contain data specific to objects are + identified using XML namespace notation with a reference to an XML + schema that defines the namespace. The schema for EPP supports use + of dynamic object schemas on a per-command and per-response basis. + For example, the start of an object-specific command element would be + described in generic terms as follows: + + C:<EPPCommandName> + C: <object:command xmlns:object="urn:ietf:params:xml:ns:object" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:object object.xsd"> + C: <!-- One or more object-specific command elements. --> + C: </object:command> + C:</EPPCommandName> + + An object-specific response element would be described similarly: + + S:<resData> + S: <object:resData xmlns:object="urn:ietf:params:xml:ns:object" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:object object.xsd"> + S: <!-- One or more object-specific response elements. --> + S: </object:resData> + S:</resData> + + + + + + +Hollenbeck Standards Track [Page 17] + +RFC 3730 EPP March 2004 + + + This document does not define mappings for specific objects. The + mapping of EPP to an object MUST be described in separate documents + that specifically address each command and response in the context of + the object. A suggested object mapping outline is included as an + appendix to this document. + +2.7.3. Command-Response Extension + + EPP provides a facility for protocol command and response extensions. + Protocol commands and responses MAY be extended by an <extension> + element that contains additional elements whose syntax and semantics + are not explicitly defined by EPP or an EPP object mapping. This + element is OPTIONAL. Extensions are typically defined by agreement + between client and server and MAY be used to extend EPP for unique + operational needs. A server-extended command element would be + described in generic terms as follows: + + C:<command> + C: <!-- EPPCommandName can be "create", "update", etc. --> + C: <EPPCommandName> + C: <object:command xmlns:object="urn:ietf:params:xml:ns:object" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:object object.xsd"> + C: <!-- One or more object-specific command elements. --> + C: </object:command> + C: </EPPCommandName> + C: <extension> + C: <!-- One or more server-defined elements. --> + C: </extension> + C:</command> + + An server-extended response element would be described similarly: + + S:<response> + S: <result code="1000"> + S: <msg lang="en">Command completed successfully</msg> + S: </result> + S: <extension> + S: <!-- One or more server-defined elements. --> + S: </extension> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S:</response> + + + + + + + +Hollenbeck Standards Track [Page 18] + +RFC 3730 EPP March 2004 + + + This document does not define any specific server extensions. The + mapping of server extensions to EPP MUST be described in separate + documents that specifically address extended commands and responses + in the server's operational context. + +2.8. Object Identification + + Some objects, such as name servers and contacts, can have utility in + multiple repositories. However, maintaining disjoint copies of + object information in multiple repositories can lead to + inconsistencies that have adverse consequences for the Internet. For + example, changing a name server name in one repository, but not in a + second repository that refers to the server for domain name + delegation, can produce unexpected DNS query results. + + Globally unique identifiers can help facilitate object information + sharing between repositories. A globally unique identifier MUST be + assigned to every object when the object is created; the identifier + MUST be returned to the client as part of any request to retrieve the + detailed attributes of an object. Specific identifier values are a + matter of repository policy, but they SHOULD be constructed according + to the following algorithm: + + a) Divide the provisioning repository world into a number of object + repository classes. + + b) Each repository within a class is assigned an identifier that is + maintained by IANA. + + c) Each repository is responsible for assigning a unique local + identifier for each object within the repository. + + d) The globally unique identifier is a concatenation of the local + identifier, followed by a hyphen ("-", ASCII value 0x002D), + followed by the repository identifier. + +2.9. Protocol Commands + + EPP provides commands to manage sessions, retrieve object + information, and perform transformation operations on objects. All + EPP commands are atomic and designed so that they can be made + idempotent, either succeeding completely or failing completely and + producing predictable results in case of repeated execution. This + section describes each EPP command, including examples with + representative server responses. + + + + + + +Hollenbeck Standards Track [Page 19] + +RFC 3730 EPP March 2004 + + +2.9.1. Session Management Commands + + EPP provides two commands for session management: <login> to + establish a session with a server, and <logout> to end a session with + a server. The <login> command establishes an ongoing server session + that preserves client identity and authorization information during + the duration of the session. + +2.9.1.1. EPP <login> Command + + The EPP <login> command is used to establish a session with an EPP + server in response to a greeting issued by the server. A <login> + command MUST be sent to a server before any other EPP command to + establish an ongoing session. A server operator MAY limit the number + of failed login attempts N, 1 <= N <= infinity, after which a login + failure results in the connection to the server (if a connection + exists) being closed. + + A client identifier and initial password MUST be created on the + server before a client can successfully complete a <login> command. + The client identifier and initial password MUST be delivered to the + client using an out-of-band method that protects the identifier and + password from inadvertent disclosure. + + In addition to the standard EPP command elements, the <login> command + contains the following child elements: + + - A <clID> element that contains the client identifier assigned to + the client by the server. + + - A <pw> element that contains the client's plain text password. + The value of this element is case sensitive. + + - An OPTIONAL <newPW> element that contains a new plain text + password to be assigned to the client for use with subsequent + <login> commands. The value of this element is case sensitive. + + - An <options> element that contains the following child elements: + + - A <version> element that contains the protocol version to be + used for the command or ongoing server session. + + - A <lang> element that contains the text response language to be + used for the command or ongoing server session commands. + + The values of the <version> and <lang> elements MUST exactly match + one of the values presented in the EPP greeting. + + + + +Hollenbeck Standards Track [Page 20] + +RFC 3730 EPP March 2004 + + + - A <svcs> element that contains one or more <objURI> elements that + contain namespace URIs representing the objects to be managed + during the session. The <svcs> element MAY contain an OPTIONAL + <svcExtension> element that contains one or more <extURI> elements + that identify object extensions to be used during the session. + + The PLAIN SASL mechanism presented in [RFC2595] describes a format + for providing a user identifier, an authorization identifier, and a + password as part of a single plain text string. The EPP + authentication mechanism is similar, though EPP does not require a + session-level authorization identifier and the user identifier and + password are separated into distinct XML elements. Additional + identification and authorization schemes MUST be provided at other + protocol layers to provide more robust security services. + + Example <login> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <login> + C: <clID>ClientX</clID> + C: <pw>foo-BAR2</pw> + C: <newPW>bar-FOO2</newPW> + C: <options> + C: <version>1.0</version> + C: <lang>en</lang> + C: </options> + C: <svcs> + C: <objURI>urn:ietf:params:xml:ns:obj1</objURI> + C: <objURI>urn:ietf:params:xml:ns:obj2</objURI> + C: <objURI>urn:ietf:params:xml:ns:obj3</objURI> + C: <svcExtension> + C: <extURI>http://custom/obj1ext-1.0</extURI> + C: </svcExtension> + C: </svcs> + C: </login> + C: <clTRID>ABC-12345</clTRID> + C: </command> + C:</epp> + + When a <login> command has been processed successfully, a server MUST + respond with an EPP response with no <resData> element. If + successful, the server will respond by creating and maintaining a new + session that SHOULD be terminated by a future <logout> command. + + + +Hollenbeck Standards Track [Page 21] + +RFC 3730 EPP March 2004 + + + Example <login> response: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + 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> + + The EPP <login> command is used to establish a session with an EPP + server. A <login> command MUST be rejected if received within the + bounds of an existing session. This action MUST be open to all + authorized clients. + +2.9.1.2. EPP <logout> Command + + The EPP <logout> command is used to end a session with an EPP server. + The <logout> command MUST be represented as an empty element with no + child elements. + + A server MAY end a session due to client inactivity or excessive + client session longevity. The parameters for determining excessive + client inactivity or session longevity are a matter of server policy + and are not specified by this protocol. + + Transport mappings MUST explicitly describe any connection-oriented + processing that takes place after processing a <logout> command and + ending a session. + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 22] + +RFC 3730 EPP March 2004 + + + Example <logout> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <logout/> + C: <clTRID>ABC-12345</clTRID> + C: </command> + C:</epp> + + When a <logout> command has been processed successfully, a server + MUST respond with an EPP response with no <resData> element. If + successful, the server MUST also end the current session. + + Example <logout> response: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1500"> + S: <msg>Command completed successfully; ending session</msg> + S: </result> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <logout> command is used to end a session with an EPP server. + A <logout> command MUST be rejected if the command has not been + preceded by a successful <login> command. This action MUST be open + to all authorized clients. + +2.9.2. Query Commands + + EPP provides four commands to retrieve object information: <check> to + determine if an object can be provisioned within a repository, <info> + to retrieve detailed information associated with a known object, + <poll> to receive service notifications from the server, and + <transfer> to retrieve object transfer status information. + + + + +Hollenbeck Standards Track [Page 23] + +RFC 3730 EPP March 2004 + + +2.9.2.1. EPP <check> Command + + The EPP <check> command is used to determine if an object can be + provisioned within a repository. It provides a hint that allows a + client to anticipate the success or failure of provisioning an object + using the <create> command as object provisioning requirements are + ultimately a matter of server policy. + + The elements needed to identify an object are object-specific, so the + child elements of the <check> command are specified using the EPP + extension framework. In addition to the standard EPP command + elements, the <check> command contains the following child elements: + + - An object-specific <obj:check> element that identify the objects + to be queried. Multiple objects of the same type MAY be queried + within a single <check> command. + + 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: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <check> + C: <obj:check xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <obj:name>example1</obj:name> + C: <obj:name>example2</obj:name> + C: <obj:name>example3</obj:name> + C: </obj:check> + C: </check> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When a <check> command has been processed successfully, a server MUST + respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific, though the EPP <resData> element MUST contain a + child <obj:chkData> element that contains one or more <obj:cd> (check + data) elements. Each <obj:cd> elements contains the following child + elements: + + + + + + +Hollenbeck Standards Track [Page 24] + +RFC 3730 EPP March 2004 + + + - An object-specific element that identifies the queried object. + This element MUST contain an "avail" attribute whose value + indicates object availability (can it be provisioned or not) at + the moment the <check> command was completed. A value of "1" or + "true" means that the object can be provisioned. A value of "0" + or "false" means that the object can not be provisioned. + + - An OPTIONAL <obj:reason> element that MAY be provided when an + object can not be provisioned. If present, this element contains + server-specific text to help explain why the object can not be + provisioned. This text MUST be represented in the response + language previously negotiated with the client; an OPTIONAL "lang" + attribute MAY be present to identify the language if the + negotiated value is something other than the default value of "en" + (English). + + 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: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <resData> + S: <obj:chkData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <obj:cd> + S: <obj:name avail="1">example1</obj:name> + S: </obj:cd> + S: <obj:cd> + S: <obj:name avail="0">example2</obj:name> + S: <obj:reason>In use</obj:reason> + S: </obj:cd> + S: <obj:cd> + S: <obj:name avail="1">example3</obj:name> + S: </obj:cd> + S: </obj:chkData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + + +Hollenbeck Standards Track [Page 25] + +RFC 3730 EPP March 2004 + + + The EPP <check> command is used to determine if an object can be + provisioned within a repository. This action MUST be open to all + authorized clients. + +2.9.2.2. EPP <info> Command + + The EPP <info> command is used to retrieve information associated + with an existing object. The elements needed to identify an object + and the type of information associated with an object are both + object-specific, so the child elements of the <info> command are + specified using the EPP extension framework. In addition to the + standard EPP command elements, the <info> command contains the + following child elements: + + - An object-specific <obj:info> element that identifies the object + to be queried. + + Example <info> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <info> + C: <obj:info xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:info> + C: </info> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When an <info> command has been processed successfully, a server MUST + respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema and the Repository Object Identifier (ROID) that was + assigned to the object when the object was created. Other child + elements of the <resData> element are object-specific. + + + + + + + + + + +Hollenbeck Standards Track [Page 26] + +RFC 3730 EPP March 2004 + + + Example <info> response: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <resData> + S: <obj:infData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <obj:roid>EXAMPLE1-REP</obj:roid> + S: <!-- Object-specific elements. --> + S: </obj:infData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <info> command is used to retrieve information associated + with an existing object. This action SHOULD be limited to authorized + clients; restricting this action to the sponsoring client is + RECOMMENDED. + +2.9.2.3. EPP <poll> Command + + The EPP <poll> command is used to discover and retrieve service + messages queued by a server for individual clients. If the message + queue is not empty, a successful response to a <poll> command MUST + return the first message from the message queue. Each response + returned from the server includes a server-unique message identifier + that MUST be provided to acknowledge receipt of the message, and a + counter that indicates the number of messages in the queue. After a + message has been received by the client, the client MUST respond to + the message with an explicit acknowledgement to confirm that the + message has been received. A server MUST dequeue the message and + decrement the queue counter after receiving acknowledgement from the + client, making the next message in the queue (if any) available for + retrieval. + + + + + + +Hollenbeck Standards Track [Page 27] + +RFC 3730 EPP March 2004 + + + Servers can occasionally perform actions on objects that are not in + direct response to a client request, or an action taken by one client + can indirectly involve a second client. Examples of such actions + include deletion upon expiration, automatic renewal upon expiration, + and transfer coordination; other types of service information MAY be + defined as a matter of server policy. Service messages MUST be + created for all clients affected by an action on an object. For + example, <transfer> actions MUST be reported to both the client that + requests an object transfer and the client that has the authority to + approve or reject the transfer request. + + Message queues can consume server resources if clients do not + retrieve and acknowledge messages on a regular basis. Servers MAY + implement other mechanisms to dequeue and deliver messages if queue + maintenance needs exceed server resource consumption limits. Server + operators SHOULD consider time-sensitivity and resource management + factors when selecting a delivery method for service information + because some message types can be reasonably delivered using non- + protocol methods that require fewer server resources. + + Some of the information returned in response to a <poll> command can + be object-specific, so some child elements of the <poll> response MAY + be specified using the EPP extension framework. The <poll> command + MUST be represented as an empty element with no child elements. An + "op" attribute with value "req" is REQUIRED to retrieve the first + message from the server message queue. An "op" attribute (with value + "ack") and a "msgID" attribute (whose value corresponds to the value + of the "id" attribute copied from the <msg> element in the message + being acknowledged) are REQUIRED to acknowledge receipt of a message. + + Example <poll> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <poll op="req"/> + C: <clTRID>ABC-12345</clTRID> + C: </command> + C:</epp> + + The returned result code notes that a message has been dequeued and + returned in response to a <poll> command. + + + + + + +Hollenbeck Standards Track [Page 28] + +RFC 3730 EPP March 2004 + + + Example <poll> response with object-specific information: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1301"> + S: <msg>Command completed successfully; ack to dequeue</msg> + S: </result> + S: <msgQ count="5" id="12345"> + S: <qDate>2000-06-08T22:00:00.0Z</qDate> + S: <msg>Transfer requested.</msg> + S: </msgQ> + S: <resData> + S: <obj:trnData + S: xmlns:obj="urn:ietf:params:xml:ns:obj-1.0" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj-1.0 + S: obj-1.0.xsd"> + S: <obj:name>example.com</obj:name> + S: <obj:trStatus>pending</obj:trStatus> + S: <obj:reID>ClientX</obj:reID> + S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate> + S: <obj:acID>ClientY</obj:acID> + S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate> + S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate> + S: </obj:trnData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + A client MUST acknowledge each response to dequeue the message and + make subsequent messages available for retrieval. + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 29] + +RFC 3730 EPP March 2004 + + + Example <poll> acknowledgement 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <poll op="ack" msgID="12345"/> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + A <poll> acknowledgement response notes the number of messages + remaining in the queue and the ID of the next message available for + retrieval. + + Example <poll> acknowledgement response: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <msgQ count="4" id="12346"/> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + Service messages can also be returned without object information. + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 30] + +RFC 3730 EPP March 2004 + + + Example <poll> response with mixed message content and without + object-specific information: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1301"> + S: <msg>Command completed successfully; ack to dequeue</msg> + S: </result> + S: <msgQ count="4" id="12346"> + S: <qDate>2000-06-08T22:10:00.0Z</qDate> + S: <msg lang="en">Credit balance low. + S: <limit>100</limit><bal>5</bal> + S: </msg> + S: </msgQ> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The returned result code and message is used to note an empty server + message queue. + + Example <poll> response to note an empty message queue: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1300"> + S: <msg>Command completed successfully; no messages</msg> + S: </result> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + + + + + +Hollenbeck Standards Track [Page 31] + +RFC 3730 EPP March 2004 + + + The EPP <poll> command is used to discover and retrieve client + service messages from a server. This action SHOULD be limited to + authorized clients; queuing service messages and limiting queue + access on a per-client basis is RECOMMENDED. + +2.9.2.4. EPP <transfer> Query Command + + The EPP <transfer> command provides a query operation that allows a + client to determine real-time status of pending and completed + transfer requests. The elements needed to identify an object that is + the subject of a transfer request are object-specific, so the child + elements of the <transfer> query command are specified using the EPP + extension framework. In addition to the standard EPP command + elements, the <transfer> command contains an "op" attribute with + value "query", and the following child elements: + + - An object-specific <obj:transfer> element that identifies the + object whose transfer status is requested. + + Transfer status is typically considered sensitive information by the + clients involved in the operation. Object mappings MUST provide + features to restrict transfer queries to authorized clients, such as + by requiring authorization information as part of the request. + + Example <transfer> query 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <transfer op="query"> + C: <obj:transfer xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:transfer> + C: </transfer> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When a <transfer> query command has been processed successfully, a + server MUST respond with an EPP <resData> element that MUST contain a + child element that identifies the object namespace and the location + of the object schema. The child elements of the <resData> element + are object-specific, but they MUST include elements that identify the + object, the status of the transfer, the identifier of the client that + + + +Hollenbeck Standards Track [Page 32] + +RFC 3730 EPP March 2004 + + + requested the transfer, the date and time that the request was made, + the identifier of the client that is authorized to act on the + request, the date and time by which an action is expected, and an + OPTIONAL date and time noting changes in the object's validity period + (if applicable) that occur as a result of the transfer. + + Example <transfer> query response: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <resData> + S: <obj:trnData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <obj:name>example</obj:name> + S: <obj:trStatus>pending</obj:trStatus> + S: <obj:reID>ClientX</obj:reID> + S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate> + S: <obj:acID>ClientY</obj:acID> + S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate> + S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate> + S: </obj:trnData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <transfer> command provides a query operation that allows a + client to determine real-time status of pending and completed + transfer requests. This action SHOULD be limited to authorized + clients; restricting queries to the requesting and responding clients + is RECOMMENDED. Object transfer MAY be unavailable or limited by + object-specific policies. + + + + + + + + + +Hollenbeck Standards Track [Page 33] + +RFC 3730 EPP March 2004 + + +2.9.3. Object Transform Commands + + EPP provides five commands to transform objects: <create> to create + an instance of an object with a server, <delete> to remove an + instance of an object from a server, <renew> to extend the validity + period of an object, <update> to change information associated with + an object, and <transfer> to manage changes in client sponsorship of + an object. + +2.9.3.1. EPP <create> Command + + The EPP <create> command is used to create an instance of an object. + An object can be created for an indefinite period of time, or an + object can be created for a specific validity period. The EPP + mapping for an object MUST describe the status of an object with + respect to time, to include expected client and server behavior if a + validity period is used. + + The elements needed to identify an object and associated attributes + are object-specific, so the child elements of the <create> command + are specified using the EPP extension framework. In addition to the + standard EPP command elements, the <create> command contains the + following child elements: + + - An object-specific <obj:create> element that identifies the object + to be created and the elements that are required to create the + object. + + 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <create> + C: <obj:create xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:create> + C: </create> + C: <clTRID>ABC-12345</clTRID> + C: </command> + C:</epp> + + + + + + +Hollenbeck Standards Track [Page 34] + +RFC 3730 EPP March 2004 + + + When a <create> command has been processed successfully, a server MAY + respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific. + + Example <create> response with <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <resData> + S: <obj:creData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <!-- Object-specific elements. --> + S: </obj:creData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12345</clTRID> + S: <svTRID>54321-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <create> command is used to create an instance of an object. + This action SHOULD be limited to authorized clients and MAY be + restricted on a per-client basis. + +2.9.3.2. EPP <delete> Command + + The EPP <delete> command is used to remove an instance of an existing + object. The elements needed to identify an object are object- + specific, so the child elements of the <delete> command are specified + using the EPP extension framework. In addition to the standard EPP + command elements, the <delete> command contains the following child + elements: + + - An object-specific <obj:delete> element that identifies the object + to be deleted. + + + + + + +Hollenbeck Standards Track [Page 35] + +RFC 3730 EPP March 2004 + + + 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: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <delete> + C: <obj:delete xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:delete> + C: </delete> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When a <delete> command has been processed successfully, a server MAY + respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific. + + Example <delete> response without <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <delete> command is used to remove an instance of an existing + object. This action SHOULD be limited to authorized clients; + restricting this action to the sponsoring client is RECOMMENDED. + + + + + + +Hollenbeck Standards Track [Page 36] + +RFC 3730 EPP March 2004 + + +2.9.3.3. EPP <renew> Command + + The EPP <renew> command is used to extend the validity period of an + existing object. The elements needed to identify and extend the + validity period of an object are object-specific, so the child + elements of the <renew> command are specified using the EPP extension + framework. In addition to the standard EPP command elements, the + <renew> command contains the following child elements: + + - An object-specific <obj:renew> element that identifies the object + to be renewed and the elements that are required to extend the + validity period of the object. + + Example <renew> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <renew> + C: <obj:renew xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:renew> + C: </renew> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When a <renew> command has been processed successfully, a server MAY + respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific. + + Example <renew> response with <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + + + +Hollenbeck Standards Track [Page 37] + +RFC 3730 EPP March 2004 + + + S: <resData> + S: <obj:renData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <!-- Object-specific elements. --> + S: </obj:renData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <renew> command is used to extend the validity period of an + existing object. This action SHOULD be limited to authorized + clients; restricting this action to the sponsoring client is + RECOMMENDED. Object renewal MAY be unavailable or limited by + object-specific policies. + +2.9.3.4. EPP <transfer> Command + + The EPP <transfer> command is used to manage changes in client + sponsorship of an existing object. Clients can initiate a transfer + request, cancel a transfer request, approve a transfer request, and + reject a transfer request using the "op" command attribute. + + A client who wishes to assume sponsorship of a known object from + another client uses the <transfer> command with the value of the "op" + attribute set to "request". Once a transfer has been requested, the + same client can cancel the request using a <transfer> command with + the value of the "op" attribute set to "cancel". A request to cancel + the transfer MUST be sent to the server before the current sponsoring + client either approves or rejects the transfer request and before the + server automatically processes the request due to responding client + inactivity. + + Once a transfer request has been received by the server, the server + MUST notify the current sponsoring client of the requested transfer + by queuing a service message for retrieval via the <poll> command. + The current status of a pending <transfer> command for any object can + be found using the <transfer> query command. Transfer service + messages MUST include the object-specific elements specified for + <transfer> command responses. + + + + + + + + +Hollenbeck Standards Track [Page 38] + +RFC 3730 EPP March 2004 + + + The current sponsoring client MAY explicitly approve or reject the + transfer request. The client can approve the request using a + <transfer> command with the value of the "op" attribute set to + "approve". The client can reject the request using a <transfer> + command with the value of the "op" attribute set to "reject". + + A server MAY automatically approve or reject all transfer requests + that are not explicitly approved or rejected by the current + sponsoring client within a fixed amount of time. The amount of time + to wait for explicit action and the default server behavior are local + matters not specified by EPP, but they SHOULD be documented in a + server-specific profile document that describes default server + behavior for client information. + + Objects eligible for transfer MUST have associated authorization + information that MUST be provided to complete a <transfer> command. + The type of authorization information required is object-specific; + passwords or more complex mechanisms based on public key cryptography + are typical. + + The elements needed to identify and complete the transfer of an + object are object-specific, so the child elements of the <transfer> + command are specified using the EPP extension framework. In addition + to the standard EPP command elements, the <transfer> command contains + the following child elements: + + - An object-specific <obj:transfer> element that identifies the + object to be transferred and the elements that are required to + process the transfer command. + + Example <transfer> 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: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <transfer op="request"> + C: <obj:transfer xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:transfer> + C: </transfer> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + + + +Hollenbeck Standards Track [Page 39] + +RFC 3730 EPP March 2004 + + + When a <transfer> command has been processed successfully, a server + MUST respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific, but they MUST include elements that identify the + object, the status of the transfer, the identifier of the client that + requested the transfer, the date and time that the request was made, + the identifier of the client that is authorized to act on the + request, the date and time by which an action is expected, and an + OPTIONAL date and time noting changes in the object's validity period + (if applicable) that occur as a result of the transfer. + + Example <transfer> response with <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1001"> + S: <msg>Command completed successfully; action pending</msg> + S: </result> + S: <resData> + S: <obj:trnData xmlns:obj="urn:ietf:params:xml:ns:obj" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + S: <obj:name>example</obj:name> + S: <obj:trStatus>pending</obj:trStatus> + S: <obj:reID>ClientX</obj:reID> + S: <obj:reDate>2000-06-08T22:00:00.0Z</obj:reDate> + S: <obj:acID>ClientY</obj:acID> + S: <obj:acDate>2000-06-13T22:00:00.0Z</obj:acDate> + S: <obj:exDate>2002-09-08T22:00:00.0Z</obj:exDate> + S: </obj:trnData> + S: </resData> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <transfer> command is used to manage changes in client + sponsorship of an existing object. This action SHOULD be limited to + authorized clients; restricting <transfer> requests to a client other + than the current sponsoring client, <transfer> approval requests to + + + + + +Hollenbeck Standards Track [Page 40] + +RFC 3730 EPP March 2004 + + + the current sponsoring client, and <transfer> cancellation requests + to the original requesting client is RECOMMENDED. Object transfer + MAY be unavailable or limited by object-specific policies. + +2.9.3.5. EPP <update> Command + + The EPP <update> command is used to change information associated + with an existing object. The elements needed to identify and modify + an object are object-specific, so the child elements of the <update> + command are specified using the EPP extension framework. In addition + to the standard EPP command elements, the <update> command contains + the following child elements: + + - An object-specific <obj:update> element that identifies the object + to be updated and the elements that are required to modify the + object. Object-specific elements MUST identify values to be + added, values to be removed, or values to be changed. + + 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: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + C: epp-1.0.xsd"> + C: <command> + C: <update> + C: <obj:update xmlns:obj="urn:ietf:params:xml:ns:obj" + C: xsi:schemaLocation="urn:ietf:params:xml:ns:obj obj.xsd"> + C: <!-- Object-specific elements. --> + C: </obj:update> + C: </update> + C: <clTRID>ABC-12346</clTRID> + C: </command> + C:</epp> + + When an <update> command has been processed successfully, a server + MAY respond with an EPP <resData> element that MUST contain a child + element that identifies the object namespace and the location of the + object schema. The child elements of the <resData> element are + object-specific. + + + + + + + + + + +Hollenbeck Standards Track [Page 41] + +RFC 3730 EPP March 2004 + + + Example <update> response without <resData>: + + S:<?xml version="1.0" encoding="UTF-8" standalone="no"?> + S:<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" + S: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + S: xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 + S: epp-1.0.xsd"> + S: <response> + S: <result code="1000"> + S: <msg>Command completed successfully</msg> + S: </result> + S: <trID> + S: <clTRID>ABC-12346</clTRID> + S: <svTRID>54322-XYZ</svTRID> + S: </trID> + S: </response> + S:</epp> + + The EPP <update> command is used to change information associated + with an existing object. This action SHOULD be limited to authorized + clients; restricting this action to the sponsoring client is + RECOMMENDED. + +3. Result Codes + + EPP result codes are based on the theory of reply codes described in + section 4.2.1 of [RFC2821]. EPP uses four decimal digits to describe + the success or failure of each EPP command. Each of the digits of + the reply have special significance. + + The first digit denotes command success or failure. The second digit + denotes the response category, such as command syntax or security. + The third and fourth digits provide explicit response detail within + each response category. + + There are two values for the first digit of the reply code: + + 1yzz Positive completion reply. The command has been accepted and + processed by the system without error. + + 2yzz Negative completion reply. The command was not accepted and + the requested action did not occur. + + + + + + + + + +Hollenbeck Standards Track [Page 42] + +RFC 3730 EPP March 2004 + + + The second digit groups responses into one of six specific + categories: + + x0zz Protocol Syntax + x1zz Implementation-specific Rules + x2zz Security + x3zz Data Management + x4zz Server System + x5zz Connection Management + + The third and fourth digits provide response detail within the + categories defined by the first and second digits. Specific result + codes are listed in the table below. + + Every EPP response MUST include a result code and a human-readable + description of the result code. The language used to represent the + description MAY be identified using an instance of the "lang" + attribute within the <msg> element. If not specified, the default + language is English, identified as "en". A description of the + structure of valid values for the "lang" attribute is described in + [RFC3066]. + + Response text MAY be translated into other languages, though the + translation MUST preserve the meaning of the code as described here. + Response code values MUST NOT be changed when translating text. + + Response text in the table below is enclosed in quotes to clearly + mark the beginning and ending of each response string. Quotes MUST + NOT be used to delimit these strings when returning response text via + the protocol. + + + + + + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 43] + +RFC 3730 EPP March 2004 + + + Successful command completion responses: + + Code Response text in English + ___________________________________ + + 1000 "Command completed successfully" + This is the usual response code for a successfully completed command + that is not addressed by any other 1xxx-series response code. + + 1001 "Command completed successfully; action pending" + This response code MUST be returned when responding to a command the + requires offline activity before the requested action can be + completed. See section 2 for a description of other processing + requirements. + + 1300 "Command completed successfully; no messages" + This response code MUST be returned when responding to a <poll> + request command and the server message queue is empty. + + 1301 "Command completed successfully; ack to dequeue" + This response code MUST be returned when responding to a <poll> + request command and a message has been retrieved from the server + message queue. + + 1500 "Command completed successfully; ending session" + This response code MUST be returned when responding to a successful + <logout> command. + + + + + + + + + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 44] + +RFC 3730 EPP March 2004 + + + Command error responses: + + Code Response text in English + ___________________________________ + + 2000 "Unknown command" + This response code MUST be returned when a server receives a command + element that is not defined by EPP. + + 2001 "Command syntax error" + This response code MUST be returned when a server receives an + improperly formed command element. + + 2002 "Command use error" + This response code MUST be returned when a server receives a properly + formed command element, but the command can not be executed due to a + sequencing or context error. For example, a <logout> command can not + be executed without having first completed a <login> command. + + 2003 "Required parameter missing" + This response code MUST be returned when a server receives a command + for which a required parameter value has not been provided. + + 2004 "Parameter value range error" + This response code MUST be returned when a server receives a command + parameter whose value is outside the range of values specified by the + protocol. The error value SHOULD be returned via a <value> element + in the EPP response. + + 2005 "Parameter value syntax error" + This response code MUST be returned when a server receives a command + containing a parameter whose value is improperly formed. The error + value SHOULD be returned via a <value> element in the EPP response. + + 2100 "Unimplemented protocol version" + This response code MUST be returned when a server receives a command + element specifying a protocol version that is not implemented by the + server. + + 2101 "Unimplemented command" + This response code MUST be returned when a server receives a valid + EPP command element that is not implemented by the server. For + example, a <transfer> command can be unimplemented for certain object + types. + + + + + + + +Hollenbeck Standards Track [Page 45] + +RFC 3730 EPP March 2004 + + + 2102 "Unimplemented option" + This response code MUST be returned when a server receives a valid + EPP command element that contains a protocol option that is not + implemented by the server. + + 2103 "Unimplemented extension" + This response code MUST be returned when a server receives a valid + EPP command element that contains a protocol command extension that + is not implemented by the server. + + 2104 "Billing failure" + This response code MUST be returned when a server attempts to execute + a billable operation and the command can not be completed due to a + client billing failure. + + 2105 "Object is not eligible for renewal" + This response code MUST be returned when a client attempts to <renew> + an object that is not eligible for renewal in accordance with server + policy. + + 2106 "Object is not eligible for transfer" + This response code MUST be returned when a client attempts to + <transfer> an object that is not eligible for transfer in accordance + with server policy. + + 2200 "Authentication error" + This response code MUST be returned when a server notes an error when + validating client credentials. + + 2201 "Authorization error" + This response code MUST be returned when a server notes a client + authorization error when executing a command. This error is used to + note that a client lacks privileges to execute the requested command. + + 2202 "Invalid authorization information" + This response code MUST be returned when a server receives invalid + command authorization information required to confirm authorization + to execute a command. This error is used to note that a client has + the privileges required to execute the requested command, but the + authorization information provided by the client does not match the + authorization information archived by the server. + + 2300 "Object pending transfer" + This response code MUST be returned when a server receives a command + to transfer an object that is pending transfer due to an earlier + transfer request. + + + + + +Hollenbeck Standards Track [Page 46] + +RFC 3730 EPP March 2004 + + + 2301 "Object not pending transfer" + This response code MUST be returned when a server receives a command + to confirm, reject, or cancel the transfer an object when no command + has been made to transfer the object. + + 2302 "Object exists" + This response code MUST be returned when a server receives a command + to create an object that already exists in the repository. + + 2303 "Object does not exist" + This response code MUST be returned when a server receives a command + to query or transform an object that does not exist in the + repository. + + 2304 "Object status prohibits operation" + This response code MUST be returned when a server receives a command + to transform an object that can not be completed due to server policy + or business practices. For example, a server can disallow <transfer> + commands under terms and conditions that are matters of local policy, + or the server might have received a <delete> command for an object + whose status prohibits deletion. + + 2305 "Object association prohibits operation" + This response code MUST be returned when a server receives a command + to transform an object that can not be completed due to dependencies + on other objects that are associated with the target object. For + example, a server can disallow <delete> commands while an object has + active associations with other objects. + + 2306 "Parameter value policy error" + This response code MUST be returned when a server receives a command + containing a parameter value that is syntactically valid, but + semantically invalid due to local policy. For example, the server + can support a subset of a range of valid protocol parameter values. + The error value SHOULD be returned via a <value> element in the EPP + response. + + 2307 "Unimplemented object service" + This response code MUST be returned when a server receives a command + to operate on an object service that is not supported by the server. + + 2308 "Data management policy violation" + This response code MUST be returned when a server receives a command + whose execution results in a violation of server data management + policies. For example, removing all attribute values or object + associations from an object might be a violation of a server's data + management policies. + + + + +Hollenbeck Standards Track [Page 47] + +RFC 3730 EPP March 2004 + + + 2400 "Command failed" + This response code MUST be returned when a server is unable to + execute a command due to an internal server error that is not related + to the protocol. The failure can be transient. The server MUST keep + any ongoing session active. + + 2500 "Command failed; server closing connection" + This response code MUST be returned when a server receives a command + that can not be completed due to an internal server error that is not + related to the protocol. The failure is not transient, and will + cause other commands to fail as well. The server MUST end the active + session and close the existing connection. + + 2501 "Authentication error; server closing connection" + This response code MUST be returned when a server notes an error when + validating client credentials and a server-defined limit on the + number of allowable failures has been exceeded. The server MUST + close the existing connection. + + 2502 "Session limit exceeded; server closing connection" + This response code MUST be returned when a server receives a <login> + command, and the command can not be completed because the client has + exceeded a system-defined limit on the number of sessions that the + client can establish. It might be possible to establish a session by + ending existing unused sessions and closing inactive connections. + +4. Formal Syntax + + EPP is specified in XML Schema notation. The formal syntax presented + here is a complete schema representation of EPP suitable for + automated validation of EPP XML instances. + + Two schemas are presented here. The first schema is the base EPP + schema. The second schema defines elements and structures that can + be used by both the base EPP schema and object mapping schemas. 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. + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 48] + +RFC 3730 EPP March 2004 + + +4.1. Base Schema + + BEGIN + <?xml version="1.0" encoding="UTF-8"?> + + <schema targetNamespace="urn:ietf:params:xml:ns:epp-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" + elementFormDefault="qualified"> + + <!-- + Import common element types. + --> + <import namespace="urn:ietf:params:xml:ns:eppcom-1.0" + schemaLocation="eppcom-1.0.xsd"/> + + <annotation> + <documentation> + Extensible Provisioning Protocol v1.0 schema. + </documentation> + </annotation> + + <!-- + Every EPP XML instance must begin with this element. + --> + <element name="epp" type="epp:eppType"/> + + <!-- + An EPP XML instance must contain a greeting, hello, command, + response, or extension. + --> + <complexType name="eppType"> + <choice> + <element name="greeting" type="epp:greetingType"/> + <element name="hello"/> + <element name="command" type="epp:commandType"/> + <element name="response" type="epp:responseType"/> + <element name="extension" type="epp:extAnyType"/> + </choice> + </complexType> + + <!-- + A greeting is sent by a server in response to a client connection + or <hello>. + --> + <complexType name="greetingType"> + <sequence> + + + +Hollenbeck Standards Track [Page 49] + +RFC 3730 EPP March 2004 + + + <element name="svID" type="epp:sIDType"/> + <element name="svDate" type="dateTime"/> + <element name="svcMenu" type="epp:svcMenuType"/> + <element name="dcp" type="epp:dcpType"/> + </sequence> + </complexType> + + <!-- + Server IDs are strings with minimum and maximum length + restrictions. + --> + <simpleType name="sIDType"> + <restriction base="normalizedString"> + <minLength value="3"/> + <maxLength value="64"/> + </restriction> + </simpleType> + + <!-- + A server greeting identifies available object services. + --> + <complexType name="svcMenuType"> + <sequence> + <element name="version" type="epp:versionType" + maxOccurs="unbounded"/> + <element name="lang" type="language" + maxOccurs="unbounded"/> + <element name="objURI" type="anyURI" + maxOccurs="unbounded"/> + <element name="svcExtension" type="epp:extURIType" + minOccurs="0"/> + </sequence> + </complexType> + + <!-- + Data Collection Policy types. + --> + <complexType name="dcpType"> + <sequence> + <element name="access" type="epp:dcpAccessType"/> + <element name="statement" type="epp:dcpStatementType" + maxOccurs="unbounded"/> + <element name="expiry" type="epp:dcpExpiryType" + minOccurs="0"/> + </sequence> + </complexType> + + <complexType name="dcpAccessType"> + + + +Hollenbeck Standards Track [Page 50] + +RFC 3730 EPP March 2004 + + + <choice> + <element name="all"/> + <element name="none"/> + <element name="null"/> + <element name="other"/> + <element name="personal"/> + <element name="personalAndOther"/> + </choice> + </complexType> + + <complexType name="dcpStatementType"> + <sequence> + <element name="purpose" type="epp:dcpPurposeType"/> + <element name="recipient" type="epp:dcpRecipientType"/> + <element name="retention" type="epp:dcpRetentionType"/> + </sequence> + </complexType> + + <complexType name="dcpPurposeType"> + <sequence> + <element name="admin" + minOccurs="0"/> + <element name="contact" + minOccurs="0"/> + <element name="other" + minOccurs="0"/> + <element name="prov" + minOccurs="0"/> + </sequence> + </complexType> + + <complexType name="dcpRecipientType"> + <sequence> + <element name="other" + minOccurs="0"/> + <element name="ours" type="epp:dcpOursType" + minOccurs="0" maxOccurs="unbounded"/> + <element name="public" + minOccurs="0"/> + <element name="same" + minOccurs="0"/> + <element name="unrelated" + minOccurs="0"/> + </sequence> + </complexType> + + <complexType name="dcpOursType"> + <sequence> + + + +Hollenbeck Standards Track [Page 51] + +RFC 3730 EPP March 2004 + + + <element name="recDesc" type="epp:dcpRecDescType" + minOccurs="0"/> + </sequence> + </complexType> + + <simpleType name="dcpRecDescType"> + <restriction base="token"> + <minLength value="1"/> + <maxLength value="255"/> + </restriction> + </simpleType> + + <complexType name="dcpRetentionType"> + <choice> + <element name="business"/> + <element name="indefinite"/> + <element name="legal"/> + <element name="none"/> + <element name="stated"/> + </choice> + </complexType> + + <complexType name="dcpExpiryType"> + <choice> + <element name="absolute" type="dateTime"/> + <element name="relative" type="duration"/> + </choice> + </complexType> + + <!-- + Extension framework types. + --> + <complexType name="extAnyType"> + <sequence> + <any namespace="##other" + maxOccurs="unbounded"/> + </sequence> + </complexType> + + <complexType name="extURIType"> + <sequence> + <element name="extURI" type="anyURI" + maxOccurs="unbounded"/> + </sequence> + </complexType> + + <!-- + An EPP version number is a dotted pair of decimal numbers. + + + +Hollenbeck Standards Track [Page 52] + +RFC 3730 EPP March 2004 + + + --> + <simpleType name="versionType"> + <restriction base="token"> + <pattern value="[1-9]+\.[0-9]+"/> + <enumeration value="1.0"/> + </restriction> + </simpleType> + + <!-- + Command types. + --> + <complexType name="commandType"> + <sequence> + <choice> + <element name="check" type="epp:readWriteType"/> + <element name="create" type="epp:readWriteType"/> + <element name="delete" type="epp:readWriteType"/> + <element name="info" type="epp:readWriteType"/> + <element name="login" type="epp:loginType"/> + <element name="logout"/> + <element name="poll" type="epp:pollType"/> + <element name="renew" type="epp:readWriteType"/> + <element name="transfer" type="epp:transferType"/> + <element name="update" type="epp:readWriteType"/> + </choice> + <element name="extension" type="epp:extAnyType" + minOccurs="0"/> + <element name="clTRID" type="epp:trIDStringType" + minOccurs="0"/> + </sequence> + </complexType> + + <!-- + The <login> command. + --> + <complexType name="loginType"> + <sequence> + <element name="clID" type="eppcom:clIDType"/> + <element name="pw" type="epp:pwType"/> + <element name="newPW" type="epp:pwType" + minOccurs="0"/> + <element name="options" type="epp:credsOptionsType"/> + <element name="svcs" type="epp:loginSvcType"/> + </sequence> + </complexType> + + <complexType name="credsOptionsType"> + <sequence> + + + +Hollenbeck Standards Track [Page 53] + +RFC 3730 EPP March 2004 + + + <element name="version" type="epp:versionType"/> + <element name="lang" type="language"/> + </sequence> + </complexType> + + <simpleType name="pwType"> + <restriction base="token"> + <minLength value="6"/> + <maxLength value="16"/> + </restriction> + </simpleType> + + <complexType name="loginSvcType"> + <sequence> + <element name="objURI" type="anyURI" + maxOccurs="unbounded"/> + <element name="svcExtension" type="epp:extURIType" + minOccurs="0"/> + </sequence> + </complexType> + + <!-- + The <poll> command. + --> + <complexType name="pollType"> + <attribute name="op" type="epp:pollOpType" + use="required"/> + <attribute name="msgID" type="token"/> + </complexType> + + <simpleType name="pollOpType"> + <restriction base="token"> + <enumeration value="ack"/> + <enumeration value="req"/> + </restriction> + </simpleType> + <!-- + The <transfer> command. This is object-specific, and uses attributes + to identify the requested operation. + --> + <complexType name="transferType"> + <sequence> + <any namespace="##other"/> + </sequence> + <attribute name="op" type="epp:transferOpType" + use="required"/> + </complexType> + + + + +Hollenbeck Standards Track [Page 54] + +RFC 3730 EPP March 2004 + + + <simpleType name="transferOpType"> + <restriction base="token"> + <enumeration value="approve"/> + <enumeration value="cancel"/> + <enumeration value="query"/> + <enumeration value="reject"/> + <enumeration value="request"/> + </restriction> + </simpleType> + + <!-- + All other object-centric commands. EPP doesn't specify the syntax or + semantics of object-centric command elements. The elements MUST be + described in detail in another schema specific to the object. + --> + <complexType name="readWriteType"> + <sequence> + <any namespace="##other"/> + </sequence> + </complexType> + + <complexType name="trIDType"> + <sequence> + <element name="clTRID" type="epp:trIDStringType" + minOccurs="0"/> + <element name="svTRID" type="epp:trIDStringType"/> + </sequence> + </complexType> + + <simpleType name="trIDStringType"> + <restriction base="token"> + <minLength value="3"/> + <maxLength value="64"/> + </restriction> + </simpleType> + <!-- + Response types. + --> + <complexType name="responseType"> + <sequence> + <element name="result" type="epp:resultType" + maxOccurs="unbounded"/> + <element name="msgQ" type="epp:msgQType" + minOccurs="0"/> + <element name="resData" type="epp:extAnyType" + minOccurs="0"/> + <element name="extension" type="epp:extAnyType" + minOccurs="0"/> + + + +Hollenbeck Standards Track [Page 55] + +RFC 3730 EPP March 2004 + + + <element name="trID" type="epp:trIDType"/> + </sequence> + </complexType> + + <complexType name="resultType"> + <sequence> + <element name="msg" type="epp:msgType"/> + <choice minOccurs="0" maxOccurs="unbounded"> + <element name="value" type="epp:errValueType"/> + <element name="extValue" type="epp:extErrValueType"/> + </choice> + </sequence> + <attribute name="code" type="epp:resultCodeType" + use="required"/> + </complexType> + + <complexType name="errValueType" mixed="true"> + <sequence> + <any namespace="##any" processContents="skip"/> + </sequence> + <anyAttribute namespace="##any" processContents="skip"/> + </complexType> + + <complexType name="extErrValueType"> + <sequence> + <element name="value" type="epp:errValueType"/> + <element name="reason" type="epp:msgType"/> + </sequence> + </complexType> + + <complexType name="msgQType"> + <sequence> + <element name="qDate" type="dateTime" + minOccurs="0"/> + <element name="msg" type="epp:mixedMsgType" + minOccurs="0"/> + </sequence> + <attribute name="count" type="unsignedLong" + use="required"/> + <attribute name="id" type="eppcom:minTokenType" + use="required"/> + </complexType> + + <complexType name="mixedMsgType" mixed="true"> + <sequence> + <any processContents="skip" + minOccurs="0" maxOccurs="unbounded"/> + </sequence> + + + +Hollenbeck Standards Track [Page 56] + +RFC 3730 EPP March 2004 + + + <attribute name="lang" type="language" + default="en"/> + </complexType> + + <!-- + Human-readable text may be expressed in languages other than English. + --> + <complexType name="msgType"> + <simpleContent> + <extension base="normalizedString"> + <attribute name="lang" type="language" + default="en"/> + </extension> + </simpleContent> + </complexType> + + <!-- + EPP result codes. + --> + <simpleType name="resultCodeType"> + <restriction base="unsignedShort"> + <enumeration value="1000"/> + <enumeration value="1001"/> + <enumeration value="1300"/> + <enumeration value="1301"/> + <enumeration value="1500"/> + <enumeration value="2000"/> + <enumeration value="2001"/> + <enumeration value="2002"/> + <enumeration value="2003"/> + <enumeration value="2004"/> + <enumeration value="2005"/> + <enumeration value="2100"/> + <enumeration value="2101"/> + <enumeration value="2102"/> + <enumeration value="2103"/> + <enumeration value="2104"/> + <enumeration value="2105"/> + <enumeration value="2106"/> + <enumeration value="2200"/> + <enumeration value="2201"/> + <enumeration value="2202"/> + <enumeration value="2300"/> + <enumeration value="2301"/> + <enumeration value="2302"/> + <enumeration value="2303"/> + <enumeration value="2304"/> + <enumeration value="2305"/> + + + +Hollenbeck Standards Track [Page 57] + +RFC 3730 EPP March 2004 + + + <enumeration value="2306"/> + <enumeration value="2307"/> + <enumeration value="2308"/> + <enumeration value="2400"/> + <enumeration value="2500"/> + <enumeration value="2501"/> + <enumeration value="2502"/> + </restriction> + </simpleType> + + <!-- + End of schema. + --> + </schema> + END + +4.2. Shared Structure Schema + + BEGIN + <?xml version="1.0" encoding="UTF-8"?> + + <schema targetNamespace="urn:ietf:params:xml:ns:eppcom-1.0" + xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0" + xmlns="http://www.w3.org/2001/XMLSchema" + elementFormDefault="qualified"> + + <annotation> + <documentation> + Extensible Provisioning Protocol v1.0 + shared structures schema. + </documentation> + </annotation> + + <!-- + Object authorization information types. + --> + <complexType name="pwAuthInfoType"> + <simpleContent> + <extension base="normalizedString"> + <attribute name="roid" type="eppcom:roidType"/> + </extension> + </simpleContent> + </complexType> + + <complexType name="extAuthInfoType"> + <sequence> + <any namespace="##other"/> + </sequence> + + + +Hollenbeck Standards Track [Page 58] + +RFC 3730 EPP March 2004 + + + </complexType> + + <!-- + <check> response types. + --> + <complexType name="reasonType"> + <simpleContent> + <extension base="eppcom:reasonBaseType"> + <attribute name="lang" type="language"/> + </extension> + </simpleContent> + </complexType> + + <simpleType name="reasonBaseType"> + <restriction base="token"> + <minLength value="1"/> + <maxLength value="32"/> + </restriction> + </simpleType> + + <!-- + Abstract client and object identifier type. + --> + <simpleType name="clIDType"> + <restriction base="token"> + <minLength value="3"/> + <maxLength value="16"/> + </restriction> + </simpleType> + + <!-- + DNS label type. + --> + <simpleType name="labelType"> + <restriction base="token"> + <minLength value="1"/> + <maxLength value="255"/> + </restriction> + </simpleType> + + <!-- + Non-empty token type. + --> + <simpleType name="minTokenType"> + <restriction base="token"> + <minLength value="1"/> + </restriction> + </simpleType> + + + +Hollenbeck Standards Track [Page 59] + +RFC 3730 EPP March 2004 + + + <!-- + Repository Object IDentifier type. + --> + <simpleType name="roidType"> + <restriction base="token"> + <pattern value="(\w|_){1,80}-\w{1,8}"/> + </restriction> + </simpleType> + + <!-- + Transfer status identifiers. + --> + <simpleType name="trStatusType"> + <restriction base="token"> + <enumeration value="clientApproved"/> + <enumeration value="clientCancelled"/> + <enumeration value="clientRejected"/> + <enumeration value="pending"/> + <enumeration value="serverApproved"/> + <enumeration value="serverCancelled"/> + </restriction> + </simpleType> + + <!-- + End of schema. + --> + </schema> + END + +5. Internationalization Considerations + + EPP is represented in XML, which provides native support for encoding + information using the Unicode character set and its more compact + representations including UTF-8. Conformant XML processors recognize + both UTF-8 and UTF-16. Though XML includes provisions to identify + and use other character encodings through use of an "encoding" + attribute in an <?xml?> declaration, use of UTF-8 is RECOMMENDED in + environments where parser encoding support incompatibility exists. + + EPP includes a provision for returning a human-readable message with + every result code. This document describes result codes in English, + but the actual text returned with a result MAY be provided in a + language negotiated when a session is established. Languages other + than English MUST be noted through specification of a "lang" + attribute for each message. Valid values for the "lang" attribute + and "lang" negotiation elements are described in [RFC3066]. + + + + + +Hollenbeck Standards Track [Page 60] + +RFC 3730 EPP March 2004 + + + All date-time values presented via EPP MUST be expressed in Universal + Coordinated Time using the Gregorian calendar. XML Schema allows use + of time zone identifiers to indicate offsets from the zero meridian, + but this option MUST NOT be used with EPP. The extended date-time + form using upper case "T" and "Z" characters defined in [RFC3339] + 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. + +6. IANA Considerations + + This document uses URNs to describe XML namespaces and XML schemas + conforming to a registry mechanism described in [RFC3688]. Four URI + assignments have been registered by the IANA. + + Registration request for the EPP namespace: + + URI: urn:ietf:params:xml:ns:epp-1.0 + + Registrant Contact: See the "Author's Address" section of this + document. + + XML: None. Namespace URIs do not represent an XML specification. + + Registration request for the EPP XML schema: + + URI: urn:ietf:params:xml:schema:epp-1.0 + + Registrant Contact: See the "Author's Address" section of this + document. + + XML: See the "Base Schema" section of this document. + + Registration request for the EPP shared structure namespace: + + URI: urn:ietf:params:xml:ns:eppcom-1.0 + + Registrant Contact: See the "Author's Address" section of this + document. + + XML: None. Namespace URIs do not represent an XML specification. + + Registration request for the EPP shared structure XML schema: + + URI: urn:ietf:params:xml:schema:eppcom-1.0 + + + + + + +Hollenbeck Standards Track [Page 61] + +RFC 3730 EPP March 2004 + + + Registrant Contact: See the "Author's Address" section of this + document. + + XML: See the "Shared Structure Schema" section of this document. + +7. Security Considerations + + EPP provides only simple client authentication services. A passive + attack is sufficient to recover client identifiers and passwords, + allowing trivial command forgery. Protection against most common + attacks and more robust security services MUST be provided by other + protocol layers. Specifically, EPP instances MUST be protected using + a transport mechanism or application protocol that provides integrity + and confidentiality. + + EPP uses a variant of the PLAIN SASL mechanism described in [RFC2595] + to provide a simple application-layer authentication service that + augments or supplements authentication and identification services + that might be available at other protocol layers. Where the PLAIN + SASL mechanism specifies provision of an authorization identifier, + authentication identifier, and password as a single string separated + by ASCII NUL characters, EPP specifies use of a combined + authorization and authentication identifier and a password provided + as distinct XML elements. + + Repeated password guessing attempts can be discouraged by limiting + the number of <login> attempts that can be attempted on an open + connection. A server MAY close an open connection if multiple + <login> attempts are made with either an invalid client identifier, + an invalid password, or both an invalid client identifier and an + invalid password. + + EPP uses authentication information associated with objects to + confirm object transfer authority. Authentication information + exchanged between EPP clients and third party entities MUST be + exchanged using a facility that provides privacy and integrity + services to protect against unintended disclosure and modification + while in transit. + +8. Acknowledgements + + This document was originally written as an individual submission + Internet-Draft. The provreg working group later adopted it as a + working group document and provided many invaluable comments and + suggested improvements. The author wishes to acknowledge the efforts + of WG chairs Edward Lewis and Jaap Akkerhuis for their process and + editorial contributions. + + + + +Hollenbeck Standards Track [Page 62] + +RFC 3730 EPP March 2004 + + + Specific suggestions that have been incorporated into this document + were provided by Chris Bason, Eric Brunner-Williams, Jordyn Buchanan, + Roger Castillo Cortazar, Dave Crocker, Ayesha Damaraju, Sheer El- + Showk, Patrik Faltstrom, James Gould, John Immordino, Dan Kohn, Hong + Liu, Klaus Malorny, Dan Manley, Michael Mealling, Patrick Mevzek, + Andrew Newton, Budi Rahardjo, Asbjorn Steira, Rick Wesson, and Jay + Westerdal. + +9. References + +9.1. Normative References + + [RFC2119] Bradner, S., "Key Words for Use in RFCs to Indicate + Requirement Levels", BCP 14, RFC 2119, March 1997. + + [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and + Languages", BCP 18, RFC 2277, January 1998. + + [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO + 10646", RFC 2279, January 1998. + + [RFC2781] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO + 10646", RFC 2781, February 2000. + + [RFC2914] Floyd, S., "Congestion Control Principles", BCP 41, RFC + 2914, September 2000. + + [RFC3023] Murata, M., St.Laurent, S. and D. Kohn, "XML Media Types", + RFC 3023, January 2001. + + [RFC3066] Alvestrand, H., "Tags for the Identification of + Languages", BCP 47, RFC 3066, January 2001. + + [RFC3339] Klyne, G. and C. Newman, "Date and Time on the Internet: + Timestamps", RFC 3339, July 2002. + + [RFC3375] Hollenbeck, S., "Generic Registry-Registrar Protocol + Requirements", RFC 3375, September 2002. + + [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, + January 2004. + + [XML] Editor T. Bray et al.: "Extensible Markup Language (XML) + 1.0 (Second Edition)", W3C Recommendation 6 October 2000. + + [XMLE] "XML 1.0 Second Edition Specification Errata", E22, 25 + July 2001, http://www.w3.org/XML/xml-V10-2e-errata#E22. + + + + +Hollenbeck Standards Track [Page 63] + +RFC 3730 EPP March 2004 + + + [XMLS-1] Editors H. Thompson et al.: "XML Schema Part 1: + Structures", W3C Recommendation 2 May 2001. + + [XMLS-2] Editors P. Biron, A. Malhotra: "XML Schema Part 2: + Datatypes", W3C Recommendation 2 May 2001. + +9.2. Informative References + + [P3P] Editor M. Marchiori: "The Platform for Privacy Preferences + 1.0 (P3P1.0) Specification", W3C Recommendation 16 April + 2002. + + [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC + 793, September 1981. + + [RFC2595] Newman, C., "Using TLS with IMAP, POP3 and ACAP", RFC + 2595, June 1999. + + [RFC2821] Klensin, J., Ed., "Simple Mail Transfer Protocol", RFC + 2821, April 2001. + + [RFC2960] Stewart, R., Xie, Q., Morneault, K., Sharp, C., + Schwarzbauer, H., Taylor, T., Rytina, I., Kalla, M., + Zhang, L. and V. Paxson, "Stream Control Transmission + Protocol", RFC 2960, October 2000. + + [RFC3080] Rose, M., "The Blocks Extensible Exchange Protocol Core", + RFC 3080, March 2001. + + + + + + + + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 64] + +RFC 3730 EPP March 2004 + + +Appendix A: Object Mapping Template + + This appendix describes a recommended outline for documenting the EPP + mapping of an object. Documents that describe EPP object mappings + SHOULD describe the mapping in a format similar to the one used here. + Additional sections are required if the object mapping is written in + Internet-Draft or RFC format. + +1. Introduction + + Provide an introduction that describes the object and an overview of + the mapping to EPP. + +2. Object Attributes + + Describe the attributes associated with the object, including + references to syntax specifications as appropriate. Examples of + object attributes include a name or identifier and dates associated + with modification events. + +3. EPP Command Mapping + +3.1. EPP Query Commands + +3.1.1. EPP <check> Command + + Describe the object-specific mappings required to implement the EPP + <check> command. Include both sample commands and sample responses. + +3.1.2. EPP <info> Command + + Describe the object-specific mappings required to implement the EPP + <info> command. Include both sample commands and sample responses. + +3.1.3. EPP <poll> Command + + Describe the object-specific mappings required to implement the EPP + <poll> command. Include both sample commands and sample responses. + +3.1.4. EPP <transfer> Command + + Describe the object-specific mappings required to implement the EPP + <transfer> query command. Include both sample commands and sample + responses. + + + + + + + +Hollenbeck Standards Track [Page 65] + +RFC 3730 EPP March 2004 + + +3.2. EPP Transform Commands + +3.2.1. EPP <create> Command + + Describe the object-specific mappings required to implement the EPP + <create> command. Include both sample commands and sample responses. + Describe the status of the object with respect to time, including + expected client and server behavior if a validity period is used. + +3.2.2. EPP <delete> Command + + Describe the object-specific mappings required to implement the EPP + <delete> command. Include both sample commands and sample responses. + +3.2.3. EPP <renew> Command + + Describe the object-specific mappings required to implement the EPP + <renew> command. Include both sample commands and sample responses. + +3.2.4. EPP <transfer> Command + + Describe the object-specific mappings required to implement the EPP + <transfer> command. Include both sample commands and sample + responses. + +3.2.5. EPP <update> Command + + Describe the object-specific mappings required to implement the EPP + <update> command. Include both sample commands and sample responses. + +4. Formal Syntax + + Provide the XML schema for the object mapping. An XML DTD MUST NOT + be used as DTDs do not provide sufficient support for XML namespaces + and strong data typing. + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 66] + +RFC 3730 EPP March 2004 + + +Appendix B: Media Type Registration: application/epp+xml + + MIME media type name: application + + MIME subtype name: epp+xml + + Mandatory parameters: none + + Optional parameters: Same as the charset parameter of application/xml + as specified in [RFC3023]. + + Encoding considerations: Same as the encoding considerations of + application/xml as specified in [RFC3023]. + + Security considerations: This type has all of the security + considerations described in [RFC3023] plus the considerations + specified in the Security Considerations section of this document. + + Interoperability considerations: XML has proven to be interoperable + across WebDAV clients and servers, and for import and export from + multiple XML authoring tools. For maximum interoperability, + validating processors are recommended. Although non-validating + processors can be more efficient, they are not required to handle all + features of XML. For further information, see sub-section 2.9 + "Standalone Document Declaration" and section 5 "Conformance" of + [XML]. + + Published specification: This document. + + Applications which use this media type: EPP is device-, platform-, + and vendor-neutral and is supported by multiple service providers. + + Additional information: If used, magic numbers, fragment identifiers, + base URIs, and use of the BOM should be as specified in [RFC3023]. + + Magic number(s): None. File extension(s): .xml Macintosh File Type + Code(s): "TEXT" + + Person and email address for further information: See the "Author's + Address" section of this document. + + Intended usage: COMMON + + Author/Change controller: IETF + + + + + + + +Hollenbeck Standards Track [Page 67] + +RFC 3730 EPP March 2004 + + +Author's Address + + Scott Hollenbeck + VeriSign Global Registry Services + 21345 Ridgetop Circle + Dulles, VA 20166-6503 + USA + + EMail: shollenbeck@verisign.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Hollenbeck Standards Track [Page 68] + +RFC 3730 EPP March 2004 + + +Full Copyright Statement + + Copyright (C) The Internet Society (2004). This document is subject + to the rights, licenses and restrictions contained in BCP 78 and + except as set forth therein, the authors retain all their rights. + + This document and the information contained herein are provided on an + "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS + OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET + ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, + INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE + INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED + WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + +Intellectual Property + + The IETF takes no position regarding the validity or scope of any + Intellectual Property Rights or other rights that might be claimed to + pertain to the implementation or use of the technology described in + this document or the extent to which any license under such rights + might or might not be available; nor does it represent that it has + made any independent effort to identify any such rights. Information + on the procedures with respect to rights in RFC documents can be + found in BCP 78 and BCP 79. + + Copies of IPR disclosures made to the IETF Secretariat and any + assurances of licenses to be made available, or the result of an + attempt made to obtain a general license or permission for the use of + such proprietary rights by implementers or users of this + specification can be obtained from the IETF on-line IPR repository at + http://www.ietf.org/ipr. + + The IETF invites any interested party to bring to its attention any + copyrights, patents or patent applications, or other proprietary + rights that may cover technology that may be required to implement + this standard. Please address the information to the IETF at ietf- + ipr@ietf.org. + +Acknowledgement + + Funding for the RFC Editor function is currently provided by the + Internet Society. + + + + + + + + + +Hollenbeck Standards Track [Page 69] + |