Skip to content

Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI v3.0 and OpenAPI v3.1 specification.

License

Notifications You must be signed in to change notification settings

python-openapi/openapi-core

Folders and files

NameName
Last commit message
Last commit date

Latest commit

50d191a · Sep 2, 2022
Feb 2, 2021
May 7, 2021
Sep 2, 2022
May 14, 2021
Sep 2, 2022
Jul 15, 2018
Jan 31, 2021
Sep 20, 2017
Oct 29, 2018
Feb 14, 2021
May 8, 2021
Sep 2, 2022
Sep 2, 2022
Sep 2, 2022
Sep 2, 2022
Apr 3, 2021

Repository files navigation

openapi-core

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

About

Openapi-core is a Python library that adds client-side and server-side support for the OpenAPI Specification v3.

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:

from openapi_core import create_spec

spec = create_spec(spec_dict)

Request

Now you can use it to validate requests

from openapi_core.validation.request.validators import RequestValidator

validator = RequestValidator(spec)
result = validator.validate(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 be instance of OpenAPIRequest class (See Integrations).

Response

You can also validate responses

from openapi_core.validation.response.validators import ResponseValidator

validator = ResponseValidator(spec)
result = validator.validate(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 be instance of OpenAPIResponse class (See Integrations).

Related projects