В теории все достаточно просто. Работа делится на три независимые группы: серверная часть (S), контроллер (C), приложение (A).
1) Все три части обмениваются информацией:
- S -- C - описываете протокол взаимодействия и передаваемые структуры данных. Например протокол REST, данные в JSON, формат данных такой-то, ответы такие-то, эндпоинты такие-то и для того-то. Ну или протокол MQTT, схема очередей такая-то, данные такие-то...
- S -- A - протокол GraphQL, схема такая-то...
2) Создаете тестовые данные и тестовые ответчики с развертыванием архитектуры (или без развертывания)
3) Передаете все это разработчикам
4) Есть что идет не так, данных там не хватает, в форматы не помещаетесь - пишете задачу и согласуете прямо с пункта 1), то, что не согласовано
5) Согласовывать нечего, принимаете продукт, проверяя его на тестовых данных пунктов 1) и 2)
6) Готовый продукт передаете заказчику
7) Если что-то идет не так, возвращаетесь на пункт 4)