HTTP methods and idempotency
GET reads a resource and must not change state (it is safe). POST creates a resource or triggers an action. PUT replaces the whole resource at a known URL.
PATCH applies a partial update. DELETE removes the resource. An idempotent method leaves the server in the same state whether it is called once or many times: GET, HEAD, OPTIONS, PUT and DELETE are idempotent, POST is not, and PATCH is not guaranteed to be.
Idempotency matters for retries: a client can safely resend a timed-out PUT, but resending a POST may create two orders. The standard fix is an idempotency key: the client sends a unique key with the POST, and the server stores the result and returns the same response for any repeat with that key.