import json import requests import numpy as np import pandas as pd import datetime as dt # Authenticate via `/token` endpoint access_token = "your_access_token_here" headers = { 'Authorization': f'Bearer {access_token}', 'Accept': 'application/json' } # Challenge resource name. resource_name = "wind_farm_1" # Get challenges target resource identifier (UUID) # (this is also available via the /market/challenge/ endpoint ) response = requests.get( url='https://predico-elia.inesctec.pt/api/v1/user/resource', params={'resource_name': resource_name}, headers=headers ) # Check if the request was successful if response.status_code == 200: resources = response.json() else: print("Failed to retrieve resource data.") print(f"Status code: {response.status_code}") exit() # Get resource ID (UUID): resource_id = resources["data"][0]["id"] print("Resource ID:", resource_id) # Create a random 24h submission (random values): # Generate datetime values for the challenge period: start_datetime = dt.datetime.utcnow() + dt.timedelta(hours=1) # from 1h ahead from now end_datetime = start_datetime + dt.timedelta(hours=71) # to 71h ahead # Ensure we only work with quarter-hourly intervals start_datetime = start_datetime.replace(minute=0, second=0, microsecond=0) end_datetime = end_datetime.replace(minute=0, second=0, microsecond=0) # Generate a range of datetime values with 15-minute intervals datetime_range = pd.date_range(start=start_datetime, end=end_datetime, freq='15T') datetime_range = [x.strftime("%Y-%m-%dT%H:%M:%SZ") for x in datetime_range] # Generate random values for the "value" column values = np.random.uniform(low=0.0, high=1.0, size=len(datetime_range)) values = [round(x, 3) for x in values] # Reuse this data to prepare 3 different quantiles submissions Q10, Q50, Q90 submission_list = [] for qt in ["q50", "q10", "q90"]: qt_forec = pd.DataFrame({ 'datetime': datetime_range, 'value': values, }) submission_list.append({ "variable": qt, "forecasts": qt_forec.to_dict(orient="records") }) # Your submissions: print("Submission List:") for i, submission in enumerate(submission_list): print("-"*79) print(f"Submission #{i+1}") print(json.dumps(submission, indent=3)) # Submit the forecasts: for submission in submission_list: response = requests.post(url=f"https://predico-elia.inesctec.pt/api/v1/market/continuous-forecasts/{resource_id}", json=submission, headers=headers) # Check if the request was successful if response.status_code == 201: print(f"Response: {response.json()}") print(f"Forecast submission successful for {submission['variable']} quantile.") else: print(f"Failed to submit forecast for {submission['variable']} quantile.") print(f"Status code: {response.status_code}") print(f"Response: {response.content}")