/openapi-aggregator-by-tags

Concatenate multiple OpenAPI in one file with Include and exclude tags

Primary LanguageKotlin

OpenAPI aggregator by Tags

Build project

Генерация агрегированного OpenAPI по нескольким файлам:

  1. Если ничего не задано, то результатом будет конкатенированный OpenAPI.
  2. Если задан параметр include, то в результирующий OpenAPI добавляются только те path, для которых заданы все переданные tags. Параметр exclude не учитывается.
  3. Если задан параметр exclude, то из всего множества tags удаляются те, что переданы в exclude.

При фильтрации результата используются следующий допущения:

  • Целевые tags строятся на базе блоке tags в верхнем уровне описания OpenAPI и к ним применяется фильтрация include, exclude.
  • Метод добавляется в результирующий OpenAPI, если всего tags содержатся в целевых tags.
  • Если метод добавляется в результирующий OpenAPI, то его имена объектов request и response сохраняются и при копировании схемы копируются только те объекты, на которые ссылались целевые методы.
  • Фильтрация выполняется только в блоке schemas, т.к. springdoc при генерации добавляет все объекты туда, но не заполняет headers, parameters, requestBodies, responses.

Важное замечание

При генерации OpenAPI с правилами фильтрации требуется перечитывать декларации OpenAPI из файла, т.к. при удалении метода он помечается null, а это влияет на apis: Map<String, OpenAPI>, который создается только один раз при инициализации приложения.