'FastAPI - @Schema(hidden=True) not working when trying to hide the schema section on swagger docs

I'm trying to hide the entire schemas section of the FastAPI generated swagger docs. I've checked the docs and tried this but the schema section still shows.

    @Schema(hidden=True)
    class theSchema(BaseModel):
        category: str

How do I omit one particular schema or the entire schemas section from the returned swagger docs.

docExpansion does not appear to work either. What am I missing?

app = FastAPI(
    openapi_tags=tags_metadata,
    title="Documentation",
    description="API endpoints",
    version="0.1",
    docExpansion="None"
) 


Solution 1:[1]

swagger has the UI parameter "defaultModelsExpandDepth" for controlling models' view in the schema section.

This parameter can be forwarded using "swagger_ui_parameters" parameter on FastApi initialization.

app = FastAPI(swagger_ui_parameters={"defaultModelsExpandDepth": -1})

Values:

  • -1: schema section hidden
  • 0: schema section is closed
  • 1: schema section is open (default)

More options can be found here: https://swagger.io/docs/open-source-tools/swagger-ui/usage/configuration/

Solution 2:[2]

set include_in_schema=False in the args to the FastAPI instance decorator instead

app = FastAPI(...)

@app.get("/", include_in_schema=False)
async def root():
    ...

Solution 3:[3]

Not sure if I get points for answering my own question but if anyone wants to know, this was resolved by loading the swagger page into an iframe then using js to hide the desired elements within that document's iframe.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Corpswalker
Solution 2 ti7
Solution 3