Skip to content

Releases: openapi-processor/openapi-parser

2025.2

09 Mar 09:55
Compare
Choose a tag to compare

io-jackson

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.18.3

io-snakeyaml

updated dependencies

  • updated org.yaml:snakeyaml to 2.4.0

2025.1

01 Feb 17:06
Compare
Choose a tag to compare

openapi-parser 3.0/3.1

bundling

OpenApiResult has a new bundle() method to bundle a multi-file OpenAPI document.

/**
 * Bundle the document, i.e. merge a multi-file document into a single file document. The bundled document has to
 * be parsed to navigate its OpenAPI model.
 *
 * @return a raw bundled copy of the OpenAPI document.
 */
@Experimental
Map<String, Object> bundle();

It can be used like this:

// kotlin
import io.openapiparser.model.v31.OpenApi
import io.openapiprocessor.jsonschema.reader.UriReader
import io.openapiprocessor.jsonschema.schema.DocumentLoader
import io.openapiprocessor.jsonschema.schema.DocumentStore
import io.openapiprocessor.snakeyaml.SnakeYamlConverter
import java.net.URI

"bundle example" {
    val loader = DocumentLoader(UriReader(), SnakeYamlConverter())

    // parse a multi file OpeAPI document (from resources)
    val originalDocs = DocumentStore()
    val originalParser = OpenApiParser(originalDocs, loader)
    val originalResult = originalParser.parse("/original/openapi.yaml")

    // bundle the OpenAPI, i.e. move $ref content to "components.schemas" and friends if the
    // ref points to a different file. The original document is not touched.
    val bundled = originalResult.bundle()

    // parse the bundled document (this creates a reference map for ref lookups) to navigate
    // its OpenAPI model.
    val bundledDocs = DocumentStore()
    val bundledParser = OpenApiParser(bundledDocs, loader)
    val bundledResult = bundledParser.parse(URI.create("/original/openapi.yaml"), bundled)

    val api = bundledResult.getModel(OpenApi::class.java)
    val summary = api.info.summary

    // We could use the same document store, but it would override the original (root) document
    // if we use the same id (in this case file name). We can use a different id to avoid that.
    //val bundledParser = OpenApiParser(originalDocs, loader)
    //val bundledResult = bundledParser.parse(URI.create("/bundled/openapi.yaml"), bundled)
}

writing an OpenAPI document

OpenApiResult has a new write(Writer writer) method to write a single-file OpenAPI document.

/**
 * Write the document. This will produce useful results only if the document is a single file document. Bundling
 * can be used to create a single file document.
 *
 * @param writer the target writer
 */
@Experimental
void write(Writer writer) throws IOException;

Based on jackson (io-jackson library) or snakeyaml (io-snakeyaml) an OpenAPI document can be written like this:

// kotlin
import io.openapiprocessor.jackson.JacksonJsonWriter
import io.openapiprocessor.jackson.JacksonYamlWriter
import io.openapiprocessor.snakeyaml.SnakeYamlWriter

// write an OpenAPI document. Use the alternative constructor to configure jackson or snakeyaml specific formatting.
val out = StringWriter()
val writer = JacksonYamlWriter(out)
//val writer = SnakeYamlWriter(out)
//val writer = JacksonJsonWriter(out)

openApiResult.write(writer)

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.18.2

2024.5

03 Nov 17:07
Compare
Choose a tag to compare

openapi-parser 3.0/3.1

#114, fix

  • in OpenAPI 3.1 exclusiveMinimum & excusiveMaximum are numbers and not booleans.

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.18.1

2024.4

29 Sep 13:43
Compare
Choose a tag to compare

openapi-parser 3.0/3.1

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.18.0

io-snakeyaml

updated dependencies

  • updated org.snakeyaml:snakeyaml to 2.13.0

2024.3

09 May 15:49
Compare
Choose a tag to compare

openapi-parser 3.0/3.1

new

  • resolve response $ref, i.e. added public Response getRefObject () method to Response

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.17.1.

2024.2

24 Mar 16:23
Compare
Choose a tag to compare

io-jackson

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.17.0.

2024.1

21 Jan 17:48
Compare
Choose a tag to compare

io-jackson

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.16.1 and a couple of other dependencies

2023.6

19 Nov 15:01
Compare
Choose a tag to compare

io-jackson

updated dependencies

  • updated com.fasterxml.jackson:jackson-* to 2.16.0

2023.5

22 Oct 13:15
Compare
Choose a tag to compare

openapi-parser

#44, follow http redirects

json-schema.org does now provide old schemas by redirecting http to https. The UriReader did not handle the http redirect. It is now using java.net.http.HttpClient to handle http(s) uris (including redirects).

io-jackson

updated dependencies

  • com.fasterxml.jackson:jackson-* from 2.15.2 to 2.15.3

2023.4

17 Sep 08:11
Compare
Choose a tag to compare

openapi-parser

parser api addition

added getOperations() to PathItem. It returns a map of all operations in the same order as in the OpenAPI description.