davidmoten / openapi-to-plantuml

Converts OpenAPI 3.0 definitions to Plant UML text for visualisation of your API.
Apache License 2.0
91 stars 18 forks source link
java online openapi openapi-documentation openapi3 plantuml uml-diagram

openapi-to-plantuml


codecov
Maven Central

Java library to generate a PlantUML Class Diagram (supplemented with path information) from an OpenAPI 3.0 definition (YAML or JSON).

Try it online here.

Features

Supports all features of OpenAPI 3.0 including

Status: Released to Maven Central

Limitations

TODO

openapi-example.yml:

How to build

mvn clean install

How to quickly convert your OpenAPI definition

The easiest thing to do is to use the online converter. If your definition is large then PlantText may refuse to render it (the Plant UML text is encoded and added to the PlantText url which can get too long). In that case just add your yaml file to src/test/resources/demo/ directory and run mvn test. The generated image will be saved in target/demos.

Getting started

Add this dependency to your pom.xml:

<dependency>
  <groupId>com.github.davidmoten</groupId>
  <artifactId>openapi-to-plantuml</artifactId>
  <version>VERSION_HERE</version>
</dependency>

Or use the standalone jar-with-dependencies artifact from Maven Central (or from the target directory if you have built the project locally):

How to produce a single diagram

java -jar openapi-to-plantuml-VERSION_HERE-jar-with-dependencies.jar single openapi.yaml PNG openapi.png

Large diagrams are better with SVG format (rendering is sharp at every zoom level) so just replace PNG in the above command with SVG. If you still want a PNG and you find it is getting cut off then you need to increase the plantuml image size limit like below. Increase the limit till your diagram fits. You may need to increase memory using this JVM arg -Xmx1024m.

java -DPLANTUML_LIMIT_SIZE=8192 -jar openapi-to-plantuml-VERSION_HERE-jar-with-dependencies.jar openapi.yaml PNG openapi.png

How to produce a diagram per service method

java -jar openapi-to-plantuml-VERSION_HERE-jar-with-dependencies.jar split openapi.yaml PNG diagrams

The above call will write a diagram per method into the diagrams directory (and will create it if it doesn't exist).

As an example, do mvn clean test on the project and look in target/unqork.svg directory.

Usage

import com.github.davidmoten.oas3.puml.Converter;

String puml = Converter.openApiToPuml(openapi);

System properties

Examples

Unit test examples are here.

petstore-expanded.yml:

bookstore.yml:

ecommerce.yml

news.yml:

strava.yml:

twitter.yml:

ebay.yml: