Каталог модулей

Техническое задание на API-интеграцию: данные, события, ошибки и приёмка

Техническое задание на API-интеграцию: данные, события, ошибки и приёмка

Техническое задание на API-интеграцию должно позволять разработчику реализовать обмен, а владельцу процесса — проверить результат. Перечня «передавать клиентов, товары и заказы» недостаточно: неясны источник данных, момент передачи, обязательные поля, правила обновления, реакция на ошибку и критерий завершения операции.

Хорошее ТЗ строится от бизнес-события. Сначала описывают, что произошло и какой результат нужен двум системам, затем фиксируют объекты и поля, идентификаторы, последовательность вызовов, повторы, безопасность, мониторинг и приёмочные сценарии.

Начните с границы и результата интеграции

В одном абзаце зафиксируйте цель без технических украшений. Например: «После подтверждения заказа в интернет-магазине создать заказ в системе исполнения, зарезервировать доступный товар и вернуть на сайт подтверждённый номер и состояние. Изменения отгрузки и отмены передавать обратно».

Рядом перечислите то, что не входит в этап: старые заказы, бухгалтерские документы, массовая очистка справочника или обратное редактирование товара. Явная граница защищает проект от бесконечного расширения.

Раздел ТЗНа какой вопрос отвечаетПроверяемый результат
Цель и границыКакой процесс связываемПонятно, что входит в запуск
Объекты и владельцыГде создаются истинные данныеНет конфликтующего редактирования
События и последовательностьКогда и в каком порядке передаватьПроцесс воспроизводим
Ошибки и повторыКак система восстанавливаетсяНет дублей и тихих потерь
МониторингКто увидит отклонениеПроблема имеет владельца
ПриёмкаКак доказать готовностьЕсть однозначные тесты

Составьте реестр объектов и мастер-источников

Для клиента, товара, цены, остатка, заказа, оплаты и статуса определите систему-владельца. Если поле можно менять в обеих системах, ТЗ должно содержать правило разрешения конфликта. Фраза «двусторонняя синхронизация» без такого правила создаёт циклические обновления и случайные перезаписи.

Для каждого объекта нужны внутренний и внешний идентификаторы. Email, телефон или название товара нельзя использовать как единственный ключ: они меняются и могут повторяться. Связь идентификаторов хранится явно.

Описывайте поля вместе с правилами

Таблица полей должна содержать не только название и тип. Укажите обязательность, источник, допустимые значения, преобразование, поведение при пустом значении и пример без персональных данных.

ПолеПравилоОшибка или особый случай
external_idСтабильный уникальный ключ источникаПовтор обновляет тот же объект
statusСопоставляется по утверждённой таблицеНеизвестное значение помещается в очередь разбора
amountПередаётся с валютой и правилом округленияНесовпадение блокирует финансовое подтверждение
updated_atВремя изменения с часовым поясомСтарое событие не перезаписывает новое состояние
warehouse_idСсылка на таблицу соответствий складовНеизвестный склад требует настройки

Зафиксируйте события и порядок

Для каждого сценария укажите триггер, предусловия, запрос, ожидаемый ответ и последующие действия. «Заказ изменён» слишком широко: изменение комментария, адреса и состава имеют разные последствия после начала комплектации.

  1. Источник фиксирует бизнес-событие в собственной транзакции.
  2. Событие попадает в надёжную очередь обмена.
  3. Получатель проверяет идентификатор и версию данных.
  4. Операция выполняется один раз и возвращает однозначный результат.
  5. Источник отмечает доставку события либо планирует повтор.
  6. Контрольная сверка обнаруживает редкие пропуски.

Опишите повтор до того, как произойдёт сбой

Сеть может оборваться после выполнения операции, но до получения ответа. Поэтому повтор того же запроса должен быть безопасным. Клиент передаёт idempotency key или устойчивый идентификатор операции, а сервер возвращает прежний результат вместо создания дубля.

Разделите временные и бизнес-ошибки. Таймаут или недоступность сервиса допускают автоматический повтор с интервалом. Неизвестный товар, закрытый склад или запрещённый переход статуса требуют исправления данных или решения оператора. Бесконечно повторять их бессмысленно.

Не оставляйте мониторинг техническому журналу

Логи полезны разработчику, но бизнесу нужна очередь отклонений: объект, операция, причина, число попыток, время следующего повтора и ответственный. Для критических событий задают контрольный срок. Например, подтверждённый заказ не должен оставаться без результата резерва дольше утверждённого интервала.

Сценарий приёмкиОжидаемый результатЧто доказывает
Обычное созданиеОбъект создан и идентификаторы связаныОсновной маршрут работает
Повтор того же запросаДубль не создан, возвращён прежний результатИдемпотентность
Недоступность получателяСобытие сохранено и доставлено после восстановленияУстойчивость очереди
Некорректное полеПонятная ошибка и задача ответственномуУправляемость данных
События пришли не по порядкуСтарое состояние не перезаписало новоеКонтроль версий
Контрольная сверкаНамеренно пропущенный объект найденВыявление тихих потерь

Безопасность и эксплуатация

В ТЗ фиксируют способ авторизации, минимальные права, хранение секретов, шифрование канала, ограничение частоты, маскирование персональных данных в логах и порядок смены ключей. Боевые доступы не включают в документ и не передают вместе с примерами.

Также нужны владельцы систем, контакт при инциденте, допустимое окно недоступности, порядок остановки обмена и обратного запуска. Версия API и политика совместимости защищают от внезапного изменения одной стороны.

Финальная проверка ТЗ

  • цель сформулирована как бизнес-результат;
  • границы этапа и исключения перечислены;
  • для каждого объекта определён мастер-источник;
  • идентификаторы и таблицы соответствий описаны;
  • события имеют триггеры и предусловия;
  • повторы не создают дубли;
  • ошибки разделены по способу обработки;
  • мониторинг показывает бизнес-объект и ответственного;
  • приёмочные тесты включают негативные сценарии;
  • правила безопасности и эксплуатации согласованы.

Техническое задание готово, когда по нему можно не только написать код, но и доказать корректность обмена при обычной работе и сбоях. Для интеграций вокруг ядра Business Reactor такой контракт помогает сохранить единую логику заказов, статусов и ответственности между подключаемыми системами.

API, техническое задание, интеграция, обмен данными, идемпотентность, Business Reactor

0
20
Комментарии
Похожие статьи