Skip to main content

client-side and server-side support for the OpenAPI Specification v3

Project description

https://img.shields.io/pypi/v/openapi-core.svg https://travis-ci.org/p1c2u/openapi-core.svg?branch=master https://img.shields.io/codecov/c/github/p1c2u/openapi-core/master.svg?style=flat https://img.shields.io/pypi/pyversions/openapi-core.svg https://img.shields.io/pypi/format/openapi-core.svg https://img.shields.io/pypi/status/openapi-core.svg

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

openapi_core-0.16.2.tar.gz (35.2 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

openapi_core-0.16.2-py3-none-any.whl (68.2 kB view details)

Uploaded Python 3

File details

Details for the file openapi_core-0.16.2.tar.gz.

File metadata

  • Download URL: openapi_core-0.16.2.tar.gz
  • Upload date:
  • Size: 35.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1023-azure

File hashes

Hashes for openapi_core-0.16.2.tar.gz
Algorithm Hash digest
SHA256 3c0ff39a70f8599c4303dc87247763f731481c39fc014c7ba72e30f1016c662d
MD5 611621e6cb2b52827b0335cc40c966ed
BLAKE2b-256 85f16b90d1f75d900a6f6fbaf9a4eb6a04bb6c2368295287c7811765b9edbe01

See more details on using hashes here.

File details

Details for the file openapi_core-0.16.2-py3-none-any.whl.

File metadata

  • Download URL: openapi_core-0.16.2-py3-none-any.whl
  • Upload date:
  • Size: 68.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.11.0 Linux/5.15.0-1023-azure

File hashes

Hashes for openapi_core-0.16.2-py3-none-any.whl
Algorithm Hash digest
SHA256 7b540f8ac6e9e472e3fd88fb5804f9ea4c0dcd920289363bd11ffdb5285aac07
MD5 b1df82a158b9b28777a19d18a6b1a002
BLAKE2b-256 0676935555a801c82424628680a03c80f40d2d45c65714b3339a2ea4b7f62da0

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page