The @iouring-engineering/openapi-merge repository
Welcome to the openapi-merge repository. This library is intended to be used for merging multiple OpenAPI 3.0 files together. The most common reason that developers want to do this is because they have multiple services that they wish to expose underneath a single API Gateway. Therefore, even though this merging logic is sufficiently generic to be used for most use cases, some of the feature decisions are tailored for that specific use case.
This is an extension of npm library openapi-merge, we forked existing library code from Github to add some additional features according to our micro services architecture.
- Main motive of building following features is to extend the usability of in microservices environment with more control.
In the merging of Openspec files from different service unit happens at the tag level. Tags from the openspec files becomes a section head in the generated API doc. There is no option to exclude or include certain services based on the URI path under the same tag from different microservice unit. Below is an example
- API-Gateway Login
- /user/login
- /user/get-access-token
- Login service
- /user/direct-login
- /user/change-password
- /user/logout
- /user/forgot-password
- If you want to disable /direct-login from Login microservice and use API Gateway Login in final openspecification file Below is the option,
"operationSelection": {
"excludePaths": [
{
"path": "/user/direct-login",
"method": "post"
}
]
}
Have brief understanding from below docs :
Screenshots
(An example of creating an openapi-merge.json configuration file for the CLI tool)
About this repository
This is a multi-package repository that contains:
- The @iouring-engineering/openapi-merge library:
- The @iouring-engineering/openapi-merge CLI tool:
Depending on your use-case, you may wish to use the CLI tool or the library in your project. Please see the readme file of the specific package for more details.
Developing on openapi-merge
This project is a multi-package repository and uses the bolt tool to manage these packages in one development experience.
After checking out this repository, you can run the following command to install the required dependencies:
bolt install
You can then test running the CLI tool by running:
yarn cli
If you wish to ensure that you can develop on the @iouring-engineering/openapi-merge
library in parallel to the @iouring-engineering/openapi-merge-cli
tool
then you must run the Typescript build for @iouring-engineering/openapi-merge
in watch mode. You can do this by:
bolt w openapi-merge build -w
This will ensure that the Typescript is compiled into JavaScript so that it can be used by the @iouring-engineering/openapi-merge-cli
tool.
For the other operations that you wish to perform, please see the package.json of the other packages in this repository.