Использование URL-адреса обратного вызова предъявляет как минимум одно потенциально важное требование: клиент должен быть напрямую доступен через общую сеть в любом месте c. Это не обязательно проблема, если можно предположить, что все возможные клиенты удовлетворяют этому требованию и принимают соединения от API, но эта информация, безусловно, жизненно важна, и добавление этого требования может вызвать серьезные головные боли в будущем, если при в какой-то момент люди хотят использовать этот API, например, в настольных приложениях.
Поскольку заявленная причина отказа от вашего рабочего процесса - «хорошая практика программирования», вы начинаете с недостатка в том, что придумываете что-то, что будут приняты без дополнительной информации. Если требование доступности URL-адреса обратного вызова - это то, с чем они готовы смириться, это, безусловно, вариант, но я бы сказал, что вам нужно довольно тщательно учитывать и предупреждать пользователей о состояниях сбоев.
Другая возможность будет отдельной конечной точкой «все в одном», которая либо сама вызывает другие и блокирует, либо просто напрямую выполняет внутренние функции без промежуточных запросов (хотя для этого, вероятно, потребуется либо выполнить собственный опрос, минуя очередь, либо использовать собственные внутренние обратные вызовы для завершения sh запроса после завершения обработки файла).
Я бы также повторно рассмотрел все предоставленные требования и определил, как и почему они были либо неверными, либо недостаточными для адекватного определения приемлемый результат (или была ли неправильная интерпретация с вашей стороны). Кажется, вряд ли это будет разовая проблема, и если есть исправление процесса или что-то вроде внутренних рекомендаций по разработке, которые потенциально могут ограничить будущие недоразумения или разногласия в архитектуре, над этим стоит поработать.