Если у вас есть валидация входящих данных в виде каких-то жсон схем или т.п., то лучше доки генерить оттуда, т.к. оно всегда будет актуально в отличии от жсдоков, которые живут отдельно от кода.
Лично я юзаю фастивай и там схемы описываются для каждого эндпоинта. Потом из этих схем можно легкло слепить свагер. Я для себя написал вот такой модуль:
https://github.com/SkeLLLa/fastify-oasв теории вы можете по тому же принципу и для вашего кода накидать что-то подобное.
Можно конечно и жить, когда код отдельно - дока (сваггер) отдельно, но обычно это приводит к тому, что на доку забивают и она стает неактуальной. Поэтому надо либо с кода генерить доку, либо по доке генерить код автоматом.