> For the complete documentation index, see [llms.txt](https://docs.jua.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.jua.ai/api-v2/query-engine/open-api-reference/models.md).

# Models

## The Aggregation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Aggregation":{"properties":{"aggregation":{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"],"title":"Aggregation","description":"Aggregation function name."},"parameters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Parameters","description":"Parameters for parameterized aggregations.Example: 'quantile': [0.5] for median, [0.95] for 95th percentile, etc."},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Specific variables to aggregate. If None, applies to all variables in the query"}},"type":"object","required":["aggregation"],"title":"Aggregation","description":"Aggregation function to apply when grouping forecast data.\n\nSupported aggregations:\n- Basic: avg, std, min, max, sum, count, median\n- Parameterized: quantile_(p), argmin_(col), argmax_(col)\n\nFor argmin/argmax, the parameter is the column to return, and the variable\nis the column to find the min/max of. Example:\n    argmin_(time)__temperature -> returns time when temperature is minimum\n\nCan be applied to specific variables or all variables in the query."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"}}}}
```

## The AuctionBlockBidsResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AuctionBlockBidsResult":{"properties":{"data":{"items":{"$ref":"#/components/schemas/BlockBid"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AuctionBlockBidsResult","description":"Result for a block-bids query."},"BlockBid":{"properties":{"delivery_date":{"type":"string","format":"date","title":"Delivery Date"},"delivery_start":{"type":"string","format":"date-time","title":"Delivery Start"},"delivery_end":{"type":"string","format":"date-time","title":"Delivery End"},"market_area":{"type":"string","title":"Market Area"},"auction":{"type":"string","title":"Auction"},"resolution":{"type":"string","title":"Resolution"},"block_id":{"type":"string","title":"Block Id"},"block_type":{"type":"string","title":"Block Type"},"block_code_prm":{"type":"string","title":"Block Code Prm"},"execution":{"type":"string","title":"Execution"},"limit_price":{"type":"number","title":"Limit Price"},"volume":{"type":"number","title":"Volume"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["delivery_date","delivery_start","delivery_end","market_area","auction","resolution","block_id","block_type","block_code_prm","execution","limit_price","volume","currency"],"title":"BlockBid","description":"A single (block, delivery period) bid row."}}}}
```

## The AuctionCurvesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AuctionCurvesResult":{"properties":{"data":{"items":{"$ref":"#/components/schemas/CurvePoint"},"type":"array","title":"Data"}},"type":"object","required":["data"],"title":"AuctionCurvesResult","description":"Result for an aggregated-curves query."},"CurvePoint":{"properties":{"delivery_start":{"type":"string","format":"date-time","title":"Delivery Start"},"delivery_end":{"type":"string","format":"date-time","title":"Delivery End"},"market_area":{"type":"string","title":"Market Area"},"auction":{"type":"string","title":"Auction"},"resolution":{"type":"string","title":"Resolution"},"side":{"type":"string","title":"Side"},"point_index":{"type":"integer","title":"Point Index"},"price":{"type":"number","title":"Price"},"volume":{"type":"number","title":"Volume"}},"type":"object","required":["delivery_start","delivery_end","market_area","auction","resolution","side","point_index","price","volume"],"title":"CurvePoint","description":"A single point of an aggregated supply/demand curve."}}}}
```

## The AvailableDatesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableDatesResponse":{"properties":{"dates":{"items":{"type":"string"},"type":"array","title":"Dates"}},"type":"object","required":["dates"],"title":"AvailableDatesResponse","description":"Response containing available benchmark dates."}}}}
```

## The AvailableForecastsQueryResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableForecastsQueryResult":{"properties":{"forecasts_per_model":{"additionalProperties":{"items":{"$ref":"#/components/schemas/ForecastInfo"},"type":"array"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object","title":"Forecasts Per Model","description":"Mapping of model identifiers to lists of available forecasts"},"total_per_model":{"anyOf":[{"additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object"},{"type":"null"}],"title":"Total Per Model","description":"Total matching forecasts per model BEFORE pagination. Lets callers detect truncated listings without a separate count request."},"archive_min_per_model":{"anyOf":[{"additionalProperties":{"type":"string"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object"},{"type":"null"}],"title":"Archive Min Per Model","description":"Earliest init_time per model in the full visible archive, ignoring since/before/limit filters. Lets callers distinguish a filtered query window from the true archive start."},"archive_max_per_model":{"anyOf":[{"additionalProperties":{"type":"string"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object"},{"type":"null"}],"title":"Archive Max Per Model","description":"Latest init_time per model in the full visible archive, ignoring since/before/limit filters."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination information if results were paginated"}},"type":"object","required":["forecasts_per_model"],"title":"AvailableForecastsQueryResult","description":"Result containing available forecast times per model."},"ForecastInfo":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Forecast initialization time"},"max_prediction_timedelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Prediction Timedelta","description":"Maximum available lead time in minutes for this forecast"},"dissemination_time":{"type":"string","title":"Dissemination Time","description":"Forecast step dissemination time"}},"type":"object","required":["init_time","dissemination_time"],"title":"ForecastInfo","description":"Information about a single available forecast."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The AvailableIndicesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableIndicesResult":{"properties":{"indices":{"items":{"$ref":"#/components/schemas/ClimateIndexInfo"},"type":"array","title":"Indices"}},"type":"object","required":["indices"],"title":"AvailableIndicesResult","description":"Result for available climate indices query."},"ClimateIndexInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["name","description","unit"],"title":"ClimateIndexInfo","description":"Metadata for a climate index."}}}}
```

## The AvailableInitTimesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableInitTimesResult":{"properties":{"init_times":{"items":{"$ref":"#/components/schemas/InitTimeInfo"},"type":"array","title":"Init Times"},"total_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Total Count"},"archive_earliest_init_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archive Earliest Init Time"},"archive_latest_init_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Archive Latest Init Time"},"availability_by_init_time":{"anyOf":[{"additionalProperties":{"items":{"prefixItems":[{"type":"string"},{"type":"string"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"object"},{"type":"null"}],"title":"Availability By Init Time"}},"type":"object","required":["init_times"],"title":"AvailableInitTimesResult","description":"Result for available init times query."},"InitTimeInfo":{"properties":{"init_time":{"type":"string","format":"date-time","title":"Init Time"},"max_prediction_timedelta":{"type":"integer","title":"Max Prediction Timedelta"}},"type":"object","required":["init_time","max_prediction_timedelta"],"title":"InitTimeInfo","description":"Information about an available init_time."}}}}
```

## The AvailablePsrTypesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailablePsrTypesResult":{"properties":{"psr_types":{"items":{"type":"string"},"type":"array","title":"Psr Types"}},"type":"object","required":["psr_types"],"title":"AvailablePsrTypesResult","description":"Result for available PSR types query."}}}}
```

## The AvailableStationsResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableStationsResult":{"properties":{"stations":{"items":{"$ref":"#/components/schemas/StationInfo"},"type":"array","title":"Stations"},"total_count":{"type":"integer","title":"Total Count","description":"Total number of stations"}},"type":"object","required":["stations","total_count"],"title":"AvailableStationsResult","description":"Result containing list of available stations."},"StationInfo":{"properties":{"station":{"type":"string","title":"Station","description":"Unique station identifier"},"name":{"type":"string","title":"Name","description":"Station name"},"latitude":{"type":"number","title":"Latitude","description":"Station latitude"},"longitude":{"type":"number","title":"Longitude","description":"Station longitude"},"elevation":{"type":"number","title":"Elevation","description":"Station elevation in meters"}},"type":"object","required":["station","name","latitude","longitude","elevation"],"title":"StationInfo","description":"Basic station information."}}}}
```

## The AvailableSubcategoriesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableSubcategoriesResult":{"properties":{"subcategories":{"items":{"type":"string"},"type":"array","title":"Subcategories"}},"type":"object","required":["subcategories"],"title":"AvailableSubcategoriesResult","description":"Result for available subcategories query."}}}}
```

## The AvailableTimestampsResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableTimestampsResult":{"properties":{"timestamps":{"additionalProperties":{"items":{"type":"string","format":"date-time"},"type":"array"},"type":"object","title":"Timestamps"}},"type":"object","required":["timestamps"],"title":"AvailableTimestampsResult","description":"Result containing available timestamps per model."}}}}
```

## The AvailableTsosResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableTsosResult":{"properties":{"tsos":{"items":{"type":"string"},"type":"array","title":"Tsos"}},"type":"object","required":["tsos"],"title":"AvailableTsosResult","description":"Result for available TSOs query."}}}}
```

## The AvailableVersionsResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableVersionsResult":{"properties":{"versions":{"items":{"$ref":"#/components/schemas/VersionInfo"},"type":"array","title":"Versions"}},"type":"object","required":["versions"],"title":"AvailableVersionsResult","description":"Catalog of pin-able model versions, optionally filtered by zone/PSR."},"VersionInfo":{"properties":{"model_version":{"type":"string","title":"Model Version"},"zone_key":{"type":"string","title":"Zone Key"},"psr_type":{"type":"string","title":"Psr Type"},"is_stable":{"type":"boolean","title":"Is Stable","default":false},"is_latest":{"type":"boolean","title":"Is Latest","default":false},"earliest_init_time":{"type":"string","format":"date-time","title":"Earliest Init Time"},"latest_init_time":{"type":"string","format":"date-time","title":"Latest Init Time"}},"type":"object","required":["model_version","zone_key","psr_type","earliest_init_time","latest_init_time"],"title":"VersionInfo","description":"One model_version available for a (zone_key, psr_type) cell."}}}}
```

## The AvailableZonesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"AvailableZonesResult":{"properties":{"zones":{"items":{"type":"string"},"type":"array","title":"Zones"}},"type":"object","required":["zones"],"title":"AvailableZonesResult","description":"Result for available zones query."}}}}
```

## The BlockBid object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"BlockBid":{"properties":{"delivery_date":{"type":"string","format":"date","title":"Delivery Date"},"delivery_start":{"type":"string","format":"date-time","title":"Delivery Start"},"delivery_end":{"type":"string","format":"date-time","title":"Delivery End"},"market_area":{"type":"string","title":"Market Area"},"auction":{"type":"string","title":"Auction"},"resolution":{"type":"string","title":"Resolution"},"block_id":{"type":"string","title":"Block Id"},"block_type":{"type":"string","title":"Block Type"},"block_code_prm":{"type":"string","title":"Block Code Prm"},"execution":{"type":"string","title":"Execution"},"limit_price":{"type":"number","title":"Limit Price"},"volume":{"type":"number","title":"Volume"},"currency":{"type":"string","title":"Currency"}},"type":"object","required":["delivery_date","delivery_start","delivery_end","market_area","auction","resolution","block_id","block_type","block_code_prm","execution","limit_price","volume","currency"],"title":"BlockBid","description":"A single (block, delivery period) bid row."}}}}
```

## The BoundingBox object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"BoundingBox":{"properties":{"min_lat":{"type":"number","maximum":90,"minimum":-90,"title":"Min Lat","description":"Minimum latitude"},"max_lat":{"type":"number","maximum":90,"minimum":-90,"title":"Max Lat","description":"Maximum latitude"},"min_lon":{"type":"number","maximum":180,"minimum":-180,"title":"Min Lon","description":"Minimum longitude"},"max_lon":{"type":"number","maximum":180,"minimum":-180,"title":"Max Lon","description":"Maximum longitude"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"BoundingBox","description":"Geographic bounding box for filtering stations.\n\nNote: This is kept for backward compatibility. Prefer using GeoFilter\nwith type='bounding_box' for new code."}}}}
```

## The ClimateIndex object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ClimateIndex":{"type":"string","enum":["NAO","AO","AAO","PNA","PDO","QBO","AMO","SOI","WPO","EPO","GBI","EA","SCAND","EAWR","TNH","POL","EPNP","ENSO_NINO12","ENSO_NINO12_ANOM","ENSO_NINO3","ENSO_NINO3_ANOM","ENSO_NINO4","ENSO_NINO4_ANOM","ENSO_NINO34","ENSO_NINO34_ANOM","MEI","ONI","TNA","TSA","AMM","IOD","MJO_20E","MJO_70E","MJO_80E","MJO_100E","MJO_120E","MJO_140E","MJO_160E","MJO_120W","MJO_40W","MJO_10W","MJO_RMM1","MJO_RMM2","MJO_PHASE","MJO_AMPLITUDE","SUNSPOT"],"title":"ClimateIndex","description":"Climate oscillation index identifiers."}}}}
```

## The ClimateIndexInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ClimateIndexInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["name","description","unit"],"title":"ClimateIndexInfo","description":"Metadata for a climate index."}}}}
```

## The ClimateIndicesTimeseriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ClimateIndicesTimeseriesQuery":{"properties":{"indices":{"anyOf":[{"items":{"$ref":"#/components/schemas/ClimateIndex"},"type":"array"},{"type":"null"}],"title":"Indices","description":"Climate indices to query. If not set, returns all."},"sources":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sources","description":"Data sources to filter by (e.g. 'noaa_psl', 'noaa_cpc', 'sidc')."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If None, no upper bound."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for time formatting (e.g. 'Europe/Berlin')."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'time__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","required":["start_time"],"title":"ClimateIndicesTimeseriesQuery","description":"Query parameters for climate indices timeseries data."},"ClimateIndex":{"type":"string","enum":["NAO","AO","AAO","PNA","PDO","QBO","AMO","SOI","WPO","EPO","GBI","EA","SCAND","EAWR","TNH","POL","EPNP","ENSO_NINO12","ENSO_NINO12_ANOM","ENSO_NINO3","ENSO_NINO3_ANOM","ENSO_NINO4","ENSO_NINO4_ANOM","ENSO_NINO34","ENSO_NINO34_ANOM","MEI","ONI","TNA","TSA","AMM","IOD","MJO_20E","MJO_70E","MJO_80E","MJO_100E","MJO_120E","MJO_140E","MJO_160E","MJO_120W","MJO_40W","MJO_10W","MJO_RMM1","MJO_RMM2","MJO_PHASE","MJO_AMPLITUDE","SUNSPOT"],"title":"ClimateIndex","description":"Climate oscillation index identifiers."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The ClimatologyMetaResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ClimatologyMetaResult":{"properties":{"description":{"type":"string","title":"Description"},"period":{"type":"string","title":"Period"},"grid_resolution":{"type":"string","title":"Grid Resolution"},"num_latitudes":{"type":"integer","title":"Num Latitudes"},"num_longitudes":{"type":"integer","title":"Num Longitudes"},"days_of_year":{"items":{"type":"integer"},"type":"array","title":"Days Of Year"},"hours":{"items":{"type":"integer"},"type":"array","title":"Hours"},"variables":{"items":{"type":"string"},"type":"array","title":"Variables"},"variable_units":{"additionalProperties":{"type":"string"},"type":"object","title":"Variable Units","default":{}}},"type":"object","required":["description","period","grid_resolution","num_latitudes","num_longitudes","days_of_year","hours","variables"],"title":"ClimatologyMetaResult","description":"Metadata about the climatology dataset."}}}}
```

## The ClimatologyVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ClimatologyVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit","default":""}},"type":"object","required":["name","description"],"title":"ClimatologyVariableInfo","description":"Information about a climatology variable."}}}}
```

## The ContinuousVwapSurfaceRequest object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ContinuousVwapSurfaceRequest":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time"},"end_time":{"type":"string","format":"date-time","title":"End Time"},"market_area":{"type":"string","title":"Market Area","default":"DE"}},"type":"object","required":["start_time","end_time"],"title":"ContinuousVwapSurfaceRequest","description":"Request body for the gate-closure-anchored continuous VWAP surface."}}}}
```

## The ContinuousVwapSurfaceResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ContinuousVwapSurfaceResult":{"properties":{"delivery_start":{"items":{"type":"string","format":"date-time"},"type":"array","title":"Delivery Start"},"bucket":{"items":{"type":"integer"},"type":"array","title":"Bucket"},"vwap":{"items":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"array","title":"Vwap"},"volume":{"items":{"anyOf":[{"type":"number"},{"type":"null"}]},"type":"array","title":"Volume"}},"type":"object","required":["delivery_start","bucket","vwap","volume"],"title":"ContinuousVwapSurfaceResult","description":"Columnar VWAP surface response: parallel lists, one entry per cell.\n\nDocumented in the OpenAPI schema so SDK / dashboard types are generated."}}}}
```

## The Coordinates object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Coordinates":{"type":"string","enum":["model","init_time","time","prediction_timedelta","latitude","longitude","point","market_zone","country_key"],"title":"Coordinates"}}}}
```

## The CurvePoint object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"CurvePoint":{"properties":{"delivery_start":{"type":"string","format":"date-time","title":"Delivery Start"},"delivery_end":{"type":"string","format":"date-time","title":"Delivery End"},"market_area":{"type":"string","title":"Market Area"},"auction":{"type":"string","title":"Auction"},"resolution":{"type":"string","title":"Resolution"},"side":{"type":"string","title":"Side"},"point_index":{"type":"integer","title":"Point Index"},"price":{"type":"number","title":"Price"},"volume":{"type":"number","title":"Volume"}},"type":"object","required":["delivery_start","delivery_end","market_area","auction","resolution","side","point_index","price","volume"],"title":"CurvePoint","description":"A single point of an aggregated supply/demand curve."}}}}
```

## The CustomerVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"}}}}
```

## The DataSource object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"DataSource":{"type":"string","enum":["clickhouse","open_meteo"],"title":"DataSource"}}}}
```

## The DisseminationStats object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"DisseminationStats":{"properties":{"number_of_data_points":{"type":"integer","title":"Number Of Data Points","description":"Number of data points.Tracking started on '2025-10-29"},"min":{"type":"number","title":"Min","description":"Minimum delay in minutes"},"max":{"type":"number","title":"Max","description":"Maximum delay in minutes"},"mean":{"type":"number","title":"Mean","description":"Mean delay in minutes"},"median":{"type":"number","title":"Median","description":"Median delay in minutes"},"std":{"type":"number","title":"Std","description":"Standard deviation of delay in minutes"},"q90":{"type":"number","title":"Q90","description":"90th percentile of delay in minutes"},"q99":{"type":"number","title":"Q99","description":"99th percentile of delay in minutes"},"in_time_percentage":{"type":"number","title":"In Time Percentage","description":"Percentage of forecasts in time"},"missing_percentage":{"type":"number","title":"Missing Percentage","description":"Percentage of missing forecasts"},"expected_dissemination_time":{"type":"string","format":"time","title":"Expected Dissemination Time","description":"Expected dissemination time (time of day) as reference"},"dissemination_time_min":{"type":"string","format":"time","title":"Dissemination Time Min","description":"Minimum dissemination time (time of day)"},"dissemination_time_max":{"type":"string","format":"time","title":"Dissemination Time Max","description":"Maximum dissemination time (time of day)"},"dissemination_time_mean":{"type":"string","format":"time","title":"Dissemination Time Mean","description":"Mean dissemination time (time of day)"},"dissemination_time_median":{"type":"string","format":"time","title":"Dissemination Time Median","description":"Median dissemination time (time of day)"},"dissemination_time_q90":{"type":"string","format":"time","title":"Dissemination Time Q90","description":"90th percentile of dissemination time (time of day)"},"dissemination_time_q99":{"type":"string","format":"time","title":"Dissemination Time Q99","description":"99th percentile of dissemination time (time of day)"}},"type":"object","required":["number_of_data_points","min","max","mean","median","std","q90","q99","in_time_percentage","missing_percentage","expected_dissemination_time","dissemination_time_min","dissemination_time_max","dissemination_time_mean","dissemination_time_median","dissemination_time_q90","dissemination_time_q99"],"title":"DisseminationStats"}}}}
```

## The DisseminationStatus object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"DisseminationStatus":{"properties":{"status_per_model":{"additionalProperties":{"$ref":"#/components/schemas/ModelDisseminationStatus"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object","title":"Status Per Model","description":"Status per model"}},"type":"object","required":["status_per_model"],"title":"DisseminationStatus"},"ModelDisseminationStatus":{"properties":{"status":{"items":{"$ref":"#/components/schemas/ForecastDisseminationStatus"},"type":"array","title":"Status","description":"Status for the model"},"delay_stats_per_init_time":{"additionalProperties":{"$ref":"#/components/schemas/DisseminationStats"},"type":"object","title":"Delay Stats Per Init Time","description":"Delay statistics per init time (without date, e.g., '00:00', '06:00')"}},"type":"object","required":["status","delay_stats_per_init_time"],"title":"ModelDisseminationStatus"},"ForecastDisseminationStatus":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Forecast initialization time"},"delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delay","description":"Delay in minutes"},"is_missing":{"type":"boolean","title":"Is Missing","description":"Whether the forecast is missing","default":false},"dissemination_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dissemination Time","description":"Forecast dissemination time"},"expected_dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Expected Dissemination Time","description":"Expected dissemination time"},"max_prediction_timedelta":{"type":"integer","title":"Max Prediction Timedelta","description":"Maximum prediction timedelta for the forecast"},"expected_max_prediction_timedelta":{"type":"integer","title":"Expected Max Prediction Timedelta","description":"Expected maximum prediction timedelta for the forecast"},"is_delayed":{"type":"boolean","title":"Is Delayed","description":"Whether the forecast is delayed","readOnly":true}},"type":"object","required":["init_time","max_prediction_timedelta","expected_max_prediction_timedelta","is_delayed"],"title":"ForecastDisseminationStatus"},"DisseminationStats":{"properties":{"number_of_data_points":{"type":"integer","title":"Number Of Data Points","description":"Number of data points.Tracking started on '2025-10-29"},"min":{"type":"number","title":"Min","description":"Minimum delay in minutes"},"max":{"type":"number","title":"Max","description":"Maximum delay in minutes"},"mean":{"type":"number","title":"Mean","description":"Mean delay in minutes"},"median":{"type":"number","title":"Median","description":"Median delay in minutes"},"std":{"type":"number","title":"Std","description":"Standard deviation of delay in minutes"},"q90":{"type":"number","title":"Q90","description":"90th percentile of delay in minutes"},"q99":{"type":"number","title":"Q99","description":"99th percentile of delay in minutes"},"in_time_percentage":{"type":"number","title":"In Time Percentage","description":"Percentage of forecasts in time"},"missing_percentage":{"type":"number","title":"Missing Percentage","description":"Percentage of missing forecasts"},"expected_dissemination_time":{"type":"string","format":"time","title":"Expected Dissemination Time","description":"Expected dissemination time (time of day) as reference"},"dissemination_time_min":{"type":"string","format":"time","title":"Dissemination Time Min","description":"Minimum dissemination time (time of day)"},"dissemination_time_max":{"type":"string","format":"time","title":"Dissemination Time Max","description":"Maximum dissemination time (time of day)"},"dissemination_time_mean":{"type":"string","format":"time","title":"Dissemination Time Mean","description":"Mean dissemination time (time of day)"},"dissemination_time_median":{"type":"string","format":"time","title":"Dissemination Time Median","description":"Median dissemination time (time of day)"},"dissemination_time_q90":{"type":"string","format":"time","title":"Dissemination Time Q90","description":"90th percentile of dissemination time (time of day)"},"dissemination_time_q99":{"type":"string","format":"time","title":"Dissemination Time Q99","description":"99th percentile of dissemination time (time of day)"}},"type":"object","required":["number_of_data_points","min","max","mean","median","std","q90","q99","in_time_percentage","missing_percentage","expected_dissemination_time","dissemination_time_min","dissemination_time_max","dissemination_time_mean","dissemination_time_median","dissemination_time_q90","dissemination_time_q99"],"title":"DisseminationStats"},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"}}}}
```

## The EexGasDerivativesSettlementsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexGasDerivativesSettlementsQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Gas hub codes (e.g. ['TTF', 'THE']). None = all."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"EEX ShortCodes (e.g. ['G3BM', 'G0BM']). None = all."},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Start trading date (inclusive)."},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"End trading date (inclusive)."},"exclude_options":{"type":"boolean","title":"Exclude Options","description":"When true, excludes option records (option_type != '').","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexGasDerivativesSettlementsQuery","description":"Query parameters for EEX gas derivatives settlement prices.\n\nSchema identical to eex_power_settlements. Fetches from\neex_gas_derivatives_settlements."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EexGasDerivativesTradesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexGasDerivativesTradesQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Gas hub codes (e.g. ['TTF'])."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"EEX ShortCodes (e.g. ['G3BM'])."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start trade timestamp (inclusive, filters on tm column)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End trade timestamp (exclusive, filters on tm column)."},"trd_date_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date Start","description":"Start trading date (inclusive)."},"trd_date_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date End","description":"End trading date (inclusive)."},"exclude_spread_legs":{"type":"boolean","title":"Exclude Spread Legs","description":"When true, excludes spread/cascade legs.","default":false},"exclude_cancellations":{"type":"boolean","title":"Exclude Cancellations","description":"When true, excludes cancelled trades.","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexGasDerivativesTradesQuery","description":"Query parameters for EEX gas derivatives individual trades.\n\nSchema identical to eex_power_trades. Fetches from\neex_gas_derivatives_trades."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EexGasSpotSettlementsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexGasSpotSettlementsQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Gas hub codes (e.g. ['TTF', 'THE']). None = all."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"Spot ShortCodes (e.g. ['TTFDA', 'THEDA']). None = all."},"delivery_day_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Day Start","description":"Start delivery day (inclusive)."},"delivery_day_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Day End","description":"End delivery day (inclusive)."},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Start trading date (inclusive)."},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"End trading date (inclusive)."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexGasSpotSettlementsQuery","description":"Query parameters for EEX gas spot settlement prices.\n\nFetches from eex_gas_spot_settlements. Typically 1 settlement per area\nper day (DayAhead contract)."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EexGasSpotTradesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexGasSpotTradesQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Gas hub codes (e.g. ['TTF'])."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"Spot ShortCodes (e.g. ['TTFDA', 'TTFWD'])."},"delivery_day_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Day Start","description":"Start delivery day (inclusive)."},"delivery_day_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Day End","description":"End delivery day (inclusive)."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start trade timestamp (inclusive, filters on tm column)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End trade timestamp (exclusive, filters on tm column)."},"trd_date_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date Start","description":"Start trading date (inclusive)."},"trd_date_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date End","description":"End trading date (inclusive)."},"exclude_spread_legs":{"type":"boolean","title":"Exclude Spread Legs","description":"When true, excludes spread legs.","default":false},"exclude_cancellations":{"type":"boolean","title":"Exclude Cancellations","description":"When true, excludes cancelled trades.","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexGasSpotTradesQuery","description":"Query parameters for EEX gas spot individual trades.\n\nFetches from eex_gas_spot_trades. Gas spot trades have delivery_day,\nstart/end times, and group_id/trd_version for trade history tracking."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EexSettlementsQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexSettlementsQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Market area codes to filter by (e.g. ['DE', 'FR']). If not set, returns all areas."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"EEX ShortCodes to filter by (e.g. ['DEBM', 'DEBQ']). If not set, returns all ShortCodes."},"start_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Start Date","description":"Start trading date (inclusive)."},"end_date":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"End Date","description":"End trading date (inclusive)."},"exclude_options":{"type":"boolean","title":"Exclude Options","description":"When true, excludes option records (option_type != '').","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output (e.g. 'Europe/Berlin')."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'trd_date__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexSettlementsQuery","description":"Query parameters for EEX power settlement prices.\n\nFetches from eex_power_settlements. Filtered by trading date, area,\nand ShortCode. Deleted records (updt_act='Delete') are excluded by default."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EexTradesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EexTradesQuery":{"properties":{"areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Areas","description":"Market area codes to filter by (e.g. ['DE', 'FR'])."},"short_codes":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Short Codes","description":"EEX ShortCodes to filter by (e.g. ['DEBM'])."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start trade timestamp (inclusive, filters on tm column)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End trade timestamp (exclusive, filters on tm column)."},"trd_date_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date Start","description":"Start trading date (inclusive, filters on trd_date column)."},"trd_date_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Trd Date End","description":"End trading date (inclusive, filters on trd_date column)."},"exclude_spread_legs":{"type":"boolean","title":"Exclude Spread Legs","description":"When true, excludes spread/cascade legs (volume_only = false).","default":false},"exclude_cancellations":{"type":"boolean","title":"Exclude Cancellations","description":"When true, excludes cancelled trades (updt_act != 'Delete').","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'tm__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EexTradesQuery","description":"Query parameters for EEX power individual trades.\n\nFetches from eex_power_trades. Supports filtering by area, ShortCode,\ntrade timestamp, and trading date. Optional flags to exclude spread legs\nand cancellations."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EntsoeBusinessType object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeBusinessType":{"type":"string","enum":["Planned maintenance","Unplanned outage"],"title":"EntsoeBusinessType","description":"Business type for outages (reason).\n\nNote: Values match the human-readable strings stored in ClickHouse,\nnot the raw ENTSOE codes (A53, A54)."}}}}
```

## The EntsoeOtherType object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeOtherType":{"type":"string","enum":["Long","Short"],"title":"EntsoeOtherType","description":"ENTSOE Other Type (for imbalance data)."}}}}
```

## The EntsoeOutageSourceType object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeOutageSourceType":{"type":"string","enum":["generation_unit","transmission"],"title":"EntsoeOutageSourceType","description":"Outage source type discriminator."}}}}
```

## The EntsoeOutagesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeOutagesQuery":{"properties":{"source_type":{"anyOf":[{"$ref":"#/components/schemas/EntsoeOutageSourceType"},{"type":"null"}],"description":"Filter by source type (generation_unit or transmission)"},"biddingzone_domain":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"Biddingzone Domain","description":"List of bidding zones (for generation outages)"},"in_domain":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"In Domain","description":"List of from-zones (for transmission outages)"},"out_domain":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"Out Domain","description":"List of to-zones (for transmission outages)"},"active_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Active At","description":"Get outages active at this specific time (start <= time < end)"},"start_from":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start From","description":"Filter by start time >= this value"},"start_to":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start To","description":"Filter by start time < this value"},"plant_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoePsrType"},"type":"array"},{"type":"null"}],"title":"Plant Types","description":"Filter by plant type (generation only)"},"business_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeBusinessType"},"type":"array"},{"type":"null"}],"title":"Business Types","description":"Filter by business type (reason)"},"exclude_cancelled":{"type":"boolean","title":"Exclude Cancelled","description":"Exclude cancelled outages (docstatus in ['A09', 'Cancelled'])","default":true},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by. Supports direction suffix: 'start_time__desc' for descending, 'start_time__asc' for ascending. Object format: {'field': 'start_time', 'direction': 'desc'}"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","title":"EntsoeOutagesQuery","description":"Query parameters for ENTSOE outages data.\n\nSupports filtering by:\n- source_type: Generation vs Transmission\n- zones: biddingzone_domain (gen) or in_domain/out_domain (trans)\n- time: active_at, or start_from/start_to\n- attributes: plant_type, business_type, status"},"EntsoeOutageSourceType":{"type":"string","enum":["generation_unit","transmission"],"title":"EntsoeOutageSourceType","description":"Outage source type discriminator."},"EntsoeZone":{"type":"string","enum":["AL","AT","BA","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GE","GR","HR","HU","IE","IT","LT","LU","LV","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","TR","UA","UK","XK","DE_LU","DE_AT_LU","DE_50HZ","DE_AMPRION","DE_TENNET","DE_TRANSNET","DK_1","DK_2","DK_CA","IT_CALA","IT_CNOR","IT_CSUD","IT_NORD","IT_SARD","IT_SICI","IT_SUD","IT_SACO_AC","IT_SACO_DC","NO_1","NO_2","NO_3","NO_4","NO_5","NO_2_NSL","SE_1","SE_2","SE_3","SE_4","IE_SEM","GB_NIR","LU_BZN","UA_IPS"],"title":"EntsoeZone","description":"ENTSOE bidding zones and control areas.\n\nBased on ENTSO-E Transparency Platform zone codes."},"EntsoePsrType":{"type":"string","enum":["Biomass","Energy storage","Fossil Brown coal/Lignite","Fossil Coal-derived gas","Fossil Gas","Fossil Hard coal","Fossil Oil","Fossil Oil shale","Fossil Peat","Geothermal","Hydro Pumped Storage","Hydro Pumped Storage Consumption","Hydro Pumped Storage Generation","Hydro Run-of-river and poundage","Hydro Water Reservoir","Marine","Nuclear","Other","Other renewable","Solar","Waste","Wind Offshore","Wind Onshore"],"title":"EntsoePsrType","description":"ENTSOE Production/Generation Source (PSR) types."},"EntsoeBusinessType":{"type":"string","enum":["Planned maintenance","Unplanned outage"],"title":"EntsoeBusinessType","description":"Business type for outages (reason).\n\nNote: Values match the human-readable strings stored in ClickHouse,\nnot the raw ENTSOE codes (A53, A54)."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EntsoePivotedQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoePivotedQuery":{"properties":{"zone_keys":{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array","title":"Zone Keys","description":"Zone codes to query"},"psr_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoePsrType"},"type":"array"},{"type":"null"}],"title":"Psr Types","description":"PSR types to pivot into columns"},"generation_variable":{"anyOf":[{"$ref":"#/components/schemas/EntsoeVariable"},{"type":"null"}],"description":"ENTSO-E variable for generation data"},"load_variable":{"anyOf":[{"$ref":"#/components/schemas/EntsoeVariable"},{"type":"null"}],"description":"ENTSO-E variable for load data"},"psr_column_map":{"additionalProperties":{"type":"string"},"type":"object","title":"Psr Column Map","description":"Maps PSR type name to output column name"},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time (exclusive)"},"temporal_resolution_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Temporal Resolution Minutes","description":"Target resolution; None to skip interpolation","default":15},"model_label":{"type":"string","title":"Model Label","description":"Value for the 'model' column in output rows","default":"ENTSO-E Actual"},"needed_derived_vars":{"anyOf":[{"items":{"type":"string"},"type":"array","uniqueItems":true},{"type":"null"}],"title":"Needed Derived Vars","description":"Set of derived column names to attempt to compute (wind_total_mw / renewables_total_mw / residual_load_mw). compute_derived_power_columns silently skips any whose input columns aren't in the frame, so callers don't have to mirror the feasibility logic. None means no derivation."},"load_col":{"type":"string","title":"Load Col","default":"load_mw"},"zone_key_remap":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Zone Key Remap","description":"Remap zone_key values in output"}},"type":"object","required":["zone_keys","start_time"],"title":"EntsoePivotedQuery","description":"Query that returns ENTSO-E data pivoted into wide-column format.\n\nPivots PSR-based generation data into per-source columns, optionally\njoins load, and interpolates to a regular time grid in ClickHouse.\nDerived columns (wind_total / renewables_total / residual_load) are\ncomputed post-query in `query_pivoted_data` via the shared\n`compute_derived_power_columns` helper — same code path as UK power\nand the api-server pivoted view, so null-propagation semantics match\neverywhere. Callers declare *intent* via ``needed_derived_vars``\n(the set of derived column names they want); feasibility (does this\nzone have onshore+offshore? does the frame have load?) is decided by\nthe derivation helper itself, not by the call site."},"EntsoeZone":{"type":"string","enum":["AL","AT","BA","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GE","GR","HR","HU","IE","IT","LT","LU","LV","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","TR","UA","UK","XK","DE_LU","DE_AT_LU","DE_50HZ","DE_AMPRION","DE_TENNET","DE_TRANSNET","DK_1","DK_2","DK_CA","IT_CALA","IT_CNOR","IT_CSUD","IT_NORD","IT_SARD","IT_SICI","IT_SUD","IT_SACO_AC","IT_SACO_DC","NO_1","NO_2","NO_3","NO_4","NO_5","NO_2_NSL","SE_1","SE_2","SE_3","SE_4","IE_SEM","GB_NIR","LU_BZN","UA_IPS"],"title":"EntsoeZone","description":"ENTSOE bidding zones and control areas.\n\nBased on ENTSO-E Transparency Platform zone codes."},"EntsoePsrType":{"type":"string","enum":["Biomass","Energy storage","Fossil Brown coal/Lignite","Fossil Coal-derived gas","Fossil Gas","Fossil Hard coal","Fossil Oil","Fossil Oil shale","Fossil Peat","Geothermal","Hydro Pumped Storage","Hydro Pumped Storage Consumption","Hydro Pumped Storage Generation","Hydro Run-of-river and poundage","Hydro Water Reservoir","Marine","Nuclear","Other","Other renewable","Solar","Waste","Wind Offshore","Wind Onshore"],"title":"EntsoePsrType","description":"ENTSOE Production/Generation Source (PSR) types."},"EntsoeVariable":{"type":"string","enum":["countertrading","crossborder_flows","day_ahead_prices","generation_actual","generation_forecast_da","imbalance_prices","imbalance_volumes","intraday_offered_capacity","load_actual","load_forecast_da","net_position_da","net_position_total","ntc_dayahead","ntc_weekahead","ntc_monthahead","ntc_yearahead","redispatch_crossborder","redispatch_internal","scheduled_exchanges_da","scheduled_exchanges_total","total_available_hydro_capacity","wind_solar_forecast_da","wind_solar_forecast_intraday"],"title":"EntsoeVariable","description":"ENTSOE timeseries variable types."}}}}
```

## The EntsoePsrType object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoePsrType":{"type":"string","enum":["Biomass","Energy storage","Fossil Brown coal/Lignite","Fossil Coal-derived gas","Fossil Gas","Fossil Hard coal","Fossil Oil","Fossil Oil shale","Fossil Peat","Geothermal","Hydro Pumped Storage","Hydro Pumped Storage Consumption","Hydro Pumped Storage Generation","Hydro Run-of-river and poundage","Hydro Water Reservoir","Marine","Nuclear","Other","Other renewable","Solar","Waste","Wind Offshore","Wind Onshore"],"title":"EntsoePsrType","description":"ENTSOE Production/Generation Source (PSR) types."}}}}
```

## The EntsoeTimeseriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeTimeseriesQuery":{"properties":{"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"List of ENTSOE variable types to query. If not set, returns all variables."},"zone_keys":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"Zone Keys","description":"List of zone codes (e.g., ['DE_LU', 'FR', 'NO_1'])"},"zone_from":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"Zone From","description":"Source zones for cross-border queries (e.g., FR)"},"zone_to":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeZone"},"type":"array"},{"type":"null"}],"title":"Zone To","description":"Destination zones for cross-border queries (e.g., DE_LU)"},"psr_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoePsrType"},"type":"array"},{"type":"null"}],"title":"Psr Types","description":"List of PSR types to filter generation data"},"other_types":{"anyOf":[{"items":{"$ref":"#/components/schemas/EntsoeOtherType"},"type":"array"},{"type":"null"}],"title":"Other Types","description":"Other types filter (e.g., 'Long', 'Short' for imbalance)"},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If None, no upper bound is applied (useful for day-ahead forecasts)"},"aggregation":{"$ref":"#/components/schemas/jua_query_v2__entsoe__query__TemporalAggregation","description":"Temporal aggregation to apply","default":"none"},"include_metadata":{"type":"boolean","title":"Include Metadata","description":"Include metadata column in response","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone name for time formatting (e.g., 'Europe/Berlin', 'America/New_York'). Defaults to UTC"},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by. Supports direction suffix: 'time__desc' for descending, 'time__asc' for ascending (default). Can also use object format: {'field': 'time', 'direction': 'desc'}"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","required":["start_time"],"title":"EntsoeTimeseriesQuery","description":"Query parameters for ENTSOE timeseries data.\n\nSupports filtering by:\n- variables: List of ENTSOE variable types (optional, returns all if not set)\n- zone_keys: List of zone codes for zone-based data\n- zone_from/zone_to: For cross-border flow queries\n- psr_types: For generation data by source type\n- start_time: Start of time range (required)\n- end_time: End of time range (optional - if None, no upper bound applied)\n\nNote: end_time can be None to include all future data, which is useful\nfor day-ahead forecasts that extend into tomorrow."},"EntsoeVariable":{"type":"string","enum":["countertrading","crossborder_flows","day_ahead_prices","generation_actual","generation_forecast_da","imbalance_prices","imbalance_volumes","intraday_offered_capacity","load_actual","load_forecast_da","net_position_da","net_position_total","ntc_dayahead","ntc_weekahead","ntc_monthahead","ntc_yearahead","redispatch_crossborder","redispatch_internal","scheduled_exchanges_da","scheduled_exchanges_total","total_available_hydro_capacity","wind_solar_forecast_da","wind_solar_forecast_intraday"],"title":"EntsoeVariable","description":"ENTSOE timeseries variable types."},"EntsoeZone":{"type":"string","enum":["AL","AT","BA","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GE","GR","HR","HU","IE","IT","LT","LU","LV","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","TR","UA","UK","XK","DE_LU","DE_AT_LU","DE_50HZ","DE_AMPRION","DE_TENNET","DE_TRANSNET","DK_1","DK_2","DK_CA","IT_CALA","IT_CNOR","IT_CSUD","IT_NORD","IT_SARD","IT_SICI","IT_SUD","IT_SACO_AC","IT_SACO_DC","NO_1","NO_2","NO_3","NO_4","NO_5","NO_2_NSL","SE_1","SE_2","SE_3","SE_4","IE_SEM","GB_NIR","LU_BZN","UA_IPS"],"title":"EntsoeZone","description":"ENTSOE bidding zones and control areas.\n\nBased on ENTSO-E Transparency Platform zone codes."},"EntsoePsrType":{"type":"string","enum":["Biomass","Energy storage","Fossil Brown coal/Lignite","Fossil Coal-derived gas","Fossil Gas","Fossil Hard coal","Fossil Oil","Fossil Oil shale","Fossil Peat","Geothermal","Hydro Pumped Storage","Hydro Pumped Storage Consumption","Hydro Pumped Storage Generation","Hydro Run-of-river and poundage","Hydro Water Reservoir","Marine","Nuclear","Other","Other renewable","Solar","Waste","Wind Offshore","Wind Onshore"],"title":"EntsoePsrType","description":"ENTSOE Production/Generation Source (PSR) types."},"EntsoeOtherType":{"type":"string","enum":["Long","Short"],"title":"EntsoeOtherType","description":"ENTSOE Other Type (for imbalance data)."},"jua_query_v2__entsoe__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for ENTSOE queries."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EntsoeVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeVariable":{"type":"string","enum":["countertrading","crossborder_flows","day_ahead_prices","generation_actual","generation_forecast_da","imbalance_prices","imbalance_volumes","intraday_offered_capacity","load_actual","load_forecast_da","net_position_da","net_position_total","ntc_dayahead","ntc_weekahead","ntc_monthahead","ntc_yearahead","redispatch_crossborder","redispatch_internal","scheduled_exchanges_da","scheduled_exchanges_total","total_available_hydro_capacity","wind_solar_forecast_da","wind_solar_forecast_intraday"],"title":"EntsoeVariable","description":"ENTSOE timeseries variable types."}}}}
```

## The EntsoeVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"uses_zone_key":{"type":"boolean","title":"Uses Zone Key","default":true},"uses_zone_from_to":{"type":"boolean","title":"Uses Zone From To","default":false},"uses_psr_type":{"type":"boolean","title":"Uses Psr Type","default":false},"zone_kind":{"$ref":"#/components/schemas/EntsoeZoneKind","default":"physical"}},"type":"object","required":["name","description","unit"],"title":"EntsoeVariableInfo","description":"Information about an ENTSOE variable."},"EntsoeZoneKind":{"type":"string","enum":["physical","bidding","cross_border"],"title":"EntsoeZoneKind","description":"Which ENTSOE zone concept a variable is published under.\n\nENTSOE publishes some data at the country / control-area level\n(generation, load, capacity) and other data at the bidding-zone\nlevel (prices, net positions, imbalance).  For most countries the\ncountry code IS the bidding-zone code, but not always: Ireland\npublishes gen/load under ``IE`` (the country) and day-ahead prices\nunder ``IE_SEM`` (the all-island Single Electricity Market bidding\nzone).  Luxembourg is similar (``LU`` vs ``LU_BZN``).\n\nCross-border variables (flows, NTC, scheduled exchanges) use\n``zone_from`` / ``zone_to`` instead of ``zone_key`` and are flagged\nseparately so callers know not to try resolving them against a\nphysical/bidding zone pair."}}}}
```

## The EntsoeZone object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeZone":{"type":"string","enum":["AL","AT","BA","BE","BG","CH","CY","CZ","DE","DK","EE","ES","FI","FR","GB","GE","GR","HR","HU","IE","IT","LT","LU","LV","MD","ME","MK","MT","NL","NO","PL","PT","RO","RS","RU","SE","SI","SK","TR","UA","UK","XK","DE_LU","DE_AT_LU","DE_50HZ","DE_AMPRION","DE_TENNET","DE_TRANSNET","DK_1","DK_2","DK_CA","IT_CALA","IT_CNOR","IT_CSUD","IT_NORD","IT_SARD","IT_SICI","IT_SUD","IT_SACO_AC","IT_SACO_DC","NO_1","NO_2","NO_3","NO_4","NO_5","NO_2_NSL","SE_1","SE_2","SE_3","SE_4","IE_SEM","GB_NIR","LU_BZN","UA_IPS"],"title":"EntsoeZone","description":"ENTSOE bidding zones and control areas.\n\nBased on ENTSO-E Transparency Platform zone codes."}}}}
```

## The EntsoeZoneKind object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EntsoeZoneKind":{"type":"string","enum":["physical","bidding","cross_border"],"title":"EntsoeZoneKind","description":"Which ENTSOE zone concept a variable is published under.\n\nENTSOE publishes some data at the country / control-area level\n(generation, load, capacity) and other data at the bidding-zone\nlevel (prices, net positions, imbalance).  For most countries the\ncountry code IS the bidding-zone code, but not always: Ireland\npublishes gen/load under ``IE`` (the country) and day-ahead prices\nunder ``IE_SEM`` (the all-island Single Electricity Market bidding\nzone).  Luxembourg is similar (``LU`` vs ``LU_BZN``).\n\nCross-border variables (flows, NTC, scheduled exchanges) use\n``zone_from`` / ``zone_to`` instead of ``zone_key`` and are flagged\nseparately so callers know not to try resolving them against a\nphysical/bidding zone pair."}}}}
```

## The EpexSpotBlockBidQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotBlockBidQuery":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time (inclusive, filters on delivery_start)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time (exclusive). If None, no upper bound."},"market_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Area","description":"Market area filter (e.g. 'DE')."},"auction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auction","description":"Auction filter (e.g. 'DA')."},"resolution":{"anyOf":[{"type":"string","enum":["PT15M","PT60M"]},{"type":"null"}],"title":"Resolution","description":"Resolution filter: PT15M or PT60M."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for delivery_start/_end formatting."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."},"execution":{"anyOf":[{"type":"string","enum":["Y","N"]},{"type":"null"}],"title":"Execution","description":"Execution flag filter: Y or N."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'delivery_start', 'block_id')."}},"type":"object","required":["start_time"],"title":"EpexSpotBlockBidQuery","description":"Query for EPEX SPOT block bids."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The EpexSpotCurveQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotCurveQuery":{"properties":{"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time (inclusive, filters on delivery_start)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time (exclusive). If None, no upper bound."},"market_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Area","description":"Market area filter (e.g. 'DE')."},"auction":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Auction","description":"Auction filter (e.g. 'DA')."},"resolution":{"anyOf":[{"type":"string","enum":["PT15M","PT60M"]},{"type":"null"}],"title":"Resolution","description":"Resolution filter: PT15M or PT60M."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for delivery_start/_end formatting."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."},"side":{"anyOf":[{"type":"string","enum":["Sell","Purchase"]},{"type":"null"}],"title":"Side","description":"Curve side filter: Sell (supply) or Purchase (demand)."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'delivery_start', 'point_index__desc')."}},"type":"object","required":["start_time"],"title":"EpexSpotCurveQuery","description":"Query for EPEX SPOT aggregated supply/demand curves."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The EpexSpotTimeseriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotTimeseriesQuery":{"properties":{"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/EpexSpotVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Variables to query. If not set, returns all."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive, filters on delivery_start)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If None, no upper bound."},"market_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Area","description":"Market area filter (e.g. 'DE'). If None, returns all."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for time formatting (e.g. 'Europe/Berlin')."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'delivery_start__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","required":["start_time"],"title":"EpexSpotTimeseriesQuery","description":"Query parameters for EPEX SPOT market data.\n\nEach variable maps to a specific ClickHouse table and column.\nThe query builder generates the appropriate SQL UNION for variables\nspanning different tables."},"EpexSpotVariable":{"type":"string","enum":["continuous_weighted_avg_price","continuous_last_price","continuous_low_price","continuous_high_price","continuous_volume_buy","continuous_volume_sell","continuous_index_price","continuous_idfull_price","continuous_id1_price","continuous_id3_price","da_price","ida1_price","ida2_price","ida3_price","da_volume","ida1_volume","ida2_volume","ida3_volume","da_index_price","da_hourly_price","da_hourly_volume"],"title":"EpexSpotVariable","description":"EPEX SPOT user-facing variable types."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EpexSpotTradesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotTradesQuery":{"properties":{"market_area":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Market Area","description":"Market area filter (e.g. 'DE'). If None, returns all."},"delivery_areas":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Delivery Areas","description":"Delivery area codes to filter by (e.g. ['DE1', 'DE4'])."},"sides":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Sides","description":"Trade sides to filter by ('BUY' and/or 'SELL')."},"products":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Products","description":"Product codes to filter by (e.g. ['XBID_Hour_Power'])."},"trade_phases":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Trade Phases","description":"Trade phases to filter by (e.g. ['CONT'])."},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start execution time (inclusive, filters on execution_time)."},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End execution time (exclusive, filters on execution_time)."},"delivery_date_start":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Date Start","description":"Start delivery date (inclusive, filters on delivery_date)."},"delivery_date_end":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"title":"Delivery Date End","description":"End delivery date (inclusive, filters on delivery_date)."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for datetime output (e.g. 'Europe/Berlin')."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'execution_time__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (requires order_by)."}},"type":"object","title":"EpexSpotTradesQuery","description":"Query parameters for EPEX SPOT intraday continuous individual trades.\n\nFetches row-level trades from ``epex_spot_continuous_trades``. Filter by\nmarket area, delivery area, side, product, trade phase, a trade-execution\ntime window, and/or a delivery-date window. ``delivery_date`` is the table's\nprimary-index / partition key, so a ``delivery_date_*`` filter is the\ncheapest way to scope a query."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The EpexSpotVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotVariable":{"type":"string","enum":["continuous_weighted_avg_price","continuous_last_price","continuous_low_price","continuous_high_price","continuous_volume_buy","continuous_volume_sell","continuous_index_price","continuous_idfull_price","continuous_id1_price","continuous_id3_price","da_price","ida1_price","ida2_price","ida3_price","da_volume","ida1_volume","ida2_volume","ida3_volume","da_index_price","da_hourly_price","da_hourly_volume"],"title":"EpexSpotVariable","description":"EPEX SPOT user-facing variable types."}}}}
```

## The EpexSpotVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"EpexSpotVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"table":{"type":"string","title":"Table"}},"type":"object","required":["name","description","unit","table"],"title":"EpexSpotVariableInfo","description":"Information about an EPEX SPOT variable."}}}}
```

## The ForecastDisseminationStatus object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ForecastDisseminationStatus":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Forecast initialization time"},"delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delay","description":"Delay in minutes"},"is_missing":{"type":"boolean","title":"Is Missing","description":"Whether the forecast is missing","default":false},"dissemination_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dissemination Time","description":"Forecast dissemination time"},"expected_dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Expected Dissemination Time","description":"Expected dissemination time"},"max_prediction_timedelta":{"type":"integer","title":"Max Prediction Timedelta","description":"Maximum prediction timedelta for the forecast"},"expected_max_prediction_timedelta":{"type":"integer","title":"Expected Max Prediction Timedelta","description":"Expected maximum prediction timedelta for the forecast"},"is_delayed":{"type":"boolean","title":"Is Delayed","description":"Whether the forecast is delayed","readOnly":true}},"type":"object","required":["init_time","max_prediction_timedelta","expected_max_prediction_timedelta","is_delayed"],"title":"ForecastDisseminationStatus"}}}}
```

## The ForecastIndexQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ForecastIndexQuery":{"properties":{"model":{"$ref":"#/components/schemas/Model","description":"Model identifiers to query (e.g. 'ept2')"},"init_time":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"},{"items":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"}]},"type":"array"},{"$ref":"#/components/schemas/TimeSlice"},{"$ref":"#/components/schemas/PreferredHours"}],"title":"Init Time","description":"Forecast initialization time(s). Accepts: 'latest' or 'latest-N' for relative init times, an integer offset (0 = latest, 1 = second latest), an ISO 8601 datetime string, a list of any of the above, or a TimeSlice object with start/end for a date range."},"latitude":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Latitude","description":"The range of latitudes to return."},"longitude":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Longitude","description":"Geographic filter specifying the query location(s) or region(s)"},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"List of weather variables to query (e.g., 'air_temperature_at_height_level_2m', 'wind_speed_at_height_level_100m'). If empty, returns all variables available for the selected models"},"prediction_timedelta":{"anyOf":[{"type":"integer"},{"$ref":"#/components/schemas/PredictionTimedeltaSlice"},{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Prediction Timedelta","description":"Forecast lead time(s) from init_time. The units are determined by the `timedelta_unit` parameter (default: `h`). Can be a single integer, list of integers, or a PredictionTimedeltaSlice range. If None, returns all available lead times. "},"latest_min_prediction_timedelta":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Latest Min Prediction Timedelta","description":"When using init_time='latest', only use forecasts with at least `latest_min_prediction_timedelta` of lead time available. The units are determined by the `timedelta_unit` parameter (default: `h`). "},"timedelta_unit":{"type":"string","enum":["h","m","d","hour","hourly","minute","minutes","day","days"],"title":"Timedelta Unit","description":"Time scale to use for the query. Can be 'h' for hours, 'm' for minutes, 'd' for days","default":"h"}},"type":"object","required":["model","init_time","latitude","longitude"],"title":"ForecastIndexQuery","description":"Main query object for retrieving the index for forecast data."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"},"TimeSlice":{"properties":{"start":{"type":"string","format":"date-time","title":"Start","description":"Start datetime (inclusive)"},"end":{"type":"string","format":"date-time","title":"End","description":"End datetime (inclusive) in ISO 8601 format"}},"type":"object","required":["start","end"],"title":"TimeSlice","description":"Time range for querying forecasts between two datetime values."},"PreferredHours":{"properties":{"type":{"type":"string","title":"Type","default":"preferred_hours"},"selections":{"items":{"$ref":"#/components/schemas/PreferredHoursSelection"},"type":"array","title":"Selections","description":"List of {hour, optional minute, offset} selections"}},"type":"object","title":"PreferredHours","description":"Select specific forecast runs by UTC hour and per-hour offset.\n\nEach selection picks the Nth most recent available run at a given UTC hour.\nExample: selections=[{hour:6, offset:0}, {hour:6, offset:2}, {hour:18, offset:0}]\nresolves to today's 6am, day-before-yesterday's 6am, and today's 6pm."},"PreferredHoursSelection":{"properties":{"hour":{"type":"integer","maximum":23,"minimum":0,"title":"Hour","description":"UTC hour (0-23)"},"minute":{"anyOf":[{"type":"integer","maximum":59,"minimum":0},{"type":"null"}],"title":"Minute","description":"Optional UTC minute (0-59). Omit for the legacy hour-only behavior."},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"0 = most recent run at this hour, 1 = previous, etc.","default":0}},"type":"object","required":["hour"],"title":"PreferredHoursSelection","description":"A single preferred-hour run selection.\n\nPicks the Nth most recent run at a given UTC hour."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"PredictionTimedeltaSlice":{"properties":{"start":{"type":"integer","minimum":0,"title":"Start","description":"Start lead time in minutes from init_time (inclusive)","default":0},"end":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"End","description":"End lead time in minutes from init_time (inclusive). If None, uses model's maximum available lead time"}},"type":"object","title":"PredictionTimedeltaSlice","description":"Forecast lead time range in minutes from the initialization time."}}}}
```

## The ForecastInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ForecastInfo":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Forecast initialization time"},"max_prediction_timedelta":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Max Prediction Timedelta","description":"Maximum available lead time in minutes for this forecast"},"dissemination_time":{"type":"string","title":"Dissemination Time","description":"Forecast step dissemination time"}},"type":"object","required":["init_time","dissemination_time"],"title":"ForecastInfo","description":"Information about a single available forecast."}}}}
```

## The ForecastQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ForecastQuery":{"properties":{"models":{"anyOf":[{"items":{"$ref":"#/components/schemas/Model"},"type":"array"},{"type":"null"}],"title":"Models","description":"List of forecast model identifiers to query (e.g., ['ept2', 'aifs']). Required if model_runs is not specified."},"geo":{"$ref":"#/components/schemas/GeoFilter","description":"Geographic filter specifying the query location(s) or region(s)"},"init_time":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"},{"items":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"}]},"type":"array"},{"$ref":"#/components/schemas/TimeSlice"},{"$ref":"#/components/schemas/PreferredHours"},{"type":"null"}],"title":"Init Time","description":"Forecast initialization time(s). Accepts: 'latest' or 'latest-N' for relative init times, an integer offset (0 = latest, 1 = second latest), an ISO 8601 datetime string, a list of any of the above, or a TimeSlice object with start/end for a date range. Required if model_runs is not specified."},"model_runs":{"anyOf":[{"additionalProperties":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"},{"items":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"}]},"type":"array"},{"$ref":"#/components/schemas/TimeSlice"},{"$ref":"#/components/schemas/PreferredHours"}]},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object"},{"type":"null"}],"title":"Model Runs","description":"Per-model init_time specification. Alternative to models+init_time. Keys are model identifiers, values are init_time specifications (same formats as init_time: 'latest', 'latest-N', integer offset, datetime, list, or TimeSlice). Cannot be used together with models/init_time."},"time":{"anyOf":[{"type":"string","format":"date-time"},{"items":{"type":"string","format":"date-time"},"type":"array"},{"$ref":"#/components/schemas/TimeSlice"},{"type":"null"}],"title":"Time","description":"Filter by specific forecast valid times (as opposed to lead times). Accepts datetime, list of datetimes, or time range"},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"List of weather variables to query (e.g., 'air_temperature_at_height_level_2m', 'wind_speed_at_height_level_100m'). If empty, returns all variables available for the selected models"},"prediction_timedelta":{"anyOf":[{"type":"integer"},{"$ref":"#/components/schemas/PredictionTimedeltaSlice"},{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Prediction Timedelta","description":"Forecast lead time(s) from init_time. The units are determined by the `timedelta_unit` parameter (default: `h`). Can be a single integer, list of integers, or a PredictionTimedeltaSlice range. If None, returns all available lead times. "},"latest_min_prediction_timedelta":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"Latest Min Prediction Timedelta","description":"When using init_time='latest', only use forecasts with at least `latest_min_prediction_timedelta` of lead time available. The units are determined by the `timedelta_unit` parameter (default: `h`). "},"timedelta_unit":{"type":"string","enum":["h","m","d","hour","hourly","minute","minutes","day","days"],"title":"Timedelta Unit","description":"Time scale to use for the query. Can be 'h' for hours, 'm' for minutes, 'd' for days","default":"h"},"temporal_resolution":{"anyOf":[{"type":"integer","enum":[15,30,60,120,180,240,300,360]},{"type":"null"}],"title":"Temporal Resolution","description":"Requested temporal resolution in minutes"},"group_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/GroupByKey"},"type":"array"},{"type":"null"}],"title":"Group By","description":"List of dimensions to group by for aggregation (e.g., ['model', 'init_time', 'time']). Requires 'aggregation' to be specified. See docs.jua.ai for grouping examples"},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_Union_Coordinates__CustomerVariable__"},"type":"array"},{"type":"null"}],"title":"Order By","description":"List of dimensions to sort results by. Supports direction suffix: 'time__desc' for descending, 'time__asc' for ascending (default). Can also use object format: {'field': 'time', 'direction': 'desc'}"},"aggregation":{"anyOf":[{"items":{"$ref":"#/components/schemas/Aggregation"},"type":"array"},{"type":"null"}],"title":"Aggregation","description":"List of aggregation functions to apply when grouping (e.g., ['avg', 'std']). Requires 'group_by' to be specified"},"weighting":{"anyOf":[{"$ref":"#/components/schemas/Weighting"},{"type":"null"}],"description":"Optional weighting scheme for geographic aggregation (e.g., by wind/solar capacity or population)"},"include_time":{"type":"boolean","title":"Include Time","description":"Include the forecast valid time (init_time + prediction_timedelta) as a column in results","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone name for time formatting (e.g., 'Europe/Berlin', 'America/New_York'). Defaults to UTC"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters for limiting result size. Requires 'order_by' to be specified"},"were_variables_explicitly_requested":{"type":"boolean","title":"Were Variables Explicitly Requested","description":"Whether the user passed the variables explicitly. If True, the variables will be used to filter the results. If False, all variables will be returned.","default":true},"include_ensemble_members":{"type":"boolean","title":"Include Ensemble Members","description":"When True, return per-ensemble-member rows for ensemble models instead of the implicit ensemble-mean. Disables the auto-grouping that hides individual members. If group_by is also explicit, 'ensemble_member' is automatically added so aggregation runs per member.","default":false},"value_filters":{"anyOf":[{"items":{"$ref":"#/components/schemas/ValueFilter"},"type":"array"},{"type":"null"}],"title":"Value Filters","description":"Post-aggregation value filters applied as an outermost SQL wrapper. Used by alert evaluation to push threshold conditions into ClickHouse."},"debias":{"type":"boolean","title":"Debias","description":"If True, subtract a per-(model, valid-time month, valid-time hour) bias from the requested values before returning. The bias is the average of the previous calendar month's forecast-vs-station errors across European stations, computed on the fly from `synoptic_station_bias_europe`. Only `air_temperature_at_height_level_2m` and `wind_speed_at_height_level_10m` may be requested; any other variable, or any power/MW forecast, is rejected.","default":false},"calibrate":{"type":"boolean","title":"Calibrate","description":"If True, inflate ensemble spread around the per-cell ensemble mean using an on-the-fly gamma = clip(mean_v(CRMSE_v / spread_v), 0.5, 2) from the previous four calendar weeks of European station benchmark errors, pooled by lead time across temperature, wind, and solar. Only Jua EPT ensemble models (`ept2_e`, `ept2_hrrr`, `ept2_1_europa`) are calibrated; other models pass through unchanged. ClickHouse applies gamma as `m + γ(x−m)` before downstream aggregation or MW composition.","default":false}},"type":"object","required":["geo"],"title":"ForecastQuery","description":"Main query object for retrieving weather forecast data.\n\nSupports flexible querying by location, time, variables, and models with optional\naggregation, grouping, and weighting capabilities.\n\nTwo modes of specifying models and init_times:\n1. Classic mode: Use `models` + `init_time` (same init_time for all models)\n2. Model runs mode: Use `model_runs` (per-model init_time specification)\n\nThese modes are mutually exclusive."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"},"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."},"TimeSlice":{"properties":{"start":{"type":"string","format":"date-time","title":"Start","description":"Start datetime (inclusive)"},"end":{"type":"string","format":"date-time","title":"End","description":"End datetime (inclusive) in ISO 8601 format"}},"type":"object","required":["start","end"],"title":"TimeSlice","description":"Time range for querying forecasts between two datetime values."},"PreferredHours":{"properties":{"type":{"type":"string","title":"Type","default":"preferred_hours"},"selections":{"items":{"$ref":"#/components/schemas/PreferredHoursSelection"},"type":"array","title":"Selections","description":"List of {hour, optional minute, offset} selections"}},"type":"object","title":"PreferredHours","description":"Select specific forecast runs by UTC hour and per-hour offset.\n\nEach selection picks the Nth most recent available run at a given UTC hour.\nExample: selections=[{hour:6, offset:0}, {hour:6, offset:2}, {hour:18, offset:0}]\nresolves to today's 6am, day-before-yesterday's 6am, and today's 6pm."},"PreferredHoursSelection":{"properties":{"hour":{"type":"integer","maximum":23,"minimum":0,"title":"Hour","description":"UTC hour (0-23)"},"minute":{"anyOf":[{"type":"integer","maximum":59,"minimum":0},{"type":"null"}],"title":"Minute","description":"Optional UTC minute (0-59). Omit for the legacy hour-only behavior."},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"0 = most recent run at this hour, 1 = previous, etc.","default":0}},"type":"object","required":["hour"],"title":"PreferredHoursSelection","description":"A single preferred-hour run selection.\n\nPicks the Nth most recent run at a given UTC hour."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"PredictionTimedeltaSlice":{"properties":{"start":{"type":"integer","minimum":0,"title":"Start","description":"Start lead time in minutes from init_time (inclusive)","default":0},"end":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"End","description":"End lead time in minutes from init_time (inclusive). If None, uses model's maximum available lead time"}},"type":"object","title":"PredictionTimedeltaSlice","description":"Forecast lead time range in minutes from the initialization time."},"GroupByKey":{"properties":{"field":{"type":"string","enum":["model","init_time","time","prediction_timedelta","ensemble_member","market_zone","country_key","point","latitude","longitude","day_of_year","hour"],"title":"Field"},"transformation":{"anyOf":[{"type":"string","const":"to_start_of"},{"type":"null"}],"title":"Transformation"},"parameters_list":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parameters List"}},"type":"object","required":["field"],"title":"GroupByKey","description":"Structured representation of a group-by key.\n\n- field: one of supported base fields\n- transformation: optional transformation name (currently only 'to_start_of')\n- parameters_list: optional list of parameters for the transformation"},"OrderByItem_Union_Coordinates__CustomerVariable__":{"properties":{"field":{"anyOf":[{"$ref":"#/components/schemas/Coordinates"},{"$ref":"#/components/schemas/CustomerVariable"}],"title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[Union[Coordinates, CustomerVariable]]"},"Coordinates":{"type":"string","enum":["model","init_time","time","prediction_timedelta","latitude","longitude","point","market_zone","country_key"],"title":"Coordinates"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Aggregation":{"properties":{"aggregation":{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"],"title":"Aggregation","description":"Aggregation function name."},"parameters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Parameters","description":"Parameters for parameterized aggregations.Example: 'quantile': [0.5] for median, [0.95] for 95th percentile, etc."},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Specific variables to aggregate. If None, applies to all variables in the query"}},"type":"object","required":["aggregation"],"title":"Aggregation","description":"Aggregation function to apply when grouping forecast data.\n\nSupported aggregations:\n- Basic: avg, std, min, max, sum, count, median\n- Parameterized: quantile_(p), argmin_(col), argmax_(col)\n\nFor argmin/argmax, the parameter is the column to return, and the variable\nis the column to find the min/max of. Example:\n    argmin_(time)__temperature -> returns time when temperature is minimum\n\nCan be applied to specific variables or all variables in the query."},"Weighting":{"properties":{"type":{"type":"string","enum":["wind_capacity","wind_capacity_combined","wind_capacity_transmission","wind_capacity_embedded","solar_capacity","population"],"title":"Type","description":"Weighting type for geographic aggregation. 'wind_capacity': Weight by installed wind power capacity. 'solar_capacity': Weight by installed solar power capacity. 'population': Weight by population density"},"unit":{"type":"string","enum":["weather","mw"],"title":"Unit","description":"Output unit. 'weather': return capacity-weighted raw weather values E[wu]. 'mw': apply power curves in ClickHouse and return predicted MW.","default":"weather"}},"type":"object","required":["type"],"title":"Weighting","description":"Weighting scheme for aggregating forecast data over geographic areas.\n\nApplies weighted averages based on capacity or population distribution within\nthe queried area."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"},"ValueFilter":{"properties":{"variable":{"type":"string","title":"Variable"},"operator":{"type":"string","title":"Operator"},"value":{"type":"number","title":"Value"}},"type":"object","required":["variable","operator","value"],"title":"ValueFilter","description":"Post-aggregation value filter applied as outermost SQL wrapper."}}}}
```

## The GeoConstraints object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"GeoConstraints":{"properties":{"allowed_zones":{"items":{"type":"string"},"type":"array","title":"Allowed Zones","description":"ISO country / market-zone codes where this model has data. In YAML, may be given as the string 'european' to expand to the shared EUROPEAN_ZONES list."},"bounding_box":{"anyOf":[{"$ref":"#/components/schemas/GridBounds"},{"type":"null"}],"description":"Explicit lat/lon bounding box. When omitted on a model with a non-EXACT grid, the grid's own bounds are used."}},"type":"object","required":["allowed_zones"],"title":"GeoConstraints","description":"Geographic coverage limits for a regional model.\n\nModels without a ``geo_constraints`` entry in their YAML are considered\nglobal and available everywhere."},"GridBounds":{"properties":{"min_lat":{"type":"number","title":"Min Lat"},"max_lat":{"type":"number","title":"Max Lat"},"min_lon":{"type":"number","title":"Min Lon"},"max_lon":{"type":"number","title":"Max Lon"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"GridBounds"}}}}
```

## The GeoFilter object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."}}}}
```

## The Grid object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Grid":{"type":"string","enum":["720x1440","2160x4320","1440x2880","2220x4440","2221x4440","360x720","180x360","451x900","720x900_europe","721x1201_europe","657x1377","553x961_europe","746x1215","520x520_pm65","exact"],"title":"Grid"}}}}
```

## The GridBounds object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"GridBounds":{"properties":{"min_lat":{"type":"number","title":"Min Lat"},"max_lat":{"type":"number","title":"Max Lat"},"min_lon":{"type":"number","title":"Min Lon"},"max_lon":{"type":"number","title":"Max Lon"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"GridBounds"}}}}
```

## The GroupByKey object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"GroupByKey":{"properties":{"field":{"type":"string","enum":["model","init_time","time","prediction_timedelta","ensemble_member","market_zone","country_key","point","latitude","longitude","day_of_year","hour"],"title":"Field"},"transformation":{"anyOf":[{"type":"string","const":"to_start_of"},{"type":"null"}],"title":"Transformation"},"parameters_list":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parameters List"}},"type":"object","required":["field"],"title":"GroupByKey","description":"Structured representation of a group-by key.\n\n- field: one of supported base fields\n- transformation: optional transformation name (currently only 'to_start_of')\n- parameters_list: optional list of parameters for the transformation"}}}}
```

## The HTTPValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## The InitTimeInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"InitTimeInfo":{"properties":{"init_time":{"type":"string","format":"date-time","title":"Init Time"},"max_prediction_timedelta":{"type":"integer","title":"Max Prediction Timedelta"}},"type":"object","required":["init_time","max_prediction_timedelta"],"title":"InitTimeInfo","description":"Information about an available init_time."}}}}
```

## The LatestForecastInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"LatestForecastInfo":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Latest forecast initialization time (ISO 8601 format)"},"prediction_timedelta":{"type":"integer","title":"Prediction Timedelta","description":"Maximum available lead time in minutes for this forecast"},"dissemination_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dissemination Time","description":"Forecast step dissemination time"}},"type":"object","required":["init_time","prediction_timedelta"],"title":"LatestForecastInfo","description":"Information about the latest available forecast for a model."}}}}
```

## The LatestForecastInfoQueryResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"LatestForecastInfoQueryResult":{"properties":{"forecasts_per_model":{"additionalProperties":{"$ref":"#/components/schemas/LatestForecastInfo"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object","title":"Forecasts Per Model","description":"Mapping of model identifiers to their latest forecast information"}},"type":"object","required":["forecasts_per_model"],"title":"LatestForecastInfoQueryResult","description":"Result containing the latest forecast information per model."},"LatestForecastInfo":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Latest forecast initialization time (ISO 8601 format)"},"prediction_timedelta":{"type":"integer","title":"Prediction Timedelta","description":"Maximum available lead time in minutes for this forecast"},"dissemination_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dissemination Time","description":"Forecast step dissemination time"}},"type":"object","required":["init_time","prediction_timedelta"],"title":"LatestForecastInfo","description":"Information about the latest available forecast for a model."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"}}}}
```

## The LatestTimestampResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"LatestTimestampResult":{"properties":{"timestamps":{"additionalProperties":{"type":"string","format":"date-time"},"type":"object","title":"Timestamps"}},"type":"object","required":["timestamps"],"title":"LatestTimestampResult","description":"Result containing latest timestamps per model."}}}}
```

## The MWZonesResponse object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"MWZonesResponse":{"properties":{"wind":{"items":{"type":"string"},"type":"array","title":"Wind"},"wind_combined":{"items":{"type":"string"},"type":"array","title":"Wind Combined"},"wind_transmission_embedded":{"items":{"type":"string"},"type":"array","title":"Wind Transmission Embedded","default":[]},"wind_onshore_only":{"items":{"type":"string"},"type":"array","title":"Wind Onshore Only"},"solar":{"items":{"type":"string"},"type":"array","title":"Solar"},"load":{"items":{"type":"string"},"type":"array","title":"Load"}},"type":"object","required":["wind","wind_combined","wind_onshore_only","solar","load"],"title":"MWZonesResponse","description":"Market zones that have power-curve data and can produce MW output."}}}}
```

## The MetaQueryResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"MetaQueryResult":{"properties":{"models":{"items":{"$ref":"#/components/schemas/ModelInfo"},"type":"array","title":"Models","description":"List of model metadata"}},"type":"object","required":["models"],"title":"MetaQueryResult","description":"Result containing metadata for one or more forecast models."},"ModelInfo":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the model"},"model_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Description","description":"Optional long-form model positioning text for agent guidance."},"grid":{"anyOf":[{"$ref":"#/components/schemas/Grid"},{"type":"null"}],"description":"Human readable grid description"},"is_ensemble_model":{"type":"boolean","title":"Is Ensemble Model","description":"Whether the model is an ensemble model","default":false},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"The variables of the model"},"daily_runs":{"additionalProperties":{"$ref":"#/components/schemas/RunDefinition"},"propertyNames":{"format":"time"},"type":"object","title":"Daily Runs","description":"The daily runs of the model"},"init_schedule":{"type":"string","title":"Init Schedule","description":"Cron expression (5-field: 'minute hour day-of-month month day-of-week') specifying which *dates* the model runs on. The minute/hour fields MUST be '*' — time-of-day lives exclusively in ``daily_runs`` (its dict keys are the clock times of each run). Default '* * * * *' means 'every day', which preserves the previous implicit semantics for all existing models. Example: '* * 1 * *' for a once-a-month model (SEAS5); '* * * * 0' for weekly-Sunday.","default":"* * * * *"},"derived_variables":{"additionalProperties":{"$ref":"#/components/schemas/RollingSumDerivation"},"propertyNames":{"$ref":"#/components/schemas/CustomerVariable"},"type":"object","title":"Derived Variables","description":"Synthetic variables computed in polars after the ClickHouse fetch -- see ``forecasts.data_provider.derived_variables``. Keys are customer-facing variable names that callers may request; values describe how each is computed from columns in ``variables``. Currently only ``rolling_sum`` is supported (e.g. EPT-2.1 Helios's 30-min flux summed pairwise to 1h)."},"variable_units":{"additionalProperties":{"type":"string"},"type":"object","title":"Variable Units","description":"SI unit for each variable (e.g. K, Pa, m/s)","readOnly":true},"grid_bounds":{"anyOf":[{"$ref":"#/components/schemas/GridBounds"},{"type":"null"}],"description":"The bounds of the grid","readOnly":true},"is_limited_model":{"type":"boolean","title":"Is Limited Model","description":"Limited models provide limited capabilities, such as being restricted to point forecasts and no access to historical data","readOnly":true},"min_step_minutes":{"type":"integer","title":"Min Step Minutes","description":"Minimum temporal step size across all runs in minutes","readOnly":true}},"type":"object","required":["name","variables","variable_units","grid_bounds","is_limited_model","min_step_minutes"],"title":"ModelInfo"},"Grid":{"type":"string","enum":["720x1440","2160x4320","1440x2880","2220x4440","2221x4440","360x720","180x360","451x900","720x900_europe","721x1201_europe","657x1377","553x961_europe","746x1215","520x520_pm65","exact"],"title":"Grid"},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"RunDefinition":{"properties":{"lead_time_set":{"items":{"type":"integer"},"type":"array","title":"Lead Time Set"},"dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Dissemination Time"},"dissemination_day_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dissemination Day Offset"},"min_step_minutes":{"type":"integer","title":"Min Step Minutes","description":"Minimum temporal step size between consecutive lead times in minutes.\n\nReturns 60 (hourly) as default if step cannot be determined.","readOnly":true}},"type":"object","required":["lead_time_set","min_step_minutes"],"title":"RunDefinition"},"RollingSumDerivation":{"properties":{"type":{"type":"string","const":"rolling_sum","title":"Type","default":"rolling_sum"},"base":{"$ref":"#/components/schemas/CustomerVariable","description":"Column actually fetched from ClickHouse. Must appear in the enclosing model's ``variables`` list."},"window":{"type":"integer","minimum":2,"title":"Window","description":"Number of consecutive base values to sum."}},"type":"object","required":["base","window"],"title":"RollingSumDerivation","description":"Right-labelled rolling sum over ``window`` consecutive base values.\n\nAt ``prediction_timedelta=ht`` the derived value equals\n``sum(base[ht - (window-1)*step], ..., base[ht])``. With ``window=2``\nand a 30-min base step this yields a true 1h energy (J/m²) over\nthe half-open interval ``(init + ht - 1h, init + ht]``.\n\nThe derivation runs in polars after the ClickHouse fetch -- see\n``forecasts.data_provider.derived_variables.apply_derivations``."},"GridBounds":{"properties":{"min_lat":{"type":"number","title":"Min Lat"},"max_lat":{"type":"number","title":"Max Lat"},"min_lon":{"type":"number","title":"Min Lon"},"max_lon":{"type":"number","title":"Max Lon"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"GridBounds"}}}}
```

## The Model object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"}}}}
```

## The ModelDisseminationStatus object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ModelDisseminationStatus":{"properties":{"status":{"items":{"$ref":"#/components/schemas/ForecastDisseminationStatus"},"type":"array","title":"Status","description":"Status for the model"},"delay_stats_per_init_time":{"additionalProperties":{"$ref":"#/components/schemas/DisseminationStats"},"type":"object","title":"Delay Stats Per Init Time","description":"Delay statistics per init time (without date, e.g., '00:00', '06:00')"}},"type":"object","required":["status","delay_stats_per_init_time"],"title":"ModelDisseminationStatus"},"ForecastDisseminationStatus":{"properties":{"init_time":{"type":"string","title":"Init Time","description":"Forecast initialization time"},"delay":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Delay","description":"Delay in minutes"},"is_missing":{"type":"boolean","title":"Is Missing","description":"Whether the forecast is missing","default":false},"dissemination_time":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dissemination Time","description":"Forecast dissemination time"},"expected_dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Expected Dissemination Time","description":"Expected dissemination time"},"max_prediction_timedelta":{"type":"integer","title":"Max Prediction Timedelta","description":"Maximum prediction timedelta for the forecast"},"expected_max_prediction_timedelta":{"type":"integer","title":"Expected Max Prediction Timedelta","description":"Expected maximum prediction timedelta for the forecast"},"is_delayed":{"type":"boolean","title":"Is Delayed","description":"Whether the forecast is delayed","readOnly":true}},"type":"object","required":["init_time","max_prediction_timedelta","expected_max_prediction_timedelta","is_delayed"],"title":"ForecastDisseminationStatus"},"DisseminationStats":{"properties":{"number_of_data_points":{"type":"integer","title":"Number Of Data Points","description":"Number of data points.Tracking started on '2025-10-29"},"min":{"type":"number","title":"Min","description":"Minimum delay in minutes"},"max":{"type":"number","title":"Max","description":"Maximum delay in minutes"},"mean":{"type":"number","title":"Mean","description":"Mean delay in minutes"},"median":{"type":"number","title":"Median","description":"Median delay in minutes"},"std":{"type":"number","title":"Std","description":"Standard deviation of delay in minutes"},"q90":{"type":"number","title":"Q90","description":"90th percentile of delay in minutes"},"q99":{"type":"number","title":"Q99","description":"99th percentile of delay in minutes"},"in_time_percentage":{"type":"number","title":"In Time Percentage","description":"Percentage of forecasts in time"},"missing_percentage":{"type":"number","title":"Missing Percentage","description":"Percentage of missing forecasts"},"expected_dissemination_time":{"type":"string","format":"time","title":"Expected Dissemination Time","description":"Expected dissemination time (time of day) as reference"},"dissemination_time_min":{"type":"string","format":"time","title":"Dissemination Time Min","description":"Minimum dissemination time (time of day)"},"dissemination_time_max":{"type":"string","format":"time","title":"Dissemination Time Max","description":"Maximum dissemination time (time of day)"},"dissemination_time_mean":{"type":"string","format":"time","title":"Dissemination Time Mean","description":"Mean dissemination time (time of day)"},"dissemination_time_median":{"type":"string","format":"time","title":"Dissemination Time Median","description":"Median dissemination time (time of day)"},"dissemination_time_q90":{"type":"string","format":"time","title":"Dissemination Time Q90","description":"90th percentile of dissemination time (time of day)"},"dissemination_time_q99":{"type":"string","format":"time","title":"Dissemination Time Q99","description":"99th percentile of dissemination time (time of day)"}},"type":"object","required":["number_of_data_points","min","max","mean","median","std","q90","q99","in_time_percentage","missing_percentage","expected_dissemination_time","dissemination_time_min","dissemination_time_max","dissemination_time_mean","dissemination_time_median","dissemination_time_q90","dissemination_time_q99"],"title":"DisseminationStats"}}}}
```

## The ModelInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ModelInfo":{"properties":{"name":{"type":"string","title":"Name","description":"The name of the model"},"model_description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Model Description","description":"Optional long-form model positioning text for agent guidance."},"grid":{"anyOf":[{"$ref":"#/components/schemas/Grid"},{"type":"null"}],"description":"Human readable grid description"},"is_ensemble_model":{"type":"boolean","title":"Is Ensemble Model","description":"Whether the model is an ensemble model","default":false},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"The variables of the model"},"daily_runs":{"additionalProperties":{"$ref":"#/components/schemas/RunDefinition"},"propertyNames":{"format":"time"},"type":"object","title":"Daily Runs","description":"The daily runs of the model"},"init_schedule":{"type":"string","title":"Init Schedule","description":"Cron expression (5-field: 'minute hour day-of-month month day-of-week') specifying which *dates* the model runs on. The minute/hour fields MUST be '*' — time-of-day lives exclusively in ``daily_runs`` (its dict keys are the clock times of each run). Default '* * * * *' means 'every day', which preserves the previous implicit semantics for all existing models. Example: '* * 1 * *' for a once-a-month model (SEAS5); '* * * * 0' for weekly-Sunday.","default":"* * * * *"},"derived_variables":{"additionalProperties":{"$ref":"#/components/schemas/RollingSumDerivation"},"propertyNames":{"$ref":"#/components/schemas/CustomerVariable"},"type":"object","title":"Derived Variables","description":"Synthetic variables computed in polars after the ClickHouse fetch -- see ``forecasts.data_provider.derived_variables``. Keys are customer-facing variable names that callers may request; values describe how each is computed from columns in ``variables``. Currently only ``rolling_sum`` is supported (e.g. EPT-2.1 Helios's 30-min flux summed pairwise to 1h)."},"variable_units":{"additionalProperties":{"type":"string"},"type":"object","title":"Variable Units","description":"SI unit for each variable (e.g. K, Pa, m/s)","readOnly":true},"grid_bounds":{"anyOf":[{"$ref":"#/components/schemas/GridBounds"},{"type":"null"}],"description":"The bounds of the grid","readOnly":true},"is_limited_model":{"type":"boolean","title":"Is Limited Model","description":"Limited models provide limited capabilities, such as being restricted to point forecasts and no access to historical data","readOnly":true},"min_step_minutes":{"type":"integer","title":"Min Step Minutes","description":"Minimum temporal step size across all runs in minutes","readOnly":true}},"type":"object","required":["name","variables","variable_units","grid_bounds","is_limited_model","min_step_minutes"],"title":"ModelInfo"},"Grid":{"type":"string","enum":["720x1440","2160x4320","1440x2880","2220x4440","2221x4440","360x720","180x360","451x900","720x900_europe","721x1201_europe","657x1377","553x961_europe","746x1215","520x520_pm65","exact"],"title":"Grid"},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"RunDefinition":{"properties":{"lead_time_set":{"items":{"type":"integer"},"type":"array","title":"Lead Time Set"},"dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Dissemination Time"},"dissemination_day_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dissemination Day Offset"},"min_step_minutes":{"type":"integer","title":"Min Step Minutes","description":"Minimum temporal step size between consecutive lead times in minutes.\n\nReturns 60 (hourly) as default if step cannot be determined.","readOnly":true}},"type":"object","required":["lead_time_set","min_step_minutes"],"title":"RunDefinition"},"RollingSumDerivation":{"properties":{"type":{"type":"string","const":"rolling_sum","title":"Type","default":"rolling_sum"},"base":{"$ref":"#/components/schemas/CustomerVariable","description":"Column actually fetched from ClickHouse. Must appear in the enclosing model's ``variables`` list."},"window":{"type":"integer","minimum":2,"title":"Window","description":"Number of consecutive base values to sum."}},"type":"object","required":["base","window"],"title":"RollingSumDerivation","description":"Right-labelled rolling sum over ``window`` consecutive base values.\n\nAt ``prediction_timedelta=ht`` the derived value equals\n``sum(base[ht - (window-1)*step], ..., base[ht])``. With ``window=2``\nand a 30-min base step this yields a true 1h energy (J/m²) over\nthe half-open interval ``(init + ht - 1h, init + ht]``.\n\nThe derivation runs in polars after the ClickHouse fetch -- see\n``forecasts.data_provider.derived_variables.apply_derivations``."},"GridBounds":{"properties":{"min_lat":{"type":"number","title":"Min Lat"},"max_lat":{"type":"number","title":"Max Lat"},"min_lon":{"type":"number","title":"Min Lon"},"max_lon":{"type":"number","title":"Max Lon"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"GridBounds"}}}}
```

## The NetztransparenzDirection object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzDirection":{"type":"string","enum":["positive","negative"],"title":"NetztransparenzDirection","description":"Direction indicators for signed values.\n\npositive/negative. Applies to the reserve and balancing variables that\ncarry a populated direction column (those flagged ``uses_direction=True``)\n— both the operational (``*_betrieblich``) and quality-assured\n(``*_qualitaetsgesichert``) variants of these series are signed. For the\nremaining variables — ABSM curtailment (split by subcategory relief\nregions instead), forecasts, marketing, balance and single-value price\nseries — the direction column is empty, so the filter passes all rows\n(silently ignored).\n\nNote: the quality-assured (``*_qualitaetsgesichert``) series publish on a\nmulti-week lag behind the operational series, so a query over a recent\ndate window may return no rows for them even though direction is fully\npopulated historically."}}}}
```

## The NetztransparenzSubcategory object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzSubcategory":{"type":"string","enum":["H1","H2","T1","T2","T3","T4","T5","T6","AEP Modul 1","AEP Modul 2","AEP Modul 3","stunde1","stunde3","stunde4","stunde6"],"title":"NetztransparenzSubcategory","description":"Subcategories for specific variable types.\n\nNote: Only certain variables support subcategory filtering:\n- ABSM variables (absm_*): H1, H2, T1-T6 (relief regions)\n- aep_module_qualitaetsgesichert, finanzielle_wirkung_aep: AEP Modul 1/2/3"}}}}
```

## The NetztransparenzTimeseriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzTimeseriesQuery":{"properties":{"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/NetztransparenzVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"List of Netztransparenz variable types to query. If not set, returns all variables."},"tsos":{"anyOf":[{"items":{"$ref":"#/components/schemas/NetztransparenzTso"},"type":"array"},{"type":"null"}],"title":"Tsos","description":"List of TSOs to filter by (e.g., ['50Hertz', 'Amprion'])"},"subcategories":{"anyOf":[{"items":{"$ref":"#/components/schemas/NetztransparenzSubcategory"},"type":"array"},{"type":"null"}],"title":"Subcategories","description":"List of subcategories (only for ABSM relief regions or AEP module variables)"},"directions":{"anyOf":[{"items":{"$ref":"#/components/schemas/NetztransparenzDirection"},"type":"array"},{"type":"null"}],"title":"Directions","description":"List of directions (e.g., ['positive', 'negative'])"},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If None, no upper bound is applied (useful for day-ahead forecasts)"},"aggregation":{"$ref":"#/components/schemas/jua_query_v2__netztransparenz__query__TemporalAggregation","description":"Temporal aggregation to apply","default":"none"},"include_metadata":{"type":"boolean","title":"Include Metadata","description":"Include metadata column in response","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone name for time formatting (e.g., 'Europe/Berlin', 'America/New_York'). Defaults to UTC"},"order_by":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","required":["start_time"],"title":"NetztransparenzTimeseriesQuery","description":"Query parameters for Netztransparenz timeseries data.\n\nSupports filtering by:\n- variables: List of variable types (optional, returns all if not set)\n- tsos: List of TSOs to filter by (optional)\n- subcategories: List of technology subcategories (optional)\n- directions: List of directions - positive/negative (optional)\n- start_time: Start of time range (required)\n- end_time: End of time range (optional - if None, no upper bound applied)\n\nNote: end_time can be None to include all future data, which is useful\nfor day-ahead forecasts that extend into tomorrow."},"NetztransparenzVariable":{"type":"string","enum":["vermarktung_epex","vermarktung_exaa","vermarktung_solar","vermarktung_wind","vermarktung_sonstige","untertaegige_strommengen","differenz_einspeiseprognose","hochrechnung_solar","hochrechnung_wind","absm_ausgewiesen","absm_zugeteilt","absm_erzeugungsverbot","nrv_saldo_betrieblich","nrv_saldo_qualitaetsgesichert","rz_saldo_betrieblich","rz_saldo_qualitaetsgesichert","nrv_saldo_minute_betrieblich","aep_schaetzer_betrieblich","idaep","rebap_qualitaetsgesichert","voaa_qualitaetsgesichert","finanzielle_wirkung_aep","aep_module_qualitaetsgesichert","aktivierte_srl_betrieblich","aktivierte_srl_qualitaetsgesichert","aktivierte_mrl_betrieblich","aktivierte_mrl_qualitaetsgesichert","srl_optimierung_betrieblich","srl_optimierung_qualitaetsgesichert","mrl_optimierung_betrieblich","mrl_optimierung_qualitaetsgesichert","difference_betrieblich","difference_qualitaetsgesichert","prl_betrieblich","prl_qualitaetsgesichert","zusatzmassnahmen_betrieblich","zusatzmassnahmen_qualitaetsgesichert","nothilfe_betrieblich","nothilfe_qualitaetsgesichert","abschaltbare_lasten_betrieblich","abschaltbare_lasten_qualitaetsgesichert","mfrr_satisfied_demand_betrieblich","inanspruchnahme_ausgleichsenergie","negative_preise_gesamt"],"title":"NetztransparenzVariable","description":"Netztransparenz timeseries variable types.\n\nVariables are organized by category matching the data dictionary."},"NetztransparenzTso":{"type":"string","enum":["50Hertz","Amprion","TenneT TSO","TransnetBW","gesamt"],"title":"NetztransparenzTso","description":"German Transmission System Operators (TSOs).\n\nThe four TSOs that operate the German high-voltage transmission grid,\nplus the Germany-wide aggregate."},"NetztransparenzSubcategory":{"type":"string","enum":["H1","H2","T1","T2","T3","T4","T5","T6","AEP Modul 1","AEP Modul 2","AEP Modul 3","stunde1","stunde3","stunde4","stunde6"],"title":"NetztransparenzSubcategory","description":"Subcategories for specific variable types.\n\nNote: Only certain variables support subcategory filtering:\n- ABSM variables (absm_*): H1, H2, T1-T6 (relief regions)\n- aep_module_qualitaetsgesichert, finanzielle_wirkung_aep: AEP Modul 1/2/3"},"NetztransparenzDirection":{"type":"string","enum":["positive","negative"],"title":"NetztransparenzDirection","description":"Direction indicators for signed values.\n\npositive/negative. Applies to the reserve and balancing variables that\ncarry a populated direction column (those flagged ``uses_direction=True``)\n— both the operational (``*_betrieblich``) and quality-assured\n(``*_qualitaetsgesichert``) variants of these series are signed. For the\nremaining variables — ABSM curtailment (split by subcategory relief\nregions instead), forecasts, marketing, balance and single-value price\nseries — the direction column is empty, so the filter passes all rows\n(silently ignored).\n\nNote: the quality-assured (``*_qualitaetsgesichert``) series publish on a\nmulti-week lag behind the operational series, so a query over a recent\ndate window may return no rows for them even though direction is fully\npopulated historically."},"jua_query_v2__netztransparenz__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for Netztransparenz queries."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The NetztransparenzTso object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzTso":{"type":"string","enum":["50Hertz","Amprion","TenneT TSO","TransnetBW","gesamt"],"title":"NetztransparenzTso","description":"German Transmission System Operators (TSOs).\n\nThe four TSOs that operate the German high-voltage transmission grid,\nplus the Germany-wide aggregate."}}}}
```

## The NetztransparenzVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzVariable":{"type":"string","enum":["vermarktung_epex","vermarktung_exaa","vermarktung_solar","vermarktung_wind","vermarktung_sonstige","untertaegige_strommengen","differenz_einspeiseprognose","hochrechnung_solar","hochrechnung_wind","absm_ausgewiesen","absm_zugeteilt","absm_erzeugungsverbot","nrv_saldo_betrieblich","nrv_saldo_qualitaetsgesichert","rz_saldo_betrieblich","rz_saldo_qualitaetsgesichert","nrv_saldo_minute_betrieblich","aep_schaetzer_betrieblich","idaep","rebap_qualitaetsgesichert","voaa_qualitaetsgesichert","finanzielle_wirkung_aep","aep_module_qualitaetsgesichert","aktivierte_srl_betrieblich","aktivierte_srl_qualitaetsgesichert","aktivierte_mrl_betrieblich","aktivierte_mrl_qualitaetsgesichert","srl_optimierung_betrieblich","srl_optimierung_qualitaetsgesichert","mrl_optimierung_betrieblich","mrl_optimierung_qualitaetsgesichert","difference_betrieblich","difference_qualitaetsgesichert","prl_betrieblich","prl_qualitaetsgesichert","zusatzmassnahmen_betrieblich","zusatzmassnahmen_qualitaetsgesichert","nothilfe_betrieblich","nothilfe_qualitaetsgesichert","abschaltbare_lasten_betrieblich","abschaltbare_lasten_qualitaetsgesichert","mfrr_satisfied_demand_betrieblich","inanspruchnahme_ausgleichsenergie","negative_preise_gesamt"],"title":"NetztransparenzVariable","description":"Netztransparenz timeseries variable types.\n\nVariables are organized by category matching the data dictionary."}}}}
```

## The NetztransparenzVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"NetztransparenzVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"uses_tso":{"type":"boolean","title":"Uses Tso","default":true},"uses_subcategory":{"type":"boolean","title":"Uses Subcategory","default":false},"uses_direction":{"type":"boolean","title":"Uses Direction","default":false}},"type":"object","required":["name","description","unit"],"title":"NetztransparenzVariableInfo","description":"Information about a Netztransparenz variable."}}}}
```

## The OrderByItem\_Union\_Coordinates\_\_CustomerVariable\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"OrderByItem_Union_Coordinates__CustomerVariable__":{"properties":{"field":{"anyOf":[{"$ref":"#/components/schemas/Coordinates"},{"$ref":"#/components/schemas/CustomerVariable"}],"title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[Union[Coordinates, CustomerVariable]]"},"Coordinates":{"type":"string","enum":["model","init_time","time","prediction_timedelta","latitude","longitude","point","market_zone","country_key"],"title":"Coordinates"},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The OrderByItem\_Union\_ReanalysisCoordinates\_\_CustomerVariable\_\_ object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"OrderByItem_Union_ReanalysisCoordinates__CustomerVariable__":{"properties":{"field":{"anyOf":[{"$ref":"#/components/schemas/ReanalysisCoordinates"},{"$ref":"#/components/schemas/CustomerVariable"}],"title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[Union[ReanalysisCoordinates, CustomerVariable]]"},"ReanalysisCoordinates":{"type":"string","enum":["model","time","latitude","longitude","point","market_zone","country_key"],"title":"ReanalysisCoordinates","description":"Coordinate dimensions available for reanalysis queries."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The OrderByItem\_str\_ object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The POIReference object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."}}}}
```

## The Pagination object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The PowerForecastQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"PowerForecastQuery":{"properties":{"zone_keys":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Zone Keys","description":"List of zone codes (e.g. ['DE', 'FR'])"},"psr_types":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Psr Types","description":"List of PSR types (e.g. ['Solar', 'Wind Onshore'])"},"version":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Version","description":"Default model version for all (zone, psr) cells: 'stable' (default), 'latest', or a run id from GET /versions. Overridden per cell by version_pins."},"version_pins":{"anyOf":[{"items":{"$ref":"#/components/schemas/VersionPin"},"type":"array"},{"type":"null"}],"title":"Version Pins","description":"Per-(zone_key, psr_type) version overrides. Unlisted cells use ``version``. Each pin may be 'stable', 'latest', or a run id. Example: keep the portfolio on stable but pin DE Solar to a specific checkpoint."},"init_time":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"items":{"anyOf":[{"type":"string","format":"date-time"},{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"}]},"type":"array"},{"type":"null"}],"title":"Init Time","description":"Init time selection for horizon mode. Accepts datetime(s), 'latest', or 'latest-N'."},"max_prediction_timedelta":{"anyOf":[{"type":"integer","maximum":18446744073709552000,"minimum":0},{"type":"null"}],"title":"Max Prediction Timedelta","description":"Maximum prediction horizon in minutes (horizon mode)"},"start_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Start Time","description":"Start of time range (inclusive, time range mode)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End of time range (exclusive, time range mode)"},"aggregation_period":{"anyOf":[{"type":"string","enum":["native","hourly","daily","weekly"]},{"type":"null"}],"title":"Aggregation Period","description":"Temporal aggregation for returned rows. ``None`` and ``native`` return raw 15-minute rows; ``hourly``/``daily``/``weekly`` average ``value`` within buckets. ``init_time`` stays a group key so multi-run comparisons remain separated."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone name for time formatting (e.g. 'Europe/Berlin'). When ``aggregation_period`` is ``daily`` or ``weekly``, also sets the bucket boundary timezone (hourly aggregation ignores this)."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by. Supports direction suffix: 'time__desc' for descending. Default: time ASC."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","title":"PowerForecastQuery","description":"Query parameters for power forecast data.\n\nSupports two mutually exclusive query modes:\n\n**Horizon mode** (init_time-centric):\n    - Specify init_time as datetime(s) or relative tokens (latest/latest-N)\n    - Optionally limit by max_prediction_timedelta\n\n**Time range mode** (time-centric):\n    - Specify start_time / end_time\n    - Computed time = init_time + prediction_timedelta * 60s\n\nCommon filters:\n    - zone_keys: List of zone codes (e.g. [\"DE\", \"FR\"])\n    - psr_types: List of generation types (e.g. [\"Solar\", \"Wind Onshore\"])\n\nVersion selection:\n    - ``version`` is the default for every (zone, psr) cell\n    - ``version_pins`` overrides specific cells so one request can mix\n      e.g. DE Solar pinned + FR Wind on stable"},"VersionPin":{"properties":{"zone_key":{"type":"string","title":"Zone Key","description":"Zone code (e.g. 'DE')"},"psr_type":{"type":"string","title":"Psr Type","description":"PSR type (e.g. 'Solar')"},"version":{"type":"string","minLength":1,"title":"Version","description":"stable | latest | run id"}},"type":"object","required":["zone_key","psr_type","version"],"title":"VersionPin","description":"Per-(zone, psr) version override.\n\n``version`` accepts the same values as ``PowerForecastQuery.version``:\n``stable``, ``latest``, or a concrete run id from ``GET /versions``."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The PredictionTimedeltaSlice object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"PredictionTimedeltaSlice":{"properties":{"start":{"type":"integer","minimum":0,"title":"Start","description":"Start lead time in minutes from init_time (inclusive)","default":0},"end":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"title":"End","description":"End lead time in minutes from init_time (inclusive). If None, uses model's maximum available lead time"}},"type":"object","title":"PredictionTimedeltaSlice","description":"Forecast lead time range in minutes from the initialization time."}}}}
```

## The PreferredHours object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"PreferredHours":{"properties":{"type":{"type":"string","title":"Type","default":"preferred_hours"},"selections":{"items":{"$ref":"#/components/schemas/PreferredHoursSelection"},"type":"array","title":"Selections","description":"List of {hour, optional minute, offset} selections"}},"type":"object","title":"PreferredHours","description":"Select specific forecast runs by UTC hour and per-hour offset.\n\nEach selection picks the Nth most recent available run at a given UTC hour.\nExample: selections=[{hour:6, offset:0}, {hour:6, offset:2}, {hour:18, offset:0}]\nresolves to today's 6am, day-before-yesterday's 6am, and today's 6pm."},"PreferredHoursSelection":{"properties":{"hour":{"type":"integer","maximum":23,"minimum":0,"title":"Hour","description":"UTC hour (0-23)"},"minute":{"anyOf":[{"type":"integer","maximum":59,"minimum":0},{"type":"null"}],"title":"Minute","description":"Optional UTC minute (0-59). Omit for the legacy hour-only behavior."},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"0 = most recent run at this hour, 1 = previous, etc.","default":0}},"type":"object","required":["hour"],"title":"PreferredHoursSelection","description":"A single preferred-hour run selection.\n\nPicks the Nth most recent run at a given UTC hour."}}}}
```

## The PreferredHoursSelection object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"PreferredHoursSelection":{"properties":{"hour":{"type":"integer","maximum":23,"minimum":0,"title":"Hour","description":"UTC hour (0-23)"},"minute":{"anyOf":[{"type":"integer","maximum":59,"minimum":0},{"type":"null"}],"title":"Minute","description":"Optional UTC minute (0-59). Omit for the legacy hour-only behavior."},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"0 = most recent run at this hour, 1 = previous, etc.","default":0}},"type":"object","required":["hour"],"title":"PreferredHoursSelection","description":"A single preferred-hour run selection.\n\nPicks the Nth most recent run at a given UTC hour."}}}}
```

## The ReanalysisCoordinates object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ReanalysisCoordinates":{"type":"string","enum":["model","time","latitude","longitude","point","market_zone","country_key"],"title":"ReanalysisCoordinates","description":"Coordinate dimensions available for reanalysis queries."}}}}
```

## The ReanalysisMetaResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ReanalysisMetaResult":{"properties":{"models":{"items":{"$ref":"#/components/schemas/ReanalysisModelInfo"},"type":"array","title":"Models"}},"type":"object","required":["models"],"title":"ReanalysisMetaResult","description":"Metadata about available reanalysis models."},"ReanalysisModelInfo":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"grid_resolution":{"type":"string","title":"Grid Resolution"},"temporal_resolution_minutes":{"type":"integer","title":"Temporal Resolution Minutes"},"variables":{"items":{"type":"string"},"type":"array","title":"Variables"},"variable_units":{"additionalProperties":{"type":"string"},"type":"object","title":"Variable Units","default":{}}},"type":"object","required":["name","display_name","grid_resolution","temporal_resolution_minutes","variables"],"title":"ReanalysisModelInfo","description":"Information about a reanalysis model."}}}}
```

## The ReanalysisModel object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ReanalysisModel":{"type":"string","enum":["arco_era5"],"title":"ReanalysisModel","description":"Enumeration of available reanalysis models.\n\nUnlike forecast models which have init_time + prediction_timedelta dimensions,\nreanalysis models have a single time dimension representing the actual timestamp\nof the analysis."}}}}
```

## The ReanalysisModelInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ReanalysisModelInfo":{"properties":{"name":{"type":"string","title":"Name"},"display_name":{"type":"string","title":"Display Name"},"grid_resolution":{"type":"string","title":"Grid Resolution"},"temporal_resolution_minutes":{"type":"integer","title":"Temporal Resolution Minutes"},"variables":{"items":{"type":"string"},"type":"array","title":"Variables"},"variable_units":{"additionalProperties":{"type":"string"},"type":"object","title":"Variable Units","default":{}}},"type":"object","required":["name","display_name","grid_resolution","temporal_resolution_minutes","variables"],"title":"ReanalysisModelInfo","description":"Information about a reanalysis model."}}}}
```

## The ReanalysisQuery object

````json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ReanalysisQuery":{"properties":{"models":{"items":{"$ref":"#/components/schemas/ReanalysisModel"},"type":"array","title":"Models","description":"List of reanalysis model identifiers to query"},"geo":{"$ref":"#/components/schemas/GeoFilter","description":"Geographic filter specifying the query location(s) or region(s)"},"time":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"},{"items":{"anyOf":[{"type":"integer","minimum":0,"description":"Offset from latest forecast (0 = latest, 1 = second latest, etc.)"},{"type":"string","format":"date-time"},{"type":"string","pattern":"^latest(-\\d+)?$","description":"Use 'latest' or 'latest-N' for relative init times"}]},"type":"array"},{"$ref":"#/components/schemas/TimeSlice"},{"$ref":"#/components/schemas/PreferredHours"}],"title":"Time","description":"Time(s) to query. Can be 'latest' (or integer offset 0), a single datetime, a list of datetimes, or a TimeSlice range."},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"List of weather variables to query. If empty, returns all variables available for the selected models"},"group_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/GroupByKey"},"type":"array"},{"type":"null"}],"title":"Group By","description":"List of dimensions to group by for aggregation (e.g., ['model', 'time']). Requires 'aggregation' to be specified."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_Union_ReanalysisCoordinates__CustomerVariable__"},"type":"array"},{"type":"null"}],"title":"Order By","description":"List of dimensions to sort results by. Supports direction suffix: 'time__desc' for descending, 'time__asc' for ascending (default). Can also use object format: {'field': 'time', 'direction': 'desc'}"},"aggregation":{"anyOf":[{"items":{"$ref":"#/components/schemas/Aggregation"},"type":"array"},{"type":"null"}],"title":"Aggregation","description":"List of aggregation functions to apply when grouping (e.g., ['avg', 'std']). Requires 'group_by' to be specified"},"weighting":{"anyOf":[{"$ref":"#/components/schemas/Weighting"},{"type":"null"}],"description":"Optional weighting scheme for geographic aggregation (e.g., by wind/solar capacity or population)"},"include_time":{"type":"boolean","title":"Include Time","description":"Include the time column in results (default: True)","default":true},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone name for time formatting (e.g., 'Europe/Berlin', 'America/New_York'). Defaults to UTC"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters for limiting result size. Requires 'order_by' to be specified"},"were_variables_explicitly_requested":{"type":"boolean","title":"Were Variables Explicitly Requested","description":"Whether the user passed the variables explicitly. If True, the variables will be used to filter the results. If False, all variables will be returned.","default":true}},"type":"object","required":["models","geo","time"],"title":"ReanalysisQuery","description":"Query object for retrieving reanalysis data.\n\nReanalysis data uses a simple time dimension (unlike forecasts which\nhave init_time + prediction_timedelta). This provides historical\nanalysis data at specified timestamps.\n\nExample:\n    ```python\n    query = ReanalysisQuery(\n        models=[\"arco_era5\"],\n        geo={\"type\": \"point\", \"value\": [(52.52, 13.405)]},\n        time={\"start\": \"2024-01-01T00:00:00Z\", \"end\": \"2024-01-07T00:00:00Z\"},\n        variables=[\"air_temperature_at_height_level_2m\"],\n    )\n    ```"},"ReanalysisModel":{"type":"string","enum":["arco_era5"],"title":"ReanalysisModel","description":"Enumeration of available reanalysis models.\n\nUnlike forecast models which have init_time + prediction_timedelta dimensions,\nreanalysis models have a single time dimension representing the actual timestamp\nof the analysis."},"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."},"TimeSlice":{"properties":{"start":{"type":"string","format":"date-time","title":"Start","description":"Start datetime (inclusive)"},"end":{"type":"string","format":"date-time","title":"End","description":"End datetime (inclusive) in ISO 8601 format"}},"type":"object","required":["start","end"],"title":"TimeSlice","description":"Time range for querying forecasts between two datetime values."},"PreferredHours":{"properties":{"type":{"type":"string","title":"Type","default":"preferred_hours"},"selections":{"items":{"$ref":"#/components/schemas/PreferredHoursSelection"},"type":"array","title":"Selections","description":"List of {hour, optional minute, offset} selections"}},"type":"object","title":"PreferredHours","description":"Select specific forecast runs by UTC hour and per-hour offset.\n\nEach selection picks the Nth most recent available run at a given UTC hour.\nExample: selections=[{hour:6, offset:0}, {hour:6, offset:2}, {hour:18, offset:0}]\nresolves to today's 6am, day-before-yesterday's 6am, and today's 6pm."},"PreferredHoursSelection":{"properties":{"hour":{"type":"integer","maximum":23,"minimum":0,"title":"Hour","description":"UTC hour (0-23)"},"minute":{"anyOf":[{"type":"integer","maximum":59,"minimum":0},{"type":"null"}],"title":"Minute","description":"Optional UTC minute (0-59). Omit for the legacy hour-only behavior."},"offset":{"type":"integer","minimum":0,"title":"Offset","description":"0 = most recent run at this hour, 1 = previous, etc.","default":0}},"type":"object","required":["hour"],"title":"PreferredHoursSelection","description":"A single preferred-hour run selection.\n\nPicks the Nth most recent run at a given UTC hour."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"GroupByKey":{"properties":{"field":{"type":"string","enum":["model","init_time","time","prediction_timedelta","ensemble_member","market_zone","country_key","point","latitude","longitude","day_of_year","hour"],"title":"Field"},"transformation":{"anyOf":[{"type":"string","const":"to_start_of"},{"type":"null"}],"title":"Transformation"},"parameters_list":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Parameters List"}},"type":"object","required":["field"],"title":"GroupByKey","description":"Structured representation of a group-by key.\n\n- field: one of supported base fields\n- transformation: optional transformation name (currently only 'to_start_of')\n- parameters_list: optional list of parameters for the transformation"},"OrderByItem_Union_ReanalysisCoordinates__CustomerVariable__":{"properties":{"field":{"anyOf":[{"$ref":"#/components/schemas/ReanalysisCoordinates"},{"$ref":"#/components/schemas/CustomerVariable"}],"title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[Union[ReanalysisCoordinates, CustomerVariable]]"},"ReanalysisCoordinates":{"type":"string","enum":["model","time","latitude","longitude","point","market_zone","country_key"],"title":"ReanalysisCoordinates","description":"Coordinate dimensions available for reanalysis queries."},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Aggregation":{"properties":{"aggregation":{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"],"title":"Aggregation","description":"Aggregation function name."},"parameters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Parameters","description":"Parameters for parameterized aggregations.Example: 'quantile': [0.5] for median, [0.95] for 95th percentile, etc."},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Specific variables to aggregate. If None, applies to all variables in the query"}},"type":"object","required":["aggregation"],"title":"Aggregation","description":"Aggregation function to apply when grouping forecast data.\n\nSupported aggregations:\n- Basic: avg, std, min, max, sum, count, median\n- Parameterized: quantile_(p), argmin_(col), argmax_(col)\n\nFor argmin/argmax, the parameter is the column to return, and the variable\nis the column to find the min/max of. Example:\n    argmin_(time)__temperature -> returns time when temperature is minimum\n\nCan be applied to specific variables or all variables in the query."},"Weighting":{"properties":{"type":{"type":"string","enum":["wind_capacity","wind_capacity_combined","wind_capacity_transmission","wind_capacity_embedded","solar_capacity","population"],"title":"Type","description":"Weighting type for geographic aggregation. 'wind_capacity': Weight by installed wind power capacity. 'solar_capacity': Weight by installed solar power capacity. 'population': Weight by population density"},"unit":{"type":"string","enum":["weather","mw"],"title":"Unit","description":"Output unit. 'weather': return capacity-weighted raw weather values E[wu]. 'mw': apply power curves in ClickHouse and return predicted MW.","default":"weather"}},"type":"object","required":["type"],"title":"Weighting","description":"Weighting scheme for aggregating forecast data over geographic areas.\n\nApplies weighted averages based on capacity or population distribution within\nthe queried area."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
````

## The RollingSumDerivation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"RollingSumDerivation":{"properties":{"type":{"type":"string","const":"rolling_sum","title":"Type","default":"rolling_sum"},"base":{"$ref":"#/components/schemas/CustomerVariable","description":"Column actually fetched from ClickHouse. Must appear in the enclosing model's ``variables`` list."},"window":{"type":"integer","minimum":2,"title":"Window","description":"Number of consecutive base values to sum."}},"type":"object","required":["base","window"],"title":"RollingSumDerivation","description":"Right-labelled rolling sum over ``window`` consecutive base values.\n\nAt ``prediction_timedelta=ht`` the derived value equals\n``sum(base[ht - (window-1)*step], ..., base[ht])``. With ``window=2``\nand a 30-min base step this yields a true 1h energy (J/m²) over\nthe half-open interval ``(init + ht - 1h, init + ht]``.\n\nThe derivation runs in polars after the ClickHouse fetch -- see\n``forecasts.data_provider.derived_variables.apply_derivations``."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"}}}}
```

## The RunDefinition object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"RunDefinition":{"properties":{"lead_time_set":{"items":{"type":"integer"},"type":"array","title":"Lead Time Set"},"dissemination_time":{"anyOf":[{"type":"string","format":"time"},{"type":"null"}],"title":"Dissemination Time"},"dissemination_day_offset":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dissemination Day Offset"},"min_step_minutes":{"type":"integer","title":"Min Step Minutes","description":"Minimum temporal step size between consecutive lead times in minutes.\n\nReturns 60 (hourly) as default if step cannot be determined.","readOnly":true}},"type":"object","required":["lead_time_set","min_step_minutes"],"title":"RunDefinition"}}}}
```

## The SolarStationCoverageResponse object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"SolarStationCoverageResponse":{"properties":{"country_keys":{"items":{"type":"string"},"type":"array","title":"Country Keys"},"market_zones":{"items":{"type":"string"},"type":"array","title":"Market Zones"}},"type":"object","required":["country_keys","market_zones"],"title":"SolarStationCoverageResponse","description":"Country / market-zone codes covered by the clean solar-station set."}}}}
```

## The SortDirection object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."}}}}
```

## The StationBenchmarkQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"StationBenchmarkQuery":{"properties":{"station_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Station Ids","description":"List of specific station IDs to query. Mutually exclusive with geo filter."},"geo":{"anyOf":[{"$ref":"#/components/schemas/GeoFilter"},{"type":"null"}],"description":"Geographic filter for selecting stations by region. Mutually exclusive with station_ids."},"models":{"items":{"$ref":"#/components/schemas/Model"},"type":"array","title":"Models","description":"List of model names to query (e.g., ['ept2', 'aifs'])"},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for benchmark period"},"end_time":{"type":"string","format":"date-time","title":"End Time","description":"End time for benchmark period"},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"List of variables to compute metrics for"},"metrics":{"anyOf":[{"items":{"type":"string","enum":["rmse","mae","bias","crps"]},"type":"array"},{"type":"null"}],"title":"Metrics","description":"Which metrics to compute and return. One or more of 'rmse', 'mae', 'bias', 'crps'. None (the default) returns all four (backward compatible). Selecting only mean-based metrics ('rmse'/'mae'/'bias') is significantly cheaper for ensemble models: CRPS is the only metric that needs the per-member error distribution, so omitting it lets the query skip the per-member array materialisation (and the per-model fan-out it requires)."},"max_prediction_timedelta_minutes":{"type":"integer","title":"Max Prediction Timedelta Minutes","description":"Maximum prediction lead time in minutes","default":28800},"debias":{"type":"boolean","title":"Debias","description":"If True, subtract a per-(model, valid-time ISO week, valid-time hour) bias estimate from each error before computing RMSE / MAE / bias. The bias is computed on the fly from `synoptic_station_bias_europe` (an AggregatingMergeTree of the trailing four weeks' errors over European stations, refreshed once per week). Affects the air_temperature_2m, wind_speed_10m and surface_downwelling_shortwave_flux_sum_1h (solar radiation) metrics; for solar the per-hour bias is subtracted before the hourly errors are accumulated into step windows.","default":false},"calibrate":{"type":"boolean","title":"Calibrate","description":"If True, read per-member errors from `synoptic_station_error_member`, apply walk-forward ensemble-spread calibration (gamma from `synoptic_station_gamma_europe`) for allowlisted Jua ensemble models, and emit CRPS alongside RMSE / MAE / bias. Combines with debias (bias subtracted per member before spread calibration). Incompatible with obs_buckets.","default":true},"init_hours":{"anyOf":[{"items":{"type":"integer"},"type":"array"},{"type":"null"}],"title":"Init Hours","description":"Filter to forecasts initialised at the given UTC hours. Each value must be in 0..23 (e.g. [0, 12] keeps only 00Z and 12Z runs). None or empty list = all hours (no filtering)."},"restrict_init_dates":{"anyOf":[{"items":{"type":"string","format":"date"},"type":"array"},{"type":"null"}],"title":"Restrict Init Dates","description":"Internal: restrict the query to these forecast init dates (``toDate(init_time)``). Set by the per-model fan-out path so each single-model sub-query is scored over the SAME set of days that the multi-model intersection would have selected (the intersection is computed once up front and injected here). Not part of the public API surface; leave unset for normal single-query execution."},"solar_step_max_override":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Solar Step Max Override","description":"Internal: pin the solar accumulation window (S_max, minutes) to the value computed from the ORIGINAL multi-model request. The per-model fan-out sets this so every single-model sub-query accumulates to the SAME window (the coarsest native step across all requested models) -- otherwise a fine model would report hourly RMSE while a coarse one reports 6h-window RMSE in the same chart, which isn't comparable. Not part of the public API surface; leave unset for normal execution."},"gamma_training_weeks":{"anyOf":[{"type":"integer","maximum":52,"minimum":1},{"type":"null"}],"title":"Gamma Training Weeks","description":"Internal: override walk-forward gamma training window length in weeks for allowlisted Jua ensemble models (1..52). None uses the default (4 weeks)."},"restrict_members":{"anyOf":[{"items":{"type":"string"},"type":"array","maxItems":64},{"type":"null"}],"title":"Restrict Members","description":"Internal test knob: score ensemble models on only these ensemble_member ids (e.g. ['ept2_ensemble_0', 'aurora_ensemble_3']). The deterministic 'det' sentinel is always kept so mixed deterministic models are unaffected. CRPS / RMSE / MAE / bias are then computed from the reduced member set. None (default) uses all members. NOT part of the public API; used for member-count ablation experiments only."},"obs_buckets":{"type":"boolean","title":"Obs Buckets","description":"If True, additionally stratify RMSE / MAE / bias by the observed value's distribution. Each metric is reported per observed-value bucket: < P5, P5-P25, P25-P75, P75-P95, > P95 (plus an 'all' bucket). The P5/P25/P75/P95 thresholds are computed once over the selected stations and time window so the buckets are identical across models and lead times. This recovers the observed value by joining `synoptic_station_error` back to the station observation table, so it is heavier than the default aggregation and REQUIRES exactly one variable.","default":false}},"type":"object","required":["models","start_time","end_time"],"title":"StationBenchmarkQuery","description":"Query parameters for station benchmark data."},"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"}}}}
```

## The StationDataQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"StationDataQuery":{"properties":{"station_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Station Ids","description":"List of ICAO station codes to query. Mutually exclusive with geo."},"geo":{"anyOf":[{"$ref":"#/components/schemas/GeoFilter"},{"type":"null"}],"description":"Geographic filter for selecting stations by region. Supports: bounding_box, market_zone, country_key, polygon. Mutually exclusive with station_ids."},"bounding_box":{"anyOf":[{"$ref":"#/components/schemas/BoundingBox"},{"type":"null"}],"description":"[Deprecated] Use geo with type='bounding_box' instead."},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/StationVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"List of observation variables to return. If not set, returns all."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If not set, no upper bound."},"aggregation":{"$ref":"#/components/schemas/jua_query_v2__station_data__query__TemporalAggregation","description":"Temporal aggregation to apply (none, hourly, daily)","default":"none"},"aggregate_across_stations":{"type":"boolean","title":"Aggregate Across Stations","description":"If True and aggregation is hourly/daily, compute mean across all stations (regional average). If False, compute mean per station.","default":false},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for time formatting. Defaults to UTC."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by. Supports direction suffix: 'time__desc' for descending, 'time__asc' for ascending (default). Can also use object format: {'field': 'time', 'direction': 'desc'}"},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters (limit, offset)"}},"type":"object","required":["start_time"],"title":"StationDataQuery","description":"Query parameters for station observation data.\n\nSupports filtering by:\n- station_ids: List of specific station IDs (mutually exclusive with geo)\n- geo: GeoFilter for region-based filtering (bounding_box, market_zone,\n  country_key, polygon)\n- variables: List of observation variables to return\n- start_time / end_time: Time range for observations\n- aggregation: Temporal aggregation (none, hourly, daily)"},"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."},"BoundingBox":{"properties":{"min_lat":{"type":"number","maximum":90,"minimum":-90,"title":"Min Lat","description":"Minimum latitude"},"max_lat":{"type":"number","maximum":90,"minimum":-90,"title":"Max Lat","description":"Maximum latitude"},"min_lon":{"type":"number","maximum":180,"minimum":-180,"title":"Min Lon","description":"Minimum longitude"},"max_lon":{"type":"number","maximum":180,"minimum":-180,"title":"Max Lon","description":"Maximum longitude"}},"type":"object","required":["min_lat","max_lat","min_lon","max_lon"],"title":"BoundingBox","description":"Geographic bounding box for filtering stations.\n\nNote: This is kept for backward compatibility. Prefer using GeoFilter\nwith type='bounding_box' for new code."},"StationVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","dew_point_temperature_at_height_level_2m","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m"],"title":"StationVariable","description":"Available synoptic station observation variables.\n\nThese correspond to columns in the synoptic_station_data table.\nValues use max value as NULL indicator (UInt8: 255, UInt16: 65535).\n\nNote: Only variables with reliable data availability (>60%) are included.\nPressure, precipitation, and cloud cover are NOT available in this synoptic\nfeed. Solar radiation is NOT in this table either — it comes from a separate\nsolar-station network, served by the dedicated solar read path\n(``build_solar_query`` / ``query_solar_data``, exposed at\n``POST /v1/station-data/solar-data``), not this enum."},"jua_query_v2__station_data__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for station data queries."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The StationInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"StationInfo":{"properties":{"station":{"type":"string","title":"Station","description":"Unique station identifier"},"name":{"type":"string","title":"Name","description":"Station name"},"latitude":{"type":"number","title":"Latitude","description":"Station latitude"},"longitude":{"type":"number","title":"Longitude","description":"Station longitude"},"elevation":{"type":"number","title":"Elevation","description":"Station elevation in meters"}},"type":"object","required":["station","name","latitude","longitude","elevation"],"title":"StationInfo","description":"Basic station information."}}}}
```

## The StationVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"StationVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","dew_point_temperature_at_height_level_2m","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m"],"title":"StationVariable","description":"Available synoptic station observation variables.\n\nThese correspond to columns in the synoptic_station_data table.\nValues use max value as NULL indicator (UInt8: 255, UInt16: 65535).\n\nNote: Only variables with reliable data availability (>60%) are included.\nPressure, precipitation, and cloud cover are NOT available in this synoptic\nfeed. Solar radiation is NOT in this table either — it comes from a separate\nsolar-station network, served by the dedicated solar read path\n(``build_solar_query`` / ``query_solar_data``, exposed at\n``POST /v1/station-data/solar-data``), not this enum."}}}}
```

## The StationVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"StationVariableInfo":{"properties":{"name":{"type":"string","title":"Name","description":"Variable name (column name)"},"description":{"type":"string","title":"Description","description":"Human-readable description"},"unit":{"type":"string","title":"Unit","description":"Unit of measurement"}},"type":"object","required":["name","description","unit"],"title":"StationVariableInfo","description":"Information about a station variable."}}}}
```

## The TimeRangeClimatologyQuery object

````json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"TimeRangeClimatologyQuery":{"properties":{"geo":{"$ref":"#/components/schemas/GeoFilter","description":"Geographic filter specifying the query location(s) or region(s)"},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the climatology query (inclusive). UTC timezone."},"end_time":{"type":"string","format":"date-time","title":"End Time","description":"End time for the climatology query (exclusive). UTC timezone."},"variables":{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array","title":"Variables","description":"List of weather variables to query. If empty, returns all available climatology variables."},"group_by":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Group By","description":"List of dimensions to group by for aggregation. Time aggregation options: 'hourly', 'daily', 'weekly'. Other valid fields: 'market_zone', 'country_key', 'point'."},"timezone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timezone","description":"Timezone for time-based aggregations (daily, weekly). If not specified, UTC is used. Example: 'Europe/Berlin'."},"aggregation":{"anyOf":[{"items":{"$ref":"#/components/schemas/Aggregation"},"type":"array"},{"type":"null"}],"title":"Aggregation","description":"List of aggregation functions to apply when grouping (e.g., ['avg', 'std']). Requires 'group_by' to be specified."},"order_by":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Order By","description":"List of dimensions to sort results by. Use 'time' for time-based ordering."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters for limiting result size."},"weighting":{"anyOf":[{"$ref":"#/components/schemas/Weighting"},{"type":"null"}],"description":"Optional weighting scheme for geographic aggregation. Applies weighted averages based on capacity or population. Only valid with spatial aggregation (market_zone or country_key)."}},"type":"object","required":["geo","start_time","end_time"],"title":"TimeRangeClimatologyQuery","description":"Query for retrieving ERA5 WMO climatology data over a time range.\n\nInstead of specifying day_of_year/hour directly, provide a time range\n(start_time, end_time) and the query will return climatology data\nmatched to each hour in the range. The response includes a 'time'\ncolumn with the full datetime values.\n\nExample:\n    ```python\n    query = TimeRangeClimatologyQuery(\n        geo={\"type\": \"point\", \"value\": [(52.52, 13.405)]},\n        start_time=datetime(2024, 1, 15, 0, 0, 0),\n        end_time=datetime(2024, 1, 16, 0, 0, 0),\n        variables=[\"air_temperature_at_height_level_2m\"],\n    )\n    # Returns 24 hourly rows with daily-smoothed climatology values\n    ```"},"GeoFilter":{"properties":{"type":{"type":"string","enum":["point","bounding_box","polygon","market_zone","country_key","poi"],"title":"Type","description":"Geographic filter type. 'point': Single location or list of [latitude, longitude] coordinates. 'bounding_box': Rectangular area defined by [[lat_min, lon_min], [lat_max, lon_max]]. 'polygon': Custom area defined by list of [latitude, longitude] coordinates. 'market_zone': Predefined energy market zone codes (e.g., 'DE', 'FR'). 'country_key': ISO country codes (e.g., 'DE', 'US'). 'poi': Point of Interest reference(s) with coordinates and optional id/label."},"value":{"anyOf":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},{"items":{"prefixItems":[{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2}],"type":"array","maxItems":2,"minItems":2},"type":"array"},{"items":{"items":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2},"type":"array"},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AL","AM","AO","AR","AT","AU-LH","AU-NSW","AU-NT","AU-QLD","AU-SA","AU-TAS","AU-TAS-CBI","AU-TAS-FI","AU-TAS-KI","AU-VIC","AU-WA","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BM","BN","BO","BR-CS","BR-N","BR-NE","BR-S","BS","BT","BW","BY","BZ","CA-AB","CA-BC","CA-MB","CA-NB","CA-NL","CA-NS","CA-NT","CA-NU","CA-ON","CA-PE","CA-QC","CA-SK","CA-YT","CD","CF","CG","CH","CI","CL-CHP","CL-SEA","CL-SEM","CL-SEN","CM","CN","CO","CR","CU","CV","CW","CY","CZ","DE","DJ","DK-BHM","DK-DK1","DK-DK2","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ES-CN-FV","ES-CN-GC","ES-CN-HI","ES-CN-IG","ES-CN-LP","ES-CN-LZ","ES-CN-TE","ES-IB-FO","ES-IB-IZ","ES-IB-MA","ES-IB-ME","ET","FI","FJ","FK","FM","FO-MI","FO-SI","FR","FR-COR","GA","GB","GB-NIR","GB-ORK","GB-ZET","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GT","GU","GW","GY","HK","HN","HR","HT","HU","ID","IE","IL","IM","IN-AN","IN-EA","IN-NE","IN-NO","IN-SO","IN-WE","IQ","IR","IS","IT-CALA","IT-CNO","IT-CSO","IT-NO","IT-SAR","IT-SIC","IT-SO","JE","JM","JO","JP-CB","JP-CG","JP-HKD","JP-HR","JP-KN","JP-KY","JP-ON","JP-SK","JP-TH","JP-TK","KE","KG","KH","KM","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MD","ME","MG","MK","ML","MM","MN","MQ","MR","MT","MU","MV","MW","MX","MY-EM","MY-WM","MZ","NA","NC","NE","NG","NI","NL","NO-NO1","NO-NO2","NO-NO3","NO-NO4","NO-NO5","NP","NZ","NZ-NZC","NZ-NZST","OM","PA","PE","PF","PG","PH-LU","PH-MI","PH-VI","PK","PL","PM","PR","PS","PT","PT-AC","PT-MA","PW","PY","QA","RE","RO","RS","RU-1","RU-2","RU-AS","RU-EU","RU-FE","RU-KGD","RW","SA","SB","SC","SD","SE-SE1","SE-SE2","SE-SE3","SE-SE4","SG","SI","SJ","SK","SL","SN","SO","SR","SS","ST","SV","SY","SZ","TD","TG","TH","TJ","TL","TM","TN","TO","TR","TT","TW","TZ","UA","UA-CR","UG","US-AK","US-AK-SEAPA","US-CAL-BANC","US-CAL-CISO","US-CAL-IID","US-CAL-LDWP","US-CAL-TIDC","US-CAR-CPLE","US-CAR-CPLW","US-CAR-DUK","US-CAR-SC","US-CAR-SCEG","US-CENT-SPA","US-CENT-SWPP","US-FLA-FMPP","US-FLA-FPC","US-FLA-FPL","US-FLA-GVL","US-FLA-HST","US-FLA-JEA","US-FLA-SEC","US-FLA-TAL","US-FLA-TEC","US-HI","US-MIDA-PJM","US-MIDW-AECI","US-MIDW-LGEE","US-MIDW-MISO","US-NE-ISNE","US-NW-AVA","US-NW-BPAT","US-NW-CHPD","US-NW-DOPD","US-NW-GCPD","US-NW-IPCO","US-NW-NEVP","US-NW-NWMT","US-NW-PACE","US-NW-PACW","US-NW-PGE","US-NW-PSCO","US-NW-PSEI","US-NW-SCL","US-NW-TPWR","US-NW-WACM","US-NW-WAUW","US-NY-NYIS","US-SE-SOCO","US-SW-AZPS","US-SW-EPE","US-SW-PNM","US-SW-SRP","US-SW-TEPC","US-SW-WALC","US-TEN-TVA","US-TEX-ERCO","UY","UZ","VC","VE","VI","VN","VU","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},{"items":{"type":"string","enum":["AD","AE","AF","AG","AI","AL","AM","AO","AQ","AR","AS","AT","AU","AW","AX","AZ","BA","BB","BD","BE","BF","BG","BH","BI","BJ","BL","BM","BN","BO","BQ","BR","BS","BT","BV","BW","BY","BZ","CA","CC","CD","CF","CG","CH","CI","CK","CL","CM","CN","CO","CR","CU","CV","CW","CX","CY","CZ","DE","DJ","DK","DM","DO","DZ","EC","EE","EG","EH","ER","ES","ET","FI","FJ","FK","FM","FO","FR","GA","GB","GD","GE","GF","GG","GH","GI","GL","GM","GN","GP","GQ","GR","GS","GT","GU","GW","GY","HK","HM","HN","HR","HT","HU","ID","IE","IL","IM","IN","IO","IQ","IR","IS","IT","JE","JM","JO","JP","KE","KG","KH","KI","KM","KN","KP","KR","KW","KY","KZ","LA","LB","LC","LI","LK","LR","LS","LT","LU","LV","LY","MA","MC","MD","ME","MF","MG","MH","MK","ML","MM","MN","MO","MP","MQ","MR","MS","MT","MU","MV","MW","MX","MY","MZ","NA","NC","NE","NF","NG","NI","NL","NO","NP","NR","NU","NZ","OM","PA","PE","PF","PG","PH","PK","PL","PM","PN","PR","PS","PT","PW","PY","QA","RE","RO","RS","RU","RW","SA","SB","SC","SD","SE","SG","SH","SI","SJ","SK","SL","SM","SN","SO","SR","SS","ST","SV","SX","SY","SZ","TC","TD","TF","TG","TH","TJ","TK","TL","TM","TN","TO","TR","TT","TV","TW","TZ","UA","UG","UM","US","UY","UZ","VA","VC","VE","VG","VI","VN","VU","WF","WS","XK","XX","YE","YT","ZA","ZM","ZW"]},"type":"array"},{"$ref":"#/components/schemas/POIReference"},{"items":{"$ref":"#/components/schemas/POIReference"},"type":"array"}],"title":"Value","description":"Geographic coordinates or identifiers. For 'point': [latitude, longitude] or list of coordinate pairs. For 'bounding_box': [[lat_min, lon_min], [lat_max, lon_max]]. For 'polygon': [[lat1, lon1], [lat2, lon2], ...]. For 'market_zone' or 'country_key': string code or list of codes. For 'poi': POIReference object or list of POIReference objects."},"method":{"anyOf":[{"type":"string","enum":["nearest","bilinear"]},{"type":"null"}],"title":"Method","description":"Interpolation method for point queries. 'nearest': Uses closest grid point (faster). 'bilinear': Interpolates between 4 surrounding grid points. Only applicable when type='point'. Defaults to 'nearest'"}},"type":"object","required":["type","value"],"title":"GeoFilter","description":"Geographic filter for specifying query locations.\n\nSupports various geographic query types including points, regions, and\npredefined areas like market zones."},"POIReference":{"properties":{"coordinates":{"prefixItems":[{"type":"number"},{"type":"number"}],"type":"array","maxItems":2,"minItems":2,"title":"Coordinates","description":"Geographic coordinates as [latitude, longitude]"},"id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id","description":"Optional unique identifier (e.g., station ID)"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Label","description":"Optional human-readable name for display"}},"type":"object","required":["coordinates"],"title":"POIReference","description":"Reference to a Point of Interest with optional identity.\n\nThe coordinates are required for geo queries. The id and label are optional\nmetadata - id can be used by data sources that need identifiers (e.g., station IDs),\nand label provides a human-readable name for display purposes."},"CustomerVariable":{"type":"string","enum":["air_temperature_at_height_level_2m","surface_temperature","dew_point_temperature_at_height_level_2m","relative_humidity_at_height_level_2m","air_pressure_at_mean_sea_level","surface_air_pressure","wind_speed_at_height_level_10m","wind_direction_at_height_level_10m","wind_speed_at_height_level_100m","wind_direction_at_height_level_100m","wind_speed_at_height_level_20m","wind_speed_at_height_level_40m","wind_speed_at_height_level_60m","wind_speed_at_height_level_80m","wind_speed_at_height_level_120m","wind_speed_at_height_level_140m","wind_speed_at_height_level_160m","wind_speed_at_height_level_180m","wind_speed_at_height_level_200m","wind_direction_at_height_level_200m","air_density_at_height_level_2m","geopotential_at_pressure_level_50000Pa","eastward_wind_at_height_level_10m","northward_wind_at_height_level_10m","eastward_wind_at_height_level_100m","northward_wind_at_height_level_100m","wind_speed_of_gust_at_height_level_10m_max","surface_direct_downwelling_shortwave_flux_sum_1h","surface_downwelling_longwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_1h","surface_downwelling_shortwave_flux_sum_30min","surface_direct_downwelling_shortwave_flux_sum_30min","toa_bidirectional_reflectance_560_710nm","toa_bidirectional_reflectance_1500_1780nm","toa_brightness_temperature_3480_4360nm","toa_brightness_temperature_9800_11800nm","surface_downwelling_longwave_flux_sum_6h","surface_downwelling_shortwave_flux_sum_6h","surface_net_downward_longwave_flux_sum_1h","surface_net_downward_shortwave_flux_sum_1h","surface_net_downward_longwave_flux_sum_6h","surface_net_downward_shortwave_flux_sum_6h","surface_direct_along_beam_shortwave_flux_sum_6h","cloud_area_fraction_at_entire_atmosphere","cloud_area_fraction_at_entire_atmosphere_high_type","cloud_area_fraction_at_entire_atmosphere_medium_type","cloud_area_fraction_at_entire_atmosphere_low_type","precipitation_amount_sum_1h","precipitation_amount_sum_3h","precipitation_amount_sum_6h","precipitation_amount_sum_12h","precipitation_amount_sum_24h","atmosphere_convective_available_potential_energy","predominant_precipitation_type_at_surface","sea_surface_temperature","snowfall_sum_1h","surface_runoff_sum_1h","sub_surface_runoff_sum_1h","surface_sensible_heat_flux_sum_1h","surface_latent_heat_flux_sum_1h","maximum_temperature_at_height_level_2m_24h","minimum_temperature_at_height_level_2m_24h","snow_depth","temperature_in_ground_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m","volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m"],"title":"CustomerVariable","description":"Weather variable name with units:\n  • air_temperature_at_height_level_2m: K\n  • surface_temperature: K\n  • dew_point_temperature_at_height_level_2m: K\n  • relative_humidity_at_height_level_2m: %\n  • air_pressure_at_mean_sea_level: Pa\n  • surface_air_pressure: Pa\n  • wind_speed_at_height_level_10m: m/s\n  • wind_direction_at_height_level_10m: degrees\n  • wind_speed_at_height_level_100m: m/s\n  • wind_direction_at_height_level_100m: degrees\n  • wind_speed_at_height_level_20m: m/s\n  • wind_speed_at_height_level_40m: m/s\n  • wind_speed_at_height_level_60m: m/s\n  • wind_speed_at_height_level_80m: m/s\n  • wind_speed_at_height_level_120m: m/s\n  • wind_speed_at_height_level_140m: m/s\n  • wind_speed_at_height_level_160m: m/s\n  • wind_speed_at_height_level_180m: m/s\n  • wind_speed_at_height_level_200m: m/s\n  • wind_direction_at_height_level_200m: degrees\n  • air_density_at_height_level_2m: kg/m³\n  • geopotential_at_pressure_level_50000Pa: m²/s²\n  • eastward_wind_at_height_level_10m: m/s\n  • northward_wind_at_height_level_10m: m/s\n  • eastward_wind_at_height_level_100m: m/s\n  • northward_wind_at_height_level_100m: m/s\n  • wind_speed_of_gust_at_height_level_10m_max: m/s\n  • surface_direct_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_longwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_1h: J/m²\n  • surface_downwelling_shortwave_flux_sum_30min: J/m²\n  • surface_direct_downwelling_shortwave_flux_sum_30min: J/m²\n  • toa_bidirectional_reflectance_560_710nm: \n  • toa_bidirectional_reflectance_1500_1780nm: \n  • toa_brightness_temperature_3480_4360nm: \n  • toa_brightness_temperature_9800_11800nm: \n  • surface_downwelling_longwave_flux_sum_6h: J/m²\n  • surface_downwelling_shortwave_flux_sum_6h: J/m²\n  • surface_net_downward_longwave_flux_sum_1h: J/m²\n  • surface_net_downward_shortwave_flux_sum_1h: J/m²\n  • surface_net_downward_longwave_flux_sum_6h: J/m²\n  • surface_net_downward_shortwave_flux_sum_6h: J/m²\n  • surface_direct_along_beam_shortwave_flux_sum_6h: J/m²\n  • cloud_area_fraction_at_entire_atmosphere: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_high_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_medium_type: fraction (0-1)\n  • cloud_area_fraction_at_entire_atmosphere_low_type: fraction (0-1)\n  • precipitation_amount_sum_1h: mm\n  • precipitation_amount_sum_3h: mm\n  • precipitation_amount_sum_6h: mm\n  • precipitation_amount_sum_12h: mm\n  • precipitation_amount_sum_24h: mm\n  • atmosphere_convective_available_potential_energy: J/kg\n  • predominant_precipitation_type_at_surface: categorical\n  • sea_surface_temperature: K\n  • snowfall_sum_1h: mm\n  • surface_runoff_sum_1h: mm\n  • sub_surface_runoff_sum_1h: mm\n  • surface_sensible_heat_flux_sum_1h: W/m²\n  • surface_latent_heat_flux_sum_1h: W/m²\n  • maximum_temperature_at_height_level_2m_24h: K\n  • minimum_temperature_at_height_level_2m_24h: K\n  • snow_depth: m\n  • temperature_in_ground_at_layer_below_ground_0.00m: K\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.00m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.07m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_0.28m: m³/m³\n  • volume_fraction_of_condensed_water_in_soil_at_layer_below_ground_1.00m: m³/m³"},"Aggregation":{"properties":{"aggregation":{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"],"title":"Aggregation","description":"Aggregation function name."},"parameters":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"title":"Parameters","description":"Parameters for parameterized aggregations.Example: 'quantile': [0.5] for median, [0.95] for 95th percentile, etc."},"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/CustomerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Specific variables to aggregate. If None, applies to all variables in the query"}},"type":"object","required":["aggregation"],"title":"Aggregation","description":"Aggregation function to apply when grouping forecast data.\n\nSupported aggregations:\n- Basic: avg, std, min, max, sum, count, median\n- Parameterized: quantile_(p), argmin_(col), argmax_(col)\n\nFor argmin/argmax, the parameter is the column to return, and the variable\nis the column to find the min/max of. Example:\n    argmin_(time)__temperature -> returns time when temperature is minimum\n\nCan be applied to specific variables or all variables in the query."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"},"Weighting":{"properties":{"type":{"type":"string","enum":["wind_capacity","wind_capacity_combined","wind_capacity_transmission","wind_capacity_embedded","solar_capacity","population"],"title":"Type","description":"Weighting type for geographic aggregation. 'wind_capacity': Weight by installed wind power capacity. 'solar_capacity': Weight by installed solar power capacity. 'population': Weight by population density"},"unit":{"type":"string","enum":["weather","mw"],"title":"Unit","description":"Output unit. 'weather': return capacity-weighted raw weather values E[wu]. 'mw': apply power curves in ClickHouse and return predicted MW.","default":"weather"}},"type":"object","required":["type"],"title":"Weighting","description":"Weighting scheme for aggregating forecast data over geographic areas.\n\nApplies weighted averages based on capacity or population distribution within\nthe queried area."}}}}
````

## The TimeSlice object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"TimeSlice":{"properties":{"start":{"type":"string","format":"date-time","title":"Start","description":"Start datetime (inclusive)"},"end":{"type":"string","format":"date-time","title":"End","description":"End datetime (inclusive) in ISO 8601 format"}},"type":"object","required":["start","end"],"title":"TimeSlice","description":"Time range for querying forecasts between two datetime values."}}}}
```

## The TotalNumberOfForecastsQueryResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"TotalNumberOfForecastsQueryResult":{"properties":{"forecasts_per_model":{"additionalProperties":{"type":"integer"},"propertyNames":{"$ref":"#/components/schemas/Model"},"type":"object","title":"Forecasts Per Model","description":"Mapping of model identifiers to the number of available forecasts"}},"type":"object","required":["forecasts_per_model"],"title":"TotalNumberOfForecastsQueryResult","description":"Result containing forecast counts per model."},"Model":{"type":"string","enum":["ept2","ept2_early","ept2_e","ept2_rr","ept2_hrrr","ept2_1_helios","ept2_1_europa","ept1_5","ept1_5_early","aifs","aifs_ens","aurora","icon_global","icon_eu","ecmwf_ifs_single","ecmwf_ens","ecmwf_ec46","ecmwf_seas5","ept2_reasoning","meteofrance_arome_france_hd","gfs_global_single","noaa_gfs_single","gfs_global_ensemble","icon_d2","gfs_graphcast025","knmi_harmonie_arome_europe","knmi_harmonie_arome_netherlands","ukmo_global_deterministic_10km","ukmo_uk_deterministic_2km"],"title":"Model"}}}}
```

## The UkPowerTimeseriesQuery object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"UkPowerTimeseriesQuery":{"properties":{"variables":{"anyOf":[{"items":{"$ref":"#/components/schemas/UkPowerVariable"},"type":"array"},{"type":"null"}],"title":"Variables","description":"Variables to query. If not set, returns all."},"start_time":{"type":"string","format":"date-time","title":"Start Time","description":"Start time for the query (inclusive)"},"end_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"End Time","description":"End time for the query (exclusive). If None, no upper bound."},"aggregation":{"$ref":"#/components/schemas/jua_query_v2__uk_power__query__TemporalAggregation","description":"Temporal aggregation to apply","default":"none"},"temporal_resolution_minutes":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Temporal Resolution Minutes","description":"Target temporal resolution in minutes.  When set, data is linearly interpolated in ClickHouse to the requested cadence (native NESO data is 30-minute; use 15 for 15-minute interpolation).  Set to None (the default) to return data at its native resolution."},"time_zone":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Time Zone","description":"IANA time zone for time formatting (e.g. 'Europe/London')."},"order_by":{"anyOf":[{"items":{"$ref":"#/components/schemas/OrderByItem_str_"},"type":"array"},{"type":"null"}],"title":"Order By","description":"Columns to order by (e.g. 'time__desc')."},"pagination":{"anyOf":[{"$ref":"#/components/schemas/Pagination"},{"type":"null"}],"description":"Pagination parameters"}},"type":"object","required":["start_time"],"title":"UkPowerTimeseriesQuery","description":"Query parameters for UK power generation timeseries data.\n\nVariables are aggregated totals:\n- wind: transmission + embedded wind generation\n- solar: total solar generation\n- wind_forecast: day-ahead total wind forecast\n- solar_forecast: day-ahead solar forecast"},"UkPowerVariable":{"type":"string","enum":["wind","wind_transmission","wind_embedded","solar","load","wind_forecast","wind_transmission_forecast","wind_embedded_forecast","solar_forecast"],"title":"UkPowerVariable","description":"UK power generation variable types (aggregated)."},"jua_query_v2__uk_power__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for UK power queries."},"OrderByItem_str_":{"properties":{"field":{"type":"string","title":"Field","description":"Field to sort by"},"direction":{"$ref":"#/components/schemas/SortDirection","description":"Sort direction: 'asc' (default) or 'desc'","default":"asc"},"aggregation":{"anyOf":[{"type":"string","enum":["avg","std","min","max","sum","count","median","quantile","argmin","argmax"]},{"type":"null"}],"title":"Aggregation","description":"Aggregation function when ordering by variable"}},"type":"object","required":["field"],"title":"OrderByItem[str]"},"SortDirection":{"type":"string","enum":["asc","desc"],"title":"SortDirection","description":"Sort direction for ORDER BY clauses."},"Pagination":{"properties":{"limit":{"type":"integer","title":"Limit","default":100},"offset":{"type":"integer","title":"Offset","default":0}},"type":"object","title":"Pagination"}}}}
```

## The UkPowerVariable object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"UkPowerVariable":{"type":"string","enum":["wind","wind_transmission","wind_embedded","solar","load","wind_forecast","wind_transmission_forecast","wind_embedded_forecast","solar_forecast"],"title":"UkPowerVariable","description":"UK power generation variable types (aggregated)."}}}}
```

## The UkPowerVariableInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"UkPowerVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["name","description","unit"],"title":"UkPowerVariableInfo","description":"Information about a UK power variable."}}}}
```

## The ValidationError object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}
```

## The ValueFilter object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"ValueFilter":{"properties":{"variable":{"type":"string","title":"Variable"},"operator":{"type":"string","title":"Operator"},"value":{"type":"number","title":"Value"}},"type":"object","required":["variable","operator","value"],"title":"ValueFilter","description":"Post-aggregation value filter applied as outermost SQL wrapper."}}}}
```

## The VersionInfo object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"VersionInfo":{"properties":{"model_version":{"type":"string","title":"Model Version"},"zone_key":{"type":"string","title":"Zone Key"},"psr_type":{"type":"string","title":"Psr Type"},"is_stable":{"type":"boolean","title":"Is Stable","default":false},"is_latest":{"type":"boolean","title":"Is Latest","default":false},"earliest_init_time":{"type":"string","format":"date-time","title":"Earliest Init Time"},"latest_init_time":{"type":"string","format":"date-time","title":"Latest Init Time"}},"type":"object","required":["model_version","zone_key","psr_type","earliest_init_time","latest_init_time"],"title":"VersionInfo","description":"One model_version available for a (zone_key, psr_type) cell."}}}}
```

## The VersionPin object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"VersionPin":{"properties":{"zone_key":{"type":"string","title":"Zone Key","description":"Zone code (e.g. 'DE')"},"psr_type":{"type":"string","title":"Psr Type","description":"PSR type (e.g. 'Solar')"},"version":{"type":"string","minLength":1,"title":"Version","description":"stable | latest | run id"}},"type":"object","required":["zone_key","psr_type","version"],"title":"VersionPin","description":"Per-(zone, psr) version override.\n\n``version`` accepts the same values as ``PowerForecastQuery.version``:\n``stable``, ``latest``, or a concrete run id from ``GET /versions``."}}}}
```

## The Weighting object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"Weighting":{"properties":{"type":{"type":"string","enum":["wind_capacity","wind_capacity_combined","wind_capacity_transmission","wind_capacity_embedded","solar_capacity","population"],"title":"Type","description":"Weighting type for geographic aggregation. 'wind_capacity': Weight by installed wind power capacity. 'solar_capacity': Weight by installed solar power capacity. 'population': Weight by population density"},"unit":{"type":"string","enum":["weather","mw"],"title":"Unit","description":"Output unit. 'weather': return capacity-weighted raw weather values E[wu]. 'mw': apply power curves in ClickHouse and return predicted MW.","default":"weather"}},"type":"object","required":["type"],"title":"Weighting","description":"Weighting scheme for aggregating forecast data over geographic areas.\n\nApplies weighted averages based on capacity or population distribution within\nthe queried area."}}}}
```

## The jua\_query\_v2\_\_climate\_indices\_\_types\_\_AvailableSourcesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__climate_indices__types__AvailableSourcesResult":{"properties":{"sources":{"items":{"type":"string"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"AvailableSourcesResult","description":"Result for available climate indices data sources query."}}}}
```

## The jua\_query\_v2\_\_eex\_gas\_\_types\_\_AvailableAreasResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__eex_gas__types__AvailableAreasResult":{"properties":{"areas":{"items":{"type":"string"},"type":"array","title":"Areas"}},"type":"object","required":["areas"],"title":"AvailableAreasResult","description":"Result type for available EEX gas market areas / hubs."}}}}
```

## The jua\_query\_v2\_\_eex\_gas\_\_types\_\_AvailableShortCodesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__eex_gas__types__AvailableShortCodesResult":{"properties":{"short_codes":{"items":{"type":"string"},"type":"array","title":"Short Codes"}},"type":"object","required":["short_codes"],"title":"AvailableShortCodesResult","description":"Result type for available EEX gas product ShortCodes."}}}}
```

## The jua\_query\_v2\_\_eex\_power\_\_types\_\_AvailableAreasResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__eex_power__types__AvailableAreasResult":{"properties":{"areas":{"items":{"type":"string"},"type":"array","title":"Areas"}},"type":"object","required":["areas"],"title":"AvailableAreasResult","description":"Result type for available EEX market areas."}}}}
```

## The jua\_query\_v2\_\_eex\_power\_\_types\_\_AvailableShortCodesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__eex_power__types__AvailableShortCodesResult":{"properties":{"short_codes":{"items":{"type":"string"},"type":"array","title":"Short Codes"}},"type":"object","required":["short_codes"],"title":"AvailableShortCodesResult","description":"Result type for available EEX product ShortCodes."}}}}
```

## The jua\_query\_v2\_\_entsoe\_\_query\_\_TemporalAggregation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__entsoe__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for ENTSOE queries."}}}}
```

## The jua\_query\_v2\_\_entsoe\_\_types\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__entsoe__types__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/EntsoeVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result for available variables query."},"EntsoeVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"uses_zone_key":{"type":"boolean","title":"Uses Zone Key","default":true},"uses_zone_from_to":{"type":"boolean","title":"Uses Zone From To","default":false},"uses_psr_type":{"type":"boolean","title":"Uses Psr Type","default":false},"zone_kind":{"$ref":"#/components/schemas/EntsoeZoneKind","default":"physical"}},"type":"object","required":["name","description","unit"],"title":"EntsoeVariableInfo","description":"Information about an ENTSOE variable."},"EntsoeZoneKind":{"type":"string","enum":["physical","bidding","cross_border"],"title":"EntsoeZoneKind","description":"Which ENTSOE zone concept a variable is published under.\n\nENTSOE publishes some data at the country / control-area level\n(generation, load, capacity) and other data at the bidding-zone\nlevel (prices, net positions, imbalance).  For most countries the\ncountry code IS the bidding-zone code, but not always: Ireland\npublishes gen/load under ``IE`` (the country) and day-ahead prices\nunder ``IE_SEM`` (the all-island Single Electricity Market bidding\nzone).  Luxembourg is similar (``LU`` vs ``LU_BZN``).\n\nCross-border variables (flows, NTC, scheduled exchanges) use\n``zone_from`` / ``zone_to`` instead of ``zone_key`` and are flagged\nseparately so callers know not to try resolving them against a\nphysical/bidding zone pair."}}}}
```

## The jua\_query\_v2\_\_epex\_spot\_\_types\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__epex_spot__types__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/EpexSpotVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result for available EPEX SPOT variables query."},"EpexSpotVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"table":{"type":"string","title":"Table"}},"type":"object","required":["name","description","unit","table"],"title":"EpexSpotVariableInfo","description":"Information about an EPEX SPOT variable."}}}}
```

## The jua\_query\_v2\_\_netztransparenz\_\_query\_\_TemporalAggregation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__netztransparenz__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for Netztransparenz queries."}}}}
```

## The jua\_query\_v2\_\_netztransparenz\_\_types\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__netztransparenz__types__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/NetztransparenzVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result for available variables query."},"NetztransparenzVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"},"uses_tso":{"type":"boolean","title":"Uses Tso","default":true},"uses_subcategory":{"type":"boolean","title":"Uses Subcategory","default":false},"uses_direction":{"type":"boolean","title":"Uses Direction","default":false}},"type":"object","required":["name","description","unit"],"title":"NetztransparenzVariableInfo","description":"Information about a Netztransparenz variable."}}}}
```

## The jua\_query\_v2\_\_station\_data\_\_query\_\_TemporalAggregation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__station_data__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for station data queries."}}}}
```

## The jua\_query\_v2\_\_station\_data\_\_types\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__station_data__types__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/StationVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result containing list of available variables."},"StationVariableInfo":{"properties":{"name":{"type":"string","title":"Name","description":"Variable name (column name)"},"description":{"type":"string","title":"Description","description":"Human-readable description"},"unit":{"type":"string","title":"Unit","description":"Unit of measurement"}},"type":"object","required":["name","description","unit"],"title":"StationVariableInfo","description":"Information about a station variable."}}}}
```

## The jua\_query\_v2\_\_uk\_power\_\_query\_\_TemporalAggregation object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__uk_power__query__TemporalAggregation":{"type":"string","enum":["none","hourly","daily"],"title":"TemporalAggregation","description":"Temporal aggregation options for UK power queries."}}}}
```

## The jua\_query\_v2\_\_uk\_power\_\_types\_\_AvailableSourcesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__uk_power__types__AvailableSourcesResult":{"properties":{"sources":{"items":{"type":"string"},"type":"array","title":"Sources"}},"type":"object","required":["sources"],"title":"AvailableSourcesResult","description":"Result for available UK power data sources query."}}}}
```

## The jua\_query\_v2\_\_uk\_power\_\_types\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"jua_query_v2__uk_power__types__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/UkPowerVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result for available UK power variables query."},"UkPowerVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit"}},"type":"object","required":["name","description","unit"],"title":"UkPowerVariableInfo","description":"Information about a UK power variable."}}}}
```

## The query\_engine\_\_climatology\_\_router\_\_AvailableVariablesResult object

```json
{"openapi":"3.1.0","info":{"title":"Jua Query Engine API","version":"0.1.0"},"components":{"schemas":{"query_engine__climatology__router__AvailableVariablesResult":{"properties":{"variables":{"items":{"$ref":"#/components/schemas/ClimatologyVariableInfo"},"type":"array","title":"Variables"}},"type":"object","required":["variables"],"title":"AvailableVariablesResult","description":"Result containing available climatology variables."},"ClimatologyVariableInfo":{"properties":{"name":{"type":"string","title":"Name"},"description":{"type":"string","title":"Description"},"unit":{"type":"string","title":"Unit","default":""}},"type":"object","required":["name","description"],"title":"ClimatologyVariableInfo","description":"Information about a climatology variable."}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.jua.ai/api-v2/query-engine/open-api-reference/models.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
