<?xml version="1.0" encoding="us-ascii"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- when the namespace version bumps, update this and it will update
    everywhere --><!ENTITY VERSION "0.3">
<!ENTITY I-D.narten-iana-considerations-rfc2434bis SYSTEM "http://xml.resource.org/public/rfc/bibxml3/reference.I-D.narten-iana-considerations-rfc2434bis.xml">
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3688 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3688.xml">
<!ENTITY RFC3915 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3915.xml">
<!ENTITY RFC5730 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5730.xml">
<!ENTITY RFC5731 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5731.xml">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<?rfc strict="yes" ?>
<?rfc toc="yes"?>
<?rfc tocdepth="4"?>
<?rfc symrefs="yes"?>
<?rfc sortrefs="yes" ?>
<?rfc compact="yes" ?>
<?rfc subcompact="no" ?>
<?rfc comments="yes" ?>
<?rfc inline="yes" ?>
<rfc category="exp" docName="draft-brown-epp-fees-00" ipr="trust200902">

  <front>
    <title abbrev="Registry Fee Extension for EPP">Registry Fee Extension for
    the Extensible Provisioning Protocol (EPP)</title>

    <author fullname="Gavin Brown" initials="G" surname="Brown">
      <organization>CentralNic Group plc</organization>
      <address>
        <postal>
          <street>35-39 Moorgate</street>
          <city>London</city>
          <region>England</region>
          <code>EC2R 6AR</code>
          <country>GB</country>
        </postal>
        <phone>+44 20 33 88 0600</phone>
        <email>gavin.brown@centralnic.com</email>
        <uri>https://www.centralnic.com</uri>
      </address>
    </author>

    <date month="November" year="2013"/>

    <area>Applications</area>
    <workgroup>Internet Engineering Task Force</workgroup>
    <keyword>EPP, XML</keyword>

    <abstract><t>This document describes an Extensible Provisioning Protocol
    (EPP) extension mapping for registry fees.</t></abstract>
  </front>

  <middle>

    <section title="Introduction">
      <t>Historically, domain name registries have applied a simple fee
      structure for billable transactions, namely a basic unit price applied to
      domain &lt;create&gt;, &lt;renew&gt;, &lt;transfer&gt; and RGP restore
      commands. Given the relatively small number of EPP servers to which EPP
      clients have been required to connect, it has generally been the case
      that client operators have been able to obtain details of these fees
      out-of-band by contacting the server operators.</t>

      <t>Given the imminent expansion of the DNS namespace, and the
      proliferation of novel business models, it is now desirable to provide a
      method for EPP clients to query EPP servers for the fees and credits
      associated with certain commands and specific objects.</t>

      <t>This document describes an extension mapping for version 1.0 of the 
      <xref target="RFC5730">Extensible Provisioning Protocol (EPP)</xref>. This
      EPP mapping provides a mechanism by which EPP clients may query the fees
      and credits associated with various billable transactions.</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">RFC 2119</xref>.</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 in order to develop a conforming
        implementation.</t>

        <t>"fee" is used as an abbreviation for
        "urn:ietf:params:xml:ns:fee-&VERSION;". The XML namespace prefix "fee"
        is used, but implementations MUST NOT depend on it and instead employ a
        proper namespace-aware XML parser and serializer to interpret and output
        the XML documents.</t>

        <t>The XML namespace prefix above contains a version number,
        specifically "&VERSION;". This version number will increment with
        successive versions of this document, and will reach 1.0 if and when
        this document is published as an RFC. This permits clients to
        distinguish which version of the extension a server has implemented.</t>

      </section>
    </section>

    <section title="EPP Command Mapping">

      <t>A detailed description of the EPP syntax and semantics can be found in
      <xref target="RFC5730"/>.</t>

      <section title="EPP Query Commands">
        <t>This extension does not add any elements to the EPP &lt;check&gt; or
        &lt;poll&gt; commands or responses.</t>

        <section title="EPP &lt;info&gt; Command">
          <t>This extension defines additional elements for the EPP
          &lt;info&gt; command.</t>

          <t>The command frame MAY contain an &lt;extension&gt; element which
          contains a &lt;fee:info&gt; element with the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element that contains the currency the fee
            is charged in. This must be a three-character currency code from
            <xref target="ISO4217"/> (Note: ISO 4217 provides the special "XXX"
            code which may be used if the server uses a non-currency based
            system for assessing fees, such as a system of credits).</t>

            <t>A &lt;fee:action&gt; element identifying the command. The element
            values supported by the server is a matter of repository policy, but
            MUST include as a minimum the following values:
              <list>
                <t>"create" indicating a &lt;domain:create&gt; command;</t>
                <t>"renew" indicating a &lt;domain:renew&gt; command;</t>
                <t>"transfer" indicating a &lt;domain:transfer&gt; command;</t>
              </list>
            If the server supports the <xref target="RFC3915">Registry Grace
            Period Mapping</xref>, then the server MUST also support the
            "restore" value. The &lt;fee:action&gt; element MAY have an OPTIONAL
            "phase" attribute specifying a launch phase as described in
            <xref target="draft-tan-epp-launchphase"/>. The &lt;fee:action&gt;
            element may also contain an OPTIONAL "subphase" attribute
            identifying the custom or sub-phase as described in
            <xref target="draft-tan-epp-launchphase"/>.</t>

            <t>A &lt;fee:period&gt; element that contains the number of units to
            be added to the registration period of the domain object.</t> 
          </list></t>

          <t>Example &lt;info&gt; command:</t>

          <figure><artwork>
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;domain:info
C:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name hosts="all"&gt;example.com&lt;/domain:name&gt;
C:       &lt;/domain:info&gt;
C:     &lt;/info&gt;
C:     &lt;extension&gt;
C:       &lt;fee:info xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
C:         &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
C:         &lt;fee:action phase="sunrise"&gt;create&lt;/fee:action&gt;
C:         &lt;fee:period unit="y"&gt;1&lt;/fee:period&gt;
C:       &lt;/fee:info&gt;
C:     &lt;/extension&gt;
C:     &lt;clTRID&gt;ABC-12345&lt;/clTRID&gt;
C:   &lt;/command&gt;
C: &lt;/epp&gt;</artwork></figure>

          <t>When the server receives an &lt;info&gt; command that includes the
          extension element described above, its response MUST (subject to the
          exceptions described below) contain an &lt;extension&gt; element,
          which MUST contain a child &lt;fee:infData&gt; element. The
          &lt;fee:infData&gt; MUST contain the following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element that contains same currency code
            that appeared in the original &lt;fee:check&gt; element.</t>

            <t>A &lt;fee:action&gt; element that contains same action that
            appeared in the original &lt;fee:check&gt; element. This element MAY
            have the OPTIONAL "phase" and "subphase" elements, which MUST match
            the same attributes in the original &lt;fee:check&gt; element.</t>

            <t>A &lt;fee:period&gt; element that contains same unit that
            appeared in the original &lt;fee:check&gt; element.</t>

            <t>A &lt;fee:fee&gt; element that contains the fee associated with
            the specified transaction.</t>
          </list></t>

          <t>If the domain name requested in the command is invalid, sponsored
          by another client, or otherwise ineligible for registration, the
          server MAY choose to omit the &lt;fee:infData&gt; element and return
          an error instead.</t>

          <t>Example &lt;info&gt; response:</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="1000"&gt;
