<?xml version="1.0"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd"
[
  <!ENTITY rfc2119 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml'>
  <!ENTITY rfc2781 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.2781.xml'>
  <!ENTITY rfc0822 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.0822.xml'>
  <!ENTITY rfc3629 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3629.xml'>
  <!ENTITY rfc3688 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml'>
  <!ENTITY rfc3733 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml/reference.RFC.3733.xml'>

  <!ENTITY W3C.xml PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xml-20040204.xml'>
  <!ENTITY W3C.xmlschema-1 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlschema-1-20041028.xml'>
  <!ENTITY W3C.xmlschema-2 PUBLIC ''
   'http://xml.resource.org/public/rfc/bibxml4/reference.W3C.REC-xmlschema-2-20041028.xml'>

]>

<?xml-stylesheet type="text/xsl" href="rfc2629.xslt"?>

<?rfc toc="yes"?>
<?rfc tocompact="yes"?>
<?rfc tocdepth="4"?>
<?rfc rfcedstyle="yes"?>
<?rfc subcompact="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>

<rfc number="4933" obsoletes="3733" category="std">
  <front>
    <title abbrev="EPP Contact Mapping">
    Extensible Provisioning Protocol (EPP) Contact Mapping</title>
    <author initials="S." surname="Hollenbeck" fullname="Scott Hollenbeck">
      <organization>VeriSign, Inc.</organization>
      <address>
        <postal>
          <street>21345 Ridgetop Circle</street>
          <city>Dulles</city>
          <region>VA</region>
          <code>20166-6503</code>
          <country>US</country>
        </postal>
        <email>shollenbeck@verisign.com</email>
      </address>
    </author>

    <date year="2007" month="May"/>
    <area>Applications</area>
    <keyword>EPP</keyword>
    <keyword>Extensible Provisioning Protocol</keyword>
    <keyword>XML</keyword>
    <keyword>contact</keyword>
    <keyword>registrant</keyword>

    <abstract>
      <t>This document describes an Extensible Provisioning Protocol (EPP)
      mapping for the provisioning and management of individual or
      organizational social information identifiers (known as "contacts")
      stored in a shared central repository.  Specified in Extensible
      Markup Language (XML), the mapping defines EPP command syntax and
      semantics as applied to contacts.  This document obsoletes RFC 3733.</t>
    </abstract>
  </front>

  <middle>
    <section title="Introduction">
      <t>This document describes a personal and organizational identifier
      mapping for version 1.0 of the Extensible Provisioning Protocol
      (EPP).  This mapping is specified using the Extensible Markup
      Language (XML) 1.0 as described in <xref target="W3C.REC-xml-20040204"/>
      and XML Schema notation as described in <xref target="W3C.REC-xmlschema-1-20041028"/>
      and <xref target="W3C.REC-xmlschema-2-20041028"/>.  This document obsoletes
      RFC 3733 <xref target="RFC3733"/>.</t>

      <t><xref target="RFC4930"/> provides a complete description of EPP command and response
      structures.  A thorough understanding of the base protocol
      specification is necessary to understand the mapping described in
      this document.</t>

      <t>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.</t>

      <section title="Conventions Used in This Document">
	<t>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 <xref target="RFC2119"/>.</t>

	<t>In examples, "C:" represents lines sent by a protocol client and "S:"
	represents lines returned by a protocol server.  Indentation and
	white space in examples are provided only to illustrate element
	relationships and are not a REQUIRED feature of this protocol.</t>
      </section>
    </section>

    <section title="Object Attributes">
      <t>An EPP contact object has attributes and associated values that can
      be viewed and modified by the sponsoring client or the server.  This
      section describes each attribute type in detail.  The formal syntax
      for the attribute values described here can be found in the "Formal
      Syntax" section of this document and in the appropriate normative
      references.</t>

      <section title="Contact and Client Identifiers">
	<t>All EPP contacts are identified by a server-unique identifier.
	Contact identifiers are character strings with a specified minimum
	length, a specified maximum length, and a specified format.  Contact
	identifiers use the "clIDType" client identifier syntax described in
	<xref target="RFC4930"/>.</t>
      </section>

      <section title="Status Values">
	<t>A contact object MUST always have at least one associated status
	value.  Status values can be set only by the client that sponsors a
	contact object and by the server on which the object resides.  A
	client can change the status of a contact object using the EPP
	&lt;update&gt; command.  Each status value MAY be accompanied by a string
	of human-readable text that describes the rationale for the status
	applied to the object.</t>

	<t>A client MUST NOT alter status values set by the server.  A server
	MAY alter or override status values set by a client subject to local
	server policies.  The status of an object MAY change as a result of
	either a client-initiated transform command or an action performed by
	a server operator.</t>

	<t>Status values that can be added or removed by a client are prefixed
	with "client".  Corresponding status values that can be added or
	removed by a server are prefixed with "server".  Status values that
	do not begin with either "client" or "server" are server-managed.</t>

	<t>Status Value Descriptions:</t>

        <t><list style="hanging">
          <t hangText="-">clientDeleteProhibited, serverDeleteProhibited
          <vspace blankLines="1"/>
          Requests to delete the object MUST be rejected.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">clientTransferProhibited, serverTransferProhibited
          <vspace blankLines="1"/>
          Requests to transfer the object MUST be rejected.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">clientUpdateProhibited, serverUpdateProhibited
          <vspace blankLines="1"/>
          Requests to update the object (other than to remove this status) MUST
          be rejected.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">linked
          <vspace blankLines="1"/>
          The contact object has at least one active association with another
          object, such as a domain object.  Servers SHOULD provide services to
          determine existing object associations.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">ok
          <vspace blankLines="1"/>
          This is the normal status value for an object that has no pending
	  operations or prohibitions.  This value is set and removed by the
	  server as other status values are added or removed.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">pendingCreate, pendingDelete, pendingRenew, pendingTransfer, pendingUpdate
          <vspace blankLines="1"/>
          A transform command has been processed for the object, but the action
	  has not been completed by the server.  Server operators can delay
	  action completion for a variety of reasons, such as to allow for human
	  review or third-party action.  A transform command that is processed,
	  but whose requested action is pending, is noted with response code
          1001.
          </t>
        </list></t>

	<t>When the requested action has been completed, the pendingCreate,
	pendingDelete, pendingTransfer, or pendingUpdate status value MUST be
	removed.  All clients involved in the transaction MUST be notified
	using a service message that the action has been completed and that
	the status of the object has changed.</t>

	<t>"ok" status MAY only be combined with "linked" status.</t>

	<t>"linked" status MAY be combined with any status.</t>

	<t>"pendingDelete" status MUST NOT be combined with either
	"clientDeleteProhibited" or "serverDeleteProhibited" status.</t>

	<t>"pendingTransfer" status MUST NOT be combined with either
	"clientTransferProhibited" or "serverTransferProhibited" status.
	"pendingUpdate" status MUST NOT be combined with either
	"clientUpdateProhibited" or "serverUpdateProhibited" status.</t>

	<t>The pendingCreate, pendingDelete, pendingTransfer, and pendingUpdate
	status values MUST NOT be combined with each other.</t>

	<t>Other status combinations not expressly prohibited MAY be used.</t>
      </section>

      <section title="Individual and Organizational Names">
	<t>Individual and organizational names associated with a contact are
	represented using character strings.  These strings have a specified
	minimum length and a specified maximum length.  Individual and
	organizational names MAY be provided in both UTF-8 <xref target="RFC3629"/> and a
	subset of UTF-8 that can be represented in 7-bit ASCII depending on
	local needs.</t>
      </section>

      <section title="Address">
	<t>Every contact has associated postal address information.  A postal
	address contains OPTIONAL street information, city information,
	OPTIONAL state/province information, an OPTIONAL postal code, and a
	country identifier.  Address information MAY be provided in both
	UTF-8 and a subset of UTF-8 that can be represented in 7-bit ASCII
	depending on local needs.</t>

        <section title="Street, City, and State or Province">
	  <t>Contact street, city, and state or province information is
	  represented using character strings.  These strings have a specified
	  minimum length and a specified maximum length.</t>
	</section>

        <section title="Postal Code">
	  <t>Contact postal codes are represented using character strings.  These
	  strings have a specified minimum length and a specified maximum
	  length.</t>
	</section>

        <section title="Country">
	  <t>Contact country identifiers are represented using two-character
	  identifiers specified in <xref target="ISO.3166.1997"/>.</t>
	</section>
      </section>

      <section title="Telephone Numbers">
	<t>Contact telephone number structure is derived from structures defined
	in <xref target="ITU.E164.2005"/>.  Telephone numbers described in this mapping are
	character strings that MUST begin with a plus sign ("+", ASCII value
	0x002B), followed by a country code defined in <xref target="ITU.E164.2005"/>, followed by a
	dot (".", ASCII value 0x002E), followed by a sequence of digits
	representing the telephone number.  An optional "x" attribute is
	provided to note telephone extension information.</t>
      </section>

      <section title="Email Addresses">
	<t>Email address syntax is defined in <xref target="RFC0822"/>.  This mapping does not
	prescribe minimum or maximum lengths for character strings used to
	represent email addresses.</t>
      </section>

      <section title="Dates and Times">
	<t>Date and time attribute values MUST be represented in Universal
	Coordinated Time (UTC) using the Gregorian calendar.  The extended
	date-time form using upper case "T" and "Z" characters defined in
	<xref target="W3C.REC-xmlschema-2-20041028"/> 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.</t>
      </section>

      <section title="Authorization Information" anchor="authInfo">
	<t>Authorization information is associated with contact objects to
	facilitate transfer operations.  Authorization information is
	assigned when a contact object is created, and it might be updated in
	the future.  This specification describes password-based
	authorization information, though other mechanisms are possible.</t>
      </section>

      <section title="Disclosure of Data Elements and Attributes">
	<t>The EPP core protocol requires a server operator to announce data
	collection policies to clients; see Section 2.4 of <xref target="RFC4930"/>.  In
	conjunction with this disclosure requirement, this mapping includes
	data elements that allow a client to identify elements that require
	exceptional server operator handling to allow or restrict disclosure
	to third parties.</t>

	<t>A server operator announces a default disclosure policy when
	establishing a session with a client.  When an object is created or
	updated, the client can specify contact attributes that require
	exceptional disclosure handling using an OPTIONAL &lt;contact:disclose&gt;
	element.  Once set, disclosure preferences can be reviewed using a
	contact information query.  A server operator MUST reject any
	transaction that requests disclosure practices that do not conform to
	the announced data collection policy with a 2308 error response code.</t>

	<t>If present, the &lt;contact:disclose&gt; element MUST contain a "flag"
	attribute.  The "flag" attribute contains an XML Schema boolean
	value.  A value of "true" or "1" (one) notes a client
	preference to allow disclosure of the specified elements as an
	exception to the stated data collection policy.  A value of "false"
	or "0" (zero) notes a client preference to not allow
	disclosure of the specified elements as an exception to the stated
	data collection policy.</t>

	<t>The &lt;contact:disclose&gt; element MUST contain at least one of the
	following child elements:
	<vspace blankLines="1"/></t>

        <figure>
          <artwork>&lt;contact:name type="int"/&gt;
&lt;contact:name type="loc"/&gt;
&lt;contact:org type="int"/&gt;
&lt;contact:org type="loc"/&gt;
&lt;contact:addr type="int"/&gt;
&lt;contact:addr type="loc"/&gt;
&lt;contact:voice/&gt;
&lt;contact:fax/&gt;
&lt;contact:email/&gt;</artwork>
        </figure>

        <t></t>

        <figure>
          <artwork>Example &lt;contact:disclose&gt; element, flag="0":

&lt;contact:disclose flag="0"&gt;
 &lt;contact:email/&gt;
 &lt;contact:voice/&gt;
&lt;/contact:disclose&gt;</artwork>
        </figure>

	<t>In this example, the contact email address and voice telephone number
	cannot be disclosed.  All other elements are subject to disclosure
	in accordance with the server's data collection policy.
	<vspace blankLines="1"/></t>

        <figure>
          <artwork>Example &lt;contact:disclose&gt; element, flag="1":

&lt;contact:disclose flag="1"&gt;
 &lt;contact:name type="int"/&gt;
 &lt;contact:org type="int"/&gt;
 &lt;contact:addr type="int"/&gt;
&lt;/contact:disclose&gt;</artwork>
        </figure>

	<t>In this example, the internationalized contact name, organization,
	and address information can be disclosed.  All other elements are
	subject to disclosure in accordance with the server's data collection
	policy.</t>

	<t>Client identification features provided by the EPP &lt;login&gt; command
	and contact authorization information are used to determine if a
	client is authorized to perform contact information query commands.
	These features also determine if a client is authorized to receive
	data that is otherwise marked for non-disclosure in a query response.</t>
      </section>
    </section>

    <section title="EPP Command Mapping">
      <t>A detailed description of the EPP syntax and semantics can be found
      in <xref target="RFC4930"/>.  The command mappings described here are specifically
      for use in provisioning and managing contact objects via EPP.</t>

      <section title="EPP Query Commands">
	<t>EPP provides three commands to retrieve contact information: &lt;check&gt;
	to determine if a contact object can be provisioned within a
	repository, &lt;info&gt; to retrieve detailed information associated with a
	contact object, and &lt;transfer&gt; to retrieve contact object transfer
	status information.</t>

        <section title="EPP &lt;check&gt; Command">
	  <t>The EPP &lt;check&gt; 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 &lt;create&gt; command as object provisioning requirements are
	  ultimately a matter of server policy.</t>

	  <t>In addition to the standard EPP command elements, the &lt;check&gt; command
	  MUST contain a &lt;contact:check&gt; element that identifies the contact
	  namespace.  The &lt;contact:check&gt; element contains the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">One or more &lt;contact:id&gt; elements that contain the server-unique
            identifier of the contact objects to be queried.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;check&gt; command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;check&gt;
C:      &lt;contact:check
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:id&gt;sah8013&lt;/contact:id&gt;
C:        &lt;contact:id&gt;8013sah&lt;/contact:id&gt;
C:      &lt;/contact:check&gt;
C:    &lt;/check&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When a &lt;check&gt; command has been processed successfully, the EPP
	  &lt;resData&gt; element MUST contain a child &lt;contact:chkData&gt; element that
	  identifies the contact namespace.  The &lt;contact:chkData&gt; element contains
	  one or more &lt;contact:cd&gt; elements that contain the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; 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 &lt;check&gt; 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 cannot be provisioned.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:reason&gt; element that MAY be provided when an
            object cannot be provisioned.  If present, this element contains
            server-specific text to help explain why the object cannot 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).
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;check&gt; response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:chkData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:cd&gt;
S:          &lt;contact:id avail="1"&gt;sh8013&lt;/contact:id&gt;
S:        &lt;/contact:cd&gt;
S:        &lt;contact:cd&gt;
S:          &lt;contact:id avail="0"&gt;sah8013&lt;/contact:id&gt;
S:          &lt;contact:reason&gt;In use&lt;/contact:reason&gt;
S:        &lt;/contact:cd&gt;
S:        &lt;contact:cd&gt;
S:          &lt;contact:id avail="1"&gt;8013sah&lt;/contact:id&gt;
S:        &lt;/contact:cd&gt;
S:      &lt;/contact:chkData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54322-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if a &lt;check&gt; command cannot
	  be processed for any reason.</t>
	</section>

        <section title="EPP &lt;info&gt; Command">
	  <t>The EPP &lt;info&gt; command is used to retrieve information associated
	  with a contact object.  In addition to the standard EPP command
	  elements, the &lt;info&gt; command MUST contain a &lt;contact:info&gt; element
	  that identifies the contact namespace.  The &lt;contact:info&gt; element contains
	  the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object to be queried.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:authInfo&gt; element that contains authorization
            information associated with the contact object.  If this element
            is not provided or if the authorization information is invalid,
            server policy determines if the command is rejected or if response
            information will be returned to the client.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;info&gt; command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;info&gt;
