I have always ignored the existence of PUT method and used POST for requests with body. Which actually isn't a semantically invalid way. But I came to this question in this specific recurring case:
Scenario
SQL Table wishes
| id | user_id | content |
|---|---|---|
| 1 | user1 | using LLM's for creating ultra pro content |
| 2 | user1 | having not devastated planet earth and livings |
So a user basically requests to
POST http://example.com/wishes
with body:
{ "content": "some content" }
It feels intuitive to use PUT in this case because the URI doesn't change at all and it has exactly one function and it is not updating or editing anything, but also it will not be idempotent in the API resource since it will increment id.