10

Are there any tools/libraries to convert OpenAPI 2.0 definitions to OpenAPI 3.0, without doing it one per row?

I googled but found none.

Helen
  • 58,317
  • 8
  • 161
  • 218
Rumesh Madhusanka
  • 425
  • 1
  • 6
  • 15
  • Related: [Convert OpenAPI 3.0 to Swagger 2.0](https://stackoverflow.com/q/56637299/113116) – Helen Jan 15 '20 at 10:43

1 Answers1

42

Swagger Editor

Paste your OpenAPI 2.0 definition into https://editor.swagger.io and select Edit > Convert to OpenAPI 3 from the menu.

Swagger Editor conversion from OpenAPI 2.0 to OpenAPI 3.0

Swagger Converter

Converts OpenAPI 2.0 and Swagger 1.x definitions to OpenAPI 3.0.

https://converter.swagger.io/api/convert?url=OAS2_YAML_OR_JSON_URL

This gives you JSON. If you want YAML, send the request with the Accept: application/yaml header:

curl "https://converter.swagger.io/api/convert?url=OAS2_YAML_OR_JSON_URL" -H "Accept: application/yaml" -o ./openapi.yaml

API docs: https://converter.swagger.io

GitHub repo: https://github.com/swagger-api/swagger-converter

Swagger Codegen version 3.x

Can also convert OpenAPI 2.0 and Swagger 1.x definitions to OpenAPI 3.0. Swagger Codegen has a CLI version, Maven plugin, Docker images.

Here's an example using the command-line version (you can download the latest JAR from Maven Central). Write the entire command on one line. Use openapi-yaml to get YAML or openapi to get JSON.

java -jar swagger-codegen-cli-3.0.19.jar generate
     -l openapi-yaml
     -i https://petstore.swagger.io/v2/swagger.yaml
     -o OUT_DIR

GitHub repo: https://github.com/swagger-api/swagger-codegen

Helen
  • 58,317
  • 8
  • 161
  • 218
  • 1
    BTW: It can also be achieved with `openapi-generator-cli`: https://github.com/OpenAPITools/openapi-generator . – Michal Foksa Jan 15 '20 at 13:53
  • @MichalFoksa Feel free to post an answer with openapi-generator usage example. There are a few other converters (Mermade, API Transformer, ...), I just listed those that I've personally used. – Helen Jan 15 '20 at 14:03
  • 1
    Note that Swagger Editor also uses the online converter. It shows a message before doing so: "Swagger Editor's contents will be sent to https://converter.swagger.io/api/convert". – EndlosSchleife May 08 '20 at 10:22
  • `openapi-generator-cli` uses `-g` instead of `-l` shown here. Otherwise, seems to work similarly. – OneCricketeer May 06 '21 at 20:00