Skip to content

DELETE response body not following RFC 9110 #412

@thegagne

Description

@thegagne

AEP 135 currently states that a delete should return a 204 with a response body of {}.

https://aep.dev/135/#responses

paths:
  /publishers/{publisher_id}/books/{book_id}:
    delete:
      responses:
        '204':
          content:
            application/json:
              schema: {}
          description: Successful response

However, RFC 9110 states that it should have literally no body on a 204.

The 204 (No Content) status code indicates that the server has successfully fulfilled the request and that there is no additional content to send in the response content.
...
A 204 response is terminated by the end of the header section; it cannot contain content or trailers.

Looking at our options for DELETE in section 9.3.5, our options are switch to a 200, or use a 204 with no body at all.

a 202 (Accepted) status code if the action will likely succeed but has not yet been enacted,
a 204 (No Content) status code if the action has been enacted and no further information is to be supplied, or
a 200 (OK) status code if the action has been enacted and the response message includes a representation describing the status.

I think I raised this issue before the 2026 release was finalized and pushed to get this switched to a 204, but didn't realize that a 200 would actually be correct if we had a response body describing the status. I think the question remains - do we need the response body or not, since it doesn't really describe the status.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions