<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc2629 version 1.4.13 -->
<?rfc toc="yes"?>
<?rfc tocindent="yes"?>
<?rfc sortrefs="yes"?>
<?rfc symrefs="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<?rfc-ext html-pretty-print="prettyprint https://cdn.rawgit.com/google/code-prettify/master/loader/run_prettify.js"?>
<rfc xmlns:x="http://purl.org/net/xml2rfc/ext"
     category="std"
     docName="draft-ietf-httpapi-deprecation-header-02"
     ipr="trust200902"
     submissionType="IETF">
   <x:feedback template="mailto:httpapi@ietf.org?subject={docname},%20%22{section}%22\&amp;amp;body=%3c{ref}%3e:"/>
   <front>
      <title>The Deprecation HTTP Header Field</title>
      <author fullname="Sanjay Dalal" initials="S." surname="Dalal">
         <address>
            <email>sanjay.dalal@cal.berkeley.edu</email>
            <uri>https://github.com/sdatspun2</uri>
         </address>
      </author>
      <author fullname="Erik Wilde" initials="E." surname="Wilde">
         <address>
            <email>erik.wilde@dret.net</email>
            <uri>http://dret.net/netdret</uri>
         </address>
      </author>
      <date day="10" month="July" year="2021"/>
      <area>Applications and Real-Time</area>
      <workgroup>HTTPAPI</workgroup>
      <keyword>Internet-Draft</keyword>
      <abstract>
         <t>The HTTP Deprecation Response Header Field can be used to signal to consumers of a URI-identified resource that the resource has been deprecated. Additionally, the deprecation link relation can be used to link to a resource that provides additional context for the deprecation, and possibly ways in which clients can find a replacement for the deprecated resource.</t>
      </abstract>
   </front>
   <middle>
      <section anchor="introduction" title="Introduction">
         <t>Deprecation of an HTTP resource as defined in <xref target="RFC7231" x:fmt="of" x:sec="2"/> is a technique to communicate information about the lifecycle of a resource. It encourages applications to migrate away from the resource, discourages applications from forming new dependencies on the resource, and informs applications about the risk of continuing dependence upon the resource.</t>
         <t>The act of deprecation does not change any behavior of the resource. It just informs client of the fact that a resource is deprecated. The Deprecation HTTP response header field MAY be used to convey this fact at runtime to clients. The header field can carry information indicating since when the deprecation is in effect.</t>
         <t>In addition to the Deprecation header field the resource provider can use other header fields to convey additional information related to deprecation. For example, information such as where to find documentation related to the deprecation or what should be used as an alternate and when the deprecated resource would be unreachable, etc. Alternates of a resource can be similar resource(s) or a newer version of the same resource.</t>
         <section anchor="notational-conventions" title="Notational Conventions">
            <t>The key words “MUST”, “MUST NOT”, “REQUIRED”, “SHALL”, “SHALL NOT”, “SHOULD”, “SHOULD NOT”, “RECOMMENDED”, “NOT RECOMMENDED”, “MAY”, and “OPTIONAL” in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/>
               <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
            <t>This specification uses the Augmented Backus-Naur Form (ABNF) notation of <xref target="RFC5234"/> and includes, by reference, the IMF-fixdate rule as defined in <xref target="RFC7231" x:fmt="of" x:sec="7.1.1.1"/>.</t>
            <t>The term “resource” is to be interpreted as defined in <xref target="RFC7231" x:fmt="of" x:sec="2"/>, that is identified by an URI.</t>
         </section>
      </section>
      <section anchor="the-deprecation-http-response-header"
               title="The Deprecation HTTP Response Header">
         <t>The <spanx style="verb">Deprecation</spanx> HTTP response header field allows a server to communicate to a client that the resource in context of the message is or will be deprecated.</t>
         <section anchor="syntax" title="Syntax">
            <t>The <spanx style="verb">Deprecation</spanx> response header field describes the deprecation. It either shows the deprecation date, which may be in the future (the resource context will be deprecated at that date) or in the past (the resource context has been deprecated at that date), or it simply flags the resource context as being deprecated:</t>
            <figure>
               <artwork>
Deprecation = IMF-fixdate / "true"
</artwork>
            </figure>
            <t>Servers MUST NOT include more than one <spanx style="verb">Deprecation</spanx> header field in the same response.</t>
            <t>The date, if present, is the date when the resource context was or will be deprecated. It is in the form of an IMF-fixdate timestamp.</t>
            <t>The following example shows that the resource context has been deprecated on Sunday, November 11, 2018 at 23:59:59 GMT:</t>
            <figure>
               <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
</artwork>
            </figure>
            <t>The deprecation date can be in the future. If the value of <spanx style="verb">date</spanx> is in the future, it means that the resource will be deprecated at the given date in future.</t>
            <t>If the deprecation date is not known, the header field can carry the simple string “true”, indicating that the resource context is deprecated, without indicating when that happened:</t>
            <figure>
               <artwork>
Deprecation: true
</artwork>
            </figure>
         </section>
         <section anchor="scope" title="Scope">
            <t>The Deprecation header field applies to the resource that returns it, meaning that it announces the upcoming deprecation of that specific resource. However, there may be scenarios where the scope of the announced deprecation is larger than just the single resource where it appears.</t>
            <t>Resources are free to define such an increased scope, and usually this scope will be documented by the resource so that consumers of the resource know about the increased scope and can behave accordingly. However, it is important to take into account that such increased scoping is invisible for consumers who are unaware of the increased scoping rules. This means that these consumers will not be aware of the increased scope, and they will not interpret Deprecation information different from its standard meaning (i.e., it applies to the resource only).</t>
            <t>Using such an increased scope still may make sense, as Deprecation information is only a hint anyway; thus, it is optional information that cannot be depended on, and clients should always be implemented in ways that allow them to function without Deprecation information. Increased scope information may help clients to glean additional hints from resources and, thus, might allow them to implement behavior that allows them to make educated guesses about resources becoming deprecated.</t>
         </section>
      </section>
      <section anchor="the-deprecation-link-relation-type"
               title="The Deprecation Link Relation Type">
         <t>In addition to the Deprecation HTTP header field, the server can use links with the “deprecation” link relation type to communicate to the client where to find more information about deprecation of the context. This can happen before the actual deprecation, to make a deprecation policy discoverable, or after deprecation, when there may be documentation about the deprecation, and possibly documentation of how to manage it.</t>
         <t>This specification places no restrictions on the representation of the interlinked deprecation policy. In particular, the deprecation policy may be available as human-readable documentation or as machine-readable description.</t>
         <section anchor="documentation" title="Documentation">
            <t>For a resource, deprecation could involve one or more parts of request, response or both. These parts could be one or more of the following.</t>
            <t>
               <list style="symbols">
                  <t>URI - deprecation of one ore more query parameter(s) or path element(s)</t>
                  <t>method - HTTP method for the resource is deprecated</t>
                  <t>request header - one or more HTTP request header(s) is deprecated</t>
                  <t>response header - HTTP response header(s) is deprecated</t>
                  <t>request body - request body contains one or more deprecated element(s)</t>
                  <t>response body - response body contains one or more deprecated element(s)</t>
               </list>
            </t>
            <t>The purpose of the <spanx style="verb">Deprecation</spanx> header is to provide just enough “hints” about the deprecation to the client application developer. It is safe to assume that on reception of the <spanx style="verb">Deprecation</spanx> header, the client developer would look up the resource’s documentation in order to find deprecation related semantics. The resource developer could provide a link to the resource documentation using a <spanx style="verb">Link</spanx> header with relation type <spanx style="verb">deprecation</spanx> as shown below.</t>
            <figure>
               <artwork>
Link: &lt;https://developer.example.com/deprecation&gt;;
      rel="deprecation"; type="text/html"
