Telechat Review of draft-deshpande-secevent-http-multi-set-push-05
review-deshpande-secevent-http-multi-set-push-05-httpdir-telechat-nottingham-2026-10-13-00
| Request | Review of | draft-deshpande-secevent-http-multi-set-push |
|---|---|---|
| Requested revision | No specific revision (document currently at 05) | |
| Type | Telechat Review | |
| Team | HTTP Directorate (httpdir) | |
| Deadline | 2026-10-20 | |
| Requested | 2026-10-13 | |
| Requested by | Gorry Fairhurst | |
| Authors | Apoorva Deshpande , Aaron Parecki | |
| I-D last updated | 2026-10-15 (Latest revision 2026-10-09) | |
| Completed reviews |
Httpdir Early review of -00
by Darrel Miller
(diff)
Genart Early review of -00 by Russ Housley (diff) Secdir Early review of -00 by Scott G. Kelly (diff) Secdir IETF Last Call review of -03 by Scott G. Kelly (diff) Tsvart IETF Last Call review of -03 by Martin Duke (diff) Httpdir Telechat review of -05 by Mark Nottingham |
|
| Comments |
This document appears to fall within the HTTP domain, and received TSV-ART feedback in IETF Last Call Review suggesting there could be issues to further consider. Please consider this review as additional input: https://datatracker.ietf.org/doc/review-deshpande-secevent-http-multi-set-push-03-tsvart-lc-duke-2026-09-14/ |
|
| Assignment | Reviewer | Mark Nottingham |
| State | Completed | |
| Request | Telechat review on draft-deshpande-secevent-http-multi-set-push by HTTP Directorate Assigned | |
| Reviewed revision | 05 | |
| Result | Not ready | |
| Completed | 2026-10-13 |
review-deshpande-secevent-http-multi-set-push-05-httpdir-telechat-nottingham-2026-10-13-00
# Issues ## Absent Motivation This document is motivated by the following argument: > When sending a large number of SETs, sending them one by one is inefficient. That ignores the possibility of using multiplexing in HTTP/2 and HTTP/3. While applications do need to consider efficiency in their API design, they should not needlessly create affordances for efficiency when adequate improvements are available and ready in the protocol infrastructure. It may be that there is another reason for submitting more than one SET at the same time -- for example, batching them because there are interdependencies, or enforcing ordering (when timestamps or other ordering mechanisms are insufficient). However, the document does not argue that. As such, I would recommend the IESG not progress this document unless a strong motivation for it can be found and described sufficiently. ## URI vs media type The document also establishes a separate endpoint for batched SET submission. Was using a different media type to denote a batch considered? In general indicating format syntax is done with media types, not by duplicating endpoints. RFC 8935 leaves the SET endpoint URL deployment-specific, so operators configure one URL per Recipient. Requiring a second URL for batches doubles that configuration and leaves undefined how the two relate (same host, same authentication, same Transmitter identity). It also invites operators to settle on fixed path conventions for the new endpoint, which BCP 190 discourages. A media type on the existing endpoint avoids all three. ## Acknowledgements and identity Section 5 puts Transmitter authentication out of scope, yet also introduces a new mechanism -- the ability to read the status of previously submitted SETs in section 4.4. This leaves open _which_ previously submitted SETs should be acknowledged (etc); without a concept of client identity in the spec, an implementer could easily get this wrong and leak acknowledgements. Also, getting state from the server by sending a POST with an empty data structure is convoluted; this is bad protocol design. Create some sort of stateful session (most likely via a dedicated resource) and use GET (if acks are not cleared by the request). # Comments * Terminology. The use of 'Recipient' conflicts with HTTP; use 'SET Recipient' and 'SET Transmitter' consistently. * Accept. Section 4.3 requires Accept to be "application/json". However, you're also using problem details, which has its own media type. * 4.4.1 requires 202 with a MUST. This is the "POST MUST return 201" pattern, and an intermediary, a redirect or a deployment choice can produce other codes. Say "a 2xx response of this form". * Figure 5 shows authentication_failed with 400, where the semantics call for 401 or 403. RFC 8935's own examples do the same, so the authors have a precedent, but it is still the wrong approach. * The draft doesn't say which status goes with too_many_sets, though 7.1 implies 413. It is also unstated whether any non-2xx response means none of the request's SETs were accepted. It should say so for 413 and for 5xx or 503 from an intermediary. * Use the current name, 413 (Content Too Large). * Retries and overload. Nothing covers 429 or 503, Retry-After, backoff or jitter. * Redirects. For POST, 301 and 302 may become GET. Say whether Transmitters follow redirects (307 and 308 only, and only to https). * Endpoint URI. Say it is an https URI, and cite RFC 9110 4.3.4 for certificate checks. * Ack response media type. This recurs from the earlier HTTPDIR review. Register a type for the ack object, or say why not. * Distinguishing support. A Recipient that supports only RFC 8935 should answer 415 to application/secevents+json. Consider Accept-Post (RFC 7694) for advertising support. * Media type registration. For a +json type, the fragment identifier considerations should follow RFC 6839, and the draft should reference it. # Nits * "body" and "payload" appear throughout; use "content". * Content-Type, not "content-type" (4.4.1) or "Content-type" (Figures 3 and 4). * "Section 4.4.1 Section." (in 4.4.2) and "section Section 5" (in 7.2). * 4.3 says "MUST contain the following fields" before a single field. Say "member" for JSON. * The Figure 1 JWTs have line breaks inside JSON strings. Use RFC 8792 folding and mark the examples http-message in source so they can be validated. * Figure 4's "errors ... for acknowledging one SET" reads badly. * Section 1 says it "will handle all the use cases" of RFC 8935. This is an alternative, not a replacement; state the relationship. * Sections 5 and 7.2 duplicate each other. * Use named references for HTTP and TLS.