# API Contract

> A rule or precondition that each endpoint declares its request, response and error shapes in a versioned schema.

Record: `architecture:api-contract`
Kind: constraint
Layer: [Contracts Core](https://banes-lab.com/records/layer/contracts-core.md)
Severity: mandatory
Scope: API, service boundary
Canonical: https://banes-lab.com/ontology#architecture-api-contract

Listed in [Architecture principles](https://banes-lab.com/api/records/architecture.md), after [Contract-First Design](https://banes-lab.com/records/architecture/contract-first-design.md) and before [Service Contract](https://banes-lab.com/records/architecture/service-contract.md).

## Repair

- Refactored by: Add OpenAPI, Normalize Responses, Version API
- Detected by: OpenAPI drift, missing endpoint schemas
- Violated by: undocumented endpoints, inconsistent status/error formats
- Measured by: contract coverage, breaking diff count
- Enforced by: OpenAPI linting, contract tests

## Requires

- [Schema](https://banes-lab.com/records/lexicon/schema.md)
- [Versioning](https://banes-lab.com/records/architecture/versioning.md)
- [Stable Interfaces](https://banes-lab.com/records/architecture/stable-interfaces.md)

## Reinforces

- [Interoperability](https://banes-lab.com/records/architecture/interoperability.md)
- [Predictability](https://banes-lab.com/records/architecture/predictability.md)

## Enables

- [Client Compatibility](https://banes-lab.com/records/lexicon/client-compatibility.md)

## Conflicts with

- [Breaking API Change](https://banes-lab.com/records/lexicon/breaking-api-change.md)

## In tension with

- [Evolution](https://banes-lab.com/records/lexicon/evolution.md)

## Tensions

- [API Contract / Evolution](https://banes-lab.com/records/tension/api-contract-evolution.md)

## Severity

- [mandatory](https://banes-lab.com/records/vocabulary/severity-mandatory.md)

## Category

- [Contracts / Interfaces / Compatibility](https://banes-lab.com/records/architecture-category/contracts-interfaces-compatibility.md)

## Required by

- [Service Contract](https://banes-lab.com/records/architecture/service-contract.md)
- [Self-Describing API](https://banes-lab.com/records/architecture/self-describing-api.md)

## Linked from

- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/principles/architecture-category-contracts-interfaces-compatibility.md)
- [Correctness / Determinism / Verification](https://banes-lab.com/ontology/principles/architecture-category-correctness-determinism-verification.md)
- [Metadata / Self-Description / Declarative Systems](https://banes-lab.com/ontology/principles/architecture-category-metadata-self-description-declarative-systems.md)
- [Contracts / Interfaces / Compatibility](https://banes-lab.com/ontology/lexicon/lexicon-category-contracts-interfaces-compatibility.md)
- [Core Vocabulary](https://banes-lab.com/ontology/lexicon/lexicon-category-core-vocabulary.md)
- [Severity levels](https://banes-lab.com/ontology/schema/the-vocabulary-severity.md)
- [The resolutions](https://banes-lab.com/ontology/schema/the-resolutions.md)
