API Reference

class defspec.spec.OpenAPI(*, openapi: str = '3.1.0', info: ~defspec.spec.OpenAPIInfo = <factory>, paths: dict[str, dict[str, ~defspec.spec.OpenAPIRoute]] = <factory>, defs: dict[str, dict] = <factory>, components: ~defspec.spec.OpenAPIComponent = <factory>, security: list[dict[str, list[str]]] = <factory>)[source]

OpenAPI specification.

Usage:
>>> openapi = OpenAPI()
>>> # init with customized info
>>> openapi = OpenAPI(
>>>     info=OpenAPIInfo(title="My API", version="1.2.3"),
>>>     components=OpenAPIComponent(
>>>         security_schemes={
>>>             "APIKey": SecuritySchemeAPIKey(name="X-Auth-Token")
>>>         }
>>>     ),
>>> )
class defspec.spec.OpenAPIComponent(*, schemas: dict[str, dict] = <factory>, security_schemes: dict[str, ~defspec.spec.SecuritySchemeHTTP | ~defspec.spec.SecuritySchemeAPIKey | ~defspec.spec.SecuritySchemeOAuth2 | ~defspec.spec.SecuritySchemeOpenID] = <factory>)[source]
class defspec.spec.SecuritySchemeHTTP(scheme: Literal['basic', 'bearer'])[source]
class defspec.spec.SecuritySchemeAPIKey(name: str, located_in: Literal['query', 'header', 'cookie'] = 'header')[source]
class defspec.spec.SecuritySchemeOpenID(open_id_connect_url: str)[source]
class defspec.spec.SecuritySchemeOAuth2(flows: OAuthFlow)[source]
class defspec.spec.OAuthFlow(authorization_code: OAuthFlowAuthorizationCode | None = None, implicit: ImplicitOAuthFlow | None = None, password: PasswordOAuthFlow | None = None, client_credentials: ClientCredentialsOAuthFlow | None = None)[source]

OAuth flow type.

One or more named flows are supported.

Previous name in OpenAPI 2.0:

  • authorizationCode: accessCode

  • implicit: implicit

  • password: password

  • clientCredentials: application

class defspec.spec.OAuthFlowAuthorizationCode(authorization_url: str, token_url: str, refresh_url: str | None = None, scopes: dict[str, str] = <factory>)[source]
class defspec.spec.ImplicitOAuthFlow(authorization_url: str, refresh_url: str | None = None, scopes: dict[str, str] = <factory>)[source]
class defspec.spec.PasswordOAuthFlow(token_url: str, refresh_url: str | None = None, scopes: dict[str, str] = <factory>)[source]
class defspec.spec.ClientCredentialsOAuthFlow(token_url: str, refresh_url: str | None = None, scopes: dict[str, str] = <factory>)[source]