What both sides agree to.
WHAT A CONTRACT IS
The promise about addresses, formats and behaviour.
WHAT IT COVERS
Which endpoints exist What each accepts and returns What errors occur What guarantees apply
WHAT MAKES IT BINDING IN PRACTICE
Other people's systems depend on it.
WHAT TREATING IT AS BINDING MEANS
Not changing it without notice, however small the change seems.
WHAT PEOPLE DEPEND ON THAT YOU DID NOT INTEND
Field order Undocumented fields Exact error wording Behaviour on invalid input
WHY THAT MATTERS
Whatever you expose becomes a contract in effect.
WHAT TO DO ABOUT IT
Expose deliberately, and document what is guaranteed.
WHAT TO STATE EXPLICITLY
What may change without notice What will not How long deprecation notice will be
WHAT CONTRACT TESTING PROVIDES
Automated confirmation that behaviour still matches the specification.
WHAT TO RUN IT AGAINST
Every build.
WHAT CONSUMER-DRIVEN CONTRACTS ADD
Callers declaring what they depend on, verified against your service.
WHERE THAT SUITS
Internal services with known consumers.
WHAT IT ACHIEVES
Breaking changes caught before release rather than after.
WHAT TO NEVER ASSUME
That nobody uses a field.