Versioned write flow
- Read the Study or relevant sub-resource.
- Save the response’s quoted
ETagvalue. - Send that exact value in
If-Matchwith the write. - Save the new
ETagreturned by the successful write.
ETag: "126300", send:
version field on a Study represents the same version, but using the response ETag avoids
formatting mistakes.
Conflict responses
Never retry a
412 with the same body and ETag in a loop. Re-read first so that you do not overwrite
another writer’s changes.
Writes that require If-Match
Versioned writes include:- Updating or deleting a Study.
- Creating, updating, or deleting Questions and Blocks.
- Creating, replacing, or clearing targeting.
- Replacing, patching, or deleting a translation.
Operations without If-Match
These operations do not mutate the authored Study version:- Creating a Study.
- Uploading, listing, reading, or deleting assets.
- Validating a Study.
- Listing or creating invitations.
- Starting, reading, or cancelling a translation job.
- Reading any resource.
If-Match does not remove those constraints.
Coordinate multiple writers
For systems with several workers:- Serialize writes per Study when practical.
- Pass the latest ETag with the work item.
- Treat a
412as a signal to reconcile, not as a transient network error. - Read after an ambiguous timeout before deciding whether to retry.