flask_jsonrpc.contrib.openrpc package

Submodules

flask_jsonrpc.contrib.openrpc.methods module

openrpc_discover_method(jsonrpc_sites, *, openrpc_schema=None)[source]

Create an OpenRPC discover method.

Parameters:
Returns:

The OpenRPC discover method.

Return type:

Callable[…, flask_jsonrpc.contrib.openrpc.typing.OpenRPCSchema]

See also

flask_jsonrpc.contrib.openrpc._openrpc_discover_method()

flask_jsonrpc.contrib.openrpc.typing module

class BaseModel[source]

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class OAuth2FlowType(value, names=_not_given, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

AUTHORIZATION_CODE = 'authorizationCode'
CLIENT_CREDENTIALS = 'clientCredentials'
PASSWORD = 'password'
class OAuth2Flow(*, type, authorization_url=None, refresh_url=None, token_url=None, scopes=<factory>)[source]

Bases: BaseModel

Parameters:
type: OAuth2FlowType
authorization_url: str | None
refresh_url: str | None
token_url: str | None
scopes: dict[str, str]
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class OAuth2(*, flows, type='oauth2', description=None)[source]

Bases: BaseModel

Parameters:
flows: list[OAuth2Flow]
type: t.Literal['oauth2']
description: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class BearerAuth(*, in_, type='bearer', name='Authorization', description=None, scopes=<factory>)[source]

Bases: BaseModel

Parameters:
in_: str
type: t.Literal['bearer']
name: str
description: str | None
scopes: dict[str, str]
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class APIKeyAuth(*, in_, type='apikey', name='api_key', description=None, scopes=<factory>)[source]

Bases: BaseModel

Parameters:
in_: str
type: t.Literal['apikey']
name: str
description: str | None
scopes: dict[str, str]
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ParamStructure(value, names=_not_given, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

BY_NAME = 'by-name'
BY_POSITION = 'by-position'
EITHER = 'either'
class SchemaDataType(value, names=_not_given, *values, module=None, qualname=None, type=None, start=1, boundary=None)[source]

Bases: Enum

NULL = 'null'
BOOLEAN = 'boolean'
OBJECT = 'object'
ARRAY = 'array'
INTEGER = 'integer'
STRING = 'string'
static from_rpc_describe_type(st)[source]
Parameters:

st (str)

Return type:

SchemaDataType

class Schema(*, id=None, title=None, format=None, enum=None, type=None, all_of=None, any_of=None, one_of=None, not_=None, pattern=None, minimum=None, maximum=None, exclusive_minimum=None, exclusive_maximum=None, multiple_of=None, min_length=None, max_length=None, properties=None, pattern_properties=None, additional_properties=None, property_names=None, min_properties=None, max_properties=None, required=None, defs=None, items=None, prefix_items=None, contains=None, min_contains=None, max_contains=None, min_items=None, max_items=None, unique_items=None, ref=None, description=None, deprecated=None, default=None, examples=None, read_only=None, write_only=None, const=None, dependent_required=None, dependent_schemas=None, if_=None, then=None, else_=None, schema=None)[source]

Bases: BaseModel

Parameters:
id: str | None
title: str | None
format: str | None
enum: list[t.Any] | None
type: SchemaDataType | list[SchemaDataType] | None
all_of: list[Schema] | None
any_of: list[Schema] | None
one_of: list[Schema] | None
not_: Schema | None
pattern: str | None
minimum: float | None
maximum: float | None
exclusive_minimum: float | None
exclusive_maximum: float | None
multiple_of: float | None
min_length: int | None
max_length: int | None
properties: dict[str, Schema] | None
pattern_properties: dict[str, Schema] | None
additional_properties: Schema | None
property_names: Schema | None
min_properties: int | None
max_properties: int | None
required: list[str] | None
defs: dict[str, Schema] | None
items: Schema | None
prefix_items: list[Schema] | None
contains: Schema | None
min_contains: int | None
max_contains: int | None
min_items: int | None
max_items: int | None
unique_items: bool | None
ref: str | None
description: str | None
deprecated: bool | None
default: t.Any | None
examples: list[t.Any] | None
read_only: bool | None
write_only: bool | None
const: t.Any | None
dependent_required: dict[str, list[str]] | None
dependent_schemas: dict[str, Schema] | None
if_: Schema | None
then: Schema | None
else_: Schema | None
schema_: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Reference(*, ref)[source]

Bases: BaseModel

Parameters:

ref (str)

ref: str
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ContentDescriptor(*, name, schema, summary=None, description=None, required=None, deprecated=None)[source]

Bases: BaseModel

Parameters:
  • name (str)

  • schema (Schema)

  • summary (str | None)

  • description (str | None)

  • required (bool | None)

  • deprecated (bool | None)

name: str
schema_: Schema
summary: str | None
description: str | None
required: bool | None
deprecated: bool | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Contact(*, name=None, url=None, email=None)[source]

Bases: BaseModel

Parameters:
  • name (str | None)

  • url (str | None)

  • email (str | None)

name: str | None
url: str | None
email: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class License(*, name, url=None)[source]

Bases: BaseModel

Parameters:
name: str
url: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Info(*, title, version, description=None, terms_of_service=None, contact=None, license=None)[source]

Bases: BaseModel

Parameters:
  • title (str)

  • version (str)

  • description (str | None)

  • terms_of_service (str | None)

  • contact (Contact | None)

  • license (License | None)

title: str
version: str
description: str | None
terms_of_service: str | None
contact: Contact | None
license_: License | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ServerVariable(*, default, enum=None, description=None)[source]

Bases: BaseModel

Parameters:
default: str
enum: list[str] | None
description: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Server(*, url, name='default', summary=None, description=None, variables=None)[source]

Bases: BaseModel

Parameters:
url: str
name: str
summary: str | None
description: str | None
variables: dict[str, ServerVariable] | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Example(*, name, value, summary=None, description=None, external_value=None)[source]

Bases: BaseModel

Parameters:
  • name (str)

  • value (Any)

  • summary (str | None)

  • description (str | None)

  • external_value (str | None)

name: str
value: t.Any
summary: str | None
description: str | None
external_value: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ExamplePairing(*, name=None, params=None, summary=None, description=None, result=None)[source]

Bases: BaseModel

Parameters:
name: str | None
params: list[Example] | None
summary: str | None
description: str | None
result: Example | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

Bases: BaseModel

Parameters:
  • name (str)

  • summary (str | None)

  • description (str | None)

  • method (str | None)

  • params (Any | None)

  • server (Server | None)

name: str
summary: str | None
description: str | None
method: str | None
params: t.Any | None
server: Server | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Error(*, code, message, data=None)[source]

Bases: BaseModel

Parameters:
code: int
message: str
data: t.Any | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class ExternalDocumentation(*, url, description=None)[source]

Bases: BaseModel

Parameters:
  • url (str)

  • description (str | None)

url: str
description: str | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Tag(*, name, summary=None, description=None, external_docs=None)[source]

Bases: BaseModel

Parameters:
name: str
summary: str | None
description: str | None
external_docs: ExternalDocumentation | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Components(*, content_descriptors=None, schemas=None, examples=None, links=None, errors=None, example_pairing_objects=None, tags=None, x_security_schemes=None)[source]

Bases: BaseModel

Parameters:
content_descriptors: dict[str, ContentDescriptor] | None
schemas: dict[str, Schema] | None
examples: dict[str, Example] | None
errors: dict[str, Error] | None
example_pairing_objects: dict[str, ExamplePairing] | None
tags: dict[str, Tag] | None
x_security_schemes: dict[str, OAuth2 | BearerAuth | APIKeyAuth] | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class Method(*, name, params, result, tags=None, summary=None, description=None, external_docs=None, deprecated=None, servers=None, errors=None, links=None, param_structure=None, examples=None, x_security=None)[source]

Bases: BaseModel

Parameters:
name: str
params: list[ContentDescriptor]
result: ContentDescriptor
tags: list[Tag] | None
summary: str | None
description: str | None
external_docs: ExternalDocumentation | None
deprecated: bool | None
servers: list[Server] | None
errors: list[Error] | None
param_structure: ParamStructure | None
examples: list[ExamplePairing] | None
x_security: dict[str, list[str]] | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class OpenRPCSchema(*, info, openrpc='1.3.2', methods=[], servers=Server(url='localhost', name='default', summary=None, description=None, variables=None), components=None, external_docs=None)[source]

Bases: BaseModel

Parameters:
info: Info
openrpc: str
methods: list[Method]
servers: list[Server] | Server
components: Components | None
external_docs: ExternalDocumentation | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True, 'validate_by_alias': True, 'validate_by_name': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

flask_jsonrpc.contrib.openrpc.utils module

class BaseModel[source]

Bases: BaseModel

model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

class MethodExtendSchema(*, name=None, params=None, result=None, tags=None, summary=None, description=None, external_docs=None, deprecated=None, servers=None, errors=None, links=None, param_structure=None, examples=None, x_security=None)[source]

Bases: BaseModel

Parameters:
name: str | None
params: list[st.ContentDescriptor] | None
result: st.ContentDescriptor | None
tags: list[st.Tag] | None
summary: str | None
description: str | None
external_docs: st.ExternalDocumentation | None
deprecated: bool | None
servers: list[st.Server] | None
errors: list[st.Error] | None
param_structure: st.ParamStructure | None
examples: list[st.ExamplePairing] | None
x_security: dict[str, list[str]] | None
model_config: ClassVar[ConfigDict] = {'arbitrary_types_allowed': True}

Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].

extend_schema(name=None, params=None, tags=None, summary=None, description=None, external_docs=None, result=None, deprecated=None, servers=None, errors=None, links=None, param_structure=None, examples=None, x_security=None)[source]

Decorator to extend the schema of a JSON-RPC method.

Parameters:
Returns:

The decorator function.

Return type:

Callable[…, Any]

flask_jsonrpc.contrib.openrpc.wrappers module

class OpenRPCExtendSchemaDecoratorMixin[source]

Bases: object

Mixin class to provide the extend_schema decorator for OpenRPC schema extension.

extend_schema(*args, **kwargs)[source]

Decorator to extend the OpenRPC schema for a method.

Parameters:
  • *args (Any) – Positional arguments for schema extension.

  • **kwargs (Any) – Keyword arguments for schema extension.

  • self (Self)

  • *args

  • **kwargs

Returns:

The decorator function to extend the schema.

Return type:

Callable[…, Any]

Module contents

class OpenRPC(app=None, jsonrpc_app=None, *, openrpc_schema=None)[source]

Bases: OpenRPCExtendSchemaDecoratorMixin

Flask-JSONRPC OpenRPC contrib extension.

Parameters:
jsonrpc_app

The JSON-RPC application instance.

Type:

flask_jsonrpc.app.JSONRPC | None

openrpc_schema

The OpenRPC schema instance.

Type:

flask_jsonrpc.contrib.openrpc.typing.OpenRPCSchema | None

init_app(app, jsonrpc_app)[source]

Initialize the OpenRPC extension with the Flask and JSON-RPC application instances.

Registers the OpenRPC discover method to the JSON-RPC site.

Parameters:
Return type:

None