C:      &lt;contact:info
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:authInfo&gt;
C:          &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
C:        &lt;/contact:authInfo&gt;
C:      &lt;/contact:info&gt;
C:    &lt;/info&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When an &lt;info&gt; command has been processed successfully, the EPP
	  &lt;resData&gt; element MUST contain a child &lt;contact:infData&gt; element that
	  identifies the contact namespace.  The &lt;contact:infData&gt; element contains
	  the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:roid&gt; element that contains the Repository Object
            IDentifier assigned to the contact object when the object was
            created.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">One or more &lt;contact:status&gt; elements that describe the status of
            the contact object.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">One or two &lt;contact:postalInfo&gt; elements that contain postal
            address information.  Two elements are provided so that address
            information can be provided in both internationalized and
            localized forms; a "type" attribute is used to identify the two
            forms.  If an internationalized form (type="int") is provided,
            element content MUST be represented in a subset of UTF-8 that can
            be represented in the 7-bit US-ASCII character set.  If a
            localized form (type="loc") is provided, element content MAY be
            represented in unrestricted UTF-8.  The &lt;contact:postalInfo&gt;
            element contains the following child elements:
            </t>

            <t><list style="hanging">
              <t hangText="-">A &lt;contact:name&gt; element that contains the name of the
               individual or role represented by the contact.
               <vspace blankLines="1"/>
               </t>

               <t hangText="-">An OPTIONAL &lt;contact:org&gt; element that contains the name of the
               organization with which the contact is affiliated.
               <vspace blankLines="1"/>
               </t>

               <t hangText="-">A &lt;contact:addr&gt; element that contains address information
               associated with the contact.  A &lt;contact:addr&gt; element contains
               the following child elements:
               </t>

               <t><list style="hanging">
                 <t hangText="-">One, two, or three OPTIONAL &lt;contact:street&gt; elements that
                 contain the contact's street address.
                 <vspace blankLines="1"/>
                 </t>

                 <t hangText="-">A &lt;contact:city&gt; element that contains the contact's city.
                 <vspace blankLines="1"/>
                 </t>

                 <t hangText="-">An OPTIONAL &lt;contact:sp&gt; element that contains the contact's
                 state or province.
                 <vspace blankLines="1"/>
                 </t>

                 <t hangText="-">An OPTIONAL &lt;contact:pc&gt; element that contains the contact's
                 postal code.
                 <vspace blankLines="1"/>
                 </t>

                 <t hangText="-">A &lt;contact:cc&gt; element that contains the contact's country
                 code.
                 <vspace blankLines="1"/>
                 </t>
               </list></t>
            </list></t>

            <t hangText="-">An OPTIONAL &lt;contact:voice&gt; element that contains the contact's
            voice telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:fax&gt; element that contains the contact's
            facsimile telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:email&gt; element that contains the contact's email
            address.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:clID&gt; element that contains the identifier of the
            sponsoring client.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:crID&gt; element that contains the identifier of the
            client that created the contact object.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:crDate&gt; element that contains the date and time of
            contact object creation.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:upID&gt; element that contains the identifier of the
            client that last updated the contact object.  This element MUST
            NOT be present if the contact has never been modified.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:upDate&gt; element that contains the date and time of the
            most recent contact object modification.  This element MUST NOT be
            present if the contact object has never been modified.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:trDate&gt; element that contains the date and time of the
            most recent successful contact object transfer.  This element MUST
            NOT be provided if the contact object has never been transferred.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:authInfo&gt; element that contains authorization
            information associated with the contact object.  This element MUST
            NOT be provided if the querying client is not the current
            sponsoring client.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:disclose&gt; element that identifies elements
            that require exceptional server operator handling to allow or
            restrict disclosure to third parties.  See Section 2.9 for a
            description of the child elements contained within the
            &lt;contact:disclose&gt; element.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;info&gt; response for an authorized client:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:infData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:roid&gt;SH8013-REP&lt;/contact:roid&gt;
S:        &lt;contact:status s="linked"/&gt;
S:        &lt;contact:status s="clientDeleteProhibited"/&gt;
S:        &lt;contact:postalInfo type="int"&gt;
S:          &lt;contact:name&gt;John Doe&lt;/contact:name&gt;
S:          &lt;contact:org&gt;Example Inc.&lt;/contact:org&gt;
S:          &lt;contact:addr&gt;
S:            &lt;contact:street&gt;123 Example Dr.&lt;/contact:street&gt;
S:            &lt;contact:street&gt;Suite 100&lt;/contact:street&gt;
S:            &lt;contact:city&gt;Dulles&lt;/contact:city&gt;
S:            &lt;contact:sp&gt;VA&lt;/contact:sp&gt;
S:            &lt;contact:pc&gt;20166-6503&lt;/contact:pc&gt;
S:            &lt;contact:cc&gt;US&lt;/contact:cc&gt;
S:          &lt;/contact:addr&gt;
S:        &lt;/contact:postalInfo&gt;
S:        &lt;contact:voice x="1234"&gt;+1.7035555555&lt;/contact:voice&gt;
S:        &lt;contact:fax&gt;+1.7035555556&lt;/contact:fax&gt;
S:        &lt;contact:email&gt;jdoe@example.com&lt;/contact:email&gt;
S:        &lt;contact:clID&gt;ClientY&lt;/contact:clID&gt;
S:        &lt;contact:crID&gt;ClientX&lt;/contact:crID&gt;
S:        &lt;contact:crDate&gt;1999-04-03T22:00:00.0Z&lt;/contact:crDate&gt;
S:        &lt;contact:upID&gt;ClientX&lt;/contact:upID&gt;
S:        &lt;contact:upDate&gt;1999-12-03T09:00:00.0Z&lt;/contact:upDate&gt;
S:        &lt;contact:trDate&gt;2000-04-08T09:00:00.0Z&lt;/contact:trDate&gt;
S:        &lt;contact:authInfo&gt;
S:          &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
S:        &lt;/contact:authInfo&gt;
S:        &lt;contact:disclose flag="0"&gt;
S:          &lt;contact:voice/&gt;
S:          &lt;contact:email/&gt;
S:        &lt;/contact:disclose&gt;
S:      &lt;/contact:infData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54322-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if an &lt;info&gt; command cannot
	  be processed for any reason.</t>
	</section>

        <section title="EPP &lt;transfer&gt; Query Command">
	  <t>The EPP &lt;transfer&gt; command provides a query operation that allows a
	  client to determine real-time status of pending and completed
	  transfer requests.  In addition to the standard EPP command elements,
	  the &lt;transfer&gt; command MUST contain an "op" attribute with value
	  "query", and a &lt;contact:transfer&gt; element that identifies the contact
	  namespace.  The &lt;contact:transfer&gt; element MUST contain the following
	  child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object to be queried.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:authInfo&gt; element that contains authorization
            information associated with the contact object.  If this element
            is not provided or if the authorization information is invalid,
            server policy determines whether the command is rejected or the
            response information will be returned to the client.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;transfer&gt; query command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;transfer op="query"&gt;
C:      &lt;contact:transfer
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:authInfo&gt;
C:          &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
C:        &lt;/contact:authInfo&gt;
C:      &lt;/contact:transfer&gt;
C:    &lt;/transfer&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When a &lt;transfer&gt; query command has been processed successfully, the
	  EPP &lt;resData&gt; element MUST contain a child &lt;contact:trnData&gt; element
	  that identifies the contact namespace.  The &lt;contact:trnData&gt; element
	  contains the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            for the queried contact.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:trStatus&gt; element that contains the state of the most
            recent transfer request.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:reID&gt; element that contains the identifier of the
            client that requested the object transfer.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:reDate&gt; element that contains the date and time that
            the transfer was requested.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:acID&gt; element that contains the identifier of the client
	    that SHOULD act upon a PENDING transfer request.  For all other status types, the value
	    identifies the client that took the indicated action.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:acDate&gt; element that contains the date and time of a
            required or completed response.  For a pending request, the value
            identifies the date and time by which a response is required
            before an automated response action SHOULD be taken by the server.
            For all other status types, the value identifies the date and time
            when the request was completed.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;transfer&gt; query response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:trnData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:trStatus&gt;pending&lt;/contact:trStatus&gt;
S:        &lt;contact:reID&gt;ClientX&lt;/contact:reID&gt;
S:        &lt;contact:reDate&gt;2000-06-06T22:00:00.0Z&lt;/contact:reDate&gt;
S:        &lt;contact:acID&gt;ClientY&lt;/contact:acID&gt;
S:        &lt;contact:acDate&gt;2000-06-11T22:00:00.0Z&lt;/contact:acDate&gt;
S:      &lt;/contact:trnData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54322-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if a &lt;transfer&gt; query command
	  cannot be processed for any reason.</t>
	</section>
      </section>

      <section title="EPP Transform Commands">
	<t>EPP provides four commands to transform contact object information:
	&lt;create&gt; to create an instance of a contact object, &lt;delete&gt; to
	delete an instance of a contact object, &lt;transfer&gt; to manage contact
	object sponsorship changes, and &lt;update&gt; to change information
	associated with a contact object.  This document does not define a
	mapping for the EPP &lt;renew&gt; command.</t>

	<t>Transform commands are typically processed and completed in real
	time.  Server operators MAY receive and process transform commands,
	but defer completing the requested action if human or third-party
	review is required before the requested action can be completed.  In
	such situations, the server MUST return a 1001 response code to the
	client to note that the command has been received and processed, but
	the requested action is pending.  The server MUST also manage the
	status of the object that is the subject of the command to reflect
	the initiation and completion of the requested action.  Once the
	action has been completed, all clients involved in the transaction
	MUST be notified using a service message that the action has been
	completed and that the status of the object has changed.</t>

        <section title="EPP &lt;create&gt; Command">
	  <t>The EPP &lt;create&gt; command provides a transform operation that allows a
	  client to create a contact object.  In addition to the standard EPP
	  command elements, the &lt;create&gt; command MUST contain a
	  &lt;contact:create&gt; element that identifies the contact namespace.  The
	  &lt;contact:create&gt; element contains the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the desired server-unique
            identifier for the contact to be created.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">One or two &lt;contact:postalInfo&gt; elements that contain postal
            address information.  Two elements are provided so that address
            information can be provided in both internationalized and
            localized forms; a "type" attribute is used to identify the two
            forms.  If an internationalized form (type="int") is provided,
            element content MUST be represented in a subset of UTF-8 that can
            be represented in the 7-bit US-ASCII character set.  If a
            localized form (type="loc") is provided, element content MAY be
            represented in unrestricted UTF-8.  The &lt;contact:postalInfo&gt;
            element contains the following child elements:
            </t>

            <t><list style="hanging">
              <t hangText="-">A &lt;contact:name&gt; element that contains the name of the
              individual or role represented by the contact.
              <vspace blankLines="1"/>
              </t>

              <t hangText="-">An OPTIONAL &lt;contact:org&gt; element that contains the name of the
              organization with which the contact is affiliated.
              <vspace blankLines="1"/>
              </t>

              <t hangText="-">A &lt;contact:addr&gt; element that contains address information
              associated with the contact.  A &lt;contact:addr&gt; element contains
              the following child elements:
              </t>

              <t><list style="hanging">
                <t hangText="-">One, two, or three OPTIONAL &lt;contact:street&gt; elements that
                contain the contact's street address.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">A &lt;contact:city&gt; element that contains the contact's city.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">An OPTIONAL &lt;contact:sp&gt; element that contains the contact's
                state or province.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">An OPTIONAL &lt;contact:pc&gt; element that contains the contact's
                postal code.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">A &lt;contact:cc&gt; element that contains the contact's country
                code.
                <vspace blankLines="1"/>
                </t>
              </list></t>
            </list></t>

            <t hangText="-">An OPTIONAL &lt;contact:voice&gt; element that contains the contact's
            voice telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:fax&gt; element that contains the contact's
            facsimile telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:email&gt; element that contains the contact's email
            address.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:authInfo&gt; element that contains authorization
            information to be associated with the contact object.  This
            mapping includes a password-based authentication mechanism, but
            the schema allows new mechanisms to be defined in new schemas.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:disclose&gt; element that allows a client to
            identify elements that require exceptional server operator
            handling to allow or restrict disclosure to third parties.  See
            Section 2.9 for a description of the child elements contained
            within the &lt;contact:disclose&gt; element.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;create&gt; command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;create&gt;
C:      &lt;contact:create
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:postalInfo type="int"&gt;
C:          &lt;contact:name&gt;John Doe&lt;/contact:name&gt;
C:          &lt;contact:org&gt;Example Inc.&lt;/contact:org&gt;
C:          &lt;contact:addr&gt;
C:            &lt;contact:street&gt;123 Example Dr.&lt;/contact:street&gt;
C:            &lt;contact:street&gt;Suite 100&lt;/contact:street&gt;
C:            &lt;contact:city&gt;Dulles&lt;/contact:city&gt;
C:            &lt;contact:sp&gt;VA&lt;/contact:sp&gt;
C:            &lt;contact:pc&gt;20166-6503&lt;/contact:pc&gt;
C:            &lt;contact:cc&gt;US&lt;/contact:cc&gt;
C:          &lt;/contact:addr&gt;
C:        &lt;/contact:postalInfo&gt;
C:        &lt;contact:voice x="1234"&gt;+1.7035555555&lt;/contact:voice&gt;
C:        &lt;contact:fax&gt;+1.7035555556&lt;/contact:fax&gt;
C:        &lt;contact:email&gt;jdoe@example.com&lt;/contact:email&gt;
C:        &lt;contact:authInfo&gt;
C:          &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
C:        &lt;/contact:authInfo&gt;
C:        &lt;contact:disclose flag="0"&gt;
C:          &lt;contact:voice/&gt;
C:          &lt;contact:email/&gt;
C:        &lt;/contact:disclose&gt;
C:      &lt;/contact:create&gt;
C:    &lt;/create&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When a &lt;create&gt; command has been processed successfully, the EPP
	  &lt;resData&gt; element MUST contain a child &lt;contact:creData&gt; element that
	  identifies the contact namespace.  The &lt;contact:creData&gt; element contains
	  the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            for the created contact.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:crDate&gt; element that contains the date and time of
            contact object creation.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;create&gt; response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:creData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:crDate&gt;1999-04-03T22:00:00.0Z&lt;/contact:crDate&gt;
S:      &lt;/contact:creData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54321-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if a &lt;create&gt; command cannot
	  be processed for any reason.</t>
	</section>

        <section title="EPP &lt;delete&gt; Command">
	  <t>The EPP &lt;delete&gt; command provides a transform operation that allows a
	  client to delete a contact object.  In addition to the standard EPP
	  command elements, the &lt;delete&gt; command MUST contain a
	  &lt;contact:delete&gt; element that identifies the contact namespace.  The
	  &lt;contact:delete&gt; element MUST contain the following child element:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object to be deleted.
	    </t>
	  </list></t>

	  <t>A contact object SHOULD NOT be deleted if it is associated with
	  other known objects.  An associated contact SHOULD NOT be deleted
	  until associations with other known objects have been broken.  A
	  server SHOULD notify clients of object relationships when a
	  &lt;delete&gt; command is attempted and fails due to existing object
	  relationships.</t>

          <figure>
            <artwork>Example &lt;delete&gt; command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;delete&gt;
C:      &lt;contact:delete
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:      &lt;/contact:delete&gt;
C:    &lt;/delete&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When a &lt;delete&gt; command has been processed successfully, a server
	  MUST respond with an EPP response with no &lt;resData&gt; element.
	  <vspace blankLines="1"/></t>

          <figure>
            <artwork>Example &lt;delete&gt; response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54321-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if a &lt;delete&gt; command cannot
	  be processed for any reason.</t>
	</section>

        <section title="EPP &lt;renew&gt; Command">
	  <t>Renewal semantics do not apply to contact objects, so there is no
	  mapping defined for the EPP &lt;renew&gt; command.</t>
	</section>

        <section title="EPP &lt;transfer&gt; Command">
	  <t>The EPP &lt;transfer&gt; command provides a transform operation that allows
	  a client to manage requests to transfer the sponsorship of a contact
	  object.  In addition to the standard EPP command elements, the
	  &lt;transfer&gt; command MUST contain a &lt;contact:transfer&gt; element that
	  identifies the contact namespace.  The &lt;contact:transfer&gt; element
	  contains the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object for which a transfer request is to be
            created, approved, rejected, or cancelled.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:authInfo&gt; element that contains authorization
            information associated with the contact object.
            </t>
	  </list></t>

	  <t>Every EPP &lt;transfer&gt; command MUST contain an "op" attribute that
	  identifies the transfer operation to be performed as defined in
	  <xref target="RFC4930"/>.</t>

            <vspace blankLines="1"/>
          <figure>
            <artwork>Example &lt;transfer&gt; request command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;transfer op="request"&gt;
