Contract Change Bench
Change a JSON response and check whether an existing client can still use it.
TrySet Unknown response fields to Reject and inspect the added-field result.
Watch forIgnore accepts the added timezone field; Reject makes the example decoder refuse it.
The linked story describes related work; the scenarios and results here are synthetic.
Interactive model
Skill practicedChange APIs without surprising existing clients
Connection to my workProcedure work included secure REST API delivery; this invented response illustrates client compatibility risks.
Understand the result
Change one made-up JSON response and compare it with a fixed existing client that reads id, displayName, and status. Choose how that client treats unfamiliar properties and status values. The result is limited to this response example; it is not an API compatibility checker or a test of any production endpoint.
Controls
- Response change
- Choose an optional-field addition, a removal or rename of a field the old client reads, a new status value, or a change in the type of id.
- Unknown response fields
- For the added-property scenario, choose whether the old client ignores an unfamiliar property or rejects it. This setting is disabled for changes to fields the client already reads and for new status values.
- Unknown status values
- For the new-status scenario, choose whether the old client accepts an unrecognized status value or rejects it. This setting is disabled for property and consumed-field changes.
What to watch for
- Ignore accepts the added timezone field; Reject makes the example decoder refuse it.
- Add a status value. A client that tolerates unknown values can keep reading the response, while a closed enum check rejects it.
- Remove or rename displayName, or change the type of id. The fixed old client depends on the original field and type, regardless of the two parser settings.
Why it happens
Compatibility is a relationship between a producer change and the clients that consume it. Whether an added field or enum value is safe depends on how existing clients validate and interpret responses; removing, renaming, or changing a consumed value can break those clients. Real API versioning also considers requests, defaults, error behavior, generated clients, and rollout order, all outside this response-only model.
How this idea relates to the linked work
My Procedure experience records building secure REST APIs. This synthetic exercise makes one review question tangible: what does a producer-side response change mean for a client that already exists? Its example fields and parser policies are invented for teaching; it neither calls nor describes a specific production endpoint.
See the broader engineering brief