pkg/sdk/client/api_carbon_aware.go (620 lines of code) (raw):

/* * CarbonAware.WebApi, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null * No description provided (generated by Swagger Codegen https://github.com/swagger-api/swagger-codegen) * API version: 1.0 * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) */ package client import ( "context" "io" "net/http" "net/url" "strings" "time" "github.com/antihax/optional" ) // Linger please var ( _ context.Context // to determine the Accept header localVarHttpHeaderAccepts = []string{"application/json", "application/json; charset=utf-8", "application/problem+json; charset=utf-8"} ) type CarbonAwareApiService service /* CarbonAwareApiService Given an array of historical forecasts, retrieves the data that contains forecasts metadata, the optimal forecast and a range of forecasts filtered by the attributes [start...end] if provided. This endpoint takes a batch of requests for historical forecast data, fetches them, and calculates the optimal marginal carbon intensity windows for each using the same parameters available to the &#x27;/emissions/forecasts/current&#x27; endpoint. This endpoint is useful for back-testing what one might have done in the past, if they had access to the current forecast at the time. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param optional nil or *CarbonAwareApiBatchForecastDataAsyncOpts - Optional Parameters: * @param "Body" (optional.Interface of []EmissionsForecastBatchParametersDto) - Array of requested forecasts. @return []EmissionsForecastDto */ type CarbonAwareApiBatchForecastDataAsyncOpts struct { Body optional.Interface } func (a *CarbonAwareApiService) BatchForecastDataAsync(ctx context.Context, localVarOptionals *CarbonAwareApiBatchForecastDataAsyncOpts) ([]EmissionsForecastDto, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Post") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []EmissionsForecastDto ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/forecasts/batch" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHttpContentTypes := []string{"application/json", "text/json", "application/_*+json"} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } // body params if localVarOptionals != nil && localVarOptionals.Body.IsSet() { localVarOptionalBody := localVarOptionals.Body.Value() localVarPostBody = &localVarOptionalBody } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []EmissionsForecastDto err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 500 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Retrieves the measured carbon intensity data between the time boundaries and calculates the average carbon intensity during that period. This endpoint is useful for reporting the measured carbon intensity for a specific time period in a specific location. - @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). - @param location The location name where workflow is run - @param startTime The time at which the workflow we are measuring carbon intensity for started - @param endTime The time at which the workflow we are measuring carbon intensity for ended @return CarbonIntensityDto */ func (a *CarbonAwareApiService) GetAverageCarbonIntensity(ctx context.Context, location string, startTime time.Time, endTime time.Time) (CarbonIntensityDto, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Get") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue CarbonIntensityDto ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/average-carbon-intensity" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("location", parameterToString(location, "")) cutStartDate, _, _ := strings.Cut(parameterToString(startTime, ""), " ") localVarQueryParams.Add("startTime", cutStartDate) cutEndDate, _, _ := strings.Cut(parameterToString(endTime, ""), " ") localVarQueryParams.Add("endTime", cutEndDate) // to determine the Content-Type header localVarHttpContentTypes := []string{} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v CarbonIntensityDto err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 500 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Given an array of request objects, each with their own location and time boundaries, calculate the average carbon intensity for that location and time period and return an array of carbon intensity objects. The application only supports batching across a single location with different time boundaries. If multiple locations are provided, an error is returned. For each item in the request array, the application returns a corresponding object containing the location, time boundaries, and average marginal carbon intensity. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param optional nil or *CarbonAwareApiGetAverageCarbonIntensityBatchOpts - Optional Parameters: * @param "Body" (optional.Interface of []CarbonIntensityBatchParametersDto) - Array of inputs where each contains a &quot;location&quot;, &quot;startDate&quot;, and &quot;endDate&quot; for which to calculate average marginal carbon intensity. @return []CarbonIntensityDto */ type CarbonAwareApiGetAverageCarbonIntensityBatchOpts struct { Body optional.Interface } func (a *CarbonAwareApiService) GetAverageCarbonIntensityBatch(ctx context.Context, localVarOptionals *CarbonAwareApiGetAverageCarbonIntensityBatchOpts) ([]CarbonIntensityDto, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Post") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []CarbonIntensityDto ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/average-carbon-intensity/batch" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} // to determine the Content-Type header localVarHttpContentTypes := []string{"application/json", "text/json", "application/_*+json"} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } // body params if localVarOptionals != nil && localVarOptionals.Body.IsSet() { localVarOptionalBody := localVarOptionals.Body.Value() localVarPostBody = &localVarOptionalBody } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []CarbonIntensityDto err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 500 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Calculate the best emission data by list of locations for a specified time period. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param location String array of named locations * @param optional nil or *CarbonAwareApiGetBestEmissionsDataForLocationsByTimeOpts - Optional Parameters: * @param "Time" (optional.Time) - [Optional] Start time for the data query. * @param "ToTime" (optional.Time) - [Optional] End time for the data query. @return []EmissionsData */ type CarbonAwareApiGetBestEmissionsDataForLocationsByTimeOpts struct { Time optional.Time ToTime optional.Time } func (a *CarbonAwareApiService) GetBestEmissionsDataForLocationsByTime(ctx context.Context, location []string, localVarOptionals *CarbonAwareApiGetBestEmissionsDataForLocationsByTimeOpts) ([]EmissionsData, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Get") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []EmissionsData ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/bylocations/best" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("location", parameterToString(location, "multi")) if localVarOptionals != nil && localVarOptionals.Time.IsSet() { localVarQueryParams.Add("time", parameterToString(localVarOptionals.Time.Value(), "")) } if localVarOptionals != nil && localVarOptionals.ToTime.IsSet() { localVarQueryParams.Add("toTime", parameterToString(localVarOptionals.ToTime.Value(), "")) } // to determine the Content-Type header localVarHttpContentTypes := []string{} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []EmissionsData err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Retrieves the most recent forecasted data and calculates the optimal marginal carbon intensity window. This endpoint fetches only the most recently generated forecast for all provided locations. It uses the \&quot;dataStartAt\&quot; and \&quot;dataEndAt\&quot; parameters to scope the forecasted data points (if available for those times). If no start or end time boundaries are provided, the entire forecast dataset is used. The scoped data points are used to calculate average marginal carbon intensities of the specified \&quot;windowSize\&quot; and the optimal marginal carbon intensity window is identified. The forecast data represents what the data source predicts future marginal carbon intesity values to be, not actual measured emissions data (as future values cannot be known). This endpoint is useful for determining if there is a more carbon-optimal time to use electicity predicted in the future. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param location String array of named locations * @param optional nil or *CarbonAwareApiGetCurrentForecastDataOpts - Optional Parameters: * @param "DataStartAt" (optional.Time) - Start time boundary of forecasted data points.Ignores current forecast data points before this time. Defaults to the earliest time in the forecast data. * @param "DataEndAt" (optional.Time) - End time boundary of forecasted data points. Ignores current forecast data points after this time. Defaults to the latest time in the forecast data. * @param "WindowSize" (optional.Int32) - The estimated duration (in minutes) of the workload. Defaults to the duration of a single forecast data point. @return []EmissionsForecastDto */ type CarbonAwareApiGetCurrentForecastDataOpts struct { DataStartAt optional.Time DataEndAt optional.Time WindowSize optional.Int32 } func (a *CarbonAwareApiService) GetCurrentForecastData(ctx context.Context, location []string, localVarOptionals *CarbonAwareApiGetCurrentForecastDataOpts) ([]EmissionsForecastDto, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Get") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []EmissionsForecastDto ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/forecasts/current" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("location", parameterToString(location, "")) if localVarOptionals != nil && localVarOptionals.DataStartAt.IsSet() { cutDate, _, _ := strings.Cut(parameterToString(localVarOptionals.DataStartAt.Value(), ""), "UTC") localVarQueryParams.Add("dataStartAt", cutDate) } if localVarOptionals != nil && localVarOptionals.DataEndAt.IsSet() { cutDate, _, _ := strings.Cut(parameterToString(localVarOptionals.DataEndAt.Value(), ""), "UTC") localVarQueryParams.Add("dataEndAt", cutDate) } if localVarOptionals != nil && localVarOptionals.WindowSize.IsSet() { localVarQueryParams.Add("windowSize", parameterToString(localVarOptionals.WindowSize.Value(), "")) } // to determine the Content-Type header localVarHttpContentTypes := []string{} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []EmissionsForecastDto err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 500 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 501 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Calculate the best emission data by location for a specified time period. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param location String named location. * @param optional nil or *CarbonAwareApiGetEmissionsDataForLocationByTimeOpts - Optional Parameters: * @param "StartTime" (optional.Time) - [Optional] Start time for the data query. * @param "EndTime" (optional.Time) - [Optional] End time for the data query. @return []EmissionsData */ type CarbonAwareApiGetEmissionsDataForLocationByTimeOpts struct { StartTime optional.Time EndTime optional.Time } func (a *CarbonAwareApiService) GetEmissionsDataForLocationByTime(ctx context.Context, location string, localVarOptionals *CarbonAwareApiGetEmissionsDataForLocationByTimeOpts) ([]EmissionsData, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Get") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []EmissionsData ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/bylocation" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("location", parameterToString(location, "")) if localVarOptionals != nil && localVarOptionals.StartTime.IsSet() { cutDate, _, _ := strings.Cut(parameterToString(localVarOptionals.StartTime.Value(), ""), "UTC") localVarQueryParams.Add("startTime", cutDate) } if localVarOptionals != nil && localVarOptionals.EndTime.IsSet() { cutDate, _, _ := strings.Cut(parameterToString(localVarOptionals.EndTime.Value(), ""), "UTC") localVarQueryParams.Add("endTime", cutDate) } // to determine the Content-Type header localVarHttpContentTypes := []string{} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []EmissionsData err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil } /* CarbonAwareApiService Calculate the observed emission data by list of locations for a specified time period. * @param ctx context.Context - for authentication, logging, cancellation, deadlines, tracing, etc. Passed from http.Request or context.Background(). * @param location String array of named locations * @param optional nil or *CarbonAwareApiGetEmissionsDataForLocationsByTimeOpts - Optional Parameters: * @param "Time" (optional.Time) - [Optional] Start time for the data query. * @param "ToTime" (optional.Time) - [Optional] End time for the data query. @return []EmissionsData */ type CarbonAwareApiGetEmissionsDataForLocationsByTimeOpts struct { Time optional.Time ToTime optional.Time } func (a *CarbonAwareApiService) GetEmissionsDataForLocationsByTime(ctx context.Context, location []string, localVarOptionals *CarbonAwareApiGetEmissionsDataForLocationsByTimeOpts) ([]EmissionsData, *http.Response, error) { var ( localVarHttpMethod = strings.ToUpper("Get") localVarPostBody interface{} localVarFileName string localVarFileBytes []byte localVarReturnValue []EmissionsData ) // create path and map variables localVarPath := a.client.cfg.BasePath + "/emissions/bylocations" localVarHeaderParams := make(map[string]string) localVarQueryParams := url.Values{} localVarFormParams := url.Values{} localVarQueryParams.Add("location", parameterToString(location, "multi")) if localVarOptionals != nil && localVarOptionals.Time.IsSet() { localVarQueryParams.Add("time", parameterToString(localVarOptionals.Time.Value(), "")) } if localVarOptionals != nil && localVarOptionals.ToTime.IsSet() { localVarQueryParams.Add("toTime", parameterToString(localVarOptionals.ToTime.Value(), "")) } // to determine the Content-Type header localVarHttpContentTypes := []string{} // set Content-Type header localVarHttpContentType := selectHeaderContentType(localVarHttpContentTypes) if localVarHttpContentType != "" { localVarHeaderParams["Content-Type"] = localVarHttpContentType } // to determine the Accept header localVarHttpHeaderAccepts := []string{"application/json", "application/json; charset=utf-8"} // set Accept header localVarHttpHeaderAccept := selectHeaderAccept(localVarHttpHeaderAccepts) if localVarHttpHeaderAccept != "" { localVarHeaderParams["Accept"] = localVarHttpHeaderAccept } r, err := a.client.prepareRequest(ctx, localVarPath, localVarHttpMethod, localVarPostBody, localVarHeaderParams, localVarQueryParams, localVarFormParams, localVarFileName, localVarFileBytes) if err != nil { return localVarReturnValue, nil, err } localVarHttpResponse, err := a.client.callAPI(r) if err != nil || localVarHttpResponse == nil { return localVarReturnValue, localVarHttpResponse, err } localVarBody, err := io.ReadAll(localVarHttpResponse.Body) localVarHttpResponse.Body.Close() if err != nil { return localVarReturnValue, localVarHttpResponse, err } if localVarHttpResponse.StatusCode < 300 { // If we succeed, return the data, otherwise pass on to decode error. err = a.client.decode(&localVarReturnValue, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err == nil { return localVarReturnValue, localVarHttpResponse, nil } } if localVarHttpResponse.StatusCode >= 300 { newErr := GenericSwaggerError{ body: localVarBody, error: localVarHttpResponse.Status, } if localVarHttpResponse.StatusCode == 200 { var v []EmissionsData err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } if localVarHttpResponse.StatusCode == 400 { var v map[string]interface{} err = a.client.decode(&v, localVarBody, localVarHttpResponse.Header.Get("Content-Type")) if err != nil { newErr.error = err.Error() return localVarReturnValue, localVarHttpResponse, newErr } newErr.model = v return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, newErr } return localVarReturnValue, localVarHttpResponse, nil }