Skip to main content

Client and Validator of OpenAPI 3 Specifications

Project description


.. highlight:: python

A Python `OpenAPI 3 Specification`_ client and validator for Python 3.

.. image::


This is a work in progress, and may change significantly in the future. Many
features are presently absent, and many common cases may not be implemented.

Validation Mode

This module can be run against a spec file to validate it like so::

python3 -m openapi /path/to/spec

Usage as a Client

This library also functions as an interactive client for arbitrary OpenAPI 3
specs. For example, using `Linode's OpenAPI 3 Specification`_ for reference::

from openapi3 import OpenAPI

# load the spec file and read the yaml
with open('openapi.yaml') as f:
spec = yaml.safe_load(

# parse the spec into python - this will raise if the spec is invalid
api = OpenAPI(spec)

# call operations and receive result models
regions = api.call_getRegions()

# authenticate using a securityScheme defined in the spec's components.securtiySchemes
api.authenticate('personalAccessToken', my_token)

# call an operation that requires authentication
linodes = api.call_getLinodeInstances()

# call an opertaion with parameters
linode = api.call_getLinodeInstance(parameters={"linodeId": 123})

# the models returns are all of the same (generated) type
print(type(linode)) # openapi.schemas.Linode
type(linode) == type([0]) # True

# call an operation with a request body
new_linode = api.call_createLinodeInstance(data={"region":"us-east","type":"g6-standard-2"})

# the returned models is still of the correct type
type(new_linode) == type(linode) # True


The following still needs to be done:

* Request body models, creation, and validation.
* Parameters interface with validation and explicit typing.
* Support for more authentication types.
* Support for non-json request/response content.
* Full support for all objects defined in the specification.

.. _OpenAPI 3 Specification:
.. _Linode's OpenAPI 3 Specification:

Project details

Release history Release notifications

Download files

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

Filename, size & hash SHA256 hash help File type Python version Upload date
openapi3-0.0.1-py3-none-any.whl (19.8 kB) Copy SHA256 hash SHA256 Wheel py3
openapi3-0.0.1.tar.gz (16.2 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page