<?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.43 (Ruby 3.4.9) -->
<?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-idempotency-key-header-08" category="std" consensus="true" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.34.1 -->
  <front>
    <title>The Idempotency-Key HTTP Header Field</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-httpapi-idempotency-key-header-08"/>
    <author initials="J." surname="Jena" fullname="Jayadeba Jena">
      <organization/>
      <address>
        <email>jayadebaj@gmail.com</email>
      </address>
    </author>
    <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="D." surname="Tishkin" fullname="Dmitrii Tishkin">
      <organization/>
      <address>
        <email>hello@dmi03.com</email>
      </address>
    </author>
    <date year="2026" month="October" day="22"/>
    <abstract>
      <?line 41?>

<t>The HTTP Idempotency-Key request header field can be used to make non-idempotent HTTP methods such as <tt>POST</tt> or <tt>PATCH</tt> fault-tolerant.</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-idempotency-key-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/idempotency"/>.</t>
    </note>
  </front>
  <middle>
    <?line 45?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>In mathematics and computer science, an idempotent operation is one that can be applied multiple times without changing the result beyond the initial application. It does not matter if the operation is called only once or tens of times over.</t>
      <t>Idempotency is important in building fault-tolerant HTTP APIs. An HTTP request method is considered <tt>idempotent</tt> if the intended effect on the server of multiple identical requests with that method is the same as the effect for a single such request. Per <xref target="RFC9110"/>, the methods <tt>OPTIONS</tt>, <tt>HEAD</tt>, <tt>GET</tt>, <tt>PUT</tt> and <tt>DELETE</tt> are idempotent while methods <tt>POST</tt> and <tt>PATCH</tt> are not.</t>
      <t>Let's say a client of an HTTP API wants to create (or update) a resource using a <tt>POST</tt> method. Repeating the request multiple times can result in duplication or incorrect updates. Consider a scenario where the client sent a <tt>POST</tt> request to the server, but the request timed out. The client is left uncertain about the status of the resource. It doesn't know if the resource was created or updated, or if the server even completed processing the request. Furthermore, the client does not know if it can safely retry the request.</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>The term "resource" is to be interpreted as defined in Section 3.1 of <xref target="RFC9110"/>, that is, identified by a URI.</t>
      </section>
    </section>
    <section anchor="the-idempotency-key-http-request-header-field">
      <name>The Idempotency-Key HTTP Request Header Field</name>
      <t>An idempotency key is a unique value generated by the client which the resource uses to recognize subsequent retries of the same request. The <tt>Idempotency-Key</tt> HTTP request header field carries this value.</t>
      <section anchor="syntax">
        <name>Syntax</name>
        <t><tt>Idempotency-Key</tt> is an Item Structured Header Field <xref target="RFC9651"/>. Its value <bcp14>MUST</bcp14> be a String (Section 3.3.3 of <xref target="RFC9651"/>).</t>
      </section>
      <section anchor="uniqueness-of-idempotency-key">
        <name>Uniqueness of Idempotency Key</name>
        <t>The idempotency key <bcp14>MUST</bcp14> be unique and <bcp14>MUST NOT</bcp14> be reused with another request with a different request payload.</t>
        <t>Uniqueness of the key <bcp14>MUST</bcp14> be defined by the resource owner and <bcp14>MUST</bcp14> be implemented by the clients of the resource. It is <bcp14>RECOMMENDED</bcp14> that a UUID <xref target="RFC9562"/> or a similar random identifier be used as an idempotency key.</t>
        <t>The following example shows an idempotency key whose value is a UUID <xref target="RFC9562"/>:</t>
        <artwork><![CDATA[
Idempotency-Key: "8e03978e-40d5-43e8-bc93-6894a57f9324"
]]></artwork>
      </section>
      <section anchor="idempotency-key-validity-and-expiry">
        <name>Idempotency Key Validity and Expiry</name>
        <t>The resource <bcp14>MAY</bcp14> require time based idempotency keys to be able to purge or delete a key upon its expiry. The resource <bcp14>SHOULD</bcp14> define such expiration policy and publish it in the documentation.</t>
      </section>
      <section anchor="idempotency-fingerprint">
        <name>Idempotency Fingerprint</name>
        <t>An idempotency fingerprint <bcp14>MAY</bcp14> be used in conjunction with an idempotency key to determine the uniqueness of a request. Such a fingerprint is generated from request payload data by the resource. An idempotency fingerprint generation algorithm <bcp14>MAY</bcp14> use one of the following or similar approaches to create a fingerprint.</t>
        <ul spacing="normal">
          <li>
            <t>Checksum of the entire request payload.</t>
          </li>
          <li>
            <t>Checksum of selected element(s) in the request payload.</t>
          </li>
          <li>
            <t>Field value match for each field in the request payload.</t>
          </li>
          <li>
            <t>Field value match for selected element(s) in the request payload.</t>
          </li>
          <li>
            <t>Request digest/signature.</t>
          </li>
        </ul>
      </section>
      <section anchor="responsibilities">
        <name>Responsibilities</name>
        <section anchor="client">
          <name>Client</name>
          <t>Clients of HTTP API requiring idempotency <bcp14>SHOULD</bcp14> understand the idempotency related requirements as published by the server and use an appropriate algorithm to generate idempotency keys.</t>
          <t>Clients <bcp14>MAY</bcp14> choose to send an Idempotency-Key field with any valid value to indicate the user's intent is to only perform this action once. Without a priori knowledge, a general client cannot assume the server will respect this request.</t>
          <t>For each request, a client <bcp14>SHOULD</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Send a unique idempotency key in the HTTP <tt>Idempotency-Key</tt> request header field.</t>
            </li>
          </ul>
        </section>
        <section anchor="resource">
          <name>Resource</name>
          <t>Resources <bcp14>MUST</bcp14> publish an idempotency-related specification. This specification <bcp14>MUST</bcp14> include expiration related policy if applicable. A resource is responsible for managing the lifecycle of the idempotency key.</t>
          <t>For each request, a server <bcp14>SHOULD</bcp14>:</t>
          <ul spacing="normal">
            <li>
              <t>Identify idempotency key from the HTTP <tt>Idempotency-Key</tt> request header field.</t>
            </li>
            <li>
              <t>Generate idempotency fingerprint if required.</t>
            </li>
            <li>
              <t>Enforce idempotency (see below)</t>
            </li>
          </ul>
        </section>
      </section>
      <section anchor="idempotency-enforcement">
        <name>Idempotency Enforcement</name>
        <ul spacing="normal">
          <li>
            <t>First time request (idempotency key and fingerprint has not been seen)  </t>
            <t>
