https://github.com/romanow/aggregator-by-tags
OpenAPI aggregator by Tags
https://github.com/romanow/aggregator-by-tags
aggregator merge-openapi openapi
Last synced: about 2 months ago
JSON representation
OpenAPI aggregator by Tags
- Host: GitHub
- URL: https://github.com/romanow/aggregator-by-tags
- Owner: Romanow
- License: mit
- Created: 2023-06-30T15:40:48.000Z (about 3 years ago)
- Default Branch: master
- Last Pushed: 2025-05-10T09:09:48.000Z (about 1 year ago)
- Last Synced: 2025-05-10T10:22:09.097Z (about 1 year ago)
- Topics: aggregator, merge-openapi, openapi
- Language: Kotlin
- Homepage: https://romanow.github.io/aggregator-by-tags/
- Size: 130 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
[](https://github.com/Romanow/aggregator-by-tags/actions/workflows/build.yml)
[](https://github.com/pre-commit/pre-commit)
[](https://github.com/Romanow/aggregator-by-tags/releases/latest)
[](https://codecov.io/gh/Romanow/aggregator-by-tags)
[](https://github.com/Romanow/aggregator-by-tags/blob/master/LICENSE)
# OpenAPI aggregator by Tags
## Подключение
### Maven
```xml
ru.romanow-alex
aggregator-by-tags
${aggregator-by-tags.version}
```
### Gradle
```groovy
testImplementation "ru.romanow-alex:aggregator-by-tags:$aggregatorByTagsVersion"
```
## Реализация
Генерация агрегированного 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](https://springdoc.org/) при генерации добавляет все
объекты туда, но не заполняет `headers`, `parameters`, `requestBodies`, `responses`.