Skip to content
Snippets Groups Projects
Select Git revision
  • e13064642cd688263e7a208abee0a7dbd7561aeb
  • master default protected
  • release
  • experimental
4 results

gen_open_api_schema.py

Blame
  • gen_open_api_schema.py 1.19 KiB
    import json
    
    import yaml
    from fastapi import FastAPI
    from fastapi.openapi.utils import get_openapi
    from fastapi.routing import APIRoute
    
    from app.main import app
    
    
    def use_route_names_as_operation_ids(app: FastAPI) -> None:
        """
        Simplify operation IDs so that generated API clients have simpler function
        names.
    
        Should be called only after all routes have been added.
        """
        for route in app.routes:
            if isinstance(route, APIRoute):
                route.operation_id = route.name
    
    
    use_route_names_as_operation_ids(app)
    
    with open('openapi.yaml', 'w') as f:
        yaml.dump(get_openapi(
            title=app.title,
            version=app.version,
            openapi_version=app.openapi_version,
            description=app.description,
            routes=app.routes
        ), f)
    with open('openapi.json', 'w') as f:
        json.dump(get_openapi(
            title=app.title,
            version=app.version,
            openapi_version=app.openapi_version,
            description=app.description,
            routes=app.routes
        ), f)
    with open('standalone-mapping-schema.yaml', 'w') as f:
        from mitm_tooling.extraction.sql.mapping import StandaloneDBMapping
        yaml.dump(StandaloneDBMapping.model_json_schema(by_alias=True), f)