C:      &lt;contact:transfer
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:authInfo&gt;
C:          &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
C:        &lt;/contact:authInfo&gt;
C:      &lt;/contact:transfer&gt;
C:    &lt;/transfer&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When a &lt;transfer&gt; command has been processed successfully, the EPP
	  &lt;resData&gt; element MUST contain a child &lt;contact:trnData&gt; element that
	  identifies the contact namespace.  The &lt;contact:trnData&gt; element contains
	  the same child elements defined for a &lt;transfer&gt; query response.
	  <vspace blankLines="1"/></t>

          <figure>
            <artwork>Example &lt;transfer&gt; response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1001"&gt;
S:      &lt;msg&gt;Command completed successfully; action pending&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:trnData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:trStatus&gt;pending&lt;/contact:trStatus&gt;
S:        &lt;contact:reID&gt;ClientX&lt;/contact:reID&gt;
S:        &lt;contact:reDate&gt;2000-06-08T22:00:00.0Z&lt;/contact:reDate&gt;
S:        &lt;contact:acID&gt;ClientY&lt;/contact:acID&gt;
S:        &lt;contact:acDate&gt;2000-06-13T22:00:00.0Z&lt;/contact:acDate&gt;
S:      &lt;/contact:trnData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54322-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if a
	  &lt;transfer&gt; command cannot be processed for any reason.</t>
	</section>

        <section title="EPP &lt;update&gt; Command">
	  <t>The EPP &lt;update&gt; command provides a transform operation that allows a
	  client to modify the attributes of a contact object.  In addition to
	  the standard EPP command elements, the &lt;update&gt; command MUST contain
	  a &lt;contact:update&gt; element that identifies the contact namespace.  The
	  &lt;contact:update&gt; element contains the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
            of the contact object to be updated.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:add&gt; element that contains attribute values
            to be added to the object.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:rem&gt; element that contains attribute values
            to be removed from the object.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">An OPTIONAL &lt;contact:chg&gt; element that contains object attribute
            values to be changed.
            </t>
	  </list></t>

	  <t>At least one &lt;contact:add&gt;, &lt;contact:rem&gt;, or &lt;contact:chg&gt; element
	  MUST be provided if the command is not being extended.  All of these elements MAY be
	  omitted if an &lt;update&gt; extension is present.  The &lt;contact:add&gt; and
	  &lt;contact:rem&gt; elements contain the following child elements:</t>

	  <t><list style="hanging">
	    <t hangText="-">One or more &lt;contact:status&gt; elements that contain status values
            to be associated with or removed from the object.  When specifying
            a value to be removed, only the attribute value is significant;
            element text is not required to match a value for removal.
            </t>
	  </list></t>

	  <t>A &lt;contact:chg&gt; element contains the following OPTIONAL child
	  elements.  At least one child element MUST be present:</t>

	  <t><list style="hanging">
	    <t hangText="-">One or two &lt;contact:postalInfo&gt; elements that contain postal
            address information.  Two elements are provided so that address
            information can be provided in both internationalized and
            localized forms; a "type" attribute is used to identify the two
            forms.  If an internationalized form (type="int") is provided,
            element content MUST be represented in a subset of UTF-8 that can
            be represented in the 7-bit US-ASCII character set.  If a
            localized form (type="loc") is provided, element content MAY be
            represented in unrestricted UTF-8.  The &lt;contact:postalInfo&gt;
            element contains the following OPTIONAL child elements:
            </t>

            <t><list style="hanging">
              <t hangText="-">A &lt;contact:name&gt; element that contains the name of the
              individual or role represented by the contact.
              <vspace blankLines="1"/>
              </t>

              <t hangText="-">A &lt;contact:org&gt; element that contains the name of the
              organization with which the contact is affiliated.
              <vspace blankLines="1"/>
              </t>

              <t hangText="-">A &lt;contact:addr&gt; element that contains address information
              associated with the contact.  A &lt;contact:addr&gt; element contains
              the following child elements:
              </t>

              <t><list style="hanging">
                <t hangText="-">One, two, or three OPTIONAL &lt;contact:street&gt; elements that
                contain the contact's street address.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">A &lt;contact:city&gt; element that contains the contact's city.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">An OPTIONAL &lt;contact:sp&gt; element that contains the contact's
                state or province.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">An OPTIONAL &lt;contact:pc&gt; element that contains the contact's
                postal code.
                <vspace blankLines="1"/>
                </t>

                <t hangText="-">A &lt;contact:cc&gt; element that contains the contact's country
                code.
                <vspace blankLines="1"/>
                </t>
              </list></t>
            </list></t>

            <t hangText="-">A &lt;contact:voice&gt; element that contains the contact's voice
            telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:fax&gt; element that contains the contact's facsimile
            telephone number.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:email&gt; element that contains the contact's email
            address.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:authInfo&gt; element that contains authorization
            information associated with the contact object.  This mapping
            includes a password-based authentication mechanism, but the schema
            allows new mechanisms to be defined in new schemas.
            <vspace blankLines="1"/>
            </t>

            <t hangText="-">A &lt;contact:disclose&gt; element that allows a client to identify
            elements that require exceptional server operator handling to
            allow or restrict disclosure to third parties.  See Section 2.9
            for a description of the child elements contained within the
            &lt;contact:disclose&gt; element.
            <vspace blankLines="1"/>
            </t>
	  </list></t>

          <figure>
            <artwork>Example &lt;update&gt; command:

C:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
C:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
C:  &lt;command&gt;
C:    &lt;update&gt;
C:      &lt;contact:update
C:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
C:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
C:        &lt;contact:add&gt;
C:          &lt;contact:status s="clientDeleteProhibited"/&gt;
C:        &lt;/contact:add&gt;
C:        &lt;contact:chg&gt;
C:          &lt;contact:postalInfo type="int"&gt;
C:            &lt;contact:org/&gt;
C:            &lt;contact:addr&gt;
C:              &lt;contact:street&gt;124 Example Dr.&lt;/contact:street&gt;
C:              &lt;contact:street&gt;Suite 200&lt;/contact:street&gt;
C:              &lt;contact:city&gt;Dulles&lt;/contact:city&gt;
C:              &lt;contact:sp&gt;VA&lt;/contact:sp&gt;
C:              &lt;contact:pc&gt;20166-6503&lt;/contact:pc&gt;
C:              &lt;contact:cc&gt;US&lt;/contact:cc&gt;
C:            &lt;/contact:addr&gt;
C:          &lt;/contact:postalInfo&gt;
C:          &lt;contact:voice&gt;+1.7034444444&lt;/contact:voice&gt;
C:          &lt;contact:fax/&gt;
C:          &lt;contact:authInfo&gt;
C:            &lt;contact:pw&gt;2fooBAR&lt;/contact:pw&gt;
C:          &lt;/contact:authInfo&gt;
C:          &lt;contact:disclose flag="1"&gt;
C:            &lt;contact:voice/&gt;
C:            &lt;contact:email/&gt;
C:          &lt;/contact:disclose&gt;
C:        &lt;/contact:chg&gt;
C:      &lt;/contact:update&gt;
C:    &lt;/update&gt;
C:    &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:  &lt;/command&gt;
C:&lt;/epp&gt;</artwork>
          </figure>

	  <t>When an &lt;update&gt; command has been processed successfully, a server
	  MUST respond with an EPP response with no &lt;resData&gt; element.
	  <vspace blankLines="1"/></t>

          <figure>
            <artwork>Example &lt;update&gt; response:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1000"&gt;
