5. Formal Syntax
An EPP object mapping is specified in XML Schema notation. The formal syntax presented here is a complete schema representation of the object mapping suitable for automated validation of EPP XML instances. The BEGIN and END tags are not part of the schema; they are used to note the beginning and ending of the schema for URI registration purposes. BEGIN <?xml version="1.0" encoding="UTF-8"?> <schema targetNamespace="urn:ietf:params:xml:ns:epp:org-1.0" xmlns:org="urn:ietf:params:xml:ns:epp:org-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"/> <import namespace="urn:ietf:params:xml:ns:epp-1.0"/>
<annotation> <documentation> Extensible Provisioning Protocol v1.0 organization provisioning schema. </documentation> </annotation> <!-- Child elements found in EPP commands. --> <element name="create" type="org:createType"/> <element name="delete" type="org:sIDType"/> <element name="update" type="org:updateType"/> <element name="check" type="org:mIDType"/> <element name="info" type="org:infoType"/> <element name="panData" type="org:panDataType"/> <!-- Utility types. --> <simpleType name="statusType"> <restriction base="token"> <enumeration value="ok"/> <enumeration value="hold"/> <enumeration value="terminated"/> <enumeration value="clientDeleteProhibited"/> <enumeration value="clientUpdateProhibited"/> <enumeration value="clientLinkProhibited"/> <enumeration value="linked"/> <enumeration value="pendingCreate"/> <enumeration value="pendingUpdate"/> <enumeration value="pendingDelete"/> <enumeration value="serverDeleteProhibited"/> <enumeration value="serverUpdateProhibited"/> <enumeration value="serverLinkProhibited"/> </restriction> </simpleType> <simpleType name="roleStatusType"> <restriction base="token"> <enumeration value="ok"/> <enumeration value="clientLinkProhibited"/> <enumeration value="linked"/> <enumeration value="serverLinkProhibited"/> </restriction> </simpleType> <complexType name="roleType">
<sequence> <element name="type" type="token"/> <element name="status" type="org:roleStatusType" minOccurs="0" maxOccurs="3"/> <element name="roleID" type="token" minOccurs="0"/> </sequence> </complexType> <complexType name="postalInfoType"> <sequence> <element name="name" type="org:postalLineType"/> <element name="addr" type="org:addrType" minOccurs="0"/> </sequence> <attribute name="type" type="org:postalInfoEnumType" use="required"/> </complexType> <complexType name="contactType"> <simpleContent> <extension base="eppcom:clIDType"> <attribute name="type" type="org:contactAttrType" use="required"/> <attribute name="typeName" type="token"/> </extension> </simpleContent> </complexType> <simpleType name="contactAttrType"> <restriction base="token"> <enumeration value="admin"/> <enumeration value="billing"/> <enumeration value="tech"/> <enumeration value="abuse"/> <enumeration value="custom"/> </restriction> </simpleType> <complexType name="e164Type"> <simpleContent> <extension base="org:e164StringType"> <attribute name="x" type="token"/> </extension> </simpleContent> </complexType>
<simpleType name="e164StringType"> <restriction base="token"> <pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/> <maxLength value="17"/> </restriction> </simpleType> <simpleType name="postalLineType"> <restriction base="normalizedString"> <minLength value="1"/> <maxLength value="255"/> </restriction> </simpleType> <simpleType name="optPostalLineType"> <restriction base="normalizedString"> <maxLength value="255"/> </restriction> </simpleType> <simpleType name="pcType"> <restriction base="token"> <maxLength value="16"/> </restriction> </simpleType> <simpleType name="ccType"> <restriction base="token"> <length value="2"/> </restriction> </simpleType> <complexType name="addrType"> <sequence> <element name="street" type="org:optPostalLineType" minOccurs="0" maxOccurs="3"/> <element name="city" type="org:postalLineType"/> <element name="sp" type="org:optPostalLineType" minOccurs="0"/> <element name="pc" type="org:pcType" minOccurs="0"/> <element name="cc" type="org:ccType"/> </sequence> </complexType> <simpleType name="postalInfoEnumType"> <restriction base="token"> <enumeration value="loc"/>
<enumeration value="int"/> </restriction> </simpleType> <!-- Child element of commands that require only an identifier. --> <complexType name="sIDType"> <sequence> <element name="id" type="eppcom:clIDType"/> </sequence> </complexType> <!-- Child element of commands that accept multiple identifiers. --> <complexType name="mIDType"> <sequence> <element name="id" type="eppcom:clIDType" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Pending action notification response elements. --> <complexType name="panDataType"> <sequence> <element name="id" type="org:paCLIDType"/> <element name="paTRID" type="epp:trIDType"/> <element name="paDate" type="dateTime"/> </sequence> </complexType> <complexType name="paCLIDType"> <simpleContent> <extension base="eppcom:clIDType"> <attribute name="paResult" type="boolean" use="required"/> </extension> </simpleContent> </complexType> <!-- Child elements of the <info> commands. --> <complexType name="infoType"> <sequence>
<element name="id" type="eppcom:clIDType"/> </sequence> </complexType> <!-- Child elements of the <create> command. --> <complexType name="createType"> <sequence> <element name="id" type="eppcom:clIDType"/> <element name="role" type="org:roleType" maxOccurs="unbounded"/> <element name="status" type="org:statusType" minOccurs="0" maxOccurs="4"/> <element name="parentId" type="eppcom:clIDType" minOccurs="0"/> <element name="postalInfo" type="org:postalInfoType" minOccurs="0" maxOccurs="2"/> <element name="voice" type="org:e164Type" minOccurs="0"/> <element name="fax" type="org:e164Type" minOccurs="0"/> <element name="email" type="eppcom:minTokenType" minOccurs="0"/> <element name="url" type="anyURI" minOccurs="0"/> <element name="contact" type="org:contactType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <!-- Child elements of the <update> command. --> <complexType name="updateType"> <sequence> <element name="id" type="eppcom:clIDType"/> <element name="add" type="org:addRemType" minOccurs="0"/> <element name="rem" type="org:addRemType" minOccurs="0"/> <element name="chg" type="org:chgType" minOccurs="0"/> </sequence>
</complexType> <!-- Data elements that can be added or removed. --> <complexType name="addRemType"> <sequence> <element name="contact" type="org:contactType" minOccurs="0" maxOccurs="unbounded"/> <element name="role" type="org:roleType" minOccurs="0" maxOccurs="unbounded"/> <element name="status" type="org:statusType" minOccurs="0" maxOccurs="9"/> </sequence> </complexType> <!-- Data elements that can be changed. --> <complexType name="chgType"> <sequence> <element name="parentId" type="eppcom:clIDType" minOccurs="0"/> <element name="postalInfo" type="org:chgPostalInfoType" minOccurs="0" maxOccurs="2"/> <element name="voice" type="org:e164Type" minOccurs="0"/> <element name="fax" type="org:e164Type" minOccurs="0"/> <element name="email" type="eppcom:minTokenType" minOccurs="0"/> <element name="url" type="anyURI" minOccurs="0"/> </sequence> </complexType> <complexType name="chgPostalInfoType"> <sequence> <element name="name" type="org:postalLineType" minOccurs="0"/> <element name="addr" type="org:addrType" minOccurs="0"/> </sequence> <attribute name="type" type="org:postalInfoEnumType" use="required"/> </complexType>
<!-- Child response elements. --> <element name="chkData" type="org:chkDataType"/> <element name="creData" type="org:creDataType"/> <element name="infData" type="org:infDataType"/> <!-- <check> response elements. --> <complexType name="chkDataType"> <sequence> <element name="cd" type="org:checkType" maxOccurs="unbounded" /> </sequence> </complexType> <complexType name="checkType"> <sequence> <element name="id" type="org:checkIDType"/> <element name="reason" type="eppcom:reasonType" minOccurs="0"/> </sequence> </complexType> <complexType name="checkIDType"> <simpleContent> <extension base="eppcom:clIDType"> <attribute name="avail" type="boolean" use="required"/> </extension> </simpleContent> </complexType> <!-- <info> response elements. --> <complexType name="infDataType"> <sequence> <element name="id" type="eppcom:clIDType"/> <element name="roid" type="eppcom:roidType"/> <element name="role" type="org:roleType" maxOccurs="unbounded"/> <element name="status" type="org:statusType" maxOccurs="9"/>
<element name="parentId" type="eppcom:clIDType" minOccurs="0"/> <element name="postalInfo" type="org:postalInfoType" minOccurs="0" maxOccurs="2"/> <element name="voice" type="org:e164Type" minOccurs="0"/> <element name="fax" type="org:e164Type" minOccurs="0"/> <element name="email" type="eppcom:minTokenType" minOccurs="0"/> <element name="url" type="anyURI" minOccurs="0"/> <element name="contact" type="org:contactType" minOccurs="0" maxOccurs="unbounded"/> <element name="clID" type="eppcom:clIDType" minOccurs="0"/> <element name="crID" type="eppcom:clIDType"/> <element name="crDate" type="dateTime"/> <element name="upID" type="eppcom:clIDType" minOccurs="0"/> <element name="upDate" type="dateTime" minOccurs="0"/> </sequence> </complexType> <!-- <create> response elements. --> <complexType name="creDataType"> <sequence> <element name="id" type="eppcom:clIDType"/> <element name="crDate" type="dateTime"/> </sequence> </complexType> <!-- End of schema. --> </schema> END
6. Internationalization Considerations
EPP is represented in XML, which provides native support for encoding information using the Unicode character set [UNICODE] and its more compact representations, including UTF-8. Conformant XML processors recognize both UTF-8 [RFC3629] and UTF-16 [RFC2781]. 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. As an extension of the EPP organization object mapping, the elements and element content described in this document MUST inherit the internationalization conventions used to represent higher-layer domain and core protocol structures present in an XML instance that includes this extension.7. IANA Considerations
7.1. XML Namespace
This document uses URNs to describe XML namespaces and XML schemas conforming to a registry mechanism described in [RFC3688]. IANA has assigned the following URI. The organization namespace: URI: urn:ietf:params:xml:ns:epp:org-1.0 Registrant Contact: IESG XML: None. Namespace URIs do not represent an XML specification. The organization XML schema: URI: urn:ietf:params:xml:schema:epp:org-1.0 Registrant Contact: IESG XML: See the "Formal Syntax" section of RFC 8543 (this document).
7.2. EPP Extension Registry
The EPP extension described in this document has been registered by IANA in the "Extensions for the Extensible Provisioning Protocol (EPP)" registry described in [RFC7451]. The details of the registration are as follows: Name of Extension: Extensible Provisioning Protocol (EPP) Organization Mapping Document status: Standards Track Reference: RFC 8543 Registrant Name and Email Address: IESG, iesg@ietf.org TLDs: Any IPR Disclosure: None Status: Active Notes: None7.3. Role Type Values Registry
IANA has created a new category of protocol registry for values of the organization roles. The name of this registry is "EPP Organization Role Values". The registration policy for this registry is "Expert Review" [RFC8126].7.3.1. Registration Template
Value: The string value being registered. Description: Brief description of the organization role values. Registrant Name: For RFC specifications, state "IESG". For other specifications, give the name of the responsible party. Registrant Contact Information: An email address, postal address, or some other information to be used to contact the registrant.
7.3.2. Initial Registry Contents
The following are the initial registry contents: Value: registrar Description: The entity object instance represents the authority responsible for the registration in the registry. Registrant: IESG, iesg@ietf.org Value: reseller Description: The entity object instance represents a third party through which the registration was conducted (i.e., not the registry or registrar). Registrant: IESG, iesg@ietf.org Value: privacyproxy Description: The entity object instance represents a third party who could help to register a domain without exposing the registrants' private information. Registrant: IESG, iesg@ietf.org Value: dns-operator Description: The entity object instance represents a third-party DNS operator that maintains the name servers and zone data on behalf of a registrant. Registrant: IESG, iesg@ietf.org8. Security Considerations
The organization object may have personally identifiable information, such as <org:contact>. This information is not a required element in this document that can be provided on a voluntary basis. If it is provided, both client and server MUST ensure that authorization information is stored and exchanged with high-grade encryption mechanisms to provide privacy services, which are specified in [RFC5733]. The security considerations described in [RFC5730] or those caused by the protocol layers used by EPP will apply to this specification as well.
9. References
9.1. Normative References
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, DOI 10.17487/RFC2119, March 1997, <https://www.rfc-editor.org/info/rfc2119>. [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO 10646", STD 63, RFC 3629, DOI 10.17487/RFC3629, November 2003, <https://www.rfc-editor.org/info/rfc3629>. [RFC3688] Mealling, M., "The IETF XML Registry", BCP 81, RFC 3688, DOI 10.17487/RFC3688, January 2004, <https://www.rfc-editor.org/info/rfc3688>. [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform Resource Identifier (URI): Generic Syntax", STD 66, RFC 3986, DOI 10.17487/RFC3986, January 2005, <https://www.rfc-editor.org/info/rfc3986>. [RFC5322] Resnick, P., Ed., "Internet Message Format", RFC 5322, DOI 10.17487/RFC5322, October 2008, <https://www.rfc-editor.org/info/rfc5322>. [RFC5646] Phillips, A., Ed. and M. Davis, Ed., "Tags for Identifying Languages", BCP 47, RFC 5646, DOI 10.17487/RFC5646, September 2009, <https://www.rfc-editor.org/info/rfc5646>. [RFC5730] Hollenbeck, S., "Extensible Provisioning Protocol (EPP)", STD 69, RFC 5730, DOI 10.17487/RFC5730, August 2009, <https://www.rfc-editor.org/info/rfc5730>. [RFC5733] Hollenbeck, S., "Extensible Provisioning Protocol (EPP) Contact Mapping", STD 69, RFC 5733, DOI 10.17487/RFC5733, August 2009, <https://www.rfc-editor.org/info/rfc5733>. [RFC8126] Cotton, M., Leiba, B., and T. Narten, "Guidelines for Writing an IANA Considerations Section in RFCs", BCP 26, RFC 8126, DOI 10.17487/RFC8126, June 2017, <https://www.rfc-editor.org/info/rfc8126>. [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, May 2017, <https://www.rfc-editor.org/info/rfc8174>.
[UNICODE] The Unicode Consortium, "The Unicode Standard", <http://www.unicode.org/versions/latest/>. [W3C.REC-xml-20081126] Bray, T., Paoli, J., Sperberg-McQueen, C., Maler, E., and F. Yergeau, "Extensible Markup Language (XML) 1.0 (Fifth Edition)", World Wide Web Consortium Recommendation REC-xml-20081126, November 2008, <https://www.w3.org/TR/xml/>. [W3C.REC-xmlschema-1-20041028] Thompson, H., Beech, D., Maloney, M., and N. Mendelsohn, "XML Schema Part 1: Structures Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-1-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-1-20041028>. [W3C.REC-xmlschema-2-20041028] Biron, P. and A. Malhotra, "XML Schema Part 2: Datatypes Second Edition", World Wide Web Consortium Recommendation REC-xmlschema-2-20041028, October 2004, <http://www.w3.org/TR/2004/REC-xmlschema-2-20041028>.9.2. Informative References
[RFC2781] Hoffman, P. and F. Yergeau, "UTF-16, an encoding of ISO 10646", RFC 2781, DOI 10.17487/RFC2781, February 2000, <https://www.rfc-editor.org/info/rfc2781>. [RFC7451] Hollenbeck, S., "Extension Registry for the Extensible Provisioning Protocol", RFC 7451, DOI 10.17487/RFC7451, February 2015, <https://www.rfc-editor.org/info/rfc7451>.
Acknowledgments
The authors would like to thank Rik Ribbers, Marc Groeneweg, Patrick Mevzek, Antoin Verschuren, and Scott Hollenbeck for their careful review and valuable comments.Authors' Addresses
Linlin Zhou CNNIC 4 South 4th Street, Zhongguancun, Haidian District Beijing, Beijing 100190 China Email: zhoulinlin@cnnic.cn Ning Kong Consultant Email: ietfing@gmail.com Jiankang Yao CNNIC 4 South 4th Street, Zhongguancun, Haidian District Beijing, Beijing 100190 China Email: yaojk@cnnic.cn James Gould VeriSign, Inc. 12061 Bluemont Way Reston, VA 20190 United States of America Email: jgould@verisign.com URI: http://www.verisign.com Guiqing Zhou Email: qing.joe@gmail.com