Start here. This is the direct spoken answer to practice first.
Why this question matters
Optimistic concurrency lets readers work without holding a long lock, then detects whether the data changed before their write commits. Detection is only useful when the application has an honest conflict policy.
I return the row with its current concurrency token and require the client to send that original token when updating. The SQL update matches both the id and token; if another transaction changed the row, its token differs and zero rows are affected. The API treats that as a concurrency conflict instead of silently overwriting the newer state. SQL Server rowversion is a database-generated binary version value, not a date or business timestamp.