S:      &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54321-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
          </figure>

	  <t>An EPP error response MUST be returned if an
	  &lt;update&gt; command cannot
	  be processed for any reason.</t>
	</section>
      </section>

      <section title="Offline Review of Requested Actions">
	<t>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, a server
	operator MAY perform an offline review of requested transform
	commands before completing the requested action.  In such situations,
	the response from the server MUST clearly note that the transform
	command has been received and processed, but the requested action is
	pending.  The status of the corresponding object MUST clearly reflect
	processing of the pending action.  The server MUST notify the client
	when offline processing of the action has been completed.</t>

	<t>Examples describing a &lt;create&gt; command that requires offline review
	are included here.  Note the result code and message returned in
	response to the &lt;create&gt; command.
	<vspace blankLines="1"/></t>

        <figure>
          <artwork>S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1001"&gt;
S:      &lt;msg&gt;Command completed successfully; action pending&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;resData&gt;
S:      &lt;contact:creData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:crDate&gt;1999-04-03T22:00:00.0Z&lt;/contact:crDate&gt;
S:      &lt;/contact:creData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:      &lt;svTRID&gt;54321-XYZ&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
        </figure>

	<t>The status of the contact object after returning this response MUST
	include "pendingCreate".  The server operator reviews the request
        offline, and informs the client of the outcome of the review either by
        queuing a service message for retrieval via the &lt;poll&gt;
        command or by using an out-of-band mechanism to inform the client of
        the request.</t>

	<t>The service message MUST contain text in the &lt;response&gt;, &lt;msgQ&gt;,
	&lt;msg&gt; element that describes the notification.  In addition, the EPP
	&lt;resData&gt; element MUST contain a child &lt;contact:panData&gt; element that
	identifies the contact namespace.  The &lt;contact:panData&gt; element contains
	the following child elements:</t>

	<t><list style="hanging">
	  <t hangText="-">A &lt;contact:id&gt; element that contains the server-unique identifier
          of the contact object.  The &lt;contact:id&gt; element contains a
          REQUIRED "paResult" attribute.  A positive boolean value indicates
          that the request has been approved and completed.  A negative
          boolean value indicates that the request has been denied and the
          requested action has not been taken.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">A &lt;contact:paTRID&gt; element that contains the client transaction
          identifier and server transaction identifier returned with the
          original response to process the command.  The client transaction
          identifier is OPTIONAL and will only be returned if the client
          provided an identifier with the original &lt;create&gt; command.
          <vspace blankLines="1"/>
          </t>

          <t hangText="-">A &lt;contact:paDate&gt; element that contains the date and time
          describing when review of the requested action was completed.
          <vspace blankLines="1"/>
          </t>
	</list></t>

        <figure>
          <artwork>Example "review completed" service message:

S:&lt;?xml version="1.0" encoding="UTF-8" standalone="no"?&gt;
S:&lt;epp xmlns="urn:ietf:params:xml:ns:epp-1.0"&gt;
S:  &lt;response&gt;
S:    &lt;result code="1301"&gt;
S:      &lt;msg&gt;Command completed successfully; ack to dequeue&lt;/msg&gt;
S:    &lt;/result&gt;
S:    &lt;msgQ count="5" id="12345"&gt;
S:      &lt;qDate&gt;1999-04-04T22:01:00.0Z&lt;/qDate&gt;
S:      &lt;msg&gt;Pending action completed successfully.&lt;/msg&gt;
S:    &lt;/msgQ&gt;
S:    &lt;resData&gt;
S:      &lt;contact:panData
S:       xmlns:contact="urn:ietf:params:xml:ns:contact-1.0"&gt;
S:        &lt;contact:id paResult="1"&gt;sh8013&lt;/contact:id&gt;
S:        &lt;contact:paTRID&gt;
S:          &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
S:          &lt;svTRID&gt;54321-XYZ&lt;/svTRID&gt;
S:        &lt;/contact:paTRID&gt;
S:        &lt;contact:paDate&gt;1999-04-04T22:00:00.0Z&lt;/contact:paDate&gt;
S:      &lt;/contact:panData&gt;
S:    &lt;/resData&gt;
S:    &lt;trID&gt;
S:      &lt;clTRID&gt;BCD-23456&lt;/clTRID&gt;
S:      &lt;svTRID&gt;65432-WXY&lt;/svTRID&gt;
S:    &lt;/trID&gt;
S:  &lt;/response&gt;
S:&lt;/epp&gt;</artwork>
        </figure>
      </section>
    </section>

    <section title="Formal Syntax">
      <t>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.
      <vspace blankLines="1"/></t>

      <figure>
        <artwork>BEGIN
&lt;?xml version="1.0" encoding="UTF-8"?&gt;

&lt;schema targetNamespace="urn:ietf:params:xml:ns:contact-1.0"
       xmlns:contact="urn:ietf:params:xml:ns:contact-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"&gt;

&lt;!--
Import common element types.
--&gt;
 &lt;import namespace="urn:ietf:params:xml:ns:eppcom-1.0"/&gt;
 &lt;import namespace="urn:ietf:params:xml:ns:epp-1.0"/&gt;

 &lt;annotation&gt;
   &lt;documentation&gt;
     Extensible Provisioning Protocol v1.0
     contact provisioning schema.
   &lt;/documentation&gt;
 &lt;/annotation&gt;

&lt;!--
Child elements found in EPP commands.
--&gt;
 &lt;element name="check" type="contact:mIDType"/&gt;
 &lt;element name="create" type="contact:createType"/&gt;
 &lt;element name="delete" type="contact:sIDType"/&gt;
 &lt;element name="info" type="contact:authIDType"/&gt;
 &lt;element name="transfer" type="contact:authIDType"/&gt;
 &lt;element name="update" type="contact:updateType"/&gt;

&lt;!--
Utility types.
--&gt;
 &lt;simpleType name="ccType"&gt;
   &lt;restriction base="token"&gt;
     &lt;length value="2"/&gt;
   &lt;/restriction&gt;
 &lt;/simpleType&gt;

 &lt;complexType name="e164Type"&gt;
   &lt;simpleContent&gt;
     &lt;extension base="contact:e164StringType"&gt;
       &lt;attribute name="x" type="token"/&gt;
     &lt;/extension&gt;
   &lt;/simpleContent&gt;
 &lt;/complexType&gt;

 &lt;simpleType name="e164StringType"&gt;
   &lt;restriction base="token"&gt;
     &lt;pattern value="(\+[0-9]{1,3}\.[0-9]{1,14})?"/&gt;
     &lt;maxLength value="17"/&gt;
   &lt;/restriction&gt;
 &lt;/simpleType&gt;

 &lt;simpleType name="pcType"&gt;
   &lt;restriction base="token"&gt;
     &lt;maxLength value="16"/&gt;
   &lt;/restriction&gt;
 &lt;/simpleType&gt;

 &lt;simpleType name="postalLineType"&gt;
    &lt;restriction base="normalizedString"&gt;
      &lt;minLength value="1"/&gt;
      &lt;maxLength value="255"/&gt;
    &lt;/restriction&gt;
 &lt;/simpleType&gt;

 &lt;simpleType name="optPostalLineType"&gt;
    &lt;restriction base="normalizedString"&gt;
      &lt;maxLength value="255"/&gt;
    &lt;/restriction&gt;
 &lt;/simpleType&gt;

