rfc9745.original | rfc9745.txt | |||
---|---|---|---|---|
HTTPAPI S. Dalal | Internet Engineering Task Force (IETF) S. Dalal | |||
Internet-Draft | Request for Comments: 9745 | |||
Intended status: Standards Track E. Wilde | Category: Standards Track E. Wilde | |||
Expires: 31 March 2025 27 September 2024 | ISSN: 2070-1721 March 2025 | |||
The Deprecation HTTP Header Field | The Deprecation HTTP Header Field | |||
draft-ietf-httpapi-deprecation-header-09 | ||||
Abstract | Abstract | |||
The Deprecation HTTP response header field is used to signal to | The Deprecation HTTP response header field is used to signal to | |||
consumers of a resource (in the sense of URI) that the resource will | consumers of a resource (in the sense of URI) that the resource will | |||
be or has been deprecated. Additionally, the deprecation link | be or has been deprecated. Additionally, the deprecation link | |||
relation can be used to link to a resource that provides additional | relation can be used to link to a resource that provides additional | |||
information about planned or existing deprecation, and possibly ways | information about planned or existing deprecation and possibly ways | |||
in which client application developers can best manage deprecation. | in which client application developers can best manage deprecation. | |||
About This Document | ||||
This note is to be removed before publishing as an RFC. | ||||
Status information for this document may be found at | ||||
https://datatracker.ietf.org/doc/draft-ietf-httpapi-deprecation- | ||||
header/. | ||||
Discussion of this document takes place on the HTTPAPI Working Group | ||||
mailing list (mailto:httpapi@ietf.org), which is archived at | ||||
https://mailarchive.ietf.org/arch/browse/httpapi/. Subscribe at | ||||
https://www.ietf.org/mailman/listinfo/httpapi/. Working Group | ||||
information can be found at https://ietf-wg-httpapi.github.io/. | ||||
Source for this draft and an issue tracker can be found at | ||||
https://github.com/ietf-wg-httpapi/deprecation-header. | ||||
Status of This Memo | Status of This Memo | |||
This Internet-Draft is submitted in full conformance with the | This is an Internet Standards Track document. | |||
provisions of BCP 78 and BCP 79. | ||||
Internet-Drafts are working documents of the Internet Engineering | ||||
Task Force (IETF). Note that other groups may also distribute | ||||
working documents as Internet-Drafts. The list of current Internet- | ||||
Drafts is at https://datatracker.ietf.org/drafts/current/. | ||||
Internet-Drafts are draft documents valid for a maximum of six months | This document is a product of the Internet Engineering Task Force | |||
and may be updated, replaced, or obsoleted by other documents at any | (IETF). It represents the consensus of the IETF community. It has | |||
time. It is inappropriate to use Internet-Drafts as reference | received public review and has been approved for publication by the | |||
material or to cite them other than as "work in progress." | Internet Engineering Steering Group (IESG). Further information on | |||
Internet Standards is available in Section 2 of RFC 7841. | ||||
This Internet-Draft will expire on 31 March 2025. | Information about the current status of this document, any errata, | |||
and how to provide feedback on it may be obtained at | ||||
https://www.rfc-editor.org/info/rfc9745. | ||||
Copyright Notice | Copyright Notice | |||
Copyright (c) 2024 IETF Trust and the persons identified as the | Copyright (c) 2025 IETF Trust and the persons identified as the | |||
document authors. All rights reserved. | document authors. All rights reserved. | |||
This document is subject to BCP 78 and the IETF Trust's Legal | This document is subject to BCP 78 and the IETF Trust's Legal | |||
Provisions Relating to IETF Documents (https://trustee.ietf.org/ | Provisions Relating to IETF Documents | |||
license-info) in effect on the date of publication of this document. | (https://trustee.ietf.org/license-info) in effect on the date of | |||
Please review these documents carefully, as they describe your rights | publication of this document. Please review these documents | |||
and restrictions with respect to this document. Code Components | carefully, as they describe your rights and restrictions with respect | |||
extracted from this document must include Revised BSD License text as | to this document. Code Components extracted from this document must | |||
described in Section 4.e of the Trust Legal Provisions and are | include Revised BSD License text as described in Section 4.e of the | |||
provided without warranty as described in the Revised BSD License. | Trust Legal Provisions and are provided without warranty as described | |||
in the Revised BSD License. | ||||
Table of Contents | Table of Contents | |||
1. Introduction | 1. Introduction | |||
1.1. Notational Conventions | 1.1. Notational Conventions | |||
2. The Deprecation HTTP Response Header Field | 2. The Deprecation HTTP Response Header Field | |||
2.1. Syntax | 2.1. Syntax | |||
2.2. Scope | 2.2. Scope | |||
3. The Deprecation Link Relation Type | 3. The Deprecation Link Relation Type | |||
3.1. Documentation | 3.1. Documentation | |||
4. Sunset | 4. Sunset | |||
5. Resource Behavior | 5. Resource Behavior | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. The Deprecation HTTP Response Header Field | 6.1. The Deprecation HTTP Response Header Field | |||
6.2. The Deprecation Link Relation Type | 6.2. The Deprecation Link Relation Type | |||
7. Security Considerations | 7. Security Considerations | |||
8. Normative References | 8. Normative References | |||
Appendix A. Implementation Status | Acknowledgments | |||
A.1. Implementing the Deprecation Header Field | ||||
A.2. Implementing the Concept | ||||
Appendix B. Changes from Draft-08 | ||||
Appendix C. Acknowledgments | ||||
Authors' Addresses | Authors' Addresses | |||
1. Introduction | 1. Introduction | |||
Deprecation of an HTTP resource (Section 3.1 of [HTTP]) communicates | Deprecation of an HTTP resource (Section 3.1 of [HTTP]) communicates | |||
information about the lifecycle of a resource. It encourages client | information about the lifecycle of a resource. It encourages client | |||
applications to migrate away from the resource, discourages | applications to migrate away from the resource, discourages | |||
applications from forming new dependencies on the resource, and | applications from forming new dependencies on the resource, and | |||
informs applications about the risk of continued dependence upon the | informs applications about the risk of continued dependence upon the | |||
resource. | resource. | |||
The act of deprecation does not change any behavior of the resource. | The act of deprecation does not change any behavior of the resource. | |||
It informs client applications of the fact that a resource will be or | It informs client applications of the fact that a resource will be or | |||
is deprecated. The Deprecation HTTP response header field can be | has been deprecated. The Deprecation HTTP response header field can | |||
used to convey this information at runtime indicating when the | be used to convey this information at runtime and indicates when the | |||
deprecation will be in effect. | deprecation will be in effect. | |||
In addition to the Deprecation header field, the resource provider | In addition to the Deprecation header field, the resource provider | |||
can use other header fields such as Link ([LINK]) to convey | can use other header fields such as the Link header field [LINK] to | |||
additional information related to deprecation. This can be | convey additional information related to deprecation. This can be | |||
information such as where to find documentation related to the | information such as where to find documentation related to the | |||
deprecation, what can be used as a replacement, and when a deprecated | deprecation, what can be used as a replacement, and when a deprecated | |||
resource becomes non-operational. | resource becomes non-operational. | |||
1.1. Notational Conventions | 1.1. Notational Conventions | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and | |||
"OPTIONAL" in this document are to be interpreted as described in | "OPTIONAL" in this document are to be interpreted as described in | |||
BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all | |||
capitals, as shown here. | capitals, as shown here. | |||
This document uses "Structured Field Values for HTTP" | This document uses "Structured Field Values for HTTP" [RFC9651] to | |||
([STRUCTURED-FIELDS]) to specify syntax and parsing of date values. | specify syntax and parsing of date values. | |||
The term "resource" is to be interpreted as defined in Section 3.1 of | The term "resource" is to be interpreted as defined in Section 3.1 of | |||
[HTTP]. | [HTTP]. | |||
2. The Deprecation HTTP Response Header Field | 2. The Deprecation HTTP Response Header Field | |||
The Deprecation HTTP response header field allows a server to | The Deprecation HTTP response header field allows a server to | |||
communicate to a client application that the resource in context of | communicate to a client application that the resource in the context | |||
the message is or will be deprecated. | of the message will be or has been deprecated. | |||
2.1. Syntax | 2.1. Syntax | |||
The Deprecation response header field describes the deprecation of | The Deprecation response header field describes the deprecation of | |||
the resource identified with the response it occurred within (see | the resource identified with the response it occurred within (see | |||
Section 6.4.2 of [HTTP]). It conveys the deprecation date, which may | Section 6.4.2 of [HTTP]). It conveys the deprecation date, which may | |||
be in the future (the resource context will be deprecated at that | be in the future (the resource context will be deprecated at that | |||
date) or in the past (the resource context has been deprecated at | date) or in the past (the resource context was deprecated at that | |||
that date). | date). | |||
Deprecation is an Item Structured Header Field; its value MUST be a | Deprecation is an Item Structured Header Field; its value MUST be a | |||
Date as per Section 3.3.7 of [STRUCTURED-FIELDS]. | Date as per Section 3.3.7 of [RFC9651]. | |||
The following example shows that the resource context has been | The following example shows that the resource context was deprecated | |||
deprecated on Friday, June 30, 2023 at 23:59:59 UTC: | on Friday, June 30, 2023 at 23:59:59 UTC: | |||
Deprecation: @1688169599 | Deprecation: @1688169599 | |||
2.2. Scope | 2.2. Scope | |||
The Deprecation header field applies to the resource identified with | The Deprecation header field applies to the resource identified with | |||
the response it occurred within (see Section 6.4.2 of [HTTP]), | the response it occurred within (see Section 6.4.2 of [HTTP]), | |||
meaning that it announces the upcoming deprecation of that specific | meaning that it announces the upcoming deprecation of that specific | |||
resource. However, there may be scenarios where the scope of the | resource. However, there may be scenarios where the scope of the | |||
announced deprecation is larger than just the single resource where | announced deprecation is larger than just the single resource where | |||
it appears. | it appears. | |||
Resources are free to define such an increased scope, and usually | Resources are free to define such an increased scope, and usually | |||
this scope will be documented by the resource so that consumers of | this scope will be documented by the resource so that consumers of | |||
the resource know about the increased scope and can behave | the resource know about the increased scope and can behave | |||
accordingly. When doing so, it is important to take into account | accordingly. When doing so, it is important to take into account | |||
that such increased scoping is invisible for consumers who are | that such increased scoping is invisible for consumers who are | |||
unaware of the increased scoping rules. This means that these | unaware of the increased scoping rules. This means that these | |||
consumers will not be aware of the increased scope, and they will not | consumers will not be aware of the increased scope, and they will not | |||
interpret deprecation information different from its standard meaning | interpret deprecation information differently from its standard | |||
(i.e., it applies to the resource only). | meaning (i.e., it applies to the resource only). | |||
Using such an increased scope still may make sense, as deprecation | Using such an increased scope still may make sense, as deprecation | |||
information is only a hint anyway. It is optional information that | information is only a hint anyway. It is optional information that | |||
cannot be depended on, and client applications should always be | cannot be depended on, and client applications should always be | |||
implemented in ways that allow them to function without Deprecation | implemented in ways that allow them to function without deprecation | |||
information. Increased scope information may help client application | information. Increased scope information may help client application | |||
developers to glean additional hints from related resources and, | developers to glean additional hints from related resources and thus | |||
thus, might allow them to implement behavior that allows them to make | might allow them to implement behavior that enables them to make | |||
educated guesses about resources becoming deprecated. | educated guesses about resources becoming deprecated. | |||
For example, an API might not use Deprecation header fields on all of | 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 | its resources but only on designated resources such as the API's home | |||
home document. This means that deprecation information is available, | document. This means that deprecation information is available, but | |||
but in order to get it, client application developers have to | in order to get it, client application developers have to | |||
periodically inspect the home document. In this example, the | periodically inspect the home document. In this example, the | |||
extended context of the Deprecation header field would be all | extended context of the Deprecation header field would be all | |||
resources provided by the API, while the visibility of the | resources provided by the API, while the visibility of the | |||
information would only be on the home document. | information would only be on the home document. | |||
3. The Deprecation Link Relation Type | 3. The Deprecation Link Relation Type | |||
In addition to the Deprecation HTTP header field, the server can use | In addition to the Deprecation HTTP header field, the server can use | |||
links with the "deprecation" link relation type to communicate to the | links with the "deprecation" link relation type to communicate to the | |||
client application developer where to find more information about | client application developer where to find more information about | |||
deprecation of the context. This can happen before the actual | deprecation of the context. This can happen before the actual | |||
deprecation, to make a deprecation policy discoverable, or after | deprecation to make a deprecation policy discoverable or after | |||
deprecation, when there may be documentation about the deprecation, | deprecation when there may be documentation about the deprecation and | |||
and possibly documentation of how to manage it. | possibly documentation of how to manage it. | |||
This specification places no restrictions on the representation of | This specification places no restrictions on the representation of | |||
the linked deprecation policy. In particular, the deprecation policy | the linked deprecation policy. In particular, the deprecation policy | |||
may be available as human-readable documentation or as machine- | may be available as human-readable documentation or as a machine- | |||
readable description. | readable description. | |||
3.1. Documentation | 3.1. Documentation | |||
The purpose of the Deprecation header field is to provide a hint | The purpose of the Deprecation header field is to provide a hint | |||
about deprecation to the resource consumer. Upon reception of the | about deprecation to the resource consumer. Upon reception of the | |||
Deprecation header field, the client application developer can look | Deprecation header field, the client application developer can look | |||
up the resource's documentation in order to find deprecation related | up the resource's documentation in order to find deprecation-related | |||
information. The documentation MAY provide a guide and timeline to | information. The documentation MAY provide a guide and timeline for | |||
migrate away from the deprecated resource to a new resource(s) | migrating away from the deprecated resource to a new resource(s) that | |||
replacing the deprecated resource, if applicable. The resource | replaces the deprecated resource, if applicable. The resource | |||
provider can provide a link to the resource documentation using a | provider can provide a link to the resource documentation using a | |||
Link header field with relation type deprecation as shown below: | Link header field with the relation type deprecation as shown below: | |||
Link: <https://developer.example.com/deprecation>; | Link: <https://developer.example.com/deprecation>; | |||
rel="deprecation"; type="text/html" | rel="deprecation"; type="text/html" | |||
In this example the linked content provides additional information | In this example, the linked content provides additional information | |||
about deprecation of the resource context. There is no Deprecation | about deprecation of the resource context. There is no Deprecation | |||
header field in the response, and thus the resource is not (yet) | header field in the response; thus, the resource is not (yet) | |||
deprecated. However, the resource already exposes a link where | deprecated. However, the resource already exposes a link where | |||
information is available describing how deprecation is managed for | information describing how deprecation is managed for the resource is | |||
the resource. This may be the documentation explaining under which | available. This may be the documentation explaining under which | |||
circumstances and with which policies deprecation might take place. | circumstances and with which policies deprecation might take place. | |||
For example, a policy may indicate that deprecation of a resource(s) | 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 | 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 | of the planned deprecation date and then the resource(s) would be | |||
be deprecated. Or a policy may indicate that resource(s) would be | deprecated on the planned date. Or a policy may indicate that the | |||
deprecated first and then only be signaled as deprecated at dedicated | resource(s) would be deprecated first and then be signaled as | |||
places. The documentation in addition to the deprecation policy may | deprecated at dedicated places. The documentation, in addition to | |||
also provide a migration guide exaplaining to consumers of the | the deprecation policy, may also provide a migration guide explaining | |||
resource how to migrate to a new resource(s) or an alternate | to consumers of the resource how to migrate to a new or alternate | |||
resource(s) before the deprecation date. Such policy and | resource(s) before the deprecation date. Such policy and | |||
documentation would be very useful to consumers of the resource to | documentation would be very useful to consumers of the resource to | |||
plan ahead and migrate successfully. | plan ahead and migrate successfully. | |||
The following example uses the same link header field, but also | The following example uses the same Link header field but also | |||
announces a deprecation date using a Deprecation header field: | announces a deprecation date using a Deprecation header field: | |||
Deprecation: @1688169599 | Deprecation: @1688169599 | |||
Link: <https://developer.example.com/deprecation>; | Link: <https://developer.example.com/deprecation>; | |||
rel="deprecation"; type="text/html" | rel="deprecation"; type="text/html" | |||
Given that the deprecation date is in the past, the linked | Given that the deprecation date is in the past, the linked | |||
information resource may have been updated to include information | information resource may have been updated to include information | |||
about the deprecation, allowing consumers to discover information | about the deprecation, allowing consumers to discover information | |||
about the deprecation and how to best manage it. | about the deprecation and how to best manage it. | |||
4. Sunset | 4. Sunset | |||
In addition to the deprecation related information, if the resource | In addition to the deprecation-related information, if the resource | |||
provider wants to convey to the client application that the | provider wants to convey to the client application that the | |||
deprecated resource is expected to become unresponsive at a specific | deprecated resource is expected to become unresponsive at a specific | |||
point in time, the Sunset HTTP header field [RFC8594] can be used in | point in time, the Sunset HTTP header field [RFC8594] can be used in | |||
addition to the Deprecation header field. | addition to the Deprecation header field. | |||
The timestamp given in the Sunset header field MUST NOT be earlier | The timestamp given in the Sunset header field MUST NOT be earlier | |||
than the one given in the Deprecation header field. If that happens | than the one given in the Deprecation header field. If that happens | |||
for some reasons such as misconfiguration of deployment of the | (for example, due to misconfiguration of deployment of the resource | |||
resource or an error, the client application developer SHOULD consult | or an error), the client application developer SHOULD consult the | |||
the resource developer to get clarification. | resource developer to get clarification. | |||
The following example shows that the resource in context has been | The following example shows that the resource in context was | |||
deprecated since Friday, June 30, 2023 at 23:59:59 UTC and its sunset | deprecated on Friday, June 30, 2023 at 23:59:59 UTC and its sunset | |||
date is Sunday, June 30, 2024 at 23:59:59 UTC. Please note that for | date is Sunday, June 30, 2024 at 23:59:59 UTC. Please note that for | |||
historical reasons the Sunset HTTP header field uses a different data | historical reasons the Sunset HTTP header field uses a different data | |||
format for date. | format for date. | |||
Deprecation: @1688169599 | Deprecation: @1688169599 | |||
Sunset: Sun, 30 Jun 2024 23:59:59 UTC | Sunset: Sun, 30 Jun 2024 23:59:59 UTC | |||
5. Resource Behavior | 5. Resource Behavior | |||
The act of deprecation does not change any behavior of the resource. | The act of deprecation does not change any behavior of the resource. | |||
The presence of a Deprecation header field in response is not meant | The presence of a Deprecation header field in a response is not meant | |||
to signal a change in the meaning or function of a resource in the | to signal a change in the meaning or function of a resource in the | |||
context, allowing consumers to still use the resource in the same way | context, allowing consumers to still use the resource in the same way | |||
as they did before the resource was declared deprecated. | as they did before the resource was declared deprecated. | |||
6. IANA Considerations | 6. IANA Considerations | |||
6.1. The Deprecation HTTP Response Header Field | 6.1. The Deprecation HTTP Response Header Field | |||
The Deprecation response header field should be added to the | The Deprecation response header field has been added to the | |||
"Hypertext Transfer Protocol (HTTP) Field Name Registry" registry | "Hypertext Transfer Protocol (HTTP) Field Name Registry" | |||
(Section 16.3.1 of [HTTP]) | (Section 16.3.1 of [HTTP]) as follows: | |||
Header Field Name: Deprecation | Field Name: Deprecation | |||
Structured Type: Item | Status: permanent | |||
Status: permanent | Structured Type: Item | |||
Specification document: this specification, | Reference: RFC 9745, Section 2: The Deprecation HTTP Header Field | |||
Section 2 "The Deprecation HTTP Response Header Field" | ||||
6.2. The Deprecation Link Relation Type | 6.2. The Deprecation Link Relation Type | |||
The deprecation link relation type should be added to the permanent | The deprecation link relation type has been added to the "Link | |||
registry of link relation types (Section 4.2 of [LINK]). | Relation Types" registry (Section 4.2 of [LINK]) as follows: | |||
Relation Name: deprecation | Relation Name: deprecation | |||
Description: Refers to a resource that is documentation (intended for human consumption) about the deprecation of the link's context. | Description: Refers to a resource that is documentation (intended | |||
for human consumption) about the deprecation of the link's | ||||
context. | ||||
Specification document: this specification, | Reference: RFC 9745, Section 3 | |||
Section 3 "The Deprecation Link Relation Type" | ||||
7. Security Considerations | 7. Security Considerations | |||
The Deprecation header field should be treated as a hint, meaning | The Deprecation header field should be treated as a hint, meaning | |||
that the resource is indicating (and not guaranteeing with certainty) | that the resource is indicating (but not guaranteeing with certainty) | |||
that it will be or is deprecated. Deprecated resources function as | that it will be or has been deprecated. Deprecated resources | |||
they would have without sending the deprecation header field, even | function as they would have without sending the Deprecation header | |||
though one might consider non-functional details such as making them | field, even though one might consider non-functional details such as | |||
progressively less efficient with longer response time for example. | making them progressively less efficient with longer response time, | |||
for example. | ||||
Resource documentation should provide additional information about | Resource documentation should provide additional information about | |||
the deprecation, such as including recommendation(s) for replacement. | the deprecation, such as recommendations for replacement. Developers | |||
Developers of client applications consuming the resource SHOULD | of client applications consuming the resource SHOULD always check the | |||
always check the referred resource documentation to verify | referred resource documentation to verify authenticity and accuracy. | |||
authenticity and accuracy. In cases where a Link header field is | In cases where a Link header field is used to provide documentation, | |||
used to provide documentation, one should assume (unless served over | one should assume (unless served over HTTPS) that the content of the | |||
HTTPS) that the content of the Link header field may not be secure, | Link header field may not be secure, private, or integrity- | |||
private or integrity-guaranteed, and due caution should be exercised | guaranteed, so due caution should be exercised when using it (see | |||
when using it, see Section 5 of [LINK] for more details. In cases | Section 5 of [LINK] for more details). In cases where the | |||
where the Deprecation header field value is in the past, the client | Deprecation header field value is in the past, the client application | |||
application developers MUST no longer assume that the behavior of the | developers MUST no longer assume that the behavior of the resource | |||
resource would remain the same as before the deprecation date. In | will remain the same as before the deprecation date. In cases where | |||
cases where the Deprecation header field value is a date in the | the Deprecation header field value is a date in the future, it can | |||
future, it can lead to information that otherwise might not be | lead to information that otherwise might not be available. | |||
available. Therefore, client application developers consuming the | Therefore, client application developers consuming the resource | |||
resource SHOULD, if possible, consult the resource developer to | SHOULD, if possible, consult the resource developer to discuss | |||
discuss potential impact due to deprecation and plan for possible | potential impact due to deprecation and plan for possible transition | |||
transition to a recommended resource(s). | to a recommended resource(s). | |||
8. Normative References | 8. Normative References | |||
[HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | [HTTP] Fielding, R., Ed., Nottingham, M., Ed., and J. Reschke, | |||
Ed., "HTTP Semantics", STD 97, RFC 9110, | Ed., "HTTP Semantics", STD 97, RFC 9110, | |||
DOI 10.17487/RFC9110, June 2022, | DOI 10.17487/RFC9110, June 2022, | |||
<https://www.rfc-editor.org/rfc/rfc9110>. | <https://www.rfc-editor.org/info/rfc9110>. | |||
[LINK] Nottingham, M., "Web Linking", RFC 8288, | [LINK] Nottingham, M., "Web Linking", RFC 8288, | |||
DOI 10.17487/RFC8288, October 2017, | DOI 10.17487/RFC8288, October 2017, | |||
<https://www.rfc-editor.org/rfc/rfc8288>. | <https://www.rfc-editor.org/info/rfc8288>. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, | Requirement Levels", BCP 14, RFC 2119, | |||
DOI 10.17487/RFC2119, March 1997, | DOI 10.17487/RFC2119, March 1997, | |||
<https://www.rfc-editor.org/rfc/rfc2119>. | <https://www.rfc-editor.org/info/rfc2119>. | |||
[RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | [RFC8174] Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC | |||
2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | 2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174, | |||
May 2017, <https://www.rfc-editor.org/rfc/rfc8174>. | May 2017, <https://www.rfc-editor.org/info/rfc8174>. | |||
[RFC8594] Wilde, E., "The Sunset HTTP Header Field", RFC 8594, | [RFC8594] Wilde, E., "The Sunset HTTP Header Field", RFC 8594, | |||
DOI 10.17487/RFC8594, May 2019, | DOI 10.17487/RFC8594, May 2019, | |||
<https://www.rfc-editor.org/rfc/rfc8594>. | <https://www.rfc-editor.org/info/rfc8594>. | |||
[STRUCTURED-FIELDS] | ||||
Nottingham, M. and P. Kamp, "Structured Field Values for | ||||
HTTP", Work in Progress, Internet-Draft, draft-ietf- | ||||
httpbis-sfbis-06, 21 April 2024, | ||||
<https://datatracker.ietf.org/doc/html/draft-ietf-httpbis- | ||||
sfbis-06>. | ||||
Appendix A. Implementation Status | ||||
Note to RFC Editor: Please remove this section before publication. | ||||
This section records the status of known implementations of the | ||||
protocol defined by this specification at the time of posting of this | ||||
Internet-Draft. 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. | ||||
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". | ||||
A.1. Implementing the Deprecation Header Field | ||||
This is a list of implementations that implement the deprecation | ||||
header field: | ||||
Organization: Apollo | ||||
* Description: Deprecation header field is returned when deprecated | ||||
functionality (as declared in the GraphQL schema) is accessed | ||||
* Reference: https://www.npmjs.com/package/apollo-server-tools | ||||
Organization: Zalando | ||||
* Description: Deprecation header field is recommended as the | ||||
preferred way to communicate API deprecation in Zalando API | ||||
designs. | ||||
* Reference: https://opensource.zalando.com/restful-api- | ||||
guidelines/#deprecation | ||||
Organization: Palantir Technologies | ||||
* Description: Deprecation header field is incorporated in code | ||||
generated by conjure-java, a CLI to generate Java POJOs and | ||||
interfaces from Conjure API definitions | ||||
* Reference: https://github.com/palantir/conjure-java | ||||
Organization: E-Voyageurs Technologies | ||||
* 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. | ||||
* Reference: https://github.com/voyages-sncf- | ||||
technologies/hesperides/blob/master/documentation/lightweight- | ||||
architecture-decision-records/deprecated_endpoints.md | ||||
Organization: Open-Xchange | ||||
* Description: Deprecation header field is used in Open-Xchange | ||||
appsuite-middleware | ||||
* Reference: https://github.com/open-xchange/appsuite-middleware | ||||
Organization: MediaWiki | ||||
* 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. | ||||
* Reference: https://phabricator.wikimedia.org/T232485 | ||||
In addition to the above list, the Deprecation link relation is | ||||
returned in the Registration Data Access Protocol (RDAP) notices to | ||||
indicate deprecation of jCard in favor of JSContact. RDAP is | ||||
specified in the Internet Draft for Using JSContact in Registration | ||||
Data Access Protocol (RDAP) JSON Responses | ||||
https://datatracker.ietf.org/doc/draft-ietf-regext-rdap-jscontact/. | ||||
A.2. Implementing the Concept | ||||
This is a list of implementations that implement the general concept, | ||||
but do so using different mechanisms: | ||||
Organization: Zapier | ||||
* Description: Zapier uses two custom HTTP header fields named X- | ||||
API-Deprecation-Date and X-API-Deprecation-Info | ||||
* Reference: https://zapier.com/engineering/api-geriatrics/ | ||||
Organization: IBM | ||||
* Description: IBM uses a custom HTTP header field named Deprecated | ||||
* Reference: | ||||
https://www.ibm.com/support/knowledgecenter/en/SS42VS_7.3.1/ | ||||
com.ibm.qradar.doc/c_rest_api_getting_started.html | ||||
Organization: Ultipro | ||||
* Description: Ultipro uses the HTTP Warning header field as | ||||
described in Section 5.5 of RFC 9111 with code 299 | ||||
* Reference: https://connect.ultipro.com/api-deprecation | ||||
Organization: Clearbit | ||||
* Description: Clearbit uses a custom HTTP header field named X-API- | ||||
Warn | ||||
* Reference: https://blog.clearbit.com/dealing-with-deprecation/ | ||||
Organization: PayPal | ||||
* Description: PayPal uses a custom HTTP header field named PayPal- | ||||
Deprecated | ||||
* Reference: https://github.com/paypal/api-standards/blob/master/ | ||||
api-style-guide.md#runtime | ||||
Appendix B. Changes from Draft-08 | ||||
This revision has made the following changes: | ||||
* Addresses comments from Gen-ART, ARTART, SECDIR | [RFC9651] Nottingham, M. and P. Kamp, "Structured Field Values for | |||
HTTP", RFC 9651, DOI 10.17487/RFC9651, September 2024, | ||||
<https://www.rfc-editor.org/info/rfc9651>. | ||||
Appendix C. Acknowledgments | Acknowledgments | |||
The authors would like to thank Nikhil Kolekar, Darrel Miller, Mark | The authors would like to thank Nikhil Kolekar, Darrel Miller, Mark | |||
Nottingham, and Roberto Polli for their contributions. | Nottingham, and Roberto Polli for their contributions. | |||
The authors take all responsibility for errors and omissions. | The authors take all responsibility for errors and omissions. | |||
Authors' Addresses | Authors' Addresses | |||
Sanjay Dalal | Sanjay Dalal | |||
Email: sanjay.dalal@cal.berkeley.edu | Email: sanjay.dalal@cal.berkeley.edu | |||
End of changes. 52 change blocks. | ||||
277 lines changed or deleted | 118 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. |