from fastapi import APIRouter, status, UploadFile, File from app.routers.connections import router as connections_router from app.routers.trino import router as trino_router from app.routers.docs import router as docs_router from app.routers.storage import router as storage_router, upload_file from app.routers.pipelines import ( router as pipelines_router, create_draft, deploy_pipeline, publish_version, ) from app.routers.sitomat import router as sitomat_router from app.routers.governance import router as governance_router from app.routers.alerts import router as alerts_router from app.routers.auth import router as auth_router from app.routers.settings import router as settings_router from app.routers.gws import router as gws_router from app.routers.dbt import router as dbt_router from app.routers.dlt import router as dlt_router from app.schemas.pipeline import DraftRequest, DeployRequest, PublishVersionRequest # ========================================== # RESTful API v1 Router # ========================================== api_v1_router = APIRouter(prefix="/api/v1") api_v1_router.include_router(pipelines_router) api_v1_router.include_router(connections_router) api_v1_router.include_router(gws_router) api_v1_router.include_router(dbt_router) api_v1_router.include_router(dlt_router) api_v1_router.include_router(trino_router) api_v1_router.include_router(docs_router) api_v1_router.include_router(storage_router) api_v1_router.include_router(sitomat_router) api_v1_router.include_router(governance_router) api_v1_router.include_router(alerts_router) api_v1_router.include_router(auth_router) api_v1_router.include_router(settings_router) # ========================================== # Backward-Compatibility Router for React Canvas # (Legacy endpoints at /api/*, hidden from OpenAPI docs to prevent duplicate clutter) # ========================================== legacy_router = APIRouter(prefix="/api", include_in_schema=False) legacy_router.include_router(connections_router) legacy_router.include_router(gws_router) legacy_router.include_router(dbt_router) legacy_router.include_router(dlt_router) legacy_router.include_router(trino_router) legacy_router.include_router(docs_router) legacy_router.include_router(pipelines_router) legacy_router.include_router(sitomat_router) legacy_router.include_router(governance_router) legacy_router.include_router(auth_router) legacy_router.include_router(settings_router) # Legacy aliases matching exact routes expected by StudioPage & InspectorPanel @legacy_router.post("/save-draft", status_code=status.HTTP_201_CREATED) def legacy_save_draft(req: DraftRequest): return create_draft(req) @legacy_router.post("/deploy-dag", status_code=status.HTTP_201_CREATED) def legacy_deploy_dag(req: DeployRequest): return deploy_pipeline(req) @legacy_router.post("/publish-version", status_code=status.HTTP_201_CREATED) def legacy_publish_version(req: PublishVersionRequest): return publish_version(req) @legacy_router.post("/upload-file") async def legacy_upload_file(file: UploadFile = File(...)): return await upload_file(file) __all__ = [ "api_v1_router", "legacy_router", "connections_router", "trino_router", "docs_router", "storage_router", "pipelines_router", "sitomat_router", "governance_router", ]