# Architecture principles whose category is Contracts / Interfaces / Compatibility

> 20 records

This index as JSON: https://banes-lab.com/json/api/facets/architecture/category/contracts-interfaces-compatibility

## Entries

- [Design by Contract](https://banes-lab.com/records/architecture/design-by-contract.md): A design rule that every operation states the preconditions it needs, the postconditions it guarantees and the invariants it keeps.
- [Explicit Contracts](https://banes-lab.com/records/architecture/explicit-contracts.md): A design rule that every boundary declares the shape and meaning of what crosses it in a typed contract.
- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md): The degree to which a public interface keeps its signatures and meaning across releases.
- [Interface-Based Design](https://banes-lab.com/records/architecture/interface-based-design.md): A design rule that a module depends on interfaces, and the implementation behind each one is supplied from outside.
- [Contract-First Design](https://banes-lab.com/records/architecture/contract-first-design.md): A design rule that a boundary's contract is written and agreed before the implementation behind it.
- [API Contract](https://banes-lab.com/records/architecture/api-contract.md): A rule or precondition that each endpoint declares its request, response and error shapes in a versioned schema.
- [Service Contract](https://banes-lab.com/records/architecture/service-contract.md): A rule or precondition that a service declares its operations, their results and their side effects to every consumer.
- [Data Contract](https://banes-lab.com/records/architecture/data-contract.md): A rule or precondition that data exchanged between parties has declared fields, types, nullability and meaning.
- [Schema Contract](https://banes-lab.com/records/architecture/schema-contract.md): A rule or precondition that every payload is validated against a machine-readable schema at the boundary it crosses.
- [Semantic Contracts](https://banes-lab.com/records/architecture/semantic-contracts.md): A rule or precondition that each term and value at a boundary has one agreed meaning, beyond its type.
- [Preconditions](https://banes-lab.com/records/architecture/preconditions.md): A rule or precondition that must hold on an operation's input and state before the operation runs.
- [Postconditions](https://banes-lab.com/records/architecture/postconditions.md): A rule or precondition that an operation's result and resulting state must satisfy when it returns.
- [Invariant](https://banes-lab.com/records/architecture/invariant.md): A rule or precondition that holds for an entity or aggregate in every state it can reach.
- [Backward Compatibility](https://banes-lab.com/records/architecture/backward-compatibility.md): A rule or precondition that a new version keeps working for consumers written against an older one.
- [Forward Compatibility](https://banes-lab.com/records/architecture/forward-compatibility.md): A rule or precondition that an older reader accepts data from a newer writer by ignoring the fields it does not know rather than failing on them.
- [Versioning](https://banes-lab.com/records/architecture/versioning.md): A mechanism that labels each release of an interface or schema, so consumers can tell compatible changes from breaking ones.
- [Protocol Compatibility](https://banes-lab.com/records/architecture/protocol-compatibility.md): A rule or precondition that both ends of a connection speak a declared protocol version they both support.
- [Interoperability](https://banes-lab.com/records/architecture/interoperability.md): The degree to which separate systems exchange data and use it correctly through shared formats and contracts.
- [Uniform Interface](https://banes-lab.com/records/architecture/uniform-interface.md): A rule or precondition that every resource in an API uses the same verbs, response shapes and error format.
- [Consumer-Driven Contracts](https://banes-lab.com/records/architecture/consumer-driven-contracts.md): A rule or precondition that a provider verifies each change against the expectations its consumers have recorded.