</artwork>
            </figure>
            <t>In this example the interlinked content provides additional information about the deprecation of the resource context. There is no Deprecation header field in the response, and thus the resource is not deprecated. However, the resource already exposes a link where information is available how deprecation is managed for the context. This may be documentation explaining the use of the Deprecation header field, and also explaining under which circumstances and with which policies (announcement before deprecation; continued operation after deprecation) deprecation might be happening.</t>
            <t>The following example uses the same link header, but also announces a deprecation date using a Deprecation header field.</t>
            <figure>
               <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Link: &lt;https://developer.example.com/deprecation&gt;;
      rel="deprecation"; type="text/html"
</artwork>
            </figure>
            <t>Given that the deprecation date is in the past, the linked resource may have been updated to include information about the deprecation, allowing clients to discover information about the deprecation that happened.</t>
         </section>
      </section>
      <section anchor="recommend-replacement" title="Recommend Replacement">
         <t>The <spanx style="verb">Link</spanx>
            <xref target="RFC8288"/> header field can be used in addition to the <spanx style="verb">Deprecation</spanx> header field to inform the client about available alternatives to the deprecated resource. The following relation types as defined in <xref target="RFC8288"/> are RECOMMENDED to use for this purpose:</t>
         <t>
            <list style="symbols">
               <t>
                  <spanx style="verb">successor-version</spanx>: Points to a resource containing the successor version. <xref target="RFC5829"/>
               </t>
               <t>
                  <spanx style="verb">latest-version</spanx>: Points to a resource containing the latest (e.g., current) version. <xref target="RFC5829"/>
               </t>
               <t>
                  <spanx style="verb">alternate</spanx>: Designates a substitute. [W3C.REC-html401-19991224]</t>
            </list>
         </t>
         <t>The following example provides link to the successor version of the requested resource that is deprecated.</t>
         <figure>
            <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Link: &lt;https://api.example.com/v2/customers&gt;; rel="successor-version"
</artwork>
         </figure>
         <t>This example provides link to an alternate resource to the requested resource that is deprecated.</t>
         <figure>
            <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Link: &lt;https://api.example.com/v1/clients&gt;; rel="alternate"
</artwork>
         </figure>
      </section>
      <section anchor="sunset" title="Sunset">
         <t>In addition to the deprecation related information, if the resource provider wants to convey to the client application that the deprecated resource is expected to become unresponsive at a specific point in time, the Sunset HTTP header field <xref target="RFC8594"/> can be used in addition to the <spanx style="verb">Deprecation</spanx> header.</t>
         <t>The timestamp given in the <spanx style="verb">Sunset</spanx> header field MUST be the later or the same as the one given in the <spanx style="verb">Deprecation</spanx> header field.</t>
         <t>The following example shows that the resource in context has been deprecated since Sunday, November 11, 2018 at 23:59:59 GMT and its sunset date is Wednesday, November 11, 2020 at 23:59:59 GMT.</t>
         <figure>
            <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Sunset: Wed, 11 Nov 2020 23:59:59 GMT
</artwork>
         </figure>
      </section>
      <section anchor="resource-behavior" title="Resource Behavior">
         <t>The act of deprecation does not change any behavior of the resource. Deprecated resources SHOULD keep functioning as before, allowing consumers to still use the resources in the same way as they did before the resources were declared deprecated.</t>
      </section>
      <section anchor="iana-considerations" title="IANA Considerations">
         <section anchor="the-deprecation-http-response-header-1"
                  title="The Deprecation HTTP Response Header">
            <t>The <spanx style="verb">Deprecation</spanx> response header should be added to the permanent registry of message header fields (see <xref target="RFC3864"/>), taking into account the guidelines given by HTTP/1.1 <xref target="RFC7231"/>.</t>
            <figure>
               <artwork>
Header Field Name: Deprecation

Applicable Protocol: Hypertext Transfer Protocol (HTTP)

Status: Standard

Author: Sanjay Dalal &lt;sanjay.dalal@cal.berkeley.edu&gt;,
        Erik Wilde &lt;erik.wilde@dret.net&gt;

Change controller: IETF

Specification document: this specification,
            Section 2 "The Deprecation HTTP Response Header"
</artwork>
            </figure>
         </section>
         <section anchor="the-deprecation-link-relation-type-1"
                  title="The Deprecation Link Relation Type">
            <t>The <spanx style="verb">deprecation</spanx> link relation type should be added to the permanent registry of link relation types according to <xref target="RFC8288" x:fmt="of" x:sec="4.2"/>:</t>
            <figure>
               <artwork>
Relation Type: deprecation

Applicable Protocol: Hypertext Transfer Protocol (HTTP)

Status: Standard

Author: Sanjay Dalal &lt;sanjay.dalal@cal.berkeley.edu&gt;,
        Erik Wilde &lt;erik.wilde@dret.net&gt;

Change controller: IETF

Specification document: this specification,
        Section 3 "The Deprecation Link Relation Type"
</artwork>
            </figure>
         </section>
      </section>
      <section anchor="implementation-status" title="Implementation Status">
         <t>Note to RFC Editor: Please remove this section before publication.</t>
         <t>This section records the status of known implementations of the protocol defined by this specification at the time of posting of this Internet-Draft, and is based on a proposal described in <xref target="RFC7942"/>. The description of implementations in this section is intended to assist the IETF in its decision processes in progressing drafts to RFCs. Please note that the listing of any individual implementation here does not imply endorsement by the IETF. Furthermore, no effort has been spent to verify the information presented here that was supplied by IETF contributors. This is not intended as, and must not be construed to be, a catalog of available implementations or their features. Readers are advised to note that other implementations may exist.</t>
         <t>According to RFC 7942, “this will allow reviewers and working groups to assign due consideration to documents that have the benefit of running code, which may serve as evidence of valuable experimentation and feedback that have made the implemented protocols more mature. It is up to the individual working groups to use this information as they see fit”.</t>
         <section anchor="implementing-the-deprecation-header"
                  title="Implementing the Deprecation Header">
            <t>This is a list of implementations that implement the deprecation header field:</t>
            <t>Organization: Apollo</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation header is returned when deprecated functionality (as declared in the GraphQL schema) is accessed</t>
                  <t>Reference: https://www.npmjs.com/package/apollo-server-tools</t>
               </list>
            </t>
            <t>Organization: Zalando</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation header is recommended as the preferred way to communicate API deprecation in Zalando API designs.</t>
                  <t>Reference: https://opensource.zalando.com/restful-api-guidelines/#deprecation</t>
               </list>
            </t>
            <t>Organization: Palantir Technologies</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation header is incorporated in code generated by conjure-java, a CLI to generate Java POJOs and interfaces from Conjure API definitions</t>
                  <t>Reference: https://github.com/palantir/conjure-java</t>
               </list>
            </t>
            <t>Organization: IETF Internet Draft, Registration Protocols Extensions</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation link relation is returned in Registration Data Access Protocol (RDAP) notices to indicate deprecation of jCard in favor of JSContact.</t>
                  <t>Reference: https://tools.ietf.org/html/draft-loffredo-regext-rdap-jcard-deprecation</t>
               </list>
            </t>
            <t>Organization: E-Voyageurs Technologies</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation header is incorporated in Hesperides, a configuration management tool providing universal text file templating and properties editing through a REST API or a webapp.</t>
                  <t>Reference: https://github.com/voyages-sncf-technologies/hesperides/blob/master/documentation/lightweight-architecture-decision-records/deprecated_endpoints.md</t>
               </list>
            </t>
            <t>Organization: Open-Xchange</t>
            <t>
               <list style="symbols">
                  <t>Description: Deprecation header is used in Open-Xchange appsuite-middleware</t>
                  <t>Reference: https://github.com/open-xchange/appsuite-middleware</t>
               </list>
            </t>
            <t>Organization: MediaWiki</t>
            <t>
               <list style="symbols">
                  <t>Description: Core REST API of MediaWiki would use Deprecation header for endpoints that have been deprecated because a new endpoint provides the same or better functionality.</t>
                  <t>Reference: https://phabricator.wikimedia.org/T232485</t>
               </list>
            </t>
         </section>
         <section anchor="implementing-the-concept" title="Implementing the Concept">
            <t>This is a list of implementations that implement the general concept, but do so using different mechanisms:</t>
            <t>Organization: Zapier</t>
            <t>
               <list style="symbols">
                  <t>Description: Zapier uses two custom HTTP headers named <spanx style="verb">X-API-Deprecation-Date</spanx> and <spanx style="verb">X-API-Deprecation-Info</spanx>
                  </t>
                  <t>Reference: https://zapier.com/engineering/api-geriatrics/</t>
               </list>
            </t>
            <t>Organization: IBM</t>
            <t>
               <list style="symbols">
                  <t>Description: IBM uses a custom HTTP header named <spanx style="verb">Deprecated</spanx>
                  </t>
                  <t>Reference: https://www.ibm.com/support/knowledgecenter/en/SS42VS_7.3.1/com.ibm.qradar.doc/c_rest_api_getting_started.html</t>
               </list>
            </t>
            <t>Organization: Ultipro</t>
            <t>
               <list style="symbols">
                  <t>Description: Ultipro uses the HTTP <spanx style="verb">Warning</spanx> header as described in <xref target="RFC7234" x:fmt="of" x:sec="5.5"/> with code <spanx style="verb">299</spanx>
                  </t>
                  <t>Reference: https://connect.ultipro.com/api-deprecation</t>
               </list>
            </t>
            <t>Organization: Clearbit</t>
            <t>
               <list style="symbols">
                  <t>Description: Clearbit uses a custom HTTP header named <spanx style="verb">X-API-Warn</spanx>
                  </t>
                  <t>Reference: https://blog.clearbit.com/dealing-with-deprecation/</t>
               </list>
            </t>
            <t>Organization: PayPal</t>
            <t>
               <list style="symbols">
                  <t>Description: PayPal uses a custom HTTP header named <spanx style="verb">PayPal-Deprecated</spanx>
                  </t>
                  <t>Reference: https://github.com/paypal/api-standards/blob/master/api-style-guide.md#runtime</t>
               </list>
            </t>
         </section>
      </section>
      <section anchor="security-considerations" title="Security Considerations">
         <t>The Deprecation header field SHOULD be treated as a hint, meaning that the resource is indicating (and not guaranteeing with certainty) that it is deprecated. Applications consuming the resource SHOULD check the resource documentation to verify authenticity and accuracy. Resource documentation SHOULD provide additional information about the deprecation including recommendation(s) for replacement.</t>
         <t>In cases, where the Deprecation header field value is a date in future, it can lead to information that otherwise might not be available. Therefore, applications consuming the resource SHOULD verify the resource documentation and if possible, consult the resource developer to discuss potential impact due to deprecation and plan for possible transition to recommended resource.</t>
         <t>In cases where <spanx style="verb">Link</spanx> header is used to provide more documentation and/or recommendation for replacement, one should assume that the content of the <spanx style="verb">Link</spanx> header field may not be secure, private or integrity-guaranteed, and due caution should be exercised when using it. Applications consuming the resource SHOULD check the referred resource documentation to verify authenticity and accuracy.</t>
         <t>The suggested <spanx style="verb">Link</spanx> header fields make extensive use of IRIs and URIs. See <xref target="RFC3987"/> for security considerations relating to IRIs. See <xref target="RFC3986"/> for security considerations relating to URIs. See <xref target="RFC7230"/> for security considerations relating to HTTP headers.</t>
         <t>Applications that take advantage of typed links should consider the attack vectors opened by automatically following, trusting, or otherwise using links gathered from the HTTP headers. In particular, Link headers that use the <spanx style="verb">successor-version</spanx>, <spanx style="verb">latest-version</spanx> or <spanx style="verb">alternate</spanx> relation types should be treated with due caution. See <xref target="RFC5829"/> for security considerations relating to these link relation types.</t>
      </section>
      <section anchor="examples" title="Examples">
         <t>The first example shows a deprecation header field without date information:</t>
         <figure>
            <artwork>
