{"id":23720,"library":"fastopenapi","title":"FastOpenAPI","description":"FastOpenAPI is a library for generating and integrating OpenAPI schemas using Pydantic v2 with multiple async web frameworks (AioHttp, Falcon, Flask, Quart, Sanic, Starlette, Tornado). The latest stable release is v0.7.0, with v1.0.0rc1 available as a release candidate. The project is actively maintained with frequent releases.","status":"active","version":"0.7.0","language":"python","source_language":"en","source_url":"https://github.com/mr-fatalyst/fastopenapi","tags":["openapi","pydantic","api","starlette","flask","aiohttp","falcon","quart","sanic","tornado"],"install":[{"cmd":"pip install fastopenapi","lang":"bash","label":"Install base package"},{"cmd":"pip install fastopenapi[starlette]","lang":"bash","label":"Install with Starlette support"}],"dependencies":[{"reason":"Core dependency for data validation and schema generation","package":"pydantic","optional":false},{"reason":"Required for StarletteRouter","package":"starlette","optional":true},{"reason":"Required for FlaskRouter","package":"flask","optional":true},{"reason":"Required for AioHttpRouter","package":"aiohttp","optional":true},{"reason":"Required for FalconRouter","package":"falcon","optional":true},{"reason":"Required for QuartRouter","package":"quart","optional":true},{"reason":"Required for SanicRouter","package":"sanic","optional":true},{"reason":"Required for TornadoRouter","package":"tornado","optional":true}],"imports":[{"note":"Since v0.3.0 routers are under fastopenapi.routers","wrong":"from fastopenapi import StarletteRouter","symbol":"StarletteRouter","correct":"from fastopenapi.routers import StarletteRouter"},{"note":"Same for all routers","wrong":"from fastopenapi import FlaskRouter","symbol":"FlaskRouter","correct":"from fastopenapi.routers import FlaskRouter"}],"quickstart":{"code":"from fastopenapi.routers import StarletteRouter\nfrom pydantic import BaseModel\nfrom starlette.applications import Starlette\nfrom starlette.responses import JSONResponse\nimport uvicorn\n\napp = Starlette()\nrouter = StarletteRouter(app)\n\nclass HelloResponse(BaseModel):\n    message: str\n\n@router.get(\"/hello/{name}\", response_model=HelloResponse)\ndef hello(name: str) -> HelloResponse:\n    return HelloResponse(message=f\"Hello, {name}!\")\n\nif __name__ == \"__main__\":\n    uvicorn.run(app, host=\"0.0.0.0\", port=8000)","lang":"python","description":"Minimal FastOpenAPI app with Starlette and Pydantic v2."},"warnings":[{"fix":"Initialize router with use_aliases=False if you need the previous behavior.","message":"In v0.6.0 the 'use_aliases' parameter was added to BaseRouter (default True). This changed behavior for models with aliases. To revert to previous behavior, set use_aliases=False.","severity":"breaking","affected_versions":"0.6.0 - 0.7.0"},{"fix":"Remove use_aliases parameter; aliasing is always on.","message":"The use_aliases parameter was removed in v0.7.0. The library now always uses aliases via Pydantic.","severity":"deprecated","affected_versions":"0.7.0+"},{"fix":"Upgrade to v1.0.0rc1 or use manual query parameters for GET endpoints.","message":"For GET routes with Pydantic models as parameters, the library reads query parameters at runtime. In v1.0.0rc1 this was fixed but in v0.7.0 the behavior may be incorrect for certain model definitions.","severity":"gotcha","affected_versions":"<=0.7.0"},{"fix":"Use correct import path: from fastopenapi.routers import YourRouter.","message":"Router imports changed from direct 'from fastopenapi import StarletteRouter' to 'from fastopenapi.routers import StarletteRouter' in v0.3.0. Old imports will raise ModuleNotFoundError.","severity":"gotcha","affected_versions":">=0.3.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Run 'pip install fastopenapi' for base, or 'pip install fastopenapi[starlette]' for Starlette support.","cause":"Package not installed, or installed without the desired framework extra.","error":"ModuleNotFoundError: No module named 'fastopenapi'"},{"fix":"Use 'from fastopenapi.routers import StarletteRouter'.","cause":"Using old import path 'from fastopenapi import StarletteRouter' which is incorrect since v0.3.0.","error":"ImportError: cannot import name 'StarletteRouter' from 'fastopenapi'"},{"fix":"Remove the use_aliases parameter; aliasing is always enabled.","cause":"Trying to pass use_aliases argument in v0.7.0 where it was removed.","error":"ValueError: 'use_aliases' is not a valid parameter for this router"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}