The idempotency key of the request
If the client sends the same key but a different payload that’s a 400 or 409 in my eyes.
2) Client's choice
I can choose to purchase a 2nd item, or I can choose to retry purchasing the 1st item. The server making that choice for me is not idempotency.
Idempotency is the server supporting my ability to retry purchasing the 1st item, safe in the knowledge that they won't send me a 2nd one.