Deprecation: true
</artwork>
         </figure>
         <t>The second example shows a deprecation header with date information and a link to the successor version:</t>
         <figure>
            <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Link: &lt;https://api.example.com/v2/customers&gt;; rel="successor-version"
</artwork>
         </figure>
         <t>The third example shows a deprecation header field with links for the successor version and for the API’s deprecation policy. In addition, it shows the sunset date for the deprecated resource:</t>
         <figure>
            <artwork>
Deprecation: Sun, 11 Nov 2018 23:59:59 GMT
Sunset: Wed, 11 Nov 2020 23:59:59 GMT
Link: &lt;https://api.example.com/v2/customers&gt;; rel="successor-version",
      &lt;https://developer.example.com/deprecation&gt;; rel="deprecation"
</artwork>
         </figure>
      </section>
   </middle>
   <back>
      <references title="Normative References">
         <reference anchor="RFC7231">
            <front>
               <title>Hypertext Transfer Protocol (HTTP/1.1): Semantics and Content</title>
               <author fullname="R. Fielding"
                       initials="R."
                       role="editor"
                       surname="Fielding"/>
               <author fullname="J. Reschke"
                       initials="J."
                       role="editor"
                       surname="Reschke"/>
               <date month="June" year="2014"/>
            </front>
            <seriesInfo name="RFC" value="7231"/>
            <seriesInfo name="DOI" value="10.17487/RFC7231"/>
         </reference>
         <reference anchor="RFC2119">
            <front>
               <title>Key words for use in RFCs to Indicate Requirement Levels</title>
               <author fullname="S. Bradner" initials="S." surname="Bradner"/>
               <date month="March" year="1997"/>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="2119"/>
            <seriesInfo name="DOI" value="10.17487/RFC2119"/>
         </reference>
         <reference anchor="RFC8174">
            <front>
               <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
               <author fullname="B. Leiba" initials="B." surname="Leiba"/>
               <date month="May" year="2017"/>
            </front>
            <seriesInfo name="BCP" value="14"/>
            <seriesInfo name="RFC" value="8174"/>
            <seriesInfo name="DOI" value="10.17487/RFC8174"/>
         </reference>
         <reference anchor="RFC5234">
            <front>
               <title>Augmented BNF for Syntax Specifications: ABNF</title>
               <author fullname="D. Crocker"
                       initials="D."
                       role="editor"
                       surname="Crocker"/>
               <author fullname="P. Overell" initials="P." surname="Overell"/>
               <date month="January" year="2008"/>
            </front>
            <seriesInfo name="STD" value="68"/>
            <seriesInfo name="RFC" value="5234"/>
            <seriesInfo name="DOI" value="10.17487/RFC5234"/>
         </reference>
         <reference anchor="RFC8288">
            <front>
               <title>Web Linking</title>
               <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
               <date month="October" year="2017"/>
            </front>
            <seriesInfo name="RFC" value="8288"/>
            <seriesInfo name="DOI" value="10.17487/RFC8288"/>
         </reference>
         <reference anchor="RFC3864">
            <front>
               <title>Registration Procedures for Message Header Fields</title>
               <author fullname="G. Klyne" initials="G." surname="Klyne"/>
               <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
               <author fullname="J. Mogul" initials="J." surname="Mogul"/>
               <date month="September" year="2004"/>
            </front>
            <seriesInfo name="BCP" value="90"/>
            <seriesInfo name="RFC" value="3864"/>
            <seriesInfo name="DOI" value="10.17487/RFC3864"/>
         </reference>
         <reference anchor="RFC7234">
            <front>
               <title>Hypertext Transfer Protocol (HTTP/1.1): Caching</title>
               <author fullname="R. Fielding"
                       initials="R."
                       role="editor"
                       surname="Fielding"/>
               <author fullname="M. Nottingham"
                       initials="M."
                       role="editor"
                       surname="Nottingham"/>
               <author fullname="J. Reschke"
                       initials="J."
                       role="editor"
                       surname="Reschke"/>
               <date month="June" year="2014"/>
            </front>
            <seriesInfo name="RFC" value="7234"/>
            <seriesInfo name="DOI" value="10.17487/RFC7234"/>
         </reference>
         <reference anchor="RFC3987">
            <front>
               <title>Internationalized Resource Identifiers (IRIs)</title>
               <author fullname="M. Duerst" initials="M." surname="Duerst"/>
               <author fullname="M. Suignard" initials="M." surname="Suignard"/>
               <date month="January" year="2005"/>
            </front>
            <seriesInfo name="RFC" value="3987"/>
            <seriesInfo name="DOI" value="10.17487/RFC3987"/>
         </reference>
         <reference anchor="RFC3986">
            <front>
               <title>Uniform Resource Identifier (URI): Generic Syntax</title>
               <author fullname="T. Berners-Lee" initials="T." surname="Berners-Lee"/>
               <author fullname="R. Fielding" initials="R." surname="Fielding"/>
               <author fullname="L. Masinter" initials="L." surname="Masinter"/>
               <date month="January" year="2005"/>
            </front>
            <seriesInfo name="STD" value="66"/>
            <seriesInfo name="RFC" value="3986"/>
            <seriesInfo name="DOI" value="10.17487/RFC3986"/>
         </reference>
         <reference anchor="RFC7230">
            <front>
               <title>Hypertext Transfer Protocol (HTTP/1.1): Message Syntax and Routing</title>
               <author fullname="R. Fielding"
                       initials="R."
                       role="editor"
                       surname="Fielding"/>
               <author fullname="J. Reschke"
                       initials="J."
                       role="editor"
                       surname="Reschke"/>
               <date month="June" year="2014"/>
            </front>
            <seriesInfo name="RFC" value="7230"/>
            <seriesInfo name="DOI" value="10.17487/RFC7230"/>
         </reference>
      </references>
      <references title="Informative References">
         <reference anchor="RFC5829">
            <front>
               <title>Link Relation Types for Simple Version Navigation between Web Resources</title>
               <author fullname="A. Brown" initials="A." surname="Brown"/>
               <author fullname="G. Clemm" initials="G." surname="Clemm"/>
               <author fullname="J. Reschke"
                       initials="J."
                       role="editor"
                       surname="Reschke"/>
               <date month="April" year="2010"/>
            </front>
            <seriesInfo name="RFC" value="5829"/>
            <seriesInfo name="DOI" value="10.17487/RFC5829"/>
         </reference>
         <reference anchor="RFC8594">
            <front>
               <title>The Sunset HTTP Header Field</title>
               <author fullname="E. Wilde" initials="E." surname="Wilde"/>
               <date month="May" year="2019"/>
            </front>
            <seriesInfo name="RFC" value="8594"/>
            <seriesInfo name="DOI" value="10.17487/RFC8594"/>
         </reference>
         <reference anchor="RFC7942">
            <front>
               <title>Improving Awareness of Running Code: The Implementation Status Section</title>
               <author fullname="Y. Sheffer" initials="Y." surname="Sheffer"/>
               <author fullname="A. Farrel" initials="A." surname="Farrel"/>
               <date month="July" year="2016"/>
            </front>
            <seriesInfo name="BCP" value="205"/>
            <seriesInfo name="RFC" value="7942"/>
            <seriesInfo name="DOI" value="10.17487/RFC7942"/>
         </reference>
      </references>
      <section anchor="acknowledgments" title="Acknowledgments">
         <t>The authors would like to thank Nikhil Kolekar, Darrel Miller, Mark Nottingham, and Roberto Polli for their contributions.</t>
         <t>The authors take all responsibility for errors and omissions.</t>
      </section>
   </back>
</rfc>
