Skip to content

pb33f/libopenapi-validator

Repository files navigation

libopenapi

Enterprise grade OpenAPI validation tools for golang.

Pipeline codecov discord Docs

A validation module for libopenapi.

libopenapi-validator will validate the following elements against an OpenAPI 3+ specification

  • http.Request - Validates the request against the OpenAPI specification
  • http.Response - Validates the response against the OpenAPI specification
  • libopenapi.Document - Validates the OpenAPI document against the OpenAPI specification
  • base.Schema - Validates a schema against a JSON or YAML blob / unmarshalled object

👉👉 Check out the full documentation 👈👈


Installation

go get github.com/pb33f/libopenapi-validator

Validate OpenAPI Document

go run github.com/pb33f/libopenapi-validator/cmd/validate@latest [--regexengine] [--yaml2json] <file>

Options

--regexengine

🔍 Example: Use a custom regex engine/flag (e.g., ecmascript)

go run github.com/pb33f/libopenapi-validator/cmd/validate@latest --regexengine=ecmascript <file>

🔧 Supported --regexengine flags/values (ℹ️ Default: re2)

  • none
  • ignorecase
  • multiline
  • explicitcapture
  • compiled
  • singleline
  • ignorepatternwhitespace
  • righttoleft
  • debug
  • ecmascript
  • re2
  • unicode

--yaml2json

🔍 Convert YAML files to JSON before validation (ℹ️ Default: false)

libopenapi passes map[interface{}]interface{} structures for deeply nested objects or complex mappings in the OpenAPI specification, which are not allowed in JSON. These structures cannot be properly converted to JSON by libopenapi and cannot be validated by jsonschema, resulting in ambiguous errors.

This flag allows pre-converting from YAML to JSON to bypass this limitation of the libopenapi.

When does this happen?

  • OpenAPI specs with deeply nested schema definitions
  • Complex allOf, oneOf, or anyOf structures with multiple levels
  • Specifications with intricate object mappings in examples or schema properties

Enabling this flag pre-converts the YAML document from YAML to JSON, ensuring a clean JSON structure before validation.

Example:

go run github.com/pb33f/libopenapi-validator/cmd/validate@latest --yaml2json <file>

Documentation

libopenapi and libopenapi-validator are products of Princess Beef Heavy Industries, LLC

Packages

No packages published

Contributors 20

Languages