A conditional schema request is exact string equality and nothing more
A partial wildcard implementation would report "unchanged" to a client that holds no copy at all, which is worse than answering unconditionally.
The rule
If-None-Matchon a workflow schema read is compared for exact string equality against the tag of the variant being requested.- A match answers
304carrying the entity tag and the body{}, and does so before the schema itself is assembled. - A mismatch answers the full
200. - The wildcard
*, a comma-separated list of tags and weak comparison are not implemented: a caller sending any of them receives a correct but unconditional200. - Each variant answers its own conditional request, so carrying the variant in the tag costs no variant a
304.
What it means
Only one comparison is implemented: the tag sent must equal, character for character, the tag of the variant actually being requested. The wildcard, a comma-separated list of tags and weak comparison are not read at all — a caller sending any of them falls through to the full response rather than being told, wrongly, that nothing has changed. A partial reading of the wildcard would be worse than none: it would tell a caller holding no copy at all that its (nonexistent) copy is still current.
Because the tag carries the variant (META-6), a tag minted for one variant does not short-circuit a request for the other — each variant answers only its own conditional request.
Example
GET /api/flowdrop/workflows/{id}/schema
If-None-Match: "1.2.3"
{}GET /api/flowdrop/workflows/{id}/schema?annotated=1
If-None-Match: "1.2.3"GET /api/flowdrop/workflows/{id}/schema
If-None-Match: *