Client and Validator of OpenAPI 3 Specifications
Project description
A Python OpenAPI 3 Specification client and validator for Python 3.
Validation Mode
This module can be run against a spec file to validate it like so:
python3 -m openapi3 /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 import yaml # load the spec file and read the yaml with open('openapi.yaml') as f: spec = yaml.safe_load(f.read()) # 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(linodes.data[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
HTTP basic authentication and HTTP digest authentication works like this:
# authenticate using a securityScheme defined in the spec's components.securtiySchemes # Tuple with (username, password) as second argument api.authenticate('basicAuth', ('username', 'password'))
Roadmap
The following features are planned for the future:
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for openapi3-1.0.1-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 99bf814c82cfc7b772719c74e75b12d2b45f286bfa3d3531dcb35f0e60366f47 |
|
MD5 | 4b87a69ac79641197f6702e37ca4d46e |
|
BLAKE2b-256 | fc783a3423ff7e81ce3b15829a273079845fb6bd68a228391fc36cd72c87527e |