&lt;!--
Child elements of the &lt;create&gt; command.
--&gt;
 &lt;complexType name="createType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="postalInfo" type="contact:postalInfoType"
      maxOccurs="2"/&gt;
     &lt;element name="voice" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="fax" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="email" type="eppcom:minTokenType"/&gt;
     &lt;element name="authInfo" type="contact:authInfoType"/&gt;
     &lt;element name="disclose" type="contact:discloseType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="postalInfoType"&gt;
   &lt;sequence&gt;
     &lt;element name="name" type="contact:postalLineType"/&gt;
     &lt;element name="org" type="contact:optPostalLineType"
      minOccurs="0"/&gt;
     &lt;element name="addr" type="contact:addrType"/&gt;
   &lt;/sequence&gt;
   &lt;attribute name="type" type="contact:postalInfoEnumType"
    use="required"/&gt;
 &lt;/complexType&gt;

 &lt;simpleType name="postalInfoEnumType"&gt;
   &lt;restriction base="token"&gt;
     &lt;enumeration value="loc"/&gt;
     &lt;enumeration value="int"/&gt;
   &lt;/restriction&gt;
 &lt;/simpleType&gt;

 &lt;complexType name="addrType"&gt;
   &lt;sequence&gt;
     &lt;element name="street" type="contact:optPostalLineType"
      minOccurs="0" maxOccurs="3"/&gt;
     &lt;element name="city" type="contact:postalLineType"/&gt;
     &lt;element name="sp" type="contact:optPostalLineType"
      minOccurs="0"/&gt;
     &lt;element name="pc" type="contact:pcType"
      minOccurs="0"/&gt;
     &lt;element name="cc" type="contact:ccType"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="authInfoType"&gt;
   &lt;choice&gt;
     &lt;element name="pw" type="eppcom:pwAuthInfoType"/&gt;
     &lt;element name="ext" type="eppcom:extAuthInfoType"/&gt;
   &lt;/choice&gt;
 &lt;/complexType&gt;

 &lt;complexType name="discloseType"&gt;
   &lt;sequence&gt;
     &lt;element name="name" type="contact:intLocType"
      minOccurs="0" maxOccurs="2"/&gt;
     &lt;element name="org" type="contact:intLocType"
      minOccurs="0" maxOccurs="2"/&gt;
     &lt;element name="addr" type="contact:intLocType"
      minOccurs="0" maxOccurs="2"/&gt;
     &lt;element name="voice" minOccurs="0"/&gt;
     &lt;element name="fax" minOccurs="0"/&gt;
     &lt;element name="email" minOccurs="0"/&gt;
   &lt;/sequence&gt;
   &lt;attribute name="flag" type="boolean" use="required"/&gt;
 &lt;/complexType&gt;

 &lt;complexType name="intLocType"&gt;
   &lt;attribute name="type" type="contact:postalInfoEnumType"
    use="required"/&gt;
 &lt;/complexType&gt;

&lt;!--
Child element of commands that require only an identifier.
--&gt;
 &lt;complexType name="sIDType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Child element of commands that accept multiple identifiers.
--&gt;
 &lt;complexType name="mIDType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"
      maxOccurs="unbounded"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Child elements of the &lt;info&gt; and &lt;transfer&gt; commands.
--&gt;
 &lt;complexType name="authIDType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="authInfo" type="contact:authInfoType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Child elements of the &lt;update&gt; command.
--&gt;
 &lt;complexType name="updateType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="add" type="contact:addRemType"
      minOccurs="0"/&gt;
     &lt;element name="rem" type="contact:addRemType"
      minOccurs="0"/&gt;
     &lt;element name="chg" type="contact:chgType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Data elements that can be added or removed.
--&gt;
 &lt;complexType name="addRemType"&gt;
   &lt;sequence&gt;
     &lt;element name="status" type="contact:statusType"
      maxOccurs="7"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Data elements that can be changed.
--&gt;
 &lt;complexType name="chgType"&gt;
   &lt;sequence&gt;
     &lt;element name="postalInfo" type="contact:chgPostalInfoType"
      minOccurs="0" maxOccurs="2"/&gt;
     &lt;element name="voice" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="fax" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="email" type="eppcom:minTokenType"
      minOccurs="0"/&gt;
     &lt;element name="authInfo" type="contact:authInfoType"
      minOccurs="0"/&gt;
     &lt;element name="disclose" type="contact:discloseType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="chgPostalInfoType"&gt;
   &lt;sequence&gt;
     &lt;element name="name" type="contact:postalLineType"
      minOccurs="0"/&gt;
     &lt;element name="org" type="contact:optPostalLineType"
      minOccurs="0"/&gt;
     &lt;element name="addr" type="contact:addrType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
   &lt;attribute name="type" type="contact:postalInfoEnumType"
    use="required"/&gt;
 &lt;/complexType&gt;

&lt;!--
Child response elements.
--&gt;
 &lt;element name="chkData" type="contact:chkDataType"/&gt;
 &lt;element name="creData" type="contact:creDataType"/&gt;
 &lt;element name="infData" type="contact:infDataType"/&gt;
 &lt;element name="panData" type="contact:panDataType"/&gt;
 &lt;element name="trnData" type="contact:trnDataType"/&gt;

&lt;!--
&lt;check&gt; response elements.
--&gt;
 &lt;complexType name="chkDataType"&gt;
   &lt;sequence&gt;
     &lt;element name="cd" type="contact:checkType"
      maxOccurs="unbounded"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="checkType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="contact:checkIDType"/&gt;
     &lt;element name="reason" type="eppcom:reasonType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="checkIDType"&gt;
   &lt;simpleContent&gt;
     &lt;extension base="eppcom:clIDType"&gt;
       &lt;attribute name="avail" type="boolean"
	use="required"/&gt;
     &lt;/extension&gt;
   &lt;/simpleContent&gt;
 &lt;/complexType&gt;

&lt;!--
&lt;create&gt; response elements.
--&gt;
 &lt;complexType name="creDataType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="crDate" type="dateTime"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
&lt;info&gt; response elements.
--&gt;
 &lt;complexType name="infDataType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="roid" type="eppcom:roidType"/&gt;
     &lt;element name="status" type="contact:statusType"
      maxOccurs="7"/&gt;
     &lt;element name="postalInfo" type="contact:postalInfoType"
      maxOccurs="2"/&gt;
     &lt;element name="voice" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="fax" type="contact:e164Type"
      minOccurs="0"/&gt;
     &lt;element name="email" type="eppcom:minTokenType"/&gt;
     &lt;element name="clID" type="eppcom:clIDType"/&gt;
     &lt;element name="crID" type="eppcom:clIDType"/&gt;
     &lt;element name="crDate" type="dateTime"/&gt;
     &lt;element name="upID" type="eppcom:clIDType"
      minOccurs="0"/&gt;
     &lt;element name="upDate" type="dateTime"
      minOccurs="0"/&gt;
     &lt;element name="trDate" type="dateTime"
      minOccurs="0"/&gt;
     &lt;element name="authInfo" type="contact:authInfoType"
      minOccurs="0"/&gt;
     &lt;element name="disclose" type="contact:discloseType"
      minOccurs="0"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
Status is a combination of attributes and an optional human-readable
message that may be expressed in languages other than English.
--&gt;
 &lt;complexType name="statusType"&gt;
   &lt;simpleContent&gt;
     &lt;extension base="normalizedString"&gt;
       &lt;attribute name="s" type="contact:statusValueType"
	use="required"/&gt;
       &lt;attribute name="lang" type="language"
	default="en"/&gt;
     &lt;/extension&gt;
   &lt;/simpleContent&gt;
 &lt;/complexType&gt;

 &lt;simpleType name="statusValueType"&gt;
   &lt;restriction base="token"&gt;
     &lt;enumeration value="clientDeleteProhibited"/&gt;
     &lt;enumeration value="clientTransferProhibited"/&gt;
     &lt;enumeration value="clientUpdateProhibited"/&gt;
     &lt;enumeration value="linked"/&gt;
     &lt;enumeration value="ok"/&gt;
     &lt;enumeration value="pendingCreate"/&gt;
     &lt;enumeration value="pendingDelete"/&gt;
     &lt;enumeration value="pendingTransfer"/&gt;
     &lt;enumeration value="pendingUpdate"/&gt;
     &lt;enumeration value="serverDeleteProhibited"/&gt;
     &lt;enumeration value="serverTransferProhibited"/&gt;
     &lt;enumeration value="serverUpdateProhibited"/&gt;
   &lt;/restriction&gt;
 &lt;/simpleType&gt;

&lt;!--
Pending action notification response elements.
--&gt;
 &lt;complexType name="panDataType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="contact:paCLIDType"/&gt;
     &lt;element name="paTRID" type="epp:trIDType"/&gt;
     &lt;element name="paDate" type="dateTime"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

 &lt;complexType name="paCLIDType"&gt;
   &lt;simpleContent&gt;
     &lt;extension base="eppcom:clIDType"&gt;
       &lt;attribute name="paResult" type="boolean"
	use="required"/&gt;
     &lt;/extension&gt;
   &lt;/simpleContent&gt;
 &lt;/complexType&gt;

