<?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.4">
<!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-01" 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="December" 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="Client Actions">
      <t>The &lt;fee:action&gt; element is used in EPP query commands to
      determine the command to which a fee is applicable.</t>

      <t>The element values permitted by the server is a matter of repository
      policy, but MUST include as a minimum the following values:

        <list style="symbols">
          <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.</t>

      <t>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"/>. It may also contain an
      OPTIONAL "subphase" attribute identifying the custom or sub-phase as
      described in <xref target="draft-tan-epp-launchphase"/>.</t>

    </section>

    <section title="Currency Codes">
      <t>The &lt;fee:currency&gt; element is used to indicate which currency
      fees are charged in. This value of this element MUST be a three-character
      currency code from <xref target="ISO4217"/>.</t>

      <t>Note that 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>
    </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;poll&gt;
        command or response.</t>

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

          <t>The command frame MAY contain an &lt;extension&gt; element which
          MAY contain one or more child &lt;fee:check&gt; elements with the
          following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;domain:name&gt; element that contains a domain name.</t>

            <t>A &lt;fee:currency&gt; element that contains the currency the fee
            is charged in.</t>

            <t>A &lt;fee:action&gt; element identifying the command.</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;check&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;check&gt;
C:       &lt;domain:check
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
C:         &lt;domain:name&gt;example.net&lt;/domain:name&gt;
C:         &lt;domain:name&gt;example.org&lt;/domain:name&gt;
C:       &lt;/domain:check&gt;
C:     &lt;/check&gt;
C:     &lt;extension&gt;
C:       &lt;fee:check
C:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:domain&gt;example.com&lt;/fee:domain&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:check&gt;
C:       &lt;fee:check
C:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:domain&gt;example.net&lt;/fee:domain&gt;
C:         &lt;fee:currency&gt;EUR&lt;/fee:currency&gt;
C:         &lt;fee:action phase="claims" subphase="landrush"&gt;
C:         create&lt;/fee:action&gt;
C:         &lt;fee:period unit="y"&gt;2&lt;/fee:period&gt;
C:       &lt;/fee:check&gt;
C:       &lt;fee:check
C:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:domain&gt;example.org&lt;/fee:domain&gt;
C:         &lt;fee:currency&gt;EUR&lt;/fee:currency&gt;
C:         &lt;fee:action&gt;transfer&lt;/fee:action&gt;
C:         &lt;fee:period unit="y"&gt;2&lt;/fee:period&gt;
C:       &lt;/fee:check&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 a &lt;check&gt; command that includes the
          extension elements described above, its response MUST contain an
          &lt;extension&gt; element, which MUST contain a child
          &lt;fee:chkData&gt; element for each &lt;fee:check&gt; element
          contained in the command. The &lt;fee:chkData&gt; MUST contain the
          following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;domain:name&gt; element that contains a domain name which
            matches the name in the corresponding &lt;fee:check&gt; element.</t>

            <t>A &lt;fee:currency&gt; element that contains same currency code
            that appeared in the corresponding &lt;fee:check&gt; element.</t>

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

            <t>A &lt;fee:period&gt; element that contains same unit
            that appeared in the corresponding &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>Example &lt;check&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:chkData
S:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
S:         &lt;domain:cd&gt;
S:           &lt;domain:name avail="1"&gt;example.com&lt;/domain:name&gt;
S:         &lt;/domain:cd&gt;
S:         &lt;domain:cd&gt;
S:           &lt;domain:name avail="0"&gt;example.net&lt;/domain:name&gt;
S:           &lt;domain:reason&gt;In use&lt;/domain:reason&gt;
S:         &lt;/domain:cd&gt;
S:         &lt;domain:cd&gt;
S:           &lt;domain:name avail="0"&gt;example.org&lt;/domain:name&gt;
S:           &lt;domain:reason&gt;In use&lt;/domain:reason&gt;
S:         &lt;/domain:cd&gt;
S:       &lt;/domain:chkData&gt;
S:     &lt;/resData&gt;
S:     &lt;extension&gt;
S:       &lt;fee:chkData
S:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
S:         &lt;fee:domain&gt;example.com&lt;/fee:domain&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:chkData&gt;
S:       &lt;fee:chkData
S:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
S:         &lt;fee:domain&gt;example.net&lt;/fee:domain&gt;
S:         &lt;fee:currency&gt;EUR&lt;/fee:currency&gt;
S:         &lt;fee:action phase="claims" subphase="landrush"&gt;
S:         create&lt;/fee:action&gt;
S:         &lt;fee:period unit="y"&gt;2&lt;/fee:period&gt;
S:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
S:       &lt;/fee:chkData&gt;
S:       &lt;fee:chkData
S:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
S:         &lt;fee:domain&gt;example.org&lt;/fee:domain&gt;
S:         &lt;fee:currency&gt;EUR&lt;/fee:currency&gt;
S:         &lt;fee:action&gt;transfer&lt;/fee:action&gt;
S:         &lt;fee:period unit="y"&gt;2&lt;/fee:period&gt;
S:         &lt;fee:fee&gt;2.50&lt;/fee:fee&gt;
S:       &lt;/fee:chkData&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;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.</t>

            <t>A &lt;fee:action&gt; element identifying the command.</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.4"&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.4"&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
S:         xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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 adds elements to both the EPP &lt;create&gt; command
          and response, when the extension has been selected during a
          &lt;login&gt; command.</t>

          <t>When submitting a &lt;create&gt; command to the server, the client
          MAY include in the &lt;extension&gt; element a &lt;fee:create&gt;
          element which includes the following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the fee
            that the command will result in.</t>

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

          <t>Depending on server policy, the server MAY choose to accept or
          refuse the command depending on whether the currency and fee provided
          by the client agrees with the server's own calculation of the fee. If
          the server chooses to refuse the command due to an incorrect fee, it
          MUST respond with a 2004 "Parameter value range error".</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 the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the
            fee.</t>

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

          <t>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; 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;create&gt;
C:       &lt;domain:create
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
C:         &lt;domain:period unit="y"&gt;2&lt;/domain:period&gt;
C:         &lt;domain:ns&gt;
C:           &lt;domain:hostObj&gt;ns1.example.net&lt;/domain:hostObj&gt;
C:           &lt;domain:hostObj&gt;ns2.example.net&lt;/domain:hostObj&gt;
C:         &lt;/domain:ns&gt;
C:         &lt;domain:registrant&gt;jd1234&lt;/domain:registrant&gt;
C:         &lt;domain:contact type="admin"&gt;sh8013&lt;/domain:contact&gt;
C:         &lt;domain:contact type="tech"&gt;sh8013&lt;/domain:contact&gt;
C:         &lt;domain:authInfo&gt;
C:           &lt;domain:pw&gt;2fooBAR&lt;/domain:pw&gt;
C:         &lt;/domain:authInfo&gt;
C:       &lt;/domain:create&gt;
C:     &lt;/create&gt;
C:     &lt;extension&gt;
C:       &lt;fee:create xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
C:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
C:       &lt;/fee:create&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>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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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 the &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 the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the
            credit.</t>

            <t>A &lt;fee:credit&gt; element that contains the credit associated
            with the deletion of the domain.</t>
          </list></t>

          <t>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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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 adds elements to both the EPP &lt;renew&gt; command
          and response, when the extension has been selected during a
          &lt;login&gt; command.</t>

          <t>When submitting a &lt;renew&gt; command to the server, the client
          MAY include in the &lt;extension&gt; element a &lt;fee:renew&gt;
          element which includes the following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the fee
            that the command will result in.</t>

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

          <t>Depending on server policy, the server MAY choose to accept or
          refuse the command depending on whether the currency and fee provided
          by the client agrees with the server's own calculation of the fee. If
          the server chooses to refuse the command due to an incorrect fee, it
          MUST respond with a 2004 "Parameter value range error".</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 the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the
            fee.</t>

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

          <t>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; 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;renew&gt;
C:       &lt;domain:renew
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
C:         &lt;domain:curExpDate&gt;2000-04-03&lt;/domain:curExpDate&gt;
C:         &lt;domain:period unit="y"&gt;5&lt;/domain:period&gt;
C:       &lt;/domain:renew&gt;
C:     &lt;/renew&gt;
C:     &lt;extension&gt;
C:       &lt;fee:create xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
C:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
C:       &lt;/fee:create&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>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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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 adds elements to both the EPP &lt;transfer&gt;
          command and response, when the value of the "op" attribute of the
          &lt;transfer&gt; command element is "request", and the extension has
          been selected during the &lt;login&gt; command.</t>

          <t>When submitting a &lt;transfer&gt; command to the server, the client
          MAY include in the &lt;extension&gt; element a &lt;fee:transfer&gt;
          element which includes the following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the fee
            that the command will result in.</t>

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

          <t>Depending on server policy, the server MAY choose to accept or
          refuse the command depending on whether the currency and fee provided
          by the client agrees with the server's own calculation of the fee. If
          the server chooses to refuse the command due to an incorrect fee, it
          MUST respond with a 2004 "Parameter value range error".</t>

          <t>When the &lt;transfer&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:trnData&gt; element that contains the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the
            fee.</t>

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

          <t>If no &lt;fee:transfData&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; 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;transfer op="request"&gt;
C:       &lt;domain:transfer
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
C:         &lt;domain:period unit="y"&gt;1&lt;/domain:period&gt;
C:         &lt;domain:authInfo&gt;
C:           &lt;domain:pw roid="JD1234-REP"&gt;2fooBAR&lt;/domain:pw&gt;
C:         &lt;/domain:authInfo&gt;
C:       &lt;/domain:transfer&gt;
C:     &lt;/transfer&gt;
C:     &lt;extension&gt;
C:       &lt;fee:create xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
C:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
C:       &lt;/fee:create&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>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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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 adds elements to both the EPP &lt;update&gt; command
          and response, when the extension has been selected during a
          &lt;login&gt; has been selected during the &lt;login&gt; command.</t>

          <t>When submitting a &lt;update&gt; command to the server, the client
          MAY include in the &lt;extension&gt; element a &lt;fee:update&gt;
          element which includes the following child elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the fee
            that the command will result in.</t>

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

          <t>Depending on server policy, the server MAY choose to accept or
          refuse the command depending on whether the currency and fee provided
          by the client agrees with the server's own calculation of the fee. If
          the server chooses to refuse the command due to an incorrect fee, it
          MUST respond with a 2004 "Parameter value range error".</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:upData&gt; element that contains the following child
          elements:</t>

          <t><list style="symbols">
            <t>A &lt;fee:currency&gt; element containing the currency of the
            fee.</t>

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

          <t>If no &lt;fee:upData&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; 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;update&gt;
C:       &lt;domain:update
C:         xmlns:domain="urn:ietf:params:xml:ns:domain-1.0"&gt;
C:         &lt;domain:name&gt;example.com&lt;/domain:name&gt;
C:         &lt;domain:chg&gt;
C:           &lt;domain:registrant&gt;sh8013&lt;/domain:registrant&gt;
C:         &lt;/domain:chg&gt;
C:       &lt;/domain:update&gt;
C:     &lt;/update&gt;
C:     &lt;extension&gt;
C:       &lt;fee:create xmlns:fee="urn:ietf:params:xml:ns:fee-0.4"&gt;
C:         &lt;fee:currency&gt;USD&lt;/fee:currency&gt;
C:         &lt;fee:fee&gt;5.00&lt;/fee:fee&gt;
C:       &lt;/fee:create&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>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.4"&gt;
S:         &lt;fee:currency&gt;USD&lt;/fee:currency&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.4"
  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.4"
  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="check" type="fee:checkType" /&gt;
  &lt;element name="chkData" type="fee:chkDataType" /&gt;
  &lt;element name="info" type="fee:infoType" /&gt;
  &lt;element name="infData" type="fee:infDataType" /&gt;
  &lt;element name="create" type="fee:transformCommandType" /&gt;
  &lt;element name="creData" type="fee:transformResultType" /&gt;
  &lt;element name="renew" type="fee:transformCommandType" /&gt;
  &lt;element name="renData" type="fee:transformResultType" /&gt;
  &lt;element name="transfer" type="fee:transformCommandType" /&gt;
  &lt;element name="trnData" type="fee:transformResultType" /&gt;
  &lt;element name="update" type="fee:transformCommandType" /&gt;
  &lt;element name="updData" type="fee:transformResultType" /&gt;
  &lt;element name="delData" type="fee:deleteDataType" /&gt;

  &lt;!--
  client &lt;check&gt; command
  --&gt;
  &lt;complexType name="checkType"&gt;
    &lt;sequence&gt;
    &lt;element name="domain" type="eppcom:labelType" /&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;check&gt; result
  --&gt;
  &lt;complexType name="chkDataType"&gt;
    &lt;sequence&gt;
      &lt;element name="domain" type="eppcom:labelType" /&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;!--
    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) command
  --&gt;
  &lt;complexType name="transformCommandType"&gt;
    &lt;sequence&gt;
      &lt;element name="currency" type="fee:currencyType" /&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="transformResultType"&gt;
    &lt;sequence&gt;
      &lt;element name="currency" type="fee:currencyType" /&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="currency" type="fee:currencyType" /&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 the following persons for their feedback and
      suggestions:</t>
      <t><list style="symbols">
        <t>James Gould of Verisign</t>
        <t>Luis Mu&#241;oz of ISC</t>
        <t>Michael Young of Architelos</t>
        <t>Ben Levac and Jeff Eckhaus of Demand Media</t>
       </list></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 title="Change from 0.3 to 0.4">
        <t><list style="numbers">
          <t>Restore the &lt;check&gt; command extension; either &lt;check&gt;
          or &lt;info&gt; can be used.</t>
          <t>added extension elements for &lt;create&gt;, &lt;renew&gt;,
          &lt;transfer&gt; and &lt;update&gt; so that the server can reject the
          command if the fee is incorrect.</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>