S:       &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;resData&gt;
S:       &lt;domain:infData
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
S:         &lt;domain:roid&gt;EXAMPLE1-REP&lt;/domain:roid&gt;
S:         &lt;domain:status s="ok"/&gt;
S:         &lt;domain:registrant&gt;jd1234&lt;/domain:registrant&gt;
S:         &lt;domain:contact type="admin"&gt;sh8013&lt;/domain:contact&gt;
S:         &lt;domain:contact type="tech"&gt;sh8013&lt;/domain:contact&gt;
S:         &lt;domain:ns&gt;
S:           &lt;domain:hostObj&gt;ns1.example.com&lt;/domain:hostObj&gt;
S:           &lt;domain:hostObj&gt;ns1.example.net&lt;/domain:hostObj&gt;
S:         &lt;/domain:ns&gt;
S:         &lt;domain:host&gt;ns1.example.com&lt;/domain:host&gt;
S:         &lt;domain:host&gt;ns2.example.com&lt;/domain:host&gt;
S:         &lt;domain:clID&gt;ClientX&lt;/domain:clID&gt;
S:         &lt;domain:crID&gt;ClientY&lt;/domain:crID&gt;
S:         &lt;domain:crDate&gt;1999-04-03T22:00:00.0Z&lt;/domain:crDate&gt;
S:         &lt;domain:upID&gt;ClientX&lt;/domain:upID&gt;
S:         &lt;domain:upDate&gt;1999-12-03T09:00:00.0Z&lt;/domain:upDate&gt;
S:         &lt;domain:exDate&gt;2005-04-03T22:00:00.0Z&lt;/domain:exDate&gt;
S:         &lt;domain:trDate&gt;2000-04-08T09:00:00.0Z&lt;/domain:trDate&gt;
S:         &lt;domain:authInfo&gt;
S:           &lt;domain:pw&gt;2fooBAR&lt;/domain:pw&gt;
S:         &lt;/domain:authInfo&gt;
S:       &lt;/domain:infData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:        &lt;fee:infData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:          &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
S:          &lt;fee:action phase="sunrise"&gt;create&lt;/fee:action&gt;
S:          &lt;fee:period unit="y"&gt;1&lt;/fee:period&gt;
S:          &lt;fee:fee&gt;10.00&lt;/fee:fee&gt;
S:        &lt;/fee:infData&gt;
S:     &lt;/extension&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>Example &lt;info&gt; response where the domain name is not
          registered:</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="2303"&gt;
