<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.4 (Ruby 2.6.10) -->
<?rfc tocindent="yes"?>
<?rfc strict="yes"?>
<?rfc compact="yes"?>
<?rfc comments="yes"?>
<?rfc inline="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-httpapi-deprecation-header-05" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title>The Deprecation HTTP Header Field</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-deprecation-header-05"/>
    <author initials="S." surname="Dalal" fullname="Sanjay Dalal">
      <organization/>
      <address>
        <email>sanjay.dalal@cal.berkeley.edu</email>
        <uri>https://github.com/sdatspun2</uri>
      </address>
    </author>
    <author initials="E." surname="Wilde" fullname="Erik Wilde">
      <organization/>
      <address>
        <email>erik.wilde@dret.net</email>
        <uri>http://dret.net/netdret</uri>
      </address>
    </author>
    <date year="2024" month="August" day="22"/>
    <area>Applications and Real-Time</area>
    <workgroup>HTTPAPI</workgroup>
    <keyword>Internet-Draft</keyword>
    <abstract>
      <?line 44?>

<t>The Deprecation HTTP response header field is used to signal to consumers of a resource (in the sense of URI) that the resource will be or has been deprecated. Additionally, the deprecation link relation can be used to link to a resource that provides additional information about planned or existing deprecation, and possibly ways in which clients can best manage deprecation.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-httpapi-deprecation-header/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        HTTPAPI Working Group mailing list (<eref target="mailto:httpapi@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/httpapi/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/httpapi/"/>.
        Working Group information can be found at <eref target="https://ietf-wg-httpapi.github.io/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-httpapi/deprecation-header"/>.</t>
    </note>
  </front>
  <middle>
    <?line 49?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Deprecation of an HTTP resource (<xref section="3.1" sectionFormat="of" target="HTTP"/>) communicates 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 continued dependence upon the resource.</t>
      <t>The act of deprecation does not change any behavior of the resource. It informs clients of the fact that a resource will be or is deprecated. The Deprecation HTTP response header field can be used to convey this at runtime to clients and carries information indicating when the deprecation will be 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. This can be information such as where to find documentation related to the deprecation, what can be used as a replacement, and when a deprecated resource becomes non-operational.</t>
      <section anchor="notational-conventions">
        <name>Notational Conventions</name>
        <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" 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>
        <?line -18?>

<t>This document uses the terminology from Section 3 of <xref target="STRUCTURED-FIELDS"/> to specify syntax and parsing of Date.</t>
        <t>The term "resource" is to be interpreted as defined in <xref section="3.1" sectionFormat="of" target="HTTP"/>.</t>
      </section>
    </section>
    <section anchor="the-deprecation-http-response-header-field">
      <name>The Deprecation HTTP Response Header Field</name>
      <t>The <tt>Deprecation</tt> 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">
        <name>Syntax</name>
        <t>The <tt>Deprecation</tt> response header field describes the deprecation of the resource identified with the response it occurred within (see <xref section="6.4.2" sectionFormat="of" target="HTTP"/>). It conveys 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). <tt>Deprecation</tt> is an Item Structured Header <xref target="RFC8941"/>. Refer to Section 3.3.7 of <xref target="STRUCTURED-FIELDS"/> for ABNF of <tt>sf-date</tt>:</t>
        <sourcecode type="abnf"><![CDATA[
Deprecation = sf-date
]]></sourcecode>
        <t>The date is the date when the resource was or will be deprecated. It is in the form of an Structured Field Date as defined in Section 3.3.7 of <xref target="STRUCTURED-FIELDS"/>.</t>
        <t>The following example shows that the resource context has been deprecated on Friday, June 30, 2023 at 23:59:59 GMT:</t>
        <artwork><![CDATA[
Deprecation: @1688169599
]]></artwork>
        <t>The deprecation date can be in the future. This means that the resource will be deprecated at the indicated date in the future.</t>
      </section>
      <section anchor="scope">
        <name>Scope</name>
        <t>The Deprecation header field applies to the resource identified with the response it occurred within (see <xref section="6.4.2" sectionFormat="of" target="HTTP"/>), 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. When doing so, 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. 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 related resources and, thus, might allow them to implement behavior that allows them to make educated guesses about resources becoming deprecated.</t>
        <t>For example, an API might not use Deprecation header fields on all of its resources, but only on designated resources such as the API's home document. This means that deprecation information is available, but in order to get it, clients have to periodically inspect the home document. In this example, the extended context of the Deprecation header field would be all resources provided by the API, while the visibility of the information would only be on the home document.</t>
      </section>
    </section>
    <section anchor="the-deprecation-link-relation-type">
      <name>The Deprecation Link Relation Type</name>
      <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 linked deprecation policy. In particular, the deprecation policy may be available as human-readable documentation or as machine-readable description.</t>
      <section anchor="documentation">
        <name>Documentation</name>
        <t>The purpose of the <tt>Deprecation</tt> header field is to provide a hint about deprecation to the resource consumer. Upon reception of the <tt>Deprecation</tt> header field, the client developer can look up the resource's documentation in order to find deprecation related information. The documentation <bcp14>MAY</bcp14> provide a guide and timeline to migrate away from the deprecated resource to a new resource(s) replacing the deprecated resource, if applicable. The resource provider can provide a link to the resource documentation using a <tt>Link</tt> header field with relation type <tt>deprecation</tt> as shown below:</t>
        <artwork><![CDATA[
Link: <https://developer.example.com/deprecation>;
      rel="deprecation"; type="text/html"
]]></artwork>
        <t>In this example the linked content provides additional information about deprecation of the resource context. There is no Deprecation header field in the response, and thus the resource is not (yet) deprecated. However, the resource already exposes a link where information is available describing how deprecation is managed for the resource. This may be the documentation explaining under which circumstances and with which policies deprecation might take place. For example, a policy may indicate that deprecation of a resource(s) will always be signaled in the dedicated places at least N days ahead of the planned deprecation date and then only the resource(s) would be deprecated. Or a policy may indicate that resource(s) would be deprecated first and then only be signaled as deprecated at dedicated places. The documentation in addition to the deprecation policy may also provide a migration guide exaplaining to consumers of the resource how to migrate to a new resource(s) or an alternate resource(s) before the deprecation date. Such policy and documentation would be very useful to consumers of the resource to plan ahead and migrate successfully.</t>
        <t>The following example uses the same link header field, but also announces a deprecation date using a Deprecation header field:</t>
        <artwork><![CDATA[
Deprecation: @1688169599
Link: <https://developer.example.com/deprecation>;
      rel="deprecation"; type="text/html"
]]></artwork>
        <t>Given that the deprecation date is in the past, the linked information resource may have been updated to include information about the deprecation, allowing consumers to discover information about the deprecation and how to best manage it.</t>
      </section>
    </section>
    <section anchor="sunset">
      <name>Sunset</name>
      <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 <tt>Deprecation</tt> header field.</t>
      <t>The timestamp given in the <tt>Sunset</tt> header field <bcp14>MUST NOT</bcp14> be earlier than the one given in the <tt>Deprecation</tt> header field.</t>
      <t>The following example shows that the resource in context has been deprecated since Friday, June 30, 2023 at 23:59:59 GMT and its sunset date is Sunday, June 30, 2024 at 23:59:59 GMT. Please note that for historical reasons the Sunset HTTP header field uses a different data type for date.</t>
      <artwork><![CDATA[
Deprecation: @1688169599
Sunset: Sun, 30 Jun 2024 23:59:59 GMT
]]></artwork>
    </section>
    <section anchor="resource-behavior">
      <name>Resource Behavior</name>
      <t>The act of deprecation does not change any behavior of the resource. Deprecated resources <bcp14>SHOULD</bcp14> 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">
      <name>IANA Considerations</name>
      <section anchor="the-deprecation-http-response-header-field-1">
        <name>The Deprecation HTTP Response Header Field</name>
        <t>The <tt>Deprecation</tt> response header field should be added to the "Hypertext Transfer Protocol (HTTP) Field Name Registry" registry (<xref section="16.3.1" sectionFormat="of" target="HTTP"/>)</t>
        <artwork><![CDATA[
Header Field Name: Deprecation

Applicable Protocol: Hypertext Transfer Protocol (HTTP)

Status: Standard

Author: Sanjay Dalal <sanjay.dalal@cal.berkeley.edu>,
        Erik Wilde <erik.wilde@dret.net>

Change controller: IETF

Specification document: this specification,
            Section 2 "The Deprecation HTTP Response Header Field"
]]></artwork>
      </section>
      <section anchor="the-deprecation-link-relation-type-1">
        <name>The Deprecation Link Relation Type</name>
        <t>The <tt>deprecation</tt> link relation type should be added to the permanent registry of link relation types (<xref section="4.2" sectionFormat="of" target="LINK"/>).</t>
        <artwork><![CDATA[
Relation Type: deprecation

Applicable Protocol: Hypertext Transfer Protocol (HTTP)

Status: Standard

Author: Sanjay Dalal <sanjay.dalal@cal.berkeley.edu>,
        Erik Wilde <erik.wilde@dret.net>

Change controller: IETF

Specification document: this specification,
        Section 3 "The Deprecation Link Relation Type"
]]></artwork>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>The Deprecation header field should be treated as a hint, meaning that the resource is indicating (and not guaranteeing with certainty) that it will be or is deprecated. Deprecated resources <bcp14>MUST</bcp14> function (almost) as before, even though one might consider non-functional details such as making them progressively less efficient with longer response time for example.</t>
      <t>Resource documentation <bcp14>SHOULD</bcp14> provide additional information about the deprecation, such as including recommendation(s) for replacement. Applications consuming the resource <bcp14>SHOULD</bcp14> check the referred resource documentation to verify authenticity and accuracy. In cases where a <tt>Link</tt> header field is used to provide documentation, one should assume (unless served over HTTPS) that the content of the  <tt>Link</tt> header field may not be secure, private or integrity-guaranteed, and due caution should be exercised when using it. Also, in cases where the Deprecation header field value is a date in the future, it can lead to information that otherwise might not be available. Therefore, applications consuming the resource <bcp14>SHOULD</bcp14>, if possible, consult the resource developer to discuss potential impact due to deprecation and plan for possible transition to a recommended resource(s).</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="HTTP">
          <front>
            <title>HTTP Semantics</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="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document describes the overall architecture of HTTP, establishes common terminology, and defines aspects of the protocol that are shared by all versions. In this definition are core protocol elements, extensibility mechanisms, and the "http" and "https" Uniform Resource Identifier (URI) schemes.</t>
              <t>This document updates RFC 3864 and obsoletes RFCs 2818, 7231, 7232, 7233, 7235, 7538, 7615, 7694, and portions of 7230.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="97"/>
          <seriesInfo name="RFC" value="9110"/>
          <seriesInfo name="DOI" value="10.17487/RFC9110"/>
        </reference>
        <reference anchor="LINK">
          <front>
            <title>Web Linking</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <date month="October" year="2017"/>
            <abstract>
              <t>This specification defines a model for the relationships between resources on the Web ("links") and the type of those relationships ("link relation types").</t>
              <t>It also defines the serialisation of such links in HTTP headers with the Link header field.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8288"/>
          <seriesInfo name="DOI" value="10.17487/RFC8288"/>
        </reference>
        <reference anchor="STRUCTURED-FIELDS">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="Mark Nottingham" initials="M." surname="Nottingham">
              <organization>Cloudflare</organization>
            </author>
            <author fullname="Poul-Henning Kamp" initials="P." surname="Kamp">
              <organization>The Varnish Cache Project</organization>
            </author>
            <date day="21" month="April" year="2024"/>
            <abstract>
              <t>   This document describes a set of data types and associated algorithms
   that are intended to make it easier and safer to define and handle
   HTTP header and trailer fields, known as "Structured Fields",
   "Structured Headers", or "Structured Trailers".  It is intended for
   use by specifications of new HTTP fields that wish to use a common
   syntax that is more restrictive than traditional HTTP field values.

   This document obsoletes RFC 8941.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-httpbis-sfbis-06"/>
        </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"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </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"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="RFC8941">
          <front>
            <title>Structured Field Values for HTTP</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="P-H. Kamp" surname="P-H. Kamp"/>
            <date month="February" year="2021"/>
            <abstract>
              <t>This document describes a set of data types and associated algorithms that are intended to make it easier and safer to define and handle HTTP header and trailer fields, known as "Structured Fields", "Structured Headers", or "Structured Trailers". It is intended for use by specifications of new HTTP fields that wish to use a common syntax that is more restrictive than traditional HTTP field values.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8941"/>
          <seriesInfo name="DOI" value="10.17487/RFC8941"/>
        </reference>
        <reference anchor="RFC9111">
          <front>
            <title>HTTP 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="2022"/>
            <abstract>
              <t>The Hypertext Transfer Protocol (HTTP) is a stateless application-level protocol for distributed, collaborative, hypertext information systems. This document defines HTTP caches and the associated header fields that control cache behavior or indicate cacheable response messages.</t>
              <t>This document obsoletes RFC 7234.</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="98"/>
          <seriesInfo name="RFC" value="9111"/>
          <seriesInfo name="DOI" value="10.17487/RFC9111"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC8594">
          <front>
            <title>The Sunset HTTP Header Field</title>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <date month="May" year="2019"/>
            <abstract>
              <t>This specification defines the Sunset HTTP response header field, which indicates that a URI is likely to become unresponsive at a specified point in the future. It also defines a sunset link relation type that allows linking to resources providing information about an upcoming resource or service sunset.</t>
            </abstract>
          </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"/>
            <abstract>
              <t>This document describes a simple process that allows authors of Internet-Drafts to record the status of known implementations by including an Implementation Status section. 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.</t>
              <t>This process is not mandatory. Authors of Internet-Drafts are encouraged to consider using the process for their documents, and working groups are invited to think about applying the process to all of their protocol specifications. This document obsoletes RFC 6982, advancing it to a Best Current Practice.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="205"/>
          <seriesInfo name="RFC" value="7942"/>
          <seriesInfo name="DOI" value="10.17487/RFC7942"/>
        </reference>
      </references>
    </references>
    <?line 209?>

<section anchor="implementation-status">
      <name>Implementation Status</name>
      <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-field">
        <name>Implementing the Deprecation Header Field</name>
        <t>This is a list of implementations that implement the deprecation header field:</t>
        <t>Organization: Apollo</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation header field is returned when deprecated functionality (as declared in the GraphQL schema) is accessed</t>
          </li>
          <li>
            <t>Reference: https://www.npmjs.com/package/apollo-server-tools</t>
          </li>
        </ul>
        <t>Organization: Zalando</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation header field is recommended as the preferred way to communicate API deprecation in Zalando API designs.</t>
          </li>
          <li>
            <t>Reference: https://opensource.zalando.com/restful-api-guidelines/#deprecation</t>
          </li>
        </ul>
        <t>Organization: Palantir Technologies</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation header field is incorporated in code generated by conjure-java, a CLI to generate Java POJOs and interfaces from Conjure API definitions</t>
          </li>
          <li>
            <t>Reference: https://github.com/palantir/conjure-java</t>
          </li>
        </ul>
        <t>Organization: IETF Internet Draft, Registration Protocols Extensions</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation link relation is returned in Registration Data Access Protocol (RDAP) notices to indicate deprecation of jCard in favor of JSContact.</t>
          </li>
          <li>
            <t>Reference: https://tools.ietf.org/html/draft-loffredo-regext-rdap-jcard-deprecation</t>
          </li>
        </ul>
        <t>Organization:  E-Voyageurs Technologies</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation header field is incorporated in Hesperides, a configuration management tool providing universal text file templating and properties editing through a REST API or a webapp.</t>
          </li>
          <li>
            <t>Reference: https://github.com/voyages-sncf-technologies/hesperides/blob/master/documentation/lightweight-architecture-decision-records/deprecated_endpoints.md</t>
          </li>
        </ul>
        <t>Organization: Open-Xchange</t>
        <ul spacing="normal">
          <li>
            <t>Description: Deprecation header field is used in Open-Xchange appsuite-middleware</t>
          </li>
          <li>
            <t>Reference: https://github.com/open-xchange/appsuite-middleware</t>
          </li>
        </ul>
        <t>Organization: MediaWiki</t>
        <ul spacing="normal">
          <li>
            <t>Description: Core REST API of MediaWiki would use Deprecation header field for endpoints that have been deprecated because a new endpoint provides the same or better functionality.</t>
          </li>
          <li>
            <t>Reference: https://phabricator.wikimedia.org/T232485</t>
          </li>
        </ul>
      </section>
      <section anchor="implementing-the-concept">
        <name>Implementing the Concept</name>
        <t>This is a list of implementations that implement the general concept, but do so using different mechanisms:</t>
        <t>Organization: Zapier</t>
        <ul spacing="normal">
          <li>
            <t>Description: Zapier uses two custom HTTP header fields named <tt>X-API-Deprecation-Date</tt> and <tt>X-API-Deprecation-Info</tt></t>
          </li>
          <li>
            <t>Reference:  https://zapier.com/engineering/api-geriatrics/</t>
          </li>
        </ul>
        <t>Organization: IBM</t>
        <ul spacing="normal">
          <li>
            <t>Description: IBM uses a custom HTTP header field named <tt>Deprecated</tt></t>
          </li>
          <li>
            <t>Reference: https://www.ibm.com/support/knowledgecenter/en/SS42VS_7.3.1/com.ibm.qradar.doc/c_rest_api_getting_started.html</t>
          </li>
        </ul>
        <t>Organization: Ultipro</t>
        <ul spacing="normal">
          <li>
            <t>Description: Ultipro uses the HTTP <tt>Warning</tt> header field as described in Section 5.5 of <xref target="RFC9111"/> with code <tt>299</tt></t>
          </li>
          <li>
            <t>Reference:  https://connect.ultipro.com/api-deprecation</t>
          </li>
        </ul>
        <t>Organization: Clearbit</t>
        <ul spacing="normal">
          <li>
            <t>Description: Clearbit uses a custom HTTP header field named <tt>X-API-Warn</tt></t>
          </li>
          <li>
            <t>Reference: https://blog.clearbit.com/dealing-with-deprecation/</t>
          </li>
        </ul>
        <t>Organization: PayPal</t>
        <ul spacing="normal">
          <li>
            <t>Description: PayPal uses a custom HTTP header field named <tt>PayPal-Deprecated</tt></t>
          </li>
          <li>
            <t>Reference: https://github.com/paypal/api-standards/blob/master/api-style-guide.md#runtime</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="changes">
      <name>Changes from Draft-04</name>
      <t>This revision has made the following changes:</t>
      <ul spacing="normal">
        <li>
          <t>Fixed references for structured fields, RFC9111 instead of RFC7234</t>
        </li>
        <li>
          <t>Security Considerations is Heading#1</t>
        </li>
        <li>
          <t>Removed redundant example</t>
        </li>
      </ul>
    </section>
    <section anchor="acknowledgments">
      <name>Acknowledgments</name>
      <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>
  <!-- ##markdown-source:
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
TvLdQwAA

-->

</rfc>
