A Python OpenAPI 3 Specification
_ client and validator for Python 3.
.. image:: https://github.com/Dorthu/openapi3/actions/workflows/main.yml/badge.svg :alt: GitHub Actions Build Badge
.. image:: https://badge.fury.io/py/openapi3.svg :target: https://badge.fury.io/py/openapi3
This module can be run against a spec file to validate it like so::
python3 -m openapi3 /path/to/spec
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 import yaml
with open('openapi.yaml') as f: spec = yaml.safe_load(f.read())
api = OpenAPI(spec)
regions = api.call_getRegions()
api.authenticate('personalAccessToken', my_token)
linodes = api.call_getLinodeInstances()
linode = api.call_getLinodeInstance(parameters={"linodeId": 123})
print(type(linode)) # openapi.schemas.Linode type(linode) == type(linodes.data[0]) # True
new_linode = api.call_createLinodeInstance(data={"region":"us-east","type":"g6-standard-2"})
type(new_linode) == type(linode) # True
HTTP basic authentication and HTTP digest authentication works like this::
api.authenticate('basicAuth', ('username', 'password'))
This project includes a test suite, run via pytest
. To run the test suite,
ensure that you've installed the dependencies and then run pytest
in the root
of this project.
The following features are planned for the future:
.. _OpenAPI 3 Specification: https://openapis.org .. _Linode's OpenAPI 3 Specification: https://developers.linode.com/api/v4