S:       &lt;msg&gt;Object does not exist.&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;extension&gt;
S:        &lt;fee:infData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:          &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
S:          &lt;fee:action phase="sunrise"&gt;create&lt;/fee:action&gt;
S:          &lt;fee:period unit="y"&gt;1&lt;/fee:period&gt;
S:          &lt;fee:fee&gt;10.00&lt;/fee:fee&gt;
S:        &lt;/fee:infData&gt;
S:     &lt;/extension&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>

        </section>

        <section title="EPP Transfer Query Command">
          <t>This extension does not add any elements to the EPP
          &lt;transfer&gt; query command, but does include elements in the
          response, when the extension has been selected during a &lt;login&gt;
          command.</t>

          <t>When the &lt;transfer&gt; query command has been processed
          successfully, the client selected the extension when it logged in, and
          the client is authorised by the server to view information about the
          transfer, the server MAY include in the &lt;extension&gt; section of
          the EPP response a &lt;fee:trnData&gt; element that contains a
          &lt;fee:fee&gt; element containing the fee associated with this
          command.  If no &lt;fee:trnData&gt; element is included in the
          response, then no fee has been assessed by the server for this
          transaction.</t>

          <t>Example &lt;transfer&gt; query response:</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;domain:trnData
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
S:         &lt;domain:trStatus&gt;pending&lt;/domain:trStatus&gt;
S:         &lt;domain:reID&gt;ClientX&lt;/domain:reID&gt;
S:         &lt;domain:reDate&gt;2000-06-08T22:00:00.0Z&lt;/domain:reDate&gt;
S:         &lt;domain:acID&gt;ClientY&lt;/domain:acID&gt;
S:         &lt;domain:acDate&gt;2000-06-13T22:00:00.0Z&lt;/domain:acDate&gt;
S:         &lt;domain:exDate&gt;2002-09-08T22:00:00.0Z&lt;/domain:exDate&gt;
S:       &lt;/domain:trnData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:       &lt;fee:trnData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:trnData&gt;
S:     &lt;/extension&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>

        </section>

      </section>

      <section title="EPP Transform Commands">

        <section title="EPP &lt;create&gt; Command">
          <t>This extension does not add any elements to the EPP &lt;create&gt;
          command, but does include elements in the response, when the extension
          has been selected during a &lt;login&gt; command.</t>

          <t>When the &lt;create&gt; command has been processed successfully,
          and the client selected the extension when it logged in, the server
          MAY include in the &lt;extension&gt; section of the EPP response a
          &lt;fee:creData&gt; element that contains a &lt;fee:fee&gt; element
          containing the fee associated with this command. If no
          &lt;fee:creData&gt; element is included in the response, then no fee
          has been assessed by the server for this transaction.</t>

          <t>Example &lt;create&gt; response:</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="1000"&gt;