The resource <bcp14>SHOULD</bcp14> process the request normally and respond with an appropriate response and status code.</t>
          </li>
          <li>
            <t>Duplicate request (idempotency key and fingerprint has been seen)  </t>
            <t>
Retry  </t>
            <t>
The request was retried after the original request completed. The resource <bcp14>SHOULD</bcp14> respond with a response consistent with the request being completed according to the user's intent.  </t>
            <t>
Concurrent Request  </t>
            <t>
The request was retried before the original request completed. The resource <bcp14>SHOULD</bcp14> respond with a resource conflict error. See Error Scenarios for details.</t>
          </li>
        </ul>
      </section>
      <section anchor="error-handling">
        <name>Error Handling</name>
        <t>If the <tt>Idempotency-Key</tt> request header is missing for a documented idempotent operation requiring this header, the resource <bcp14>SHOULD</bcp14> reply with an HTTP <tt>400</tt> status code with body containing a link pointing to relevant documentation. The following example shows an error response describing the problem using <xref target="RFC9457"/>.</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 400 Bad Request
    Content-Type: application/problem+json
    Content-Language: en
    {
      "type": "https://developer.example.com/idempotency",
      "title": "Idempotency-Key is missing",
      "detail": "This operation is idempotent and it requires correct
       usage of Idempotency Key."
    }
]]></sourcecode>
        <t>Alternately, using the HTTP header <tt>Link</tt>, the client can be informed about the error as shown below.</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 400 Bad Request
    Link: <https://developer.example.com/idempotency>;
      rel="describedby"; type="text/html"
]]></sourcecode>
        <t>If there is an attempt to reuse an idempotency key with a different request payload, the resource <bcp14>SHOULD</bcp14> reply with an HTTP <tt>422</tt> status code with body containing a link pointing to relevant documentation. The status code <tt>422</tt> is defined in Section 15.5.21 of <xref target="RFC9110"/>.</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 422 Unprocessable Content
    Content-Type: application/problem+json
    Content-Language: en
    {
      "type": "https://developer.example.com/idempotency",
      "title": "Idempotency-Key is already used",
      "detail": "This operation is idempotent and it requires
      correct usage of Idempotency Key. Idempotency Key must not be
      reused across different payloads of this operation."
    }
]]></sourcecode>
        <t>The server can also inform the client by using the HTTP header <tt>Link</tt> as shown below.</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 422 Unprocessable Content
    Link: <https://developer.example.com/idempotency>;
    rel="describedby"; type="text/html"
]]></sourcecode>
        <t>If the request is retried, while the original request is still being processed, the resource <bcp14>SHOULD</bcp14> reply with an HTTP <tt>409</tt> status code with body containing problem description.</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 409 Conflict
    Content-Type: application/problem+json
    Content-Language: en
    {
      "type": "https://developer.example.com/idempotency",
      "title": "A request is outstanding for this Idempotency-Key",
      "detail": "A request with the same Idempotency-Key for the
      same operation is being processed or is outstanding."
    }
]]></sourcecode>
        <t>Or, alternately using the HTTP header <tt>Link</tt> pointing to the relevant documentation</t>
        <sourcecode type="http-message"><![CDATA[
    HTTP/1.1 409 Conflict
    Link: <https://developer.example.com/idempotency>;
    rel="describedby"; type="text/html"
]]></sourcecode>
        <t>Error scenarios above describe the status of failed idempotent requests after the resource processes them. Clients <bcp14>MUST</bcp14> correct the requests (with the exception of 409 where no correction is required) before performing a retry operation, or the resource <bcp14>MUST</bcp14> fail the request and return one of the above errors.</t>
        <t>For other 4xx/5xx errors, such as 401, 403, 500, 502, 503, 504, 429, or any other HTTP error code that is not listed here, the client <bcp14>SHOULD</bcp14> act appropriately by following the resource's documentation.</t>
      </section>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <section anchor="the-idempotency-key-http-request-header-field-1">
        <name>The Idempotency-Key HTTP Request Header Field</name>
        <t>The Idempotency-Key field name should be added to the "Hypertext Transfer Protocol (HTTP) Field Name Registry".</t>
        <dl>
          <dt>Field Name:</dt>
          <dd>
            <t>Idempotency-Key</t>
          </dd>
          <dt>Status:</dt>
          <dd>
            <t>permanent</t>
          </dd>
          <dt>Specification document:</dt>
          <dd>
            <t>This specification, Section 2</t>
          </dd>
        </dl>
      </section>
    </section>
    <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>
      <t>Organization: Stripe</t>
      <ul spacing="normal">
        <li>
          <t>Description: Stripe uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference:  https://stripe.com/docs/idempotency</t>
        </li>
      </ul>
      <t>Organization: Adyen</t>
      <ul spacing="normal">
        <li>
          <t>Description: Adyen uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://docs.adyen.com/development-resources/api-idempotency/</t>
        </li>
      </ul>
      <t>Organization: Dwolla</t>
      <ul spacing="normal">
        <li>
          <t>Description: Dwolla uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://docs.dwolla.com/</t>
        </li>
      </ul>
      <t>Organization: Interledger</t>
      <ul spacing="normal">
        <li>
          <t>Description: Interledger uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://github.com/interledger/</t>
        </li>
      </ul>
      <t>Organization: WorldPay</t>
      <ul spacing="normal">
        <li>
          <t>Description: WorldPay uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://developer.worldpay.com/docs/wpg/idempotency</t>
        </li>
      </ul>
      <t>Organization: Yandex</t>
      <ul spacing="normal">
        <li>
          <t>Description: Yandex uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://cloud.yandex.com/docs/api-design-guide/concepts/idempotency</t>
        </li>
      </ul>
      <t>Organization: http4s.org</t>
      <ul spacing="normal">
        <li>
          <t>Description: Http4s is a minimal, idiomatic Scala interface for HTTP services.</t>
        </li>
        <li>
          <t>Reference: https://github.com/http4s/http4s</t>
        </li>
      </ul>
      <t>Organization: Finastra</t>
      <ul spacing="normal">
        <li>
          <t>Description: Finastra uses custom HTTP header named <tt>Idempotency-Key</tt></t>
        </li>
        <li>
          <t>Reference: https://developer.fusionfabric.cloud/</t>
        </li>
      </ul>
      <t>Organization: Datatrans</t>
      <ul spacing="normal">
        <li>
          <t>Description: Datatrans focuses on the technical processing of payments, including hosting smart payment forms and correctly routing payment information.</t>
        </li>
        <li>
          <t>Reference: https://docs.datatrans.ch/docs/api-endpoints</t>
        </li>
      </ul>
      <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: Django</t>
        <ul spacing="normal">
          <li>
            <t>Description: Django uses custom HTTP header named <tt>HTTP_IDEMPOTENCY_KEY</tt></t>
          </li>
          <li>
            <t>Reference:  https://pypi.org/project/django-idempotency-key</t>
          </li>
        </ul>
        <t>Organization: Chargebee</t>
        <ul spacing="normal">
          <li>
            <t>Description: Chargebee uses custom HTTP header named <tt>chargebee-idempotency-key</tt></t>
          </li>
          <li>
            <t>Reference: https://apidocs.chargebee.com/docs/api/idempotency</t>
          </li>
        </ul>
        <t>Organization: Twilio</t>
        <ul spacing="normal">
          <li>
            <t>Description: Twilio uses custom HTTP header named <tt>I-Twilio-Idempotency-Token</tt> in webhooks</t>
          </li>
          <li>
            <t>Reference: https://www.twilio.com/docs/usage/webhooks/webhooks-connection-overrides</t>
          </li>
        </ul>
        <t>Organization: PayPal</t>
        <ul spacing="normal">
          <li>
            <t>Description: PayPal uses custom HTTP header named <tt>PayPal-Request-Id</tt></t>
          </li>
          <li>
            <t>Reference:  https://developer.paypal.com/docs/business/develop/idempotency</t>
          </li>
        </ul>
        <t>Organization: RazorPay</t>
        <ul spacing="normal">
          <li>
            <t>Description: RazorPay uses custom HTTP header named <tt>X-Payout-Idempotency</tt></t>
          </li>
          <li>
            <t>Reference: https://razorpay.com/docs/razorpayx/api/idempotency/</t>
          </li>
        </ul>
        <t>Organization: OpenBanking</t>
        <ul spacing="normal">
          <li>
            <t>Description: OpenBanking uses custom HTTP header called <tt>x-idempotency-key</tt></t>
          </li>
          <li>
            <t>Reference: https://openbankinguk.github.io/read-write-api-site3/v3.1.6/profiles/read-write-data-api-profile.html#request-headers</t>
          </li>
        </ul>
        <t>Organization: Square</t>
        <ul spacing="normal">
          <li>
            <t>Description: To make an idempotent API call, Square recommends adding a property named <tt>idempotency_key</tt> with a unique value in the request body.</t>
          </li>
          <li>
            <t>Reference: https://developer.squareup.com/docs/build-basics/using-rest-api</t>
          </li>
        </ul>
        <t>Organization: Google Standard Payments</t>
        <ul spacing="normal">
          <li>
            <t>Description: Google Standard Payments API uses a property named <tt>requestId</tt> in request body in order to provide idempotency in various use cases.</t>
          </li>
          <li>
            <t>Reference: https://developers.google.com/standard-payments/payment-processor-service-api/rest/v1/TopLevel/capture</t>
          </li>
        </ul>
        <t>Organization: BBVA</t>
        <ul spacing="normal">
          <li>
            <t>Description: BBVA Open Platform uses custom HTTP header called <tt>X-Unique-Transaction-ID</tt></t>
          </li>
          <li>
            <t>Reference: https://bbvaopenplatform.com/apiReference/APIbasics/content/x-unique-transaction-id</t>
          </li>
        </ul>
        <t>Organization: WebEngage</t>
        <ul spacing="normal">
          <li>
            <t>Description: WebEngage uses custom HTTP header called <tt>x-request-id</tt> to identify webhook POST requests uniquely to achieve events idempotency.</t>
          </li>
          <li>
            <t>Reference: https://docs.webengage.com/docs/webhooks</t>
          </li>
        </ul>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This section is meant to inform developers, information providers,
and users of known security concerns specific to the idempotency keys.</t>
      <t>Resources that do not implement strong idempotency keys, such as UUIDs, or have appropriate controls to validate the idempotency keys, could be victim to various forms of security attacks from malicious clients:</t>
      <ul spacing="normal">
        <li>
          <t>Injection attacks - When the resource does not validate the idempotency key in the client request and performs an idempotent cache lookup, there can be security attacks (primarily in the form of injection), compromising the server.</t>
        </li>
        <li>
          <t>Data leaks - When an idempotency implementation allows low entropy keys, attackers <bcp14>MAY</bcp14> determine other keys and use them to fetch existing idempotent cache entries, belonging to other clients.</t>
        </li>
      </ul>
      <t>To prevent such situations, the specification recommends the following best practices for idempotency key implementation in the resource.</t>
      <ul spacing="normal">
        <li>
          <t>Establish a fixed format for the idempotency key and publish the key’s specification.</t>
        </li>
        <li>
          <t>Always validate the key as per its published specification before processing any request.</t>
        </li>
        <li>
          <t>On the resource, implement a unique composite key as the idempotent cache lookup key. For example, a composite key <bcp14>MAY</bcp14> be implemented by combining the idempotency key sent by the client with other client specific attributes known only to the resource.</t>
        </li>
      </ul>
    </section>
    <section anchor="examples">
      <name>Examples</name>
      <t>The first example shows an idempotency-key header field with key value using UUID version 4 scheme:</t>
      <artwork><![CDATA[
Idempotency-Key: "8e03978e-40d5-43e8-bc93-6894a57f9324"
]]></artwork>
      <t>The second example shows an idempotency-key header field with key value using a random string generator:</t>
      <artwork><![CDATA[
Idempotency-Key: "clkyoesmbgybucifusbbtdsbohtyuuwz"
]]></artwork>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC9110">
          <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="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="RFC9651">
          <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="September" 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.</t>
              <t>This document obsoletes RFC 8941.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9651"/>
          <seriesInfo name="DOI" value="10.17487/RFC9651"/>
        </reference>
        <reference anchor="RFC9562">
          <front>
            <title>Universally Unique IDentifiers (UUIDs)</title>
            <author fullname="K. Davis" initials="K." surname="Davis"/>
            <author fullname="B. Peabody" initials="B." surname="Peabody"/>
            <author fullname="P. Leach" initials="P." surname="Leach"/>
            <date month="May" year="2024"/>
            <abstract>
              <t>This specification defines UUIDs (Universally Unique IDentifiers) --
also known as GUIDs (Globally Unique IDentifiers) -- and a Uniform
Resource Name namespace for UUIDs. A UUID is 128 bits long and is
intended to guarantee uniqueness across space and time. UUIDs were
originally used in the Apollo Network Computing System (NCS), later
in the Open Software Foundation's (OSF's) Distributed Computing
Environment (DCE), and then in Microsoft Windows platforms.</t>
              <t>This specification is derived from the OSF DCE specification with the
kind permission of the OSF (now known as "The Open Group"). Information from earlier versions of the OSF DCE specification have
been incorporated into this document. This document obsoletes RFC
4122.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9562"/>
          <seriesInfo name="DOI" value="10.17487/RFC9562"/>
        </reference>
        <reference anchor="RFC9457">
          <front>
            <title>Problem Details for HTTP APIs</title>
            <author fullname="M. Nottingham" initials="M." surname="Nottingham"/>
            <author fullname="E. Wilde" initials="E." surname="Wilde"/>
            <author fullname="S. Dalal" initials="S." surname="Dalal"/>
            <date month="July" year="2023"/>
            <abstract>
              <t>This document defines a "problem detail" to carry machine-readable details of errors in HTTP response content to avoid the need to define new error response formats for HTTP APIs.</t>
              <t>This document obsoletes RFC 7807.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9457"/>
          <seriesInfo name="DOI" value="10.17487/RFC9457"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <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 383?>

<section anchor="changes">
      <name>Changes from Draft-07</name>
      <t>This revision has made the following changes:</t>
      <ul spacing="normal">
        <li>
          <t>Updated references to obsoleted RFCs: RFC 7231 to RFC 9110, RFC 7807 to RFC 9457, RFC 4122 to RFC 9562 and RFC 8941 to RFC 9651</t>
        </li>
        <li>
          <t>Removed the unused ABNF and IMF-fixdate reference from Notational Conventions</t>
        </li>
        <li>
          <t>Adopted the proposed text for the Retry case (#48); still open for discussion</t>
        </li>
        <li>
          <t>Editorial fixes</t>
        </li>
        <li>
          <t>Added Dmitrii Tishkin as an author</t>
        </li>
      </ul>
    </section>
    <section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>The authors would like to thank Mark Nottingham for his support for this Internet Draft. We would like to acknowledge that this draft is inspired by Idempotency related patterns described in API documentation of <eref target="https://github.com/paypal/api-standards/blob/master/patterns.md#idempotency">PayPal</eref> and <eref target="https://stripe.com/docs/idempotency">Stripe</eref> as well as Internet Draft on <eref target="https://tools.ietf.org/html/draft-nottingham-http-poe-00">POST Once Exactly</eref> authored by Mark Nottingham.</t>
      <t>The authors take all responsibility for errors and omissions.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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

-->

</rfc>
