Skip to main content

OpenAPI 2.0 (aka Swagger) and OpenAPI 3 spec validator

Project description

https://img.shields.io/docker/v/pythonopenapi/openapi-spec-validator.svg?color=%23086DD7&label=docker%20hub&sort=semver https://img.shields.io/pypi/v/openapi-spec-validator.svg https://img.shields.io/codecov/c/github/python-openapi/openapi-spec-validator/master.svg?style=flat https://img.shields.io/pypi/pyversions/openapi-spec-validator.svg https://img.shields.io/pypi/format/openapi-spec-validator.svg https://img.shields.io/pypi/status/openapi-spec-validator.svg

About

OpenAPI Spec Validator is a CLI, pre-commit hook and python package that validates OpenAPI Specs against the OpenAPI 2.0 (aka Swagger), OpenAPI 3.0 OpenAPI 3.1 and OpenAPI 3.2 specification. The validator aims to check for full compliance with the Specification.

Documentation

Check documentation to see more details about the features. All documentation is in the “docs” directory and online at openapi-spec-validator.readthedocs.io

Installation

pip install openapi-spec-validator

Alternatively you can download the code and install from the repository:

pip install -e git+https://github.com/python-openapi/openapi-spec-validator.git#egg=openapi_spec_validator

Usage

CLI (Command Line Interface)

Straight forward way:

openapi-spec-validator openapi.yaml

pipes way:

cat openapi.yaml | openapi-spec-validator -

docker way:

docker run -v path/to/openapi.yaml:/openapi.yaml --rm pythonopenapi/openapi-spec-validator /openapi.yaml

or more pythonic way:

python -m openapi_spec_validator openapi.yaml

For more details, read about CLI (Command Line Interface).

pre-commit hook

repos:
-   repo: https://github.com/python-openapi/openapi-spec-validator
    rev: 0.9.0 # The version to use or 'master' for latest
    hooks:
    -   id: openapi-spec-validator

For more details, read about pre-commit hook.

Python package

from openapi_spec_validator import validate
from openapi_spec_validator.readers import read_from_filename

spec_dict, base_uri = read_from_filename('openapi.yaml')

# If no exception is raised by validate(), the spec is valid.
validate(spec_dict)

# Example of an intentionally invalid spec.
invalid_spec = {'openapi': '3.1.0'}

validate(invalid_spec)

Traceback (most recent call last):
    ...
OpenAPIValidationError: 'info' is a required property

For more details, read about Python package.

Performance tuning

You can tune resolved-path caching with an environment variable:

OPENAPI_SPEC_VALIDATOR_RESOLVED_CACHE_MAXSIZE=2048

Rules:

  • Default is 128.

  • Set 0 to disable the resolved cache.

  • Invalid values (non-integer or negative) fall back to 128.

You can also choose schema validator backend:

OPENAPI_SPEC_VALIDATOR_SCHEMA_VALIDATOR_BACKEND=jsonschema-rs

Allowed values are auto (default), jsonschema, and jsonschema-rs. Invalid values raise a warning and fall back to auto.

If you select the jsonschema-rs backend, make sure the optional jsonschema-rs package is installed:

pip install jsonschema-rs

License

Copyright (c) 2017-2023, Artur Maciag, All rights reserved. Apache v2

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

openapi_spec_validator-0.9.0.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openapi_spec_validator-0.9.0-py3-none-any.whl (50.3 kB view details)

Uploaded Python 3

File details

Details for the file openapi_spec_validator-0.9.0.tar.gz.

File metadata

  • Download URL: openapi_spec_validator-0.9.0.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for openapi_spec_validator-0.9.0.tar.gz
Algorithm Hash digest
SHA256 6d648cff6490ebb799dcfe273792f2941c050158854c721f086599d845da78b8
MD5 4a92637c3826e034709ad0bc3476ec63
BLAKE2b-256 8fd2640b5149cd5688bc0ad1fdbb4df6a2f7b84a093c8d787c27d566132f8b8b

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_spec_validator-0.9.0.tar.gz:

Publisher: python-publish.yml on python-openapi/openapi-spec-validator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file openapi_spec_validator-0.9.0-py3-none-any.whl.

File metadata

File hashes

Hashes for openapi_spec_validator-0.9.0-py3-none-any.whl
Algorithm Hash digest
SHA256 222fecffc7714f6d0a6ad62c0e4b66cc2b7dbfafb7b93acfc6c308abbdb51af8
MD5 6f7219abc77d05ec360cfa9e293aa0e4
BLAKE2b-256 95d8321ff889330acca2e3097f3d4f80a40bcc41b6d34d302978ab32c449520b

See more details on using hashes here.

Provenance

The following attestation bundles were made for openapi_spec_validator-0.9.0-py3-none-any.whl:

Publisher: python-publish.yml on python-openapi/openapi-spec-validator

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page