Python package
==============

By default, OpenAPI spec version is detected. To validate spec:

.. code:: python

    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
         
Add ``base_uri`` to validate spec with relative files:

.. code:: python

    validate(spec_dict, base_uri='file:///path/to/spec/openapi.yaml')

You can also validate spec from url:

.. code:: python

    from openapi_spec_validator import validate_url

    # If no exception is raised by validate_url(), the spec is valid.
    validate_url('http://example.com/openapi.json')

In order to explicitly validate a:

* Swagger / OpenAPI 2.0 spec, import ``OpenAPIV2SpecValidator``
* OpenAPI 3.0 spec, import ``OpenAPIV30SpecValidator`` 
* OpenAPI 3.1 spec, import ``OpenAPIV31SpecValidator``
* OpenAPI 3.2 spec, import ``OpenAPIV32SpecValidator``

and pass the validator class to ``validate`` or ``validate_url`` function:

.. code:: python

    validate(spec_dict, cls=OpenAPIV32SpecValidator)

You can also explicitly import ``OpenAPIV3SpecValidator`` which is a shortcut to the latest v3 release.

If you want to iterate through validation errors:

.. code:: python

    from openapi_spec_validator import OpenAPIV32SpecValidator

    errors_iterator = OpenAPIV32SpecValidator(spec).iter_errors()

Resolved path cache
-------------------

``openapi-spec-validator`` can configure the ``jsonschema-path`` resolved
path cache through an environment variable:

.. code-block:: bash

   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``.

Schema validator backend can be selected with:

.. code-block:: bash

   OPENAPI_SPEC_VALIDATOR_SCHEMA_VALIDATOR_BACKEND=jsonschema-rs

Allowed values are ``auto`` (default), ``jsonschema``, and
``jsonschema-rs`` (requires the ``jsonschema-rs`` Python package to be
installed, for example via ``pip install jsonschema-rs``).
Invalid values raise a warning and fall back to ``auto``.
