Answer
To stop two clients from overwriting each other's edits, the server returns an ETag with the resource, and the client sends it back in an If-Match header when updating. A stale value gets 412.
Also accepted: 412 Precondition Failed, Precondition Failed for 412.
Why
This is optimistic concurrency over HTTP: no locks are held, and the loser re-reads the resource and retries its change.