Короткий ответ
API-контракт — согласованное описание структуры запросов/ответов между сервисами; менять поле ответа без согласования нельзя, так как потребители, написанные под старый контракт, могут сломаться.
Как это работает подробнее
Контракт обычно явно описан (OpenAPI/JSON Schema/protobuf) или подразумевается по факту использования; потребитель парсит ответ, ожидая конкретные поля и типы.
Пример кода
payload.json
// было
{"id": 1, "status": "paid"}
// стало (breaking change — удалили status, добавили state)
{"id": 1, "state": "paid"}Что использовать на практике
- Практика. Безопасные изменения — добавление нового необязательного поля; небезопасные — удаление поля, смена типа, переименование без переходного периода.
Подводные камни
- Риск. Удалять «неиспользуемое» поле без проверки реальных потребителей; менять тип поля (строка → число) без оповещения.