1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37
|
from pydantic import BaseModel, Json, conint
from typing_extensions import Annotated
from litestar import Litestar, get
from litestar.openapi.spec.example import Example
from litestar.openapi.spec.external_documentation import ExternalDocumentation
from litestar.params import Parameter
class Version(BaseModel):
id: conint(ge=1, le=10) # type: ignore[valid-type]
specs: Json
VERSIONS = {1: Version(id=1, specs='{"some": "value"}')}
@get(path="/versions/{version:int}", sync_to_thread=False)
def get_product_version(
version: Annotated[
int,
Parameter(
ge=1,
le=10,
title="Available Product Versions",
description="Get a specific version spec from the available specs",
examples=[Example(value=1)],
external_docs=ExternalDocumentation(
url="https://mywebsite.com/documentation/product#versions", # type: ignore[arg-type]
),
),
],
) -> Version:
return VERSIONS[version]
app = Litestar(route_handlers=[get_product_version])
|