Skip to content

AsyncAPI

faststream.AsyncAPI #

AsyncAPI(
    broker=None,
    /,
    title="FastStream",
    version="0.1.0",
    description=None,
    terms_of_service=None,
    license=None,
    contact=None,
    tags=(),
    external_docs=None,
    identifier=None,
    schema_version="3.0.0",
)

Bases: SpecificationFactory

Source code in faststream/specification/asyncapi/factory.py
def __init__(
    self,
    broker: Optional["BrokerUsecase[Any, Any]"] = None,
    /,
    title: str = "FastStream",
    version: str = "0.1.0",
    description: str | None = None,
    terms_of_service: Optional["AnyHttpUrl"] = None,
    license: Union["License", "dict[str, Any]"] | None = None,
    contact: Union["Contact", "dict[str, Any]"] | None = None,
    tags: Sequence[Union["Tag", "dict[str, Any]"]] = (),
    external_docs: Union["ExternalDocs", "dict[str, Any]"] | None = None,
    identifier: str | None = None,
    schema_version: Literal["3.0.0", "2.6.0"] | str = "3.0.0",
) -> None:
    self.title = title
    self.version = version
    self.description = description
    self.terms_of_service = terms_of_service
    self.license = license
    self.contact = contact
    self.tags = tags
    self.external_docs = external_docs
    self.identifier = identifier
    self.schema_version = schema_version

    self.brokers: list[BrokerUsecase[Any, Any]] = []
    if broker:
        self.add_broker(broker)

    self.http_handlers: list[tuple[str, HttpHandler]] = []

title instance-attribute #

title = title

version instance-attribute #

version = version

description instance-attribute #

description = description

terms_of_service instance-attribute #

terms_of_service = terms_of_service

license instance-attribute #

license = license

contact instance-attribute #

contact = contact

tags instance-attribute #

tags = tags

external_docs instance-attribute #

external_docs = external_docs

identifier instance-attribute #

identifier = identifier

schema_version instance-attribute #

schema_version = schema_version

brokers instance-attribute #

brokers = []

http_handlers instance-attribute #

http_handlers = []

add_broker #

add_broker(broker)
Source code in faststream/specification/asyncapi/factory.py
def add_broker(
    self,
    broker: "BrokerUsecase[Any, Any]",
    /,
) -> "SpecificationFactory":
    if broker not in self.brokers:
        self.brokers.append(broker)
    return self

add_http_route #

add_http_route(path, handler)
Source code in faststream/specification/asyncapi/factory.py
def add_http_route(
    self,
    path: str,
    handler: "HttpHandler",
) -> "SpecificationFactory":
    self.http_handlers.append((path, handler))
    return self

to_specification #

to_specification()
Source code in faststream/specification/asyncapi/factory.py
def to_specification(self) -> Specification:
    if self.schema_version.startswith("3."):
        from .v3_0_0 import get_app_schema as schema_3_0

        return schema_3_0(
            self.brokers[0],
            title=self.title,
            app_version=self.version,
            schema_version=self.schema_version,
            description=self.description,
            terms_of_service=self.terms_of_service,
            contact=self.contact,
            license=self.license,
            identifier=self.identifier,
            tags=self.tags,
            external_docs=self.external_docs,
            http_handlers=self.http_handlers,
        )

    if self.schema_version.startswith("2.6."):
        from .v2_6_0 import get_app_schema as schema_2_6

        return schema_2_6(
            self.brokers[0],
            title=self.title,
            app_version=self.version,
            schema_version=self.schema_version,
            description=self.description,
            terms_of_service=self.terms_of_service,
            contact=self.contact,
            license=self.license,
            identifier=self.identifier,
            tags=self.tags,
            external_docs=self.external_docs,
            http_handlers=self.http_handlers,
        )

    msg = f"Unsupported schema version: {self.schema_version}"
    raise NotImplementedError(msg)