# API Contract

Record: `arch: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#arch-api-contract

## 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/lex/schema.md)
- [Versioning](https://banes-lab.com/records/arch/versioning.md)
- [Stable Interfaces](https://banes-lab.com/records/arch/stable-interfaces.md)

## reinforces

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

## enables

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

## conflicts-with

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

## tensions-with

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

## tensions

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

## referenced-by

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