S:       &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;resData&gt;
S:       &lt;domain:creData
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
S:         &lt;domain:crDate&gt;1999-04-03T22:00:00.0Z&lt;/domain:crDate&gt;
S:         &lt;domain:exDate&gt;2001-04-03T22:00:00.0Z&lt;/domain:exDate&gt;
S:       &lt;/domain:creData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:       &lt;fee:creData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:creData&gt;
S:     &lt;/extension&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>

        </section>

        <section title="EPP &lt;delete&gt; Command">
          <t>This extension does not add any elements to the EPP &lt;delete&gt;
          command, but does include elements in the response, when the extension
          has been selected during a &lt;login&gt; command.</t>

          <t>When the &lt;delete&gt; command has been processed successfully,
          and the client selected the extension when it logged in, the server
          MAY include in the &lt;extension&gt; section of the EPP response a
          &lt;fee:delData&gt; element that contains a &lt;fee:credit&gt; element
          containing any credit associated with the deletion of the domain. If
          no &lt;fee:delData&gt; element is included in the response, then no
          credit has been assessed by the server for this transaction.</t>

          <t>Example &lt;delete&gt; response:</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="1000"&gt;
S:       &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;extension&gt;
S:       &lt;fee:delData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:credit&gt;5.00&lt;/fee:credit&gt;
S:       &lt;/fee:delData&gt;
S:     &lt;/extension&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>
        </section>

        <section title="EPP &lt;renew&gt; Command">
          <t>This extension does not add any elements to the EPP &lt;renew&gt;
          command, but does include elements in the response, when the extension
          has been selected during a &lt;login&gt; command.</t>

          <t>When the &lt;renew&gt; command has been processed successfully,
          and the client selected the extension when it logged in, the server
          MAY include in the &lt;extension&gt; section of the EPP response a
          &lt;fee:renData&gt; element that contains a &lt;fee:fee&gt; element
          containing the fee associated with this command. If no
          &lt;fee:renData&gt; element is included in the response, then no
          fee has been assessed by the server for this transaction.</t>

          <t>Example &lt;renew&gt; response:</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="1000"&gt;
S:       &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;resData&gt;
S:       &lt;domain:renData
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
S:         &lt;domain:exDate&gt;2005-04-03T22:00:00.0Z&lt;/domain:exDate&gt;
S:       &lt;/domain:renData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:       &lt;fee:renData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:renData&gt;
S:     &lt;/extension&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>

        </section>

        <section title="EPP &lt;transfer&gt; Command">
          <t>This extension does not add any elements to the EPP
          &lt;transfer&gt; command, but does include elements in the response,
          when the extension has been selected during a &lt;login&gt;
          command.</t>

          <t>When the &lt;transfer&gt; command has been processed successfully,
          and the client selected the extension when it logged in, and if the
          "op" attribute of the &lt;transfer&gt; element of the request was
          "request", the server MAY include in the &lt;extension&gt;
          section of the EPP response a &lt;fee:trnData&gt; element that
          contains a &lt;fee:fee&gt; element containing the fee associated with
          this command. If no &lt;fee:trnData&gt; element is included in the
          response, then no fee has been assessed by the server for this
          transaction.</t>

          <t>Example &lt;transfer&gt; response:</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;domain:trnData
S:        xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
S:         &lt;domain:trStatus&gt;pending&lt;/domain:trStatus&gt;
S:         &lt;domain:reID&gt;ClientX&lt;/domain:reID&gt;
S:         &lt;domain:reDate&gt;2000-06-08T22:00:00.0Z&lt;/domain:reDate&gt;
S:         &lt;domain:acID&gt;ClientY&lt;/domain:acID&gt;
S:         &lt;domain:acDate&gt;2000-06-13T22:00:00.0Z&lt;/domain:acDate&gt;
S:         &lt;domain:exDate&gt;2002-09-08T22:00:00.0Z&lt;/domain:exDate&gt;
S:       &lt;/domain:trnData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:       &lt;fee:trnData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:trnData&gt;
S:     &lt;/extension&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>

        </section>

        <section title="EPP &lt;update&gt; Command">
          <t>This extension does not add any elements to the EPP &lt;update&gt;
          command, but does include elements in the response, when the extension
          has been selected during a &lt;login&gt; command.</t>

          <t>When the &lt;update&gt; command has been processed successfully,
          and the client selected the extension when it logged in, the server
          MAY include in the &lt;extension&gt; section of the EPP response a
          &lt;fee:updData&gt; element that contains a &lt;fee:fee&gt; element
          containing any fee associated with this command. If no
          &lt;fee:updData&gt; element is included in the response, then no
          fee has been assessed by the server for this transaction.</t>

          <t>Example &lt;update&gt; response:</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="1000"&gt;
