Ситуация: есть потребность создать новый эндпоинт в существующем сервисе, который до этого работал только синхронно по HTTP. Новый эндпоинт будет:
- принимать соединения от фронта;
- получать от фронта потоково аудио;
- передавать под капотом данные аудио в сервис расшифровки текста по gRPC;
- потоково (чанками) возвращать текст;
- как-то штатно или с той или иной ошибкой закрывать соединение.
Что хочется получить от документации:
- некий стандарт без костылей;
- описание процесса подключения и серверов, портов;
- версионируемость эндпоинта (как это делается для вебсокетов?);
- описание потокового ввода и вывода чанками;
- описание кодов ошибок, успешных кодов.
Остановиться хотелось бы либо на OpenAPI, либо на AsyncAPI, так как они всем понятны. Но если стандартом является другие варианты, готов рассмотреть и их.
Какие смущают вопросы, как имеющего опыт в написании документации в формате OpenAPI / AsyncAPI:
- Как версионировать?
- Как корректно описывать поток?
- Есть ли разделение например на установку соединения и описание что происходит внутри него?
- В какую сторону смотреть при выборе пути эндпоинта, можно ли применять к ним те же правила, что привычны для REST / RPC или иных вариантов?