&lt;!--
&lt;transfer&gt; response elements.
--&gt;
 &lt;complexType name="trnDataType"&gt;
   &lt;sequence&gt;
     &lt;element name="id" type="eppcom:clIDType"/&gt;
     &lt;element name="trStatus" type="eppcom:trStatusType"/&gt;
     &lt;element name="reID" type="eppcom:clIDType"/&gt;
     &lt;element name="reDate" type="dateTime"/&gt;
     &lt;element name="acID" type="eppcom:clIDType"/&gt;
     &lt;element name="acDate" type="dateTime"/&gt;
   &lt;/sequence&gt;
 &lt;/complexType&gt;

&lt;!--
End of schema.
--&gt;
&lt;/schema&gt;
END</artwork>
      </figure>
    </section>

    <section title="Internationalization Considerations">
      <t>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 <xref target="RFC2781"/>.  Though XML includes
      provisions to identify and use other character encodings through use
      of an "encoding" attribute in an &lt;?xml?&gt; declaration, use of UTF-8 is
      REQUIRED with this specification.</t>

      <t>All date-time values presented via EPP MUST be expressed in Universal
      Coordinated Time using the Gregorian calendar.  The 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
      <xref target="W3C.REC-xmlschema-2-20041028"/> MUST be used to represent
      date-time values as the XML Schema does not support truncated date-time
      forms or lower case "T" and "Z" characters.</t>

      <t>Humans, organizations, and other entities often need to represent
      social information in both a commonly understood character set and a
      locally optimized character set.  This specification provides
      features allowing representation of social information in both a
      subset of UTF-8 for broad readability and unrestricted UTF-8 for
      local optimization.</t>
    </section>

    <section title="IANA Considerations">
      <t>This document uses URNs to describe XML namespaces and XML schemas
      conforming to a registry mechanism described in <xref target="RFC3688"/>.  Two URI
      assignments have been registered by the IANA.</t>

      <t>Registration request for the contact namespace:</t>

      <t>URI: urn:ietf:params:xml:ns:contact-1.0</t>

      <t>Registrant Contact: See the "Author's Address" section of this
      document.</t>

      <t>XML: None.  Namespace URIs do not represent an XML specification.</t>

      <t>Registration request for the contact XML schema:</t>

      <t>URI: urn:ietf:params:xml:schema:contact-1.0</t>

      <t>Registrant Contact: See the "Author's Address" section of this
      document.</t>

      <t>XML: See the "Formal Syntax" section of this document.</t>
    </section>

    <section title="Security Considerations">
      <t>Authorization information as described in <xref target="authInfo"/> is REQUIRED to
      create a contact object.  This information is used in some query and
      transfer operations as an additional means of determining client
      authorization to perform the command.  Failure to protect
      authorization information from inadvertent disclosure can result in
      unauthorized transfer operations and unauthorized information
      release.  Both client and server MUST ensure that authorization
      information is stored and exchanged with high-grade encryption
      mechanisms to provide privacy services.</t>

      <t>The object mapping described in this document does not provide any
      other security services or introduce any additional considerations
      beyond those described by <xref target="RFC4930"/> and protocol layers used by EPP.</t>
    </section>

    <section title="Acknowledgements">
      <t>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.</t>

      <t>Specific suggestions that have been incorporated into this document
      were provided by Chris Bason, Eric Brunner-Williams, Jordyn Buchanan,
      Robert Burbidge, Dave Crocker, Ayesha Damaraju, Anthony Eden, Sheer
      El-Showk, Dipankar Ghosh, Klaus Malorny, Dan Manley, Michael
      Mealling, Patrick Mevzek, Asbjorn Steira, and Rick Wesson.</t>
    </section>
  </middle>

  <back>

<?rfc rfcedstyle="no"?>

    <references title="Normative References">
      &rfc0822;
      &rfc2119;
      &rfc3629;
      &rfc3688;
      &W3C.xml;
      &W3C.xmlschema-1;
      &W3C.xmlschema-2;


<!--   &I-D.hollenbeck-epp-rfc3730bis; -->
<reference anchor='RFC4930'>
<front>
<title>Extensible Provisioning Protocol (EPP)</title>

<author initials='S' surname='Hollenbeck' fullname='Scott Hollenbeck'>
    <organization />
</author>

<date month='May' year='2007'/>

<abstract><t>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. This document obsoletes RFC 3730.</t></abstract>

</front>

<seriesInfo name='RFC' value='4930' />

</reference>



      <reference anchor="ISO.3166.1997">
        <front>
          <title>Codes for the representation of names of countries and their subdivisions -- Part 1: Country codes</title>
            <author>
              <organization>International Organization for Standardization</organization>
            </author>
            <date month="October" year="1997" />
        </front>
        <seriesInfo name="ISO" value="Standard 3166" />
      </reference>
      <reference anchor="ITU.E164.2005">
        <front>
          <title>The international public telecommunication numbering plan</title>
          <author>
            <organization>International Telecommunication Union</organization>
          </author>
          <date month="February" year="2005" />
        </front>
        <seriesInfo name="ITU-T" value="Recommendation E.164" />
      </reference>
    </references>

    <references title="Informative References">
      &rfc2781;
      &rfc3733;
    </references>

<?rfc rfcedstyle="yes"?>

<?rfc needLines="100"?>

    <section title="Changes from RFC 3733">
      <t><list style="numbers">
        <t>Minor reformatting as a result of converting I-D source format from nroff to XML.
        <vspace blankLines="1"/>
        </t>

        <t>Removed this text from Section 2.2:<vspace blankLines="1"/>
        "With one exception, transform commands MUST be rejected when a
        pendingCreate, pendingDelete, pendingTransfer, or pendingUpdate
        status is set.  The only exception is that a &lt;transfer&gt; command to
        approve, reject, or cancel a transfer MAY be processed while an
        object is in "pendingTransfer" status."
        <vspace blankLines="1"/>
        </t>

        <t>Fixed examples in Section 2.9 (added missing "/" characters).
        <vspace blankLines="1"/>
        </t>

        <t>Changed text in Section 3.1.3 from "A &lt;contact:acID&gt; element that contains the identifier of the client
        that SHOULD act upon the transfer request" to "A &lt;contact:acID&gt; element that contains the identifier of the client
	that SHOULD act upon a PENDING transfer request.  For all other status types, the value identifies the client that took
	the indicated action".
        <vspace blankLines="1"/>
        </t>

        <t>Fixed the example response in Section 3.2.4 to use the correct response
        code and response text.
        <vspace blankLines="1"/>
        </t>

        <t>Changed text in Section 3.2.5 from "At least one &lt;contact:add&gt;, &lt;contact:rem&gt;,
        or &lt;contact:chg&gt; element MUST be provided." to "At least one &lt;contact:add&gt;, &lt;contact:rem&gt;,
        or &lt;contact:chg&gt; element MUST be provided if the command is not being extended.  All of
        these elements MAY be omitted if an &lt;update&gt; extension is present."
        <vspace blankLines="1"/>
        </t>

        <t>Changed text in Section 3.3 (old Section 3.2.6) from this:
        <vspace blankLines="1"/>
        "The server operator reviews the request
        offline, and informs the client of the outcome of the review by
        queuing a service message for retrieval via the &lt;poll&gt; command."
        <vspace blankLines="1"/>
        to this:
        <vspace blankLines="1"/>
        "The server operator reviews the request
        offline, and informs the client of the outcome of the review either by
        queuing a service message for retrieval via the &lt;poll&gt;
        command or by using an out-of-band mechanism to inform the client of
        the request."
        <vspace blankLines="1"/>
        </t>

        <t>Removed text describing use of the XML Schema schemaLocation attribute.
        This is an optional attribute that doesn't need to be mandated for use in
        EPP.
        <vspace blankLines="1"/>
        </t>

        <t>Updated text describing a requirement to use UTF-8 encoding in the
        "Internationalization Considerations" section.
        <vspace blankLines="1"/>
        </t>

        <t>Removed references to RFC 3339 and replaced them with references to the W3C XML
        Schema specification.
        <vspace blankLines="1"/>
        </t>

        <t>Updated the E.164 reference.
        <vspace blankLines="1"/>
        </t>

        <t>Updated EPP and XML references.  Updated reference from RFC 2279 to RFC
        3629.</t>
      </list></t>
    </section>
  </back>
</rfc>
