<?xml version="1.0" encoding="US-ASCII"?>
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
     There has to be one entity for each item to be referenced. 
     An alternate method (rfc include) is described in the references. -->
<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC3915 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3915.xml">
<!ENTITY RFC5731 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5731.xml">
<!ENTITY RFC5732 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5732.xml">
<!ENTITY RFC5733 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5733.xml">
<!ENTITY RFC7481 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7481.xml">
<!ENTITY RFC7483 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7483.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs), 
     please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
     (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space 
     (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="yes"?>
<!-- keep one blank line between list items -->
<?rfc comments="yes" ?>
<!-- show cref output -->
<?rfc inline="yes" ?>
<!-- inline cref output -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-regext-epp-rdap-status-mapping-03" ipr="trust200902">
  <!-- category values: std, bcp, info, exp, and historic
     ipr values: full3667, noModification3667, noDerivatives3667
     you can add the attributes updates="NNNN" and obsoletes="NNNN" 
     they will automatically be output with "(if approved)" -->

  <!-- ***** FRONT MATTER ***** -->

  <front>
    <title abbrev="epp-rdap-status-mapping">
    Extensible Provisioning Protocol (EPP) and Registration Data Access Protocol (RDAP) Status Mapping</title>

    <author fullname="James Gould" initials="J.G" surname="Gould">
      <organization>VeriSign, Inc.</organization>

      <address>
        <postal>
          <street>12061 Bluemont Way</street>

          <city>Reston</city>

          <region>VA</region>

          <code>20190</code>

          <country>US</country>
        </postal>

        <email>jgould@verisign.com</email>

        <uri>http://www.verisigninc.com</uri>
      </address>
    </author>


    <date day="12" month="October" year="2016"/>

    <abstract>
      <t>This document describes the mapping of the Extensible Provisioning Protocol (EPP)
      statuses with the statuses registered for use in the Registration Data Access Protocol (RDAP).  
      This document identifies gaps in the mapping, and registers RDAP statuses 
      to fill the gaps to ensure that all of the EPP RFC statuses are supported in RDAP.</t>
    </abstract>
        
  </front>

  <middle>
    <section title="Introduction">
      <t>This document maps the statuses defined in the Extensible Provisioning Protocol (EPP) RFCs 
      to the list of statuses registered for use in the Registration Data Access Protocol (RDAP), in 
      the <xref target="rdap-json-values">RDAP JSON Values Registry</xref>.</t>
      
      <t>The RDAP JSON Values Registry is described in section 10.2 of <xref target="RFC7483"/> and 
      is available in the <xref target="rdap-json-values">RDAP JSON Values Registry</xref>.</t>
      
      <t>The EPP statuses used as the source of the mapping include section 2.3 of the <xref target="RFC5731">EPP Domain Name Mapping</xref>, 
      section 2.3 of the <xref target="RFC5732">EPP Host Mapping</xref>, section 2.2 of the <xref target="RFC5733">EPP Contact Mapping</xref>, 
      and section 3.1 of <xref target="RFC3915">EPP Grace Period Mapping</xref>.</t>  
      
      <t>Each EPP status MUST map to a single RDAP status to ensure 
      that data in the Domain Name Registries (DNRs) that use EPP can be accurately presented in RDAP.</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>
      </section>
    </section>

    <section anchor="epp-to-rdap-status-mapping" title="EPP to RDAP Status Mapping">
      <t>Below is an alphabetically sorted list of EPP statuses from the EPP RFCs (<xref target="RFC5731"/>, <xref target="RFC5732"/>, <xref target="RFC5733"/>, and <xref target="RFC3915"/>) mapped to 
      the RDAP statuses registered in the <xref target="rdap-json-values">RDAP JSON Values Registry</xref>, with the 
      format &lt;EPP Status&gt; '=' &lt;RDAP Status&gt;, where a blank &lt;RDAP Status&gt; indicates a gap in the mapping.</t>

		<t><list>      
			<t>addPeriod                = </t>
			<t>autoRenewPeriod          = </t>
			<t>clientDeleteProhibited   = </t>
			<t>clientHold               = </t>
			<t>clientRenewProhibited    = </t>
			<t>clientTransferProhibited = </t>
			<t>clientUpdateProhibited   = </t>
			<t>inactive                 = inactive</t>
			<t>linked                   = associated</t>
			<t>ok                       = active</t>
			<t>pendingCreate            = pending create</t>
			<t>pendingDelete            = pending delete</t>
			<t>pendingRenew             = pending renew</t>
			<t>pendingRestore           = </t>
			<t>pendingTransfer          = pending transfer</t>
			<t>pendingUpdate            = pending update</t>
			<t>redemptionPeriod         = </t>
			<t>renewPeriod              = </t>
			<t>serverDeleteProhibited   = </t>
			<t>serverRenewProhibited    = </t>
			<t>serverTransferProhibited = </t>
			<t>serverUpdateProhibited   = </t>
			<t>serverHold               = </t>
			<t>transferPeriod           = </t>
	   </list></t>
	   
		<t>The <xref target="rdap-json-values">RDAP JSON Values Registry</xref> does have a 
		set of prohibited statuses including "renew prohibited", "update prohibited", "transfer prohibited", and "delete prohibited", but these 
		statuses do not directly map to the EPP prohibited statuses.  EPP provides status codes that allow distinguishing the case that an action 
		is prohibited because of server policy from the case that an action is prohibited because of a client request.  
		The ability to make this distinction needs to be preserved in RDAP.</t>  
	   
	   <t>Each of the EPP status values that don't map directly to an RDAP status value is described below. 
	   Each EPP status value includes a proposed new RDAP status value and a description of the value. 
	   The RDAP status value is derived from the EPP status value by converting the EPP camel case representation 
	   to lower case with a space character inserted between word boundaries.</t>
	   
	   <t><list hangIndent="4" style="hanging">
      	<t hangText="addPeriod = add period;">This grace period is provided after the initial registration of the object.  
      	If the object is deleted by the client during this period, the server provides a credit to the client for the cost of the registration.</t>
      	<t hangText="autoRenewPeriod = auto renew period;">This grace period is provided after an object registration period expires and is extended (renewed) 
      	automatically by the server.  If the object is deleted by the client during this period, the server provides a credit to the 
      	client for the cost of the auto renewal.</t>
      	<t hangText="clientDeleteProhibited = client delete prohibited;">The client requested that requests to delete the object MUST be rejected.</t>
      	<t hangText="clientHold = client hold;">The client requested that the DNS delegation information MUST NOT be published for the object.</t>
      	<t hangText="clientRenewProhibited = client renew prohibited;">The client requested that requests to renew the object MUST be rejected.</t>
      	<t hangText="clientTransferProhibited = client transfer prohibited;">The client requested that requests to transfer the object MUST be rejected.</t>
      	<t hangText="clientUpdateProhibited = client update prohibited;">The client requested that requests to update the object (other than to remove this status) MUST be rejected.</t>
      	<t hangText="pendingRestore = pending restore;">An object is in the process of being restored after being in the redemption period state.</t>
      	<t hangText="redemptionPeriod = redemption period;">A delete has been received, but the object has not yet been purged because an 
      	opportunity exists to restore the object and abort the deletion process.</t>
      	<t hangText="renewPeriod = renew period;">This grace period is provided after an object registration period is 
      	explicitly extended (renewed) by the client.  If the object is deleted by the client during this period, 
      	the server provides a credit to the client for the cost of the renewal.</t>
      	<t hangText="serverDeleteProhibited = server delete prohibited;">The server set the status so that requests to delete the object MUST be rejected.</t>
      	<t hangText="serverRenewProhibited = server renew prohibited;">The server set the status so that requests to renew the object MUST be rejected.</t>
      	<t hangText="serverTransferProhibited = server transfer prohibited;">The server set the status so that requests to transfer the object MUST be rejected.</t>
      	<t hangText="serverUpdateProhibited = server update prohibited;">The server set the status so that requests to update the object (other than to remove this status) MUST be rejected.</t>
      	<t hangText="serverHold = server hold;">The server set the status so that DNS delegation information MUST NOT be published for the object.</t>
      	<t hangText="transferPeriod = transfer period;">This grace period is provided after the successful transfer of object registration sponsorship from one client 
      	to another client.  If the object is deleted by the client during this period, the server provides a credit to the client for the cost of the transfer.</t>
      </list></t>
            
      <t>The resulting mapping after registering the new RDAP statuses is:</t>
      
		<t><list>      
			<t>addPeriod                = add period</t>
			<t>autoRenewPeriod          = auto renew period</t>
			<t>clientDeleteProhibited   = client delete prohibited</t>
			<t>clientHold               = client hold</t>
			<t>clientRenewProhibited    = client renew prohibited</t>
			<t>clientTransferProhibited = client transfer prohibited</t>
			<t>clientUpdateProhibited   = client update prohibited</t>
			<t>inactive                 = inactive</t>
			<t>linked                   = associated</t>
			<t>ok                       = active</t>
			<t>pendingCreate            = pending create</t>
			<t>pendingDelete            = pending delete</t>
			<t>pendingRenew             = pending renew</t>
			<t>pendingRestore           = pending restore</t>
			<t>pendingTransfer          = pending transfer</t>
			<t>pendingUpdate            = pending update</t>
			<t>redemptionPeriod         = redemption period</t>
			<t>renewPeriod              = renew period</t>
			<t>serverDeleteProhibited   = server delete prohibited</t>
			<t>serverRenewProhibited    = server renew prohibited</t>
			<t>serverTransferProhibited = server transfer prohibited</t>
			<t>serverUpdateProhibited   = server update prohibited</t>
			<t>serverHold               = server hold</t>
			<t>transferPeriod           = transfer period</t>
	   </list></t>
      
      
    </section>

       
    <section anchor="IANA" title="IANA Considerations">
    
    	<section anchor="json-values-registry" title="JSON Values Registry">
    	
    		<t>The following values should be registered by the IANA in 
    		the RDAP JSON Values Registry described in <xref target="RFC7483"/>:
    		</t>
    		
    		<t><vspace/></t>
    		
    		<t>Value: add period</t>
    		<t>Type: status</t>
    		<t>Description: This grace period is provided after the initial registration of the object.  
    		If the object is deleted by the client during this period, 
      	the server provides a credit to the client for the cost of the registration.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
    		
    		<t><vspace/></t>
 
    		<t>Value: auto renew period</t>
    		<t>Type: status</t>
    		<t>Description: This grace period is provided after an object registration period expires and is extended (renewed) 
      	automatically by the server.  If the object is deleted by the client during this period, 
      	the server provides a credit to the client for the cost of the auto renewal.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
 
    		<t><vspace/></t>
 
    		<t>Value: client delete prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The client requested that requests to delete the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

    		<t><vspace/></t>
 
    		<t>Value: client hold</t>
    		<t>Type: status</t>
    		<t>Description: The client requested that the DNS delegation information MUST NOT be published for the object.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
 
     		<t><vspace/></t>
 
    		<t>Value: client renew prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The client requested that requests to renew the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
    		
     		<t><vspace/></t>
 
    		<t>Value: client transfer prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The client requested that requests to transfer the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

     		<t><vspace/></t>
 
    		<t>Value: client update prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The client requested that requests to update the object (other than to remove this status) MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
    		
     		<t><vspace/></t>
  
    		<t>Value: pending restore</t>
    		<t>Type: status</t>
    		<t>Description: An object is in the process of being restored after being in the redemption period state.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

     		<t><vspace/></t>
 
    		<t>Value: redemption period</t>
    		<t>Type: status</t>
    		<t>Description: A delete has been received, but the object has not yet been purged because an 
      	opportunity exists to restore the object and abort the deletion process.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

     		<t><vspace/></t>
 
    		<t>Value: renew period</t>
    		<t>Type: status</t>
    		<t>Description: This grace period is provided after an object registration period is 
      	explicitly extended (renewed) by the client.  If the object is deleted by the client during this period, 
      	the server provides a credit to the client for the cost of the renewal.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

     		<t><vspace/></t>
 
    		<t>Value: server delete prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The server set the status so that requests to delete the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

     		<t><vspace/></t>
 
    		<t>Value: server renew prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The server set the status so that requests to renew the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

    		<t><vspace/></t>
 
    		<t>Value: server transfer prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The server set the status so that requests to transfer the object MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
    		
    		<t><vspace/></t>
 
    		<t>Value: server update prohibited</t>
    		<t>Type: status</t>
    		<t>Description: The server set the status so that requests to update the object (other than to remove this status) MUST be rejected.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

    		<t><vspace/></t>
 
    		<t>Value: server hold</t>
    		<t>Type: status</t>
    		<t>Description: The server set the status so that DNS delegation information MUST NOT be published for the object.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>

    		<t><vspace/></t>
 
    		<t>Value: transfer period</t>
    		<t>Type: status</t>
    		<t>Description: This grace period is provided after the successful transfer of object registration sponsorship from one client 
      	to another client.  If the object is deleted by the client during this period, 
      	the server provides a credit to the client for the cost of the transfer.</t>
    		<t>Registrant Name: IESG</t>
    		<t>Registrant Contact Information: iesg@ietf.org</t>
    	</section>
    
     
    </section>


    <section anchor="Security" title="Security Considerations">
      <t>The status values described in this document can be subject to server-side information disclosure 
      policies that restrict display of the values to authorized clients. Implementers may wish to review 
      <xref target="RFC7481"/> for a description of the RDAP security services that can be used to implement 
      information disclosure policies.</t>
    </section>

  </middle>

  <!--  *****BACK MATTER ***** -->

  <back>
    <!-- References split into informative and normative -->

    <!-- There are 2 ways to insert reference entries from the citation libraries:
     1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
     2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
        (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

     Both are cited textually in the same manner: by using xref elements.
     If you use the PI option, xml2rfc will, by default, try to find included files in the same
     directory as the including file. You can also define the XML_LIBRARY environment variable
     with a value containing a set of directories to search.  These can be either in the local
     filing system or remote ones accessed by http (http://domain/dir/... ).-->

    <references title="Normative References">
       
      &RFC2119;
      
      &RFC3915;

      &RFC5731;

      &RFC5732;

      &RFC5733;
      
      &RFC7481;

      &RFC7483;
      
      <reference anchor="rdap-json-values" 
      	target="https://www.iana.org/assignments/rdap-json-values/rdap-json-values.xhtml">
      	<front>
      		<title>RDAP JSON Values Registry</title>
      		<author/>
      		<date/>
      	</front>
      </reference>

    </references>
    
   <section title="Acknowledgements">
   	<t>Suggestions that have been incorporated into this document were provided by 
   	Andrew Newton, Scott Hollenbeck, Jim Galvin, Gustavo Lozano, and Robert Sparks.
   	</t>
   </section>
    
    
   <section title="Change History">
   
    <section title="Change from 00 to 01" anchor="change-00-to-01">
      <t><list style="numbers">
        <t>Changed the mapping of "linked" to "associated" and removed the registration of "linked", based on feedback from 
        Andrew Newton on the weirds mailing list.</t>
      </list></t>
    </section>

    <section title="Change from 01 to 02" anchor="change-01-to-02">
      <t><list style="numbers">
        <t>Ping update.</t>
      </list></t>
    </section>

    <section title="Change from 02 to 03" anchor="change-01-to-03">
      <t><list style="numbers">
        <t>Ping update.</t>
      </list></t>
    </section>
   
    <section title="Change from 03 to REGEXT 00" anchor="change-03-to-WG00">
      <t><list style="numbers">
        <t>Changed to regext working group draft by changing draft-gould-epp-rdap-status-mapping to 
        draft-ietf-regext-epp-rdap-status-mapping.</t>
      </list></t>
    </section>
   
    <section title="Change from REGEXT 00 to REGEXT 01" anchor="change-WG00-to-WG01">
      <t><list style="numbers">
        <t>Updated based on regext mailing feedback from Scott Hollenbeck that included 
        updating the registrant for the registration of the new statuses to IESG and iesg@ietf.org, 
        and revising the security section.  Changed to standards track based on suggestion 
        by Jim Galvin and support from Gustavo Lozano on the regext mailing list.</t>
      </list></t>
    </section>
   
    <section title="Change from REGEXT 01 to REGEXT 02" anchor="change-WG01-to-WG02">
      <t><list style="numbers">
        <t>Updated the text associated with distinguishing client and server prohibited statuses in RDAP based on 
        feedback by Robert Sparks on the regext mailing list.</t>
        <t>Removed the "For DNR that indicates" text from the description of the statuses based on 
        feedback by Robert Sparks on the regext mailing list.</t>
        <t>Made a few editorial changes to the status descriptions including referring to 
        "redemption period" instead of "redemptionPeriod" and 
        referring to "object" instead of "domain name".</t>        
        <t>Changed all references of "registrar" to "client" and "registry" to "server" in the 
        status descriptions to be consistent.</t>        
      </list></t>
    </section>
   
    <section title="Change from REGEXT 02 to REGEXT 03" anchor="change-WG02-to-WG03">
      <t><list style="numbers">
        <t>Updated descriptions of the add period, auto renew period, renew period, and transfer period statuses to better reflect what 
        the status is in RFC 3915, based on feedback by Robert Sparks on the regext mailing list.</t>        
      </list></t>
    </section>
   
   
   </section>
    
  </back>

  <!-- vim: set ts=2 sw=2 expandtab: -->
</rfc>
