chore: add authorize button to swagger docs
This commit is contained in:
parent
37f01a2156
commit
d33241e5dc
1 changed files with 44 additions and 0 deletions
44
app.py
44
app.py
|
|
@ -4,6 +4,8 @@ os.environ["NUMEXPR_MAX_THREADS"] = "12"
|
||||||
|
|
||||||
from fastapi import FastAPI, HTTPException, Depends, Body, status, Response
|
from fastapi import FastAPI, HTTPException, Depends, Body, status, Response
|
||||||
from fastapi.middleware.cors import CORSMiddleware
|
from fastapi.middleware.cors import CORSMiddleware
|
||||||
|
from fastapi.openapi.models import OAuthFlows as OAuthFlowsModel
|
||||||
|
from fastapi.security import HTTPBearer
|
||||||
from contextlib import asynccontextmanager
|
from contextlib import asynccontextmanager
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -268,8 +270,50 @@ app = FastAPI(
|
||||||
title="PowerOn | Data Platform API",
|
title="PowerOn | Data Platform API",
|
||||||
description=f"Backend API for the Multi-Agent Platform by ValueOn AG ({instanceLabel})",
|
description=f"Backend API for the Multi-Agent Platform by ValueOn AG ({instanceLabel})",
|
||||||
lifespan=lifespan,
|
lifespan=lifespan,
|
||||||
|
swagger_ui_init_oauth={
|
||||||
|
"usePkceWithAuthorizationCodeGrant": True,
|
||||||
|
},
|
||||||
)
|
)
|
||||||
|
|
||||||
|
# Configure OpenAPI security scheme for Swagger UI
|
||||||
|
# This adds the "Authorize" button to the /docs page
|
||||||
|
security_scheme = HTTPBearer()
|
||||||
|
app.openapi_schema = None # Reset schema to regenerate with security
|
||||||
|
|
||||||
|
|
||||||
|
def custom_openapi():
|
||||||
|
if app.openapi_schema:
|
||||||
|
return app.openapi_schema
|
||||||
|
|
||||||
|
from fastapi.openapi.utils import get_openapi
|
||||||
|
|
||||||
|
openapi_schema = get_openapi(
|
||||||
|
title=app.title,
|
||||||
|
version="1.0.0",
|
||||||
|
description=app.description,
|
||||||
|
routes=app.routes,
|
||||||
|
)
|
||||||
|
|
||||||
|
# Add security scheme definition
|
||||||
|
openapi_schema["components"]["securitySchemes"] = {
|
||||||
|
"BearerAuth": {
|
||||||
|
"type": "http",
|
||||||
|
"scheme": "bearer",
|
||||||
|
"bearerFormat": "JWT",
|
||||||
|
"description": "Enter your JWT token (obtained from login endpoint or browser cookies)",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Apply security globally to all endpoints
|
||||||
|
# Individual endpoints can override this if needed
|
||||||
|
openapi_schema["security"] = [{"BearerAuth": []}]
|
||||||
|
|
||||||
|
app.openapi_schema = openapi_schema
|
||||||
|
return app.openapi_schema
|
||||||
|
|
||||||
|
|
||||||
|
app.openapi = custom_openapi
|
||||||
|
|
||||||
|
|
||||||
# Parse CORS origins from environment variable
|
# Parse CORS origins from environment variable
|
||||||
def get_allowed_origins():
|
def get_allowed_origins():
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue