defget_app_schema(app:"AsyncAPIApplication")->Schema:"""Get the application schema."""broker=app.brokerifbrokerisNone:# pragma: no coverraiseRuntimeError()broker.setup()servers=get_broker_server(broker)channels=get_broker_channels(broker)messages:Dict[str,Message]={}payloads:Dict[str,Dict[str,Any]]={}forchannel_name,chinchannels.items():ch.servers=list(servers.keys())ifch.subscribeisnotNone:m=ch.subscribe.messageifisinstance(m,Message):# pragma: no branchch.subscribe.message=_resolve_msg_payloads(m,channel_name,payloads,messages,)ifch.publishisnotNone:m=ch.publish.messageifisinstance(m,Message):# pragma: no branchch.publish.message=_resolve_msg_payloads(m,channel_name,payloads,messages,)schema=Schema(info=Info(title=app.title,version=app.version,description=app.description,termsOfService=app.terms_of_service,contact=app.contact,license=app.license,),defaultContentType=ContentTypes.json.value,id=app.identifier,tags=list(app.asyncapi_tags)ifapp.asyncapi_tagselseNone,externalDocs=app.external_docs,servers=servers,channels=channels,components=Components(messages=messages,schemas=payloads,securitySchemes=Noneifbroker.securityisNoneelsebroker.security.get_schema(),),)returnschema