Network Working Group                                       A. Mayrhofer
Internet-Draft                                                    nic.at
Intended status: Informational                          October 23, 2014
Expires: April 26, 2015


                     EPP Service Messages Extension
                draft-mayrhofer-eppext-servicemessage-00

Abstract

   EPP contains a mechanism to convey service messages to clients via
   the "poll" query command.  This document specifies an extension
   defining a simple structured format for including additional
   information in service messages.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.

   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at http://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on April 26, 2015.

Copyright Notice

   Copyright (c) 2014 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents
   (http://trustee.ietf.org/license-info) in effect on the date of
   publication of this document.  Please review these documents
   carefully, as they describe your rights and restrictions with respect
   to this document.  Code Components extracted from this document must
   include Simplified BSD License text as described in Section 4.e of
   the Trust Legal Provisions and are provided without warranty as
   described in the Simplified BSD License.




Mayrhofer                Expires April 26, 2015                 [Page 1]


Internet-Draft       EPP Service Messages Extension         October 2014


Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   2
   2.  Terminology . . . . . . . . . . . . . . . . . . . . . . . . .   3
   3.  EPP Command Mapping . . . . . . . . . . . . . . . . . . . . .   3
     3.1.  EPP Query Commands  . . . . . . . . . . . . . . . . . . .   3
       3.1.1.  EPP <poll> Command  . . . . . . . . . . . . . . . . .   3
       3.1.2.  Other Query Commands  . . . . . . . . . . . . . . . .   4
     3.2.  EPP Transform Commands  . . . . . . . . . . . . . . . . .   4
     3.3.  Examples  . . . . . . . . . . . . . . . . . . . . . . . .   4
     3.4.  Formal Syntax . . . . . . . . . . . . . . . . . . . . . .   8
   4.  Security Considerations . . . . . . . . . . . . . . . . . . .  10
   5.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  10
   6.  Acknowledgements  . . . . . . . . . . . . . . . . . . . . . .  11
   7.  References  . . . . . . . . . . . . . . . . . . . . . . . . .  11
     7.1.  Normative References  . . . . . . . . . . . . . . . . . .  11
     7.2.  Informative References  . . . . . . . . . . . . . . . . .  11
   Author's Address  . . . . . . . . . . . . . . . . . . . . . . . .  12

1.  Introduction

   The Extensible Provisioning Protocol (EPP) [RFC5730] specifies a
   queue-based mechanism to convey service messages to clients.  Clients
   can discover, retrieve and acknowledge such service messages via the
   "poll" query command.  This mechanism is widely used in deployments
   of EPP servers.

   The contents of service messages is extensible.  While EPP Object
   Mappings define object-specific messages for some specific situations
   (For example, see Section 3.3 of [RFC5732]), there is no generic
   structure defined for the many other situations in which domain name
   registries require conveying additional information.  Such situations
   include:

   o  Notifying a registrar if (and which) additional objects were
      transferred automatically together with a domain name.

   o  Sending warnings to registrars when their credit level reaches a
      low water mark.

   o  Providing a list of domain names that were auto-renewed by the
      registry on behalf of the client.

   o  Sending warning messages to clients when objects in the registry
      are about to expire (or have expired recently).

   As outlined above, information to be sent in such "additional"
   service messages is typically (although not always) structured.  For



Mayrhofer                Expires April 26, 2015                 [Page 2]


Internet-Draft       EPP Service Messages Extension         October 2014


   interopability reasons, while it is highly desireable to keep a
   certain level of structure when conveying this information to
   clients, a proliferation of custom extensions for each and every
   situation should be avoided.

   This document specifies such a structure as an extension to the
   "resData" element of EPP service messages.  The specification follows
   the guidelines contained in [RFC3735].

2.  Terminology

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
   document are to be interpreted as described in [RFC2119].

3.  EPP Command Mapping

3.1.  EPP Query Commands

3.1.1.  EPP <poll> Command

   This extension adds elements to the response to a <poll> command with
   the "op" attribute set to "req".  Specifically, a "message" element
   is added to the "resData" section of the service message, containing
   the following elements/attributes:

   o  A REQUIRED "type" attribute that identifies the type of service
      message.  The definition of values for this attribute is subject
      to local server policy.

   o  A REQUIRED "desc" element that contains free form text.

   o  An OPTIONAL "reftrID" element ("reference transaction identifier")
      containing:

      *  An OPTIONAL "clTRID" element that contains the client
         transaction identifier of the EPP transaction that instigated
         the service mesage.

      *  A REQUIRED "svTRID" element that contains the server
         transaction identifier of the EPP transaction that instigated
         the service message.

   o  An OPTIONAL "data" element, containing at least one of:

      *  Zero or more OPTIONAL "entry" elements.  Each "entry" element
         contains a REQUIRED "name" attribute.  These elements transport




Mayrhofer                Expires April 26, 2015                 [Page 3]


Internet-Draft       EPP Service Messages Extension         October 2014


         key/value tuples.  The definition of values for the "name"
         attribute is subject to local server policy.

      *  An OPTIONAL "request" element, containing an EPP request frame
         related to this service message.

      *  An OPTIONAL "response" element, containing an EPP response
         frame related to this service message.  Note that if both
         "request" and "response" elements are used, their contents MUST
         be from the same EPP transaction.

      *  An OPTIONAL "any other" element from "any other" namespace -
         Note that this is used for legacy reasons in some situations to
         include EPP frames outside of the request/response elements
         pair, or other data.

   This extension does not add any elements to the <poll> command nor to
   the response of the <poll> command with the "op" attribute set to
   "ack".

3.1.2.  Other Query Commands

   This extension does not add any elements to the <check>, <info> and
   <transfer> query commands.

3.2.  EPP Transform Commands

   This extension does not add any elements to any of the EPP transform
   commands (<create>, <delete>, <renew>, <transfer>, <update>).

3.3.  Examples

   The following example informs a client that an inbound transfer was
   approved, and two subordinate host objects were automatically
   transferred together with the domain name:
















Mayrhofer                Expires April 26, 2015                 [Page 4]


Internet-Draft       EPP Service Messages Extension         October 2014


  <epp xsi:schemaLocation="urn:ietf:params:xml:ns:epp-1.0 epp-1.0.xsd">
  <response>
    <result code="1301">
      <msg lang="en-US">Command completed successfully; ack to dequeue</msg>
    </result>
    <msgQ count="1" id="137526">
      <qDate>2013-11-27T04:04:51.0Z</qDate>
      <msg lang="en-US">Transfer Approved.</msg>
    </msgQ>
    <resData>
      <domain:trnData xsi:schemaLocation="urn:ietf:params:xml:ns:domain-1.0 domain-1.0.xsd">
        <domain:name>test.example</domain:name>
        <domain:trStatus>clientApproved</domain:trStatus>
        <domain:reID>reg1</domain:reID>
        <domain:reDate>2013-11-27T04:03:29.0Z</domain:reDate>
        <domain:acID>reg2</domain:acID>
        <domain:acDate>2013-11-27T04:04:51.0Z</domain:acDate>
      </domain:trnData>
      <message xmlns="http://tld-box.at/xmlns/resdata-1.0"
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
      type="TransferApproved">
        <desc>Inbound transfer of test.example was APPROVED.
        Subordinate hosts ns1.test.example, ns2.test.example were also
        transferred.</desc>
        <data>
          <entry name="host">ns1.test.example</entry>
          <entry name="host">ns2.test.example</entry>
        </data>
      </message>
    </resData>
    <trID>
      <svTRID>123</svTRID>
    </trID>
  </response>
</epp>


   In this example, the extension is used to inform a client that some
   domain names have expired recently:












Mayrhofer                Expires April 26, 2015                 [Page 5]


Internet-Draft       EPP Service Messages Extension         October 2014


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <response>
    <result code="1301">
      <msg>Command completed successfully; ack to dequeue</msg>
    </result>
    <msgQ count="1" id="2267">
      <qDate>2016-02-25T13:46:36.879301Z</qDate>
      <msg>The following domains have expired as of 2016-02-25:
      test-expire1.example, test-expire2.example</msg>
    </msgQ>
    <resData>
      <message xmlns="http://tld-box.at/xmlns/resdata-1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="HasExpired">
        <desc>The following domains have expired as of 2016-02-25:
        test-expire1.example, test-expire2.example</desc>
        <data>
          <entry name="date">2016-02-25</entry>
          <entry name="domain">test-expire1.example</entry>
          <entry name="domain">test-expire2.example</entry>
        </data>
      </message>
    </resData>
    <trID>
      <clTRID>AD59FECE-5928-11E4-8467-BBC5AB10F032</clTRID>
      <svTRID>20141021134636989450F6-primary-tldbox</svTRID>
    </trID>
  </response>
</epp>


   An interesting use case of this extension is when (for whatever
   reason) the connection between an EPP server and an EPP client fails
   while a request is being processed.  Subsequently, the server cannot
   provide the client with the response frame.  The following example
   illustrates how the response frame can be submitted to the client
   using this extension:















Mayrhofer                Expires April 26, 2015                 [Page 6]


Internet-Draft       EPP Service Messages Extension         October 2014


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <response>
    <result code="1301">
      <msg>Command completed successfully; ack to dequeue</msg>
    </result>
    <msgQ count="88" id="1816">
      <qDate>2014-10-21T14:31:54.524131Z</qDate>
      <msg>EPP response to command with client-id [05908A94-592F-11E4-ABEA-51CFAB10F032]
      and server-id [20141021143201978589AD-secondary-tldbox]</msg>
    </msgQ>
    <resData>
      <message xmlns="http://tld-box.at/xmlns/resdata-1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="ResponseRecovery">
        <desc>EPP response to command with client-id [05908A94-592F-11E4-ABEA-51CFAB10F032]
        and server-id [20141021143201978589AD-secondary-tldbox]</desc>
        <data>
          <epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
            <response>
              <result code="1000">
                <msg>Command completed successfully</msg>
              </result>
              <msgQ count="8" id="1975"/>
              <resData>
                <domain:creData xmlns:domain="urn:ietf:params:xml:ns:domain-1.0" xmlns="urn:ietf:params:xml:ns:domain-1.0">
                  <domain:name>test-connection-interrupt.example</domain:name>
                  <domain:crDate>2014-10-21T14:32:01.984360Z</domain:crDate>
                  <domain:exDate>2015-10-21T14:32:01.984360Z</domain:exDate>
                </domain:creData>
              </resData>
              <trID>
                <clTRID>05908A94-592F-11E4-ABEA-51CFAB10F032</clTRID>
                <svTRID>20141021143201978589AD-secondary-tldbox</svTRID>
              </trID>
            </response>
          </epp>
        </data>
      </message>
    </resData>
    <trID>
      <clTRID>06706F24-592F-11E4-ABEA-51CFAB10F032</clTRID>
      <svTRID>20141021143203441442CD-primary-tldbox</svTRID>
    </trID>
  </response>
</epp>


   Note that, in the example above, the EPP response frame is included
   as a child element of the "data" element directly, using the "any"



Mayrhofer                Expires April 26, 2015                 [Page 7]


Internet-Draft       EPP Service Messages Extension         October 2014


   element of the Schema.  This is for legacy reasons of the current
   implementation, since the Schema described also allows an explicit
   "response" element that should be preferred for including EPP
   response frames.

   The example might be updated as the implementation is adapted.

   The following example informs a client that - for reasons that are
   outside of the scope of this document - status values on one of the
   domain names under his sponsorship have been set:


<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<epp xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <response>
    <result code="1301">
      <msg>Command completed successfully; ack to dequeue</msg>
    </result>
    <msgQ count="1" id="16031">
      <qDate>2014-12-28T13:48:22.097813Z</qDate>
      <msg>Status(es) added to domain [test---0039888rbx-vvgobook5xl4.tldbox]: serverUpdateProhibited (testcase comment freeze (2014-12-28T13:48:22.097813Z)), serverTransferProhibited (testcase comment freeze (2014-12-28T13:48:22.097813Z))</msg>
    </msgQ>
    <resData>
      <message xmlns="http://tld-box.at/xmlns/resdata-1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" type="DelegationStatusSet">
        <desc>Status(es) added to domain [test-freeze.example]: serverUpdateProhibited (testcase comment freeze (2014-12-28T13:48:22.097813Z)), serverTransferProhibited (testcase comment freeze (2014-12-28T13:48:22.097813Z))</desc>
        <data>
          <entry name="domain">test-freeze.example</entry>
          <entry name="status">serverUpdateProhibited</entry>
          <entry name="comment">testcase comment freeze (2014-12-28T13:48:22.097813Z)</entry>
          <entry name="status">serverTransferProhibited</entry>
          <entry name="comment">testcase comment freeze (2014-12-28T13:48:22.097813Z)</entry>
        </data>
      </message>
    </resData>
    <trID>
      <clTRID>40FD1B64-5ABB-11E4-BFE1-587CAB10F032</clTRID>
      <svTRID>2014102313482238365346-primary-tldbox</svTRID>
    </trID>
  </response>
</epp>


3.4.  Formal Syntax

   The XML Schema of the extension is as follows:


   <?xml version="1.0" encoding="UTF-8"?>



Mayrhofer                Expires April 26, 2015                 [Page 8]


Internet-Draft       EPP Service Messages Extension         October 2014


      <schema targetNamespace="http://tld-box.at/xmlns/resdata-1.1"
              xmlns:tld="http://tld-box.at/xmlns/resdata-1.1"
              xmlns:epp="urn:ietf:params:xml:ns:epp-1.0"
              xmlns="http://www.w3.org/2001/XMLSchema"
              elementFormDefault="qualified">

       <!--  Import common element types.  -->

       <import namespace="urn:ietf:params:xml:ns:epp-1.0"
               schemaLocation="epp-1.0.xsd"/>

       <annotation>
         <documentation>
           Extensible Provisioning Protocol v1.0
           nic.at Service Message extension
       draft-mayrhofer-eppext-servicemessage-00
         </documentation>
       </annotation>

       <!-- service message -->

       <element name="message" type="tld:messageType"/>

       <complexType name="messageType">
         <sequence>
           <element name="desc" type="string"/>
           <element name="reftrID" type="tld:reftrIDType"
            minOccurs="0"/>
           <element name="data" type="tld:messageDataType"
            minOccurs="0"/>
         </sequence>
         <attribute name="type" type="tld:messageTypeType"
          use="required"/>
       </complexType>

       <complexType name="frameType">
         <sequence>
           <any namespace="##other"/>
         </sequence>
       </complexType>

       <complexType name="messageDataType">
         <sequence>
           <element name="entry" type="tld:attributeType"
            maxOccurs="unbounded" minOccurs="0"/>
           <element name="request" type="tld:frameType" minOccurs="0"/>
           <element name="response" type="tld:frameType" minOccurs="0"/>
           <any namespace="##other" minOccurs="0"/>



Mayrhofer                Expires April 26, 2015                 [Page 9]


Internet-Draft       EPP Service Messages Extension         October 2014


         </sequence>
       </complexType>

       <simpleType name="messageTypeType">
         <restriction base="token">
           <maxLength value="100"/>
         </restriction>
       </simpleType>

       <complexType name="reftrIDType">
         <sequence>
           <element name="clTRID" type="epp:trIDStringType"
            minOccurs="0"/>
           <element name="svTRID" type="epp:trIDStringType"/>
         </sequence>
       </complexType>

       <!-- attributes -->

       <complexType name="attributeType">
          <simpleContent>
            <extension base="string">
              <attribute name="name" type="token"
               use="required"/>
            </extension>
          </simpleContent>
       </complexType>

   </schema>


4.  Security Considerations

   This extension allows for inclusion of arbitrary EPP frames in
   service messages.  Since EPP frames can include sensitive
   information, implementations MUST carefully consider risks related to
   the use of that mechanism, especially whenever EPP frames from other
   clients are involved.  For example, a "login" frame typically
   contains authentication credentials, and hence MUST NOT be exposed to
   a third party client.

5.  IANA Considerations

   IANA is requested to register the specified extension with the
   "Extensions for the Extensible Provisioning Protocol Registry"
   ([draft-ietf-eppext-reg-09.txt]).  The required registration
   information is contained below:




Mayrhofer                Expires April 26, 2015                [Page 10]


Internet-Draft       EPP Service Messages Extension         October 2014


     -----BEGIN FORM-----
     Name of Extension:
     "EPP Service Messages Extension"

     Document Status:
     Informational

     Reference:
     http://tools.ietf.org/html/draft-mayrhofer-eppext-servicemessage-01

     Registrant Name and Email Address:
     Alexander Mayrhofer, alexander.mayrhofer@nic.at

     TLDs: .at, .berlin, .brussels, .hamburg, .reise, .tirol,
           .versicherung, .vlaanderen, .voting, .wien


     IPR Disclosure: None

     Status: Active

     Notes: The .at TLD currently uses the schema under a different
            namespace identifier
     -----END FORM-----

6.  Acknowledgements

   The extension was specified and implemented by Achim Adam, Bernhard
   Reutner-Fischer, Marcel Gruenauer and Mark Hofstetter.  Achim Adam
   also performed reviews, suggested text, and provided the examples
   contained in this document.

7.  References

7.1.  Normative References

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119, March 1997.

   [RFC5730]  Hollenbeck, S., "Extensible Provisioning Protocol (EPP)",
              STD 69, RFC 5730, August 2009.

7.2.  Informative References

   [RFC3735]  Hollenbeck, S., "Guidelines for Extending the Extensible
              Provisioning Protocol (EPP)", RFC 3735, March 2004.





Mayrhofer                Expires April 26, 2015                [Page 11]


Internet-Draft       EPP Service Messages Extension         October 2014


   [RFC5732]  Hollenbeck, S., "Extensible Provisioning Protocol (EPP)
              Host Mapping", STD 69, RFC 5732, August 2009.

Author's Address

   A. Mayrhofer
   nic.at GmbH
   Jakob-Haringer-Strasse 8
   Salzburg  5020
   AT

   Email: alexander.mayrhofer@nic.at







































Mayrhofer                Expires April 26, 2015                [Page 12]