The library includes support for the OpenAPI Specification.
The library can be used to validate requests and responses with the use of the appropriate meta-schema.
Dialect | Meta-schema |
---|---|
https://spec.openapis.org/oas/3.0/dialect | com.networknt.schema.oas.OpenApi30.getInstance() |
https://spec.openapis.org/oas/3.1/dialect/base | com.networknt.schema.oas.OpenApi31.getInstance() |
JsonSchemaFactory factory = JsonSchemaFactory.getInstance(VersionFlag.V202012, builder -> builder.metaSchema(OpenApi31.getInstance()) .defaultMetaSchemaIri(OpenApi31.getInstance().getIri())); JsonSchema schema = factory.getSchema(SchemaLocation.of( "classpath:schema/oas/3.1/petstore.yaml#/components/schemas/PetRequest")); String input = "{\r\n" + " \"petType\": \"dog\",\r\n" + " \"bark\": \"woof\"\r\n" + "}"; Set<ValidationMessage> messages = schema.validate(input, InputFormat.JSON);
The library can be used to validate OpenAPI documents, however the OpenAPI meta-schema documents are not bundled with the library.
It is recommended that the relevant meta-schema documents are placed in the classpath and are mapped otherwise they will be loaded over the internet.
The following are the documents required to validate a OpenAPI 3.1 document
https://spec.openapis.org/oas/3.1/schema-base/2022-10-07
https://spec.openapis.org/oas/3.1/schema/2022-10-07
https://spec.openapis.org/oas/3.1/dialect/base
https://spec.openapis.org/oas/3.1/meta/base
SchemaValidatorsConfig config = new SchemaValidatorsConfig(); config.setPathType(PathType.JSON_POINTER); JsonSchema schema = JsonSchemaFactory .getInstance(VersionFlag.V202012, builder -> builder.schemaMappers(schemaMappers -> schemaMappers .mapPrefix("https://spec.openapis.org/oas/3.1", "classpath:oas/3.1"))) .getSchema(SchemaLocation.of("https://spec.openapis.org/oas/3.1/schema-base/2022-10-07"), config); Set<ValidationMessage> messages = schema.validate(openApiDocument, InputFormat.JSON);