from fastapi import FastAPI from pydantic import BaseModel, Field from typing import List, Optional, Any app = FastAPI() # Pydantic-Modelle für die Struktur class AffectedFunction(BaseModel): function: str critical: int impactDesc: str outage: str # "none"|"partial"|"full" hasMaintenance: bool class AppStatusEntry(BaseModel): outage: str = "none" hasMaintenance: bool = False hasSubComponentMaintenance: bool = False affectedFunctions: List[AffectedFunction] = Field(default_factory=list) class AppStatus(BaseModel): erezept: Optional[AppStatusEntry] = None epa: Optional[AppStatusEntry] = None kim: Optional[AppStatusEntry] = None wanda: Optional[AppStatusEntry] = None ogd: Optional[AppStatusEntry] = None vsdm: Optional[AppStatusEntry] = None tianschluss: Optional[AppStatusEntry] = None class StatusModel(BaseModel): appStatus: AppStatus cause: List[Any] = Field(default_factory=list) # Initialer Status mit einer Störung bei erezept status_data = StatusModel( appStatus=AppStatus( erezept=AppStatusEntry( outage="partial", hasMaintenance=False, hasSubComponentMaintenance=False, affectedFunctions=[ AffectedFunction( function="Signatur", critical=1, impactDesc="Signatur ist zeitweise nicht möglich", outage="partial", hasMaintenance=False ) ] ), epa=AppStatusEntry(), kim=AppStatusEntry(), wanda=AppStatusEntry(), ogd=AppStatusEntry(), vsdm=AppStatusEntry(), tianschluss=AppStatusEntry() ), cause=[] ) @app.get("/lageapi/v2/tilage", response_model=StatusModel) def get_tilage(): return status_data @app.post("/lageapi/v2/tilage", response_model=StatusModel) def set_tilage(new_status: StatusModel): global status_data status_data = new_status return status_data