= Geronimo Microprofile OpenAPI

== Implementation

=== Artifact

[source,xml]
----
<parent>
  <groupId>org.apache.geronimo</groupId>
  <artifactId>geronimo-openapi</artifactId>
  <version>${openapi.version}</version>
</parent>
----

=== Dependencies

1. JAX-RS+Servlet
2. CDI (optional if used as a library)
3. JSONB (for JSON support)
4. Jackson+YAML extension (for YAML support)

== Maven Plugin

You can define the maven plugin to generate at build time the `openapi.json` file.
Then the runtime is able to load it directly and merge it with the current runtime.
The big advantage is to be able to use it without the runtime for documentation purposes.

Here is how to define it:

[source,xml]
----
<plugin>
  <groupId>org.apache.geronimo</groupId>
  <artifactId>geronimo-openapi-maven-plugin</artifactId>
  <version>${openapi.version}</version>
  <executions>
    <execution>
      <id>generate-openapi.json</id>
      <goals>
        <goal>openapi.json</goal>
      </goals>
      <configuration>
        <application>com.test.MyApp</application>
        <endpointClasses>
          <endpointClass>com.test.SomeEndpoint</endpointClass>
          <endpointClass>com.test.SomeOtherEndpoint</endpointClass>
        </endpointClasses>
        <info>
          <version>1</version>
          <title>My Title</title>
          <description>Bla Bla</description>
        </info>
      </configuration>
    </execution>
  </executions>
</plugin>
----
