Repository navigation
Conversation
…ne-Match) Add RFC 9110 conditional requests to the HTTP/REST API so that clients can detect concurrent changes of a resource and revalidate representations. Support is optional for servers and clients and not bound to a profile. - New clause "Conditional Requests" in the HTTP/REST API chapter - Generic status codes SuccessNotModified (304) and ClientPreconditionFailed (412) - Shared OpenAPI components ETag, IfMatch, IfNoneMatch, not-modified and precondition-failed in the Part 2 schemas, referenced as optional elements by the single-resource operations of all profiles and the Entire-API-Collection - Notes on profiles and code generation, terms, bibliography, conformance test cases and changelog
aaronzi
requested review from
BirgitBoss,
alexgordtop,
aorzelskiGH,
danielporta,
g1zzm0,
mdanish98,
mjacoby,
sebbader-sap,
waltersve,
whamm86 and
zrgt
as code owners
October 21, 2026 06:13
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #691
Adds HTTP conditional requests (RFC 9110) to the HTTP/REST API. Clients can use them to detect concurrent changes of a resource ("lost updates") and to revalidate representations they already have. As agreed in the API task force, the feature is optional and not bound to a profile. Existing servers and clients remain conformant.
Normative behavior
ETagfor a resource has to evaluateIf-Match/If-None-Matchfor that resource. A server without support returns noETagand may ignore the headers.428 Precondition Requiredis intentionally not part of the spec. Clients shall work with servers that return no entity tags, and shall not assume protection without having received anETag.PUT,PATCH,POSTbelow an existing resource andDELETEacceptIf-Match. A mismatch returns412with aResultobject and leaves the resource unchanged, and the check is atomic with the change.If-None-Match: *onPUTmeans create-only.GETacceptsIf-None-Matchand answers304only for authorized requests.400/401/403/404take precedence over412(RFC 9110, 13.2.1)./description,/serialization,$signed,$history, operation invocation and its status/result endpoints, and the async AASX endpoints.OpenAPI ("check how this affects swagger")
Part2-API-Schemas/openapi.yaml:ETagIfMatchandIfNoneMatch(bothrequired: false)not-modifiedandprecondition-failedIf-None-Match,ETagon200, and304If-Match,If-None-Matchand412. NoETagon PUT responses (RFC 9110, 9.3.4)If-Match,ETagon2xx, and412If-Matchand412Documentation
SuccessNotModified(304) andClientPreconditionFailed(412) in the status code table and the HTTP mapping tableHTTP.cond.001–006Notes for merging
[#bib16].GEToperations, so they need no conditional request elements.