client-side and server-side support for the OpenAPI Specification v3
Project description
About
Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI v3.0 and OpenAPI v3.1 specification.
Key features
Validation of requests and responses
Schema casting and unmarshalling
Media type and parameters deserialization
Security providers (API keys, Cookie, Basic and Bearer HTTP authentications)
Custom deserializers and formats
Integration with libraries and frameworks
Documentation
Check documentation to see more details about the features. All documentation is in the “docs” directory and online at openapi-core.readthedocs.io
Installation
Recommended way (via pip):
$ pip install openapi-core
Alternatively you can download the code and install from the repository:
$ pip install -e git+https://github.com/p1c2u/openapi-core.git#egg=openapi_core
Usage
Firstly create your specification object. By default, OpenAPI spec version is detected:
from json import load
from openapi_core import Spec
with open('openapi.json', 'r') as spec_file:
spec_dict = load(spec_file)
spec = Spec.create(spec_dict)
Request
Now you can use it to validate against requests
from openapi_core.validation.request import openapi_request_validator
result = openapi_request_validator.validate(spec, request)
# raise errors if request invalid
result.raise_for_errors()
# get list of errors
errors = result.errors
and unmarshal request data from validation result
# get parameters object with path, query, cookies and headers parameters
validated_params = result.parameters
# or specific parameters
validated_path_params = result.parameters.path
# get body
validated_body = result.body
# get security data
validated_security = result.security
Request object should implement OpenAPI Request protocol (See Integrations).
Response
You can also validate against responses
from openapi_core.validation.response import openapi_response_validator
result = openapi_response_validator.validate(spec, request, response)
# raise errors if response invalid
result.raise_for_errors()
# get list of errors
errors = result.errors
and unmarshal response data from validation result
# get headers
validated_headers = result.headers
# get data
validated_data = result.data
Response object should implement OpenAPI Response protocol (See Integrations).
In order to explicitly validate a:
OpenAPI 3.0 spec, import openapi_v30_request_validator or openapi_v30_response_validator
OpenAPI 3.1 spec, import openapi_v31_request_validator or openapi_v31_response_validator
from openapi_core.validation.response import openapi_v31_response_validator
result = openapi_v31_response_validator.validate(spec, request, response)
You can also explicitly import openapi_v3_request_validator or openapi_v3_response_validator which is a shortcut to the latest v3 release.
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
File details
Details for the file openapi_core-0.16.3.tar.gz
.
File metadata
- Download URL: openapi_core-0.16.3.tar.gz
- Upload date:
- Size: 35.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 688e6a7234fcc5d08e2c2756b2e148983203aaf34ea82fe530e5498737bc2927 |
|
MD5 | 0d04df9ae0e6d6a6226b5a5fa660d6ad |
|
BLAKE2b-256 | 9e4e1b1376124720d9bc0a9694b4e73b73ed5ee5fc0cc5901b1d2da5758ebc1c |
File details
Details for the file openapi_core-0.16.3-py3-none-any.whl
.
File metadata
- Download URL: openapi_core-0.16.3-py3-none-any.whl
- Upload date:
- Size: 68.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.1 CPython/3.11.1 Linux/5.15.0-1024-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 669dd9c90a0cdde60e339cd6fc93e5832aa87683e6702c29b5f119ce34fb2c59 |
|
MD5 | 62be9a716dcf12770d3a303599589633 |
|
BLAKE2b-256 | c6c1fed24fb47e933cd0881be3e1cbb6d8728f490281a5dc74804b65103245d2 |