from kaya.core import HttpContext, KayaApp from kaya.openapi import OpenAPIMixin, operation app = KayaApp(mixins=[OpenAPIMixin( title='Greeting API', version='1.0.0', description='Example API documented with kaya-openapi', )]) @app.GET('/hello') async def hello(ctx: HttpContext) -> None: """Say hello to the world.""" await ctx.send_str(200, 'Hello World') @app.GET('/hello/${name}') @operation(summary='Greet someone', tags=['greetings'], responses={200: {'description': 'A personalized greeting'}}) async def hello_name(ctx: HttpContext, name: str) -> None: await ctx.send_str(200, f'Hello {name}') @app.GET('/square/${x:int}') @operation(summary='Compute the square of a number', tags=['math']) async def square(ctx: HttpContext, x: int) -> None: await ctx.send_str(200, str(x * x)) # serve with an ASGI/RSGI server, e.g.: # granian --interface rsgi example.openapi:app # then open http://localhost:8000/docs to browse the API