Source code for gyoza.server.api.app

"""Main FastAPI application."""

import os

from fastapi import Depends, FastAPI, HTTPException, Security, status
from fastapi.security import APIKeyHeader

from gyoza.server.api.routers import definitions, runs, workers

API_KEY = os.environ.get("GYOZA_API_KEY", "")
print(f"API_KEY: {API_KEY}")
api_key_header = APIKeyHeader(name="X-API-Key", auto_error=False)


[docs] def verify_api_key(api_key: str | None = Security(api_key_header)) -> str: """Verify API key from header.""" if not API_KEY: return "" # No auth if key not configured if api_key != API_KEY: raise HTTPException( status_code=status.HTTP_401_UNAUTHORIZED, detail="Invalid API key" ) return api_key
app = FastAPI( title="Gyoza Server API", description="REST API for managing operation definitions and runs", version="0.0.1", dependencies=[Depends(verify_api_key)], ) app.include_router(definitions.router, prefix="/definitions", tags=["definitions"]) app.include_router(runs.router, prefix="/runs", tags=["runs"]) app.include_router(workers.router, prefix="/workers", tags=["workers"])
[docs] @app.get("/health") def health_check() -> dict[str, str]: """Health check endpoint. Returns ------- dict[str, str] Health status. """ return {"status": "healthy"}