Releases: openapi-processor/openapi-parser
Releases · openapi-processor/openapi-parser
2025.2
2025.1
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
2024.4
2024.3
2024.2
2024.1
2023.6
2023.5
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