S:       &lt;msg&gt;Command completed successfully&lt;/msg&gt;
S:     &lt;/result&gt;
S:     &lt;extension&gt;
S:       &lt;fee:updData xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:updData&gt;
S:     &lt;/extension&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>

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

      <t>Copyright (c) 2013 IETF Trust and the persons identified as authors
      of the code. All rights reserved.</t>

      <t>Redistribution and use in source and binary forms, with or without
      modification, are permitted provided that the following conditions are
      met:</t>

      <t><list style="symbols">
          <t>Redistributions of source code must retain the above copyright
          notice, this list of conditions and the following disclaimer.</t>

          <t>Redistributions in binary form must reproduce the above copyright
          notice, this list of conditions and the following disclaimer in the
          documentation and/or other materials provided with the
          distribution.</t>

          <t>Neither the name of Internet Society, IETF or IETF Trust, nor the
          names of specific contributors, may be used to endorse or promote
          products derived from this software without specific prior written
          permission.</t>
        </list></t>

      <t>THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
      "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
      LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
      PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
      OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
      EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
      PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
      PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
      LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
      NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
      SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</t>

<figure><artwork>
BEGIN
&lt;?xml version="1.0" encoding="utf-8"?&gt;
&lt;schema xmlns="http://www.w3.org/2001/XMLSchema"
  xmlns:fee="urn:ietf:params:xml:ns:fee-0.3"
  xmlns:eppcom="urn:ietf:params:xml:ns:eppcom-1.0"
  xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"
  targetNamespace="urn:ietf:params:xml:ns:fee-0.3"
  elementFormDefault="qualified"&gt;

  &lt;import namespace="urn:ietf:params:xml:ns:eppcom-1.0" /&gt;
  &lt;import namespace="urn:ietf:params:xml:ns:domain-1.0" /&gt;

  &lt;annotation&gt;
    &lt;documentation&gt;Extensible Provisioning Protocol
    v1.0 domain name extension schema for
    fee information.&lt;/documentation&gt;
  &lt;/annotation&gt;

  &lt;!--
  Child elements found in EPP commands and responses
  --&gt;
  &lt;element name="info" type="fee:infoType" /&gt;
  &lt;element name="infData" type="fee:infDataType" /&gt;
  &lt;element name="creData" type="fee:transformDataType" /&gt;
  &lt;element name="renData" type="fee:transformDataType" /&gt;
  &lt;element name="trnData" type="fee:transformDataType" /&gt;
  &lt;element name="updData" type="fee:transformDataType" /&gt;
  &lt;element name="delData" type="fee:deleteDataType" /&gt;

  &lt;!--
    client &lt;info&gt; command
  --&gt;
  &lt;complexType name="infoType"&gt;
    &lt;sequence&gt;
      &lt;element name="currency" type="fee:currencyType" /&gt;
      &lt;element name="action" type="fee:actionType" /&gt;
      &lt;element name="period" type="domain:periodType" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;!--
    server &lt;info&gt; result
  --&gt;
  &lt;complexType name="infDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="currency" type="fee:currencyType" /&gt;
      &lt;element name="action" type="fee:actionType" /&gt;
      &lt;element name="period" type="domain:periodType" /&gt;
      &lt;element name="fee" type="fee:feeType" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;!--
    general transform (create, renew, update, transfer) result
  --&gt;
  &lt;complexType name="transformDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="fee" type="fee:feeType" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;!--
    delete result
  --&gt;
  &lt;complexType name="deleteDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="credit" type="fee:feeType" /&gt;
    &lt;/sequence&gt;
  &lt;/complexType&gt;

  &lt;!--
    common types
  --&gt;
  &lt;simpleType name="currencyType"&gt;
    &lt;restriction base="string"&gt;
      &lt;pattern value="[A-Z]{3}" /&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;complexType name="actionType"&gt;
    &lt;simpleContent&gt;
      &lt;extension base="fee:actionTypeValue"&gt;
        &lt;attribute name="phase" type="token" /&gt;
        &lt;attribute name="subphase" type="token" /&gt;
      &lt;/extension&gt;
    &lt;/simpleContent&gt;
  &lt;/complexType&gt;

  &lt;simpleType name="actionTypeValue"&gt;
    &lt;restriction base="token"&gt;
      &lt;minLength value="3"/&gt;
      &lt;maxLength value="16"/&gt;
    &lt;/restriction&gt;
  &lt;/simpleType&gt;

  &lt;simpleType name="feeType"&gt;
    &lt;restriction base="decimal" /&gt;
  &lt;/simpleType&gt;
&lt;/schema&gt;
END</artwork></figure>

      </section>

    </section>

    <section anchor="Security" title="Security Considerations"><t>The mapping
    extensions described in this document do not provide any security services
    beyond those described by <xref target="RFC5730">EPP</xref>, the <xref target="RFC5731">EPP domain name mapping</xref>, and protocol layers used by
    EPP. The security considerations described in these other specifications
    apply to this specification as well.</t></section>

    <section anchor="IANA" 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 were requested and have been registered by the
      IANA.</t>
      <t>Registration request for the digital signature namespace:</t>
      <t>URI: urn:ietf:params:xml:ns:fee-&VERSION;</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 EPP fee XML schema:</t>
      <t>URI: urn:ietf:params:xml:ns:fee-&VERSION;</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="Acknowledgements">
      <t>The author wishes to thank James Gould of Verisign, Luis Mu&#241;oz
      of ISC, and Michael Young of Architelos for their feedback and
      suggestions.</t>
    </section>

    <section title="Change History">
      <section title="Change from 0.1 to 0.2">
        <t><list style="numbers">
          <t>Added note about the use of the "XXX" code for non-currency
          transactions.</t>
          <t>Added phase attribute to the &lt;fee:action&gt; element, and
          normative reference to <xref target="draft-tan-epp-launchphase"/>.</t>
          <t>Added description of extension to transform and transfer query
          commands.</t>
          <t>Added Acknowledgements and Change History sections.</t>
        </list></t>
      </section>
      <section title="Change from 0.2 to 0.3">
        <t><list style="numbers">
          <t>Added the subphase attribute to the &lt;fee:action&gt; element.</t>
          <t>Removed the enumeration for the &lt;fee:action&gt; element so any
          token may be used.</t>
          <t>Moved the fee lookup command from &lt;check&gt; to
          &lt;info&gt;.</t>
          <t>Added an extension to the &lt;delete&gt; command to return credit
          information.</t>
          <t>Changed MUSTs to MAYs so that the response extension elements can
          be omitted where no fee is applicable.</t>
          <t>Update of introductory text.</t>
        </list></t>
      </section>
    </section>

  </middle>

  <back>
    <references title="Normative References">
      &RFC2119;
      &RFC3688;
      &RFC3915;
      &RFC5730;
      &RFC5731;

      <reference anchor="ISO4217">
          <front>
              <title>ISO 4217:2008, Codes for the representation of currencies
              and funds</title>
              <author>
                  <organization>International Organization for
                  Standardization</organization>
              </author>
              <date year="2008"/>
          </front>
          <format type="XML" target="http://www.currency-iso.org/dam/downloads/table_a1.xml"/>
          <format type="HTML" target="http://www.iso.org/iso/home/standards/currency_codes.htm"/>
      </reference>

      <reference anchor="draft-tan-epp-launchphase">
          <front>
              <title>Launch Phase Mapping for the  Extensible Provisioning
              Protocol (EPP)</title>
              <author fullname="James Gould" initials="J" surname="Gould"/>
              <author fullname="Wil Tan" initials="W" surname="Tan"/>
              <author fullname="Gavin Brown" initials="G" surname="Brown"/>
              <date year="2013"/>
          </front>
          <format type="HTML" target="http://tools.ietf.org/html/draft-tan-epp-launchphase"/>
      </reference>

    </references>
  </back>
</rfc>
