OpenAPI schema hook¶
openapi_hook runs inside the per-version schema generation pipeline, so unlike patching
app.openapi yourself, it always receives the already-filtered schema for that specific
version:
def my_openapi_hook(schema: dict, version: tuple[int, int]) -> dict:
schema["info"]["x-logo"] = {"url": "https://example.com/logo.png"}
if version == (1, 0):
description = schema["info"].get("description", "")
schema["info"]["description"] = f"{description}\n\n**DEPRECATED:** Use v2."
return schema
RouterVersioner(
app=app,
routers=router,
version_format=VersionFormat.SEMVER,
openapi_hook=my_openapi_hook,
).versionize()