Формат ошибки
Любая ошибка — статус HTTP и один и тот же конверт:code— машиночитаемый код. Ветвитесь по нему, а не по статусу и не по тексту.message— текст для логов на языке изAccept-Language. Клиенту его не показывайте: формулировки меняются.fields— поле и причина уVALIDATION_ERROR; у остальных ошибокnull.
code трактуйте как обычный отказ: список кодов пополняется без смены версии.
Коды
«—» в последней колонке — повтор того же запроса ничего не изменит.
Что безопасно повторять
GET— всегда.POST /payments— с тем жеIdempotency-Key: второй счёт не выставится.POST …/trialпосле503— пробный период не выдан, повтор безопасен.POST …/rotate-linkпосле503— ссылка не сменилась, пауза в час не началась.
Лимиты
Сутки — скользящие 24 часа.
Retry-After — пауза в секундах. Лимиты защищают от зациклившегося скрипта; если для вашего объёма их мало — напишите менеджеру.
Версии
Версия — в пути:/api/partner/v1. Внутри версии добавляются новые поля в ответах, новые необязательные поля в запросах и новые коды ошибок — код интеграции не должен на них ломаться. Удаление и переименование — только в новой версии пути.
