1.5 KiB
1.5 KiB
0015. Use Full-Replace PUT as the Partial Update Strategy
Date: 2026-06-10
Status
Accepted
Context
HTTP defines two methods for updating an existing resource:
- PUT — full replacement; the client sends the complete resource representation, and the server replaces the stored state entirely
- PATCH — partial update; the client sends only the changed fields
Both are standard and well-understood. The choice affects API surface complexity, client implementation requirements, and server-side validation logic.
Decision
We use PUT for all player update operations
(PUT /players/squadNumber/{n}). The request body must contain the
full player representation; the server replaces the stored resource
entirely. No PATCH endpoint is provided at this time. A PATCH
implementation is tracked in the project backlog and remains under
active consideration.
Consequences
Positive
- Simpler server-side implementation: a single validation path, no partial-update merge logic
- PUT semantics are idempotent and well-understood by API consumers
- Consistent with all sibling repos in the cross-language comparison set
Negative
- Clients must send the full resource representation even for single-field changes
- Fine-grained partial updates require a GET followed by a full PUT
- PATCH tracked in backlog — if implemented, this ADR will be superseded
Neutral
- Standard REST semantics; no ambiguity about the update contract for current consumers