<?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-01" 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="5" month="July" 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.  The EPP prohibited statuses reflect both what is prohibited ("renew", "update", "transfer", "delete") and 
		who set ("client" or "server") and can clear the status.  In the DNR, the client and server prohibited statuses are separate and RDAP MUST support the same separation.</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;">For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar for the cost of the registration.</t>
      	<t hangText="autoRenewPeriod = auto renew period;">For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar for the cost of the auto renewal.</t>
      	<t hangText="clientDeleteProhibited = client delete prohibited;">For DNR that indicates the client requested that requests to delete the object MUST be rejected.</t>
      	<t hangText="clientHold = client hold;">For DNR that indicates the client requested that the DNS delegation information MUST NOT be published for the object.</t>
      	<t hangText="clientRenewProhibited = client renew prohibited;">For DNR that indicates the client requested that requests to renew the object MUST be rejected.</t>
      	<t hangText="clientTransferProhibited = client transfer prohibited;">For DNR that indicates the client requested that requests to transfer the object MUST be rejected.</t>
      	<t hangText="clientUpdateProhibited = client update prohibited;">For DNR that indicates the client requested that requests to update the object (other than to remove this status) MUST be rejected.</t>
      	<t hangText="pendingRestore = pending restore;">For DNR that indicates a object is in the process of being restored after being in the redemptionPeriod state.</t>
      	<t hangText="redemptionPeriod = redemption period;">For DNR that indicates 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;">For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar for the cost of the renewal.</t>
      	<t hangText="serverDeleteProhibited = server delete prohibited;">For DNR that indicates the server set the status so that requests to delete the object MUST be rejected.</t>
      	<t hangText="serverRenewProhibited = server renew prohibited;">For DNR that indicates the server set the status so that requests to renew the object MUST be rejected.</t>
      	<t hangText="serverTransferProhibited = server transfer prohibited;">For DNR that indicates the server set the status so that requests to transfer the object MUST be rejected.</t>
      	<t hangText="serverUpdateProhibited = server update prohibited;">For DNR that indicates 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;">For DNR that indicates the server set the status so that DNS delegation information MUST NOT be published for the object.</t>
      	<t hangText="transferPeriod = transfer period;">For DNR that indicates if the domain name is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar 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: For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar 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: For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates a object is in the process of being restored after being in the redemptionPeriod 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: For DNR that indicates 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: For DNR that indicates if the object is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates 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: For DNR that indicates if the domain name is deleted by the registrar during this period, 
      	the registry provides a credit to the registrar 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, and Gustavo Lozano.
   	</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>
    
  </back>

  <!-- vim: set ts=2 sw=2 expandtab: -->
</rfc>
