Coverage for src/lexigram/admin/openapi/controller.py: 100%
11 statements
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
« prev ^ index » next coverage.py v7.15.4, created at 2026-08-21 14:56 +0800
1from __future__ import annotations
3from typing import TYPE_CHECKING, Any
5from starlette.responses import JSONResponse
7from lexigram.admin.openapi.resource_converter import resources_to_openapi_spec
9if TYPE_CHECKING:
10 from starlette.requests import Request
13class OpenAPIController:
14 """Serves the OpenAPI specification for admin resources.
16 Mounted at ``/admin/openapi.json`` (or the configured admin prefix).
17 """
19 def __init__(self, resources: dict[str, Any]) -> None:
20 self._resources = resources
22 async def get_spec(self, request: Request) -> JSONResponse:
23 """Handle ``GET /admin/openapi.json``.
25 Returns:
26 A JSON response containing the full OpenAPI 3.0.3 spec.
27 """
28 spec = resources_to_openapi_spec(self._resources)
29 return JSONResponse(spec)
32__all__ = ["OpenAPIController"]