Source code for action0.open_meteo.flood.operations

# generated by action0-client-openapi v0.1.2 from flood.yml — do not edit

from __future__ import annotations

import datetime
from typing import Any

from action0.client import JsonOperation
from action0.client import query
from action0.req import Method
from action0.req import Response

from .errors import BadRequestError
from .errors import decode_error
from .models import GetV1FloodCellSelection
from .models import GetV1FloodDailyItem
from .models import GetV1FloodModelsItem
from .models import GetV1FloodResponse
from .models import GetV1FloodTimeformat
from .models import get_v1_flood_error_from_json
from .models import get_v1_flood_response_from_json


[docs] class GetV1Flood(JsonOperation[GetV1FloodResponse]): """ ``GET /v1/flood`` — Daily river discharge forecast Daily river discharge forecasts from the Copernicus Emergency Management Service GloFAS hydrological model. """ method = Method.GET path = "/v1/flood" latitude: str = query() longitude: str = query() #: A list of river discharge variables. daily: list[GetV1FloodDailyItem] | None = query( default=None, serialize=lambda values: ",".join(str(item.value) for item in values) ) timeformat: GetV1FloodTimeformat = query(default=GetV1FloodTimeformat.ISO8601) timezone: str | None = query(default=None) past_days: int = query(default=0) #: Number of forecast days. Up to 366 days. forecast_days: int = query(default=92) #: Start date in ISO 8601 format. start_date: datetime.date | None = query(default=None) #: End date in ISO 8601 format. end_date: datetime.date | None = query(default=None) #: Return ensemble members instead of only the ensemble mean. ensemble: bool | None = query(default=None) cell_selection: GetV1FloodCellSelection | None = query(default=None) #: Manually select one or more weather models. models: list[GetV1FloodModelsItem] | None = query( default=None, serialize=lambda values: ",".join(str(item.value) for item in values) ) #: Only required for commercial subscriptions. apikey: str | None = query(default=None)
[docs] def check(self, response: Response) -> None: """ :param response: the response the backend produced :raises BadRequestError: for the documented ``400`` answer :raises APIError: for any other non-2xx status """ if response.status == 400: data = decode_error(response) if isinstance(data, dict): message = f"{type(self).__name__}: unexpected status {response.status}" raise BadRequestError( f"{message} {response.phrase}".rstrip(), response=response, error=get_v1_flood_error_from_json(data), ) super().check(response)
[docs] def load_json(self, data: Any) -> GetV1FloodResponse: """ :param data: the decoded JSON payload :return: the parsed result """ return get_v1_flood_response_from_json(data)