POST | /optimizer/ftm | ||
---|---|---|---|
POST | /optimizer/common |
<?php namespace dtos;
use DateTime;
use Exception;
use DateInterval;
use JsonSerializable;
use ServiceStack\{IReturn,IReturnVoid,IGet,IPost,IPut,IDelete,IPatch,IMeta,IHasSessionId,IHasBearerToken,IHasVersion};
use ServiceStack\{ICrud,ICreateDb,IUpdateDb,IPatchDb,IDeleteDb,ISaveDb,AuditBase,QueryDb,QueryDb2,QueryData,QueryData2,QueryResponse};
use ServiceStack\{ResponseStatus,ResponseError,EmptyResponse,IdResponse,ArrayList,KeyValuePair2,StringResponse,StringsResponse,Tuple2,Tuple3,ByteArray};
use ServiceStack\{JsonConverters,Returns,TypeContext};
class CommonOptimizerPortalRequestBase implements JsonSerializable
{
public function __construct(
/** @var string */
public string $projectId='',
/** @var bool|null */
public ?bool $isBatchSimulation=null,
/** @var bool|null */
public ?bool $force=null,
/** @var bool|null */
public ?bool $disableEBSSpot=null,
/** @var bool|null */
public ?bool $isServerless=null,
/** @var string */
public string $apiActionId='',
/** @var int */
public int $nodeId=0,
/** @var int */
public int $parallelProject=0,
/** @var int */
public int $parallelYears=0,
/** @var int */
public int $ensureExlusive=0
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['projectId'])) $this->projectId = $o['projectId'];
if (isset($o['isBatchSimulation'])) $this->isBatchSimulation = $o['isBatchSimulation'];
if (isset($o['force'])) $this->force = $o['force'];
if (isset($o['disableEBSSpot'])) $this->disableEBSSpot = $o['disableEBSSpot'];
if (isset($o['isServerless'])) $this->isServerless = $o['isServerless'];
if (isset($o['apiActionId'])) $this->apiActionId = $o['apiActionId'];
if (isset($o['nodeId'])) $this->nodeId = $o['nodeId'];
if (isset($o['parallelProject'])) $this->parallelProject = $o['parallelProject'];
if (isset($o['parallelYears'])) $this->parallelYears = $o['parallelYears'];
if (isset($o['ensureExlusive'])) $this->ensureExlusive = $o['ensureExlusive'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->projectId)) $o['projectId'] = $this->projectId;
if (isset($this->isBatchSimulation)) $o['isBatchSimulation'] = $this->isBatchSimulation;
if (isset($this->force)) $o['force'] = $this->force;
if (isset($this->disableEBSSpot)) $o['disableEBSSpot'] = $this->disableEBSSpot;
if (isset($this->isServerless)) $o['isServerless'] = $this->isServerless;
if (isset($this->apiActionId)) $o['apiActionId'] = $this->apiActionId;
if (isset($this->nodeId)) $o['nodeId'] = $this->nodeId;
if (isset($this->parallelProject)) $o['parallelProject'] = $this->parallelProject;
if (isset($this->parallelYears)) $o['parallelYears'] = $this->parallelYears;
if (isset($this->ensureExlusive)) $o['ensureExlusive'] = $this->ensureExlusive;
return empty($o) ? new class(){} : $o;
}
}
class CommonOptimizerRequest extends CommonOptimizerPortalRequestBase implements JsonSerializable
{
/**
* @param string $projectId
* @param bool|null $isBatchSimulation
* @param bool|null $force
* @param bool|null $disableEBSSpot
* @param bool|null $isServerless
* @param string $apiActionId
* @param int $nodeId
* @param int $parallelProject
* @param int $parallelYears
* @param int $ensureExlusive
*/
public function __construct(
string $projectId='',
?bool $isBatchSimulation=null,
?bool $force=null,
?bool $disableEBSSpot=null,
?bool $isServerless=null,
string $apiActionId='',
int $nodeId=0,
int $parallelProject=0,
int $parallelYears=0,
int $ensureExlusive=0
) {
parent::__construct($projectId,$isBatchSimulation,$force,$disableEBSSpot,$isServerless,$apiActionId,$nodeId,$parallelProject,$parallelYears,$ensureExlusive);
}
/** @throws Exception */
public function fromMap($o): void {
parent::fromMap($o);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = parent::jsonSerialize();
return empty($o) ? new class(){} : $o;
}
}
enum ApiResponseStatus : int
{
case Undefined = 0;
case Success = 1;
case Pending = 10;
case Failed = 100;
}
enum BatterySimulationType : int
{
case Undefined = 0;
case SingleRun = 1;
case BatchSimulation = 2;
case BatchSub = 21;
case Siting = 100;
}
enum BatteryProjectGroup : string
{
case Undefined = 'Undefined';
case StandAlone = 'StandAlone';
case FTM = 'FTM';
case BTM = 'BTM';
}
enum BatteryProjectAction : string
{
case Undefined = 'Undefined';
case Arbitrage = 'Arbitrage';
case PeakShaving = 'PeakShaving';
case Smooting = 'Smooting';
case Firming = 'Firming';
}
enum DataProvider : int
{
case Undefined = 0;
case SPP = 1;
case ERCOT = 2;
case MISO = 3;
case CAISO = 4;
case PJM = 5;
case ISONE = 6;
case NYISO = 7;
case NW = 8;
case SW = 9;
case SE = 10;
case AESO = 11;
case IESO = 12;
case CENACE = 20;
case NONISO = 99;
case EIA = 100;
case PNM = 150;
case NREL = 200;
case NOAA = 210;
case ENTSOE = 1000;
case EPIAS = 1010;
case SELF = 10000;
}
enum BatteryDataSoruce : string
{
case Undefined = 'Undefined';
case Merchant = 'Merchant';
case Future = 'Future';
case TOD = 'TOD';
}
enum PriceMarketType : int
{
case Undefined = 0;
case Realtime = 1;
case DayAhead = 10;
case DART = 101;
}
enum TimeGranularity : int
{
case Undefined = 0;
case hourly = 1;
case daily = 2;
case weekly = 3;
case monthy = 4;
case yearly = 5;
case fivemin = 10;
case tenmin = 11;
case fifteenmin = 12;
case halfhour = 13;
case quarterly = 14;
case twohours = 21;
case threehours = 22;
case fourhours = 24;
case sixhours = 26;
case eighthours = 28;
case twelvehours = 32;
case irregular = 100;
}
enum BooleanValue : string
{
case Undefined = 'Undefined';
case Yes = 'Yes';
case No = 'No';
case Custom = 'Custom';
}
enum CapacityMethod : string
{
case Undefined = 'Undefined';
case Annual = 'Annual';
case Tod = 'Tod';
case Schedule = 'Schedule';
}
enum BatteryProductionDataSource : string
{
case Undefined = 'Undefined';
case SetClosest = 'SetClosest';
case UploadedFile = 'UploadedFile';
}
enum PowerPlantType : string
{
case Undefined = 'Undefined';
case Solar = 'Solar';
case Wind = 'Wind';
case Hybrid = 'Hybrid';
}
enum RevenueStackingMode : string
{
case SolveWithoutAncillary = 'SolveWithoutAncillary';
case SolveWithAncillary = 'SolveWithAncillary';
}
class BatteryProjectForOptimizer implements JsonSerializable
{
public function __construct(
/** @var string */
public string $projectId='',
/** @var string|null */
public ?string $version=null,
/** @var string */
public string $baseId='',
/** @var int */
public int $altId=0,
/** @var BatterySimulationType|null */
public ?BatterySimulationType $simulationType=null,
/** @var BatteryProjectGroup|null */
public ?BatteryProjectGroup $projectGroup=null,
/** @var BatteryProjectAction|null */
public ?BatteryProjectAction $projectAction=null,
/** @var DataProvider|null */
public ?DataProvider $iso=null,
/** @var string|null */
public ?string $name=null,
/** @var int */
public int $baseNodeId=0,
/** @var int */
public int $orgNodeId=0,
/** @var int */
public int $baseZoneId=0,
/** @var BatteryDataSoruce|null */
public ?BatteryDataSoruce $dataSource=null,
/** @var PriceMarketType|null */
public ?PriceMarketType $baseMarket=null,
/** @var TimeGranularity|null */
public ?TimeGranularity $priceGranularity=null,
/** @var DateTime */
public DateTime $startDate=new DateTime(),
/** @var DateTime */
public DateTime $endDate=new DateTime(),
/** @var float */
public float $batteryCapacity=0.0,
/** @var float */
public float $interconnectionLimit=0.0,
/** @var float */
public float $namepaletCapacity=0.0,
// @Ignore()
/** @var float */
public float $chargeDischargeLimit=0.0,
// @Ignore()
/** @var float */
public float $baseCapacityRate=0.0,
// @Ignore()
/** @var float */
public float $capacityRate=0.0,
/** @var float */
public float $chargeEfficiency=0.0,
/** @var float */
public float $disChargeEfficiency=0.0,
/** @var float */
public float $paraciticLossesOperation=0.0,
/** @var float */
public float $paraciticLossesResting=0.0,
/** @var float */
public float $hvacLosses=0.0,
/** @var float */
public float $acCablingLosses=0.0,
/** @var float */
public float $transformatorLosses=0.0,
/** @var float */
public float $thermalLosses=0.0,
/** @var float */
public float $otherLosses=0.0,
/** @var BooleanValue|null */
public ?BooleanValue $useEnergy=null,
/** @var BooleanValue|null */
public ?BooleanValue $useCapacity=null,
/** @var CapacityMethod|null */
public ?CapacityMethod $capacityBasis=null,
/** @var float */
public float $capacityPayment=0.0,
/** @var float */
public float $netCapacityFactor=0.0,
/** @var BooleanValue|null */
public ?BooleanValue $useAncillary=null,
/** @var BatteryProductionDataSource|null */
public ?BatteryProductionDataSource $productionDataSource=null,
/** @var PowerPlantType|null */
public ?PowerPlantType $powerPlantType=null,
/** @var float */
public float $solarAcCapacity=0.0,
/** @var float */
public float $solarDcCapacity=0.0,
/** @var float */
public float $windAcCapacity=0.0,
// @Ignore()
/** @var float */
public float $solarCapacityRate=0.0,
// @Ignore()
/** @var float */
public float $windCapacityRate=0.0,
/** @var int */
public int $status=0,
/** @var int */
public int $simulationStatus=0,
/** @var DateTime */
public DateTime $lastSimulationDate=new DateTime(),
/** @var DateTime */
public DateTime $dataStartDate=new DateTime(),
/** @var DateTime */
public DateTime $dataEndDate=new DateTime(),
/** @var int */
public int $solarId=0,
/** @var int */
public int $windId=0,
/** @var int */
public int $lmpFileId=0,
/** @var int */
public int $productionFileId=0,
/** @var int */
public int $loadFileId=0,
/** @var int */
public int $capacityFileId=0,
/** @var int */
public int $nodeAltId=0,
/** @var int */
public int $nodeRefId=0,
/** @var float */
public float $useRegup=0.0,
/** @var float */
public float $useRegdown=0.0,
/** @var float */
public float $useSpinning=0.0,
/** @var float */
public float $useNonSpinning=0.0,
/** @var float */
public float $solarDegredation=0.0,
/** @var float */
public float $batteryDegredation=0.0,
/** @var float */
public float $augmentation=0.0,
/** @var float */
public float $augmentationFrequency=0.0,
/** @var float */
public float $energyIncrement=0.0,
/** @var float */
public float $ancillaryIncrement=0.0,
/** @var int */
public int $enableGridArbitrage=0,
/** @var int */
public int $incrementReferanceYear=0,
/** @var int */
public int $representativeYear=0,
/** @var int */
public int $useFutureData=0,
/** @var float */
public float $maxDailyCycle=0.0,
/** @var float */
public float $minDailyProfitPerMw=0.0,
/** @var int */
public int $ancillaryFileId=0,
/** @var float */
public float $maxChargingPriceCap=0.0,
/** @var float */
public float $maxDischargingPriceCap=0.0,
/** @var float */
public float $maxAncillaryPriceCap=0.0,
/** @var RevenueStackingMode|null */
public ?RevenueStackingMode $revenueStackingMode=null,
/** @var int */
public int $optimizationQuality=0,
/** @var bool|null */
public ?bool $useInternalSolver=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['projectId'])) $this->projectId = $o['projectId'];
if (isset($o['version'])) $this->version = $o['version'];
if (isset($o['baseId'])) $this->baseId = $o['baseId'];
if (isset($o['altId'])) $this->altId = $o['altId'];
if (isset($o['simulationType'])) $this->simulationType = JsonConverters::from('BatterySimulationType', $o['simulationType']);
if (isset($o['projectGroup'])) $this->projectGroup = JsonConverters::from('BatteryProjectGroup', $o['projectGroup']);
if (isset($o['projectAction'])) $this->projectAction = JsonConverters::from('BatteryProjectAction', $o['projectAction']);
if (isset($o['iso'])) $this->iso = JsonConverters::from('DataProvider', $o['iso']);
if (isset($o['name'])) $this->name = $o['name'];
if (isset($o['baseNodeId'])) $this->baseNodeId = $o['baseNodeId'];
if (isset($o['orgNodeId'])) $this->orgNodeId = $o['orgNodeId'];
if (isset($o['baseZoneId'])) $this->baseZoneId = $o['baseZoneId'];
if (isset($o['dataSource'])) $this->dataSource = JsonConverters::from('BatteryDataSoruce', $o['dataSource']);
if (isset($o['baseMarket'])) $this->baseMarket = JsonConverters::from('PriceMarketType', $o['baseMarket']);
if (isset($o['priceGranularity'])) $this->priceGranularity = JsonConverters::from('TimeGranularity', $o['priceGranularity']);
if (isset($o['startDate'])) $this->startDate = JsonConverters::from('DateTime', $o['startDate']);
if (isset($o['endDate'])) $this->endDate = JsonConverters::from('DateTime', $o['endDate']);
if (isset($o['batteryCapacity'])) $this->batteryCapacity = $o['batteryCapacity'];
if (isset($o['interconnectionLimit'])) $this->interconnectionLimit = $o['interconnectionLimit'];
if (isset($o['namepaletCapacity'])) $this->namepaletCapacity = $o['namepaletCapacity'];
if (isset($o['chargeDischargeLimit'])) $this->chargeDischargeLimit = $o['chargeDischargeLimit'];
if (isset($o['baseCapacityRate'])) $this->baseCapacityRate = $o['baseCapacityRate'];
if (isset($o['capacityRate'])) $this->capacityRate = $o['capacityRate'];
if (isset($o['chargeEfficiency'])) $this->chargeEfficiency = $o['chargeEfficiency'];
if (isset($o['disChargeEfficiency'])) $this->disChargeEfficiency = $o['disChargeEfficiency'];
if (isset($o['paraciticLossesOperation'])) $this->paraciticLossesOperation = $o['paraciticLossesOperation'];
if (isset($o['paraciticLossesResting'])) $this->paraciticLossesResting = $o['paraciticLossesResting'];
if (isset($o['hvacLosses'])) $this->hvacLosses = $o['hvacLosses'];
if (isset($o['acCablingLosses'])) $this->acCablingLosses = $o['acCablingLosses'];
if (isset($o['transformatorLosses'])) $this->transformatorLosses = $o['transformatorLosses'];
if (isset($o['thermalLosses'])) $this->thermalLosses = $o['thermalLosses'];
if (isset($o['otherLosses'])) $this->otherLosses = $o['otherLosses'];
if (isset($o['useEnergy'])) $this->useEnergy = JsonConverters::from('BooleanValue', $o['useEnergy']);
if (isset($o['useCapacity'])) $this->useCapacity = JsonConverters::from('BooleanValue', $o['useCapacity']);
if (isset($o['capacityBasis'])) $this->capacityBasis = JsonConverters::from('CapacityMethod', $o['capacityBasis']);
if (isset($o['capacityPayment'])) $this->capacityPayment = $o['capacityPayment'];
if (isset($o['netCapacityFactor'])) $this->netCapacityFactor = $o['netCapacityFactor'];
if (isset($o['useAncillary'])) $this->useAncillary = JsonConverters::from('BooleanValue', $o['useAncillary']);
if (isset($o['productionDataSource'])) $this->productionDataSource = JsonConverters::from('BatteryProductionDataSource', $o['productionDataSource']);
if (isset($o['powerPlantType'])) $this->powerPlantType = JsonConverters::from('PowerPlantType', $o['powerPlantType']);
if (isset($o['solarAcCapacity'])) $this->solarAcCapacity = $o['solarAcCapacity'];
if (isset($o['solarDcCapacity'])) $this->solarDcCapacity = $o['solarDcCapacity'];
if (isset($o['windAcCapacity'])) $this->windAcCapacity = $o['windAcCapacity'];
if (isset($o['solarCapacityRate'])) $this->solarCapacityRate = $o['solarCapacityRate'];
if (isset($o['windCapacityRate'])) $this->windCapacityRate = $o['windCapacityRate'];
if (isset($o['status'])) $this->status = $o['status'];
if (isset($o['simulationStatus'])) $this->simulationStatus = $o['simulationStatus'];
if (isset($o['lastSimulationDate'])) $this->lastSimulationDate = JsonConverters::from('DateTime', $o['lastSimulationDate']);
if (isset($o['dataStartDate'])) $this->dataStartDate = JsonConverters::from('DateTime', $o['dataStartDate']);
if (isset($o['dataEndDate'])) $this->dataEndDate = JsonConverters::from('DateTime', $o['dataEndDate']);
if (isset($o['solarId'])) $this->solarId = $o['solarId'];
if (isset($o['windId'])) $this->windId = $o['windId'];
if (isset($o['lmpFileId'])) $this->lmpFileId = $o['lmpFileId'];
if (isset($o['productionFileId'])) $this->productionFileId = $o['productionFileId'];
if (isset($o['loadFileId'])) $this->loadFileId = $o['loadFileId'];
if (isset($o['capacityFileId'])) $this->capacityFileId = $o['capacityFileId'];
if (isset($o['nodeAltId'])) $this->nodeAltId = $o['nodeAltId'];
if (isset($o['nodeRefId'])) $this->nodeRefId = $o['nodeRefId'];
if (isset($o['useRegup'])) $this->useRegup = $o['useRegup'];
if (isset($o['useRegdown'])) $this->useRegdown = $o['useRegdown'];
if (isset($o['useSpinning'])) $this->useSpinning = $o['useSpinning'];
if (isset($o['useNonSpinning'])) $this->useNonSpinning = $o['useNonSpinning'];
if (isset($o['solarDegredation'])) $this->solarDegredation = $o['solarDegredation'];
if (isset($o['batteryDegredation'])) $this->batteryDegredation = $o['batteryDegredation'];
if (isset($o['augmentation'])) $this->augmentation = $o['augmentation'];
if (isset($o['augmentationFrequency'])) $this->augmentationFrequency = $o['augmentationFrequency'];
if (isset($o['energyIncrement'])) $this->energyIncrement = $o['energyIncrement'];
if (isset($o['ancillaryIncrement'])) $this->ancillaryIncrement = $o['ancillaryIncrement'];
if (isset($o['enableGridArbitrage'])) $this->enableGridArbitrage = $o['enableGridArbitrage'];
if (isset($o['incrementReferanceYear'])) $this->incrementReferanceYear = $o['incrementReferanceYear'];
if (isset($o['representativeYear'])) $this->representativeYear = $o['representativeYear'];
if (isset($o['useFutureData'])) $this->useFutureData = $o['useFutureData'];
if (isset($o['maxDailyCycle'])) $this->maxDailyCycle = $o['maxDailyCycle'];
if (isset($o['minDailyProfitPerMw'])) $this->minDailyProfitPerMw = $o['minDailyProfitPerMw'];
if (isset($o['ancillaryFileId'])) $this->ancillaryFileId = $o['ancillaryFileId'];
if (isset($o['maxChargingPriceCap'])) $this->maxChargingPriceCap = $o['maxChargingPriceCap'];
if (isset($o['maxDischargingPriceCap'])) $this->maxDischargingPriceCap = $o['maxDischargingPriceCap'];
if (isset($o['maxAncillaryPriceCap'])) $this->maxAncillaryPriceCap = $o['maxAncillaryPriceCap'];
if (isset($o['revenueStackingMode'])) $this->revenueStackingMode = JsonConverters::from('RevenueStackingMode', $o['revenueStackingMode']);
if (isset($o['optimizationQuality'])) $this->optimizationQuality = $o['optimizationQuality'];
if (isset($o['useInternalSolver'])) $this->useInternalSolver = $o['useInternalSolver'];
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->projectId)) $o['projectId'] = $this->projectId;
if (isset($this->version)) $o['version'] = $this->version;
if (isset($this->baseId)) $o['baseId'] = $this->baseId;
if (isset($this->altId)) $o['altId'] = $this->altId;
if (isset($this->simulationType)) $o['simulationType'] = JsonConverters::to('BatterySimulationType', $this->simulationType);
if (isset($this->projectGroup)) $o['projectGroup'] = JsonConverters::to('BatteryProjectGroup', $this->projectGroup);
if (isset($this->projectAction)) $o['projectAction'] = JsonConverters::to('BatteryProjectAction', $this->projectAction);
if (isset($this->iso)) $o['iso'] = JsonConverters::to('DataProvider', $this->iso);
if (isset($this->name)) $o['name'] = $this->name;
if (isset($this->baseNodeId)) $o['baseNodeId'] = $this->baseNodeId;
if (isset($this->orgNodeId)) $o['orgNodeId'] = $this->orgNodeId;
if (isset($this->baseZoneId)) $o['baseZoneId'] = $this->baseZoneId;
if (isset($this->dataSource)) $o['dataSource'] = JsonConverters::to('BatteryDataSoruce', $this->dataSource);
if (isset($this->baseMarket)) $o['baseMarket'] = JsonConverters::to('PriceMarketType', $this->baseMarket);
if (isset($this->priceGranularity)) $o['priceGranularity'] = JsonConverters::to('TimeGranularity', $this->priceGranularity);
if (isset($this->startDate)) $o['startDate'] = JsonConverters::to('DateTime', $this->startDate);
if (isset($this->endDate)) $o['endDate'] = JsonConverters::to('DateTime', $this->endDate);
if (isset($this->batteryCapacity)) $o['batteryCapacity'] = $this->batteryCapacity;
if (isset($this->interconnectionLimit)) $o['interconnectionLimit'] = $this->interconnectionLimit;
if (isset($this->namepaletCapacity)) $o['namepaletCapacity'] = $this->namepaletCapacity;
if (isset($this->chargeDischargeLimit)) $o['chargeDischargeLimit'] = $this->chargeDischargeLimit;
if (isset($this->baseCapacityRate)) $o['baseCapacityRate'] = $this->baseCapacityRate;
if (isset($this->capacityRate)) $o['capacityRate'] = $this->capacityRate;
if (isset($this->chargeEfficiency)) $o['chargeEfficiency'] = $this->chargeEfficiency;
if (isset($this->disChargeEfficiency)) $o['disChargeEfficiency'] = $this->disChargeEfficiency;
if (isset($this->paraciticLossesOperation)) $o['paraciticLossesOperation'] = $this->paraciticLossesOperation;
if (isset($this->paraciticLossesResting)) $o['paraciticLossesResting'] = $this->paraciticLossesResting;
if (isset($this->hvacLosses)) $o['hvacLosses'] = $this->hvacLosses;
if (isset($this->acCablingLosses)) $o['acCablingLosses'] = $this->acCablingLosses;
if (isset($this->transformatorLosses)) $o['transformatorLosses'] = $this->transformatorLosses;
if (isset($this->thermalLosses)) $o['thermalLosses'] = $this->thermalLosses;
if (isset($this->otherLosses)) $o['otherLosses'] = $this->otherLosses;
if (isset($this->useEnergy)) $o['useEnergy'] = JsonConverters::to('BooleanValue', $this->useEnergy);
if (isset($this->useCapacity)) $o['useCapacity'] = JsonConverters::to('BooleanValue', $this->useCapacity);
if (isset($this->capacityBasis)) $o['capacityBasis'] = JsonConverters::to('CapacityMethod', $this->capacityBasis);
if (isset($this->capacityPayment)) $o['capacityPayment'] = $this->capacityPayment;
if (isset($this->netCapacityFactor)) $o['netCapacityFactor'] = $this->netCapacityFactor;
if (isset($this->useAncillary)) $o['useAncillary'] = JsonConverters::to('BooleanValue', $this->useAncillary);
if (isset($this->productionDataSource)) $o['productionDataSource'] = JsonConverters::to('BatteryProductionDataSource', $this->productionDataSource);
if (isset($this->powerPlantType)) $o['powerPlantType'] = JsonConverters::to('PowerPlantType', $this->powerPlantType);
if (isset($this->solarAcCapacity)) $o['solarAcCapacity'] = $this->solarAcCapacity;
if (isset($this->solarDcCapacity)) $o['solarDcCapacity'] = $this->solarDcCapacity;
if (isset($this->windAcCapacity)) $o['windAcCapacity'] = $this->windAcCapacity;
if (isset($this->solarCapacityRate)) $o['solarCapacityRate'] = $this->solarCapacityRate;
if (isset($this->windCapacityRate)) $o['windCapacityRate'] = $this->windCapacityRate;
if (isset($this->status)) $o['status'] = $this->status;
if (isset($this->simulationStatus)) $o['simulationStatus'] = $this->simulationStatus;
if (isset($this->lastSimulationDate)) $o['lastSimulationDate'] = JsonConverters::to('DateTime', $this->lastSimulationDate);
if (isset($this->dataStartDate)) $o['dataStartDate'] = JsonConverters::to('DateTime', $this->dataStartDate);
if (isset($this->dataEndDate)) $o['dataEndDate'] = JsonConverters::to('DateTime', $this->dataEndDate);
if (isset($this->solarId)) $o['solarId'] = $this->solarId;
if (isset($this->windId)) $o['windId'] = $this->windId;
if (isset($this->lmpFileId)) $o['lmpFileId'] = $this->lmpFileId;
if (isset($this->productionFileId)) $o['productionFileId'] = $this->productionFileId;
if (isset($this->loadFileId)) $o['loadFileId'] = $this->loadFileId;
if (isset($this->capacityFileId)) $o['capacityFileId'] = $this->capacityFileId;
if (isset($this->nodeAltId)) $o['nodeAltId'] = $this->nodeAltId;
if (isset($this->nodeRefId)) $o['nodeRefId'] = $this->nodeRefId;
if (isset($this->useRegup)) $o['useRegup'] = $this->useRegup;
if (isset($this->useRegdown)) $o['useRegdown'] = $this->useRegdown;
if (isset($this->useSpinning)) $o['useSpinning'] = $this->useSpinning;
if (isset($this->useNonSpinning)) $o['useNonSpinning'] = $this->useNonSpinning;
if (isset($this->solarDegredation)) $o['solarDegredation'] = $this->solarDegredation;
if (isset($this->batteryDegredation)) $o['batteryDegredation'] = $this->batteryDegredation;
if (isset($this->augmentation)) $o['augmentation'] = $this->augmentation;
if (isset($this->augmentationFrequency)) $o['augmentationFrequency'] = $this->augmentationFrequency;
if (isset($this->energyIncrement)) $o['energyIncrement'] = $this->energyIncrement;
if (isset($this->ancillaryIncrement)) $o['ancillaryIncrement'] = $this->ancillaryIncrement;
if (isset($this->enableGridArbitrage)) $o['enableGridArbitrage'] = $this->enableGridArbitrage;
if (isset($this->incrementReferanceYear)) $o['incrementReferanceYear'] = $this->incrementReferanceYear;
if (isset($this->representativeYear)) $o['representativeYear'] = $this->representativeYear;
if (isset($this->useFutureData)) $o['useFutureData'] = $this->useFutureData;
if (isset($this->maxDailyCycle)) $o['maxDailyCycle'] = $this->maxDailyCycle;
if (isset($this->minDailyProfitPerMw)) $o['minDailyProfitPerMw'] = $this->minDailyProfitPerMw;
if (isset($this->ancillaryFileId)) $o['ancillaryFileId'] = $this->ancillaryFileId;
if (isset($this->maxChargingPriceCap)) $o['maxChargingPriceCap'] = $this->maxChargingPriceCap;
if (isset($this->maxDischargingPriceCap)) $o['maxDischargingPriceCap'] = $this->maxDischargingPriceCap;
if (isset($this->maxAncillaryPriceCap)) $o['maxAncillaryPriceCap'] = $this->maxAncillaryPriceCap;
if (isset($this->revenueStackingMode)) $o['revenueStackingMode'] = JsonConverters::to('RevenueStackingMode', $this->revenueStackingMode);
if (isset($this->optimizationQuality)) $o['optimizationQuality'] = $this->optimizationQuality;
if (isset($this->useInternalSolver)) $o['useInternalSolver'] = $this->useInternalSolver;
return empty($o) ? new class(){} : $o;
}
}
class CommonOptimizerResponse implements JsonSerializable
{
public function __construct(
/** @var ApiResponseStatus|null */
public ?ApiResponseStatus $status=null,
/** @var string|null */
public ?string $message=null,
/** @var string */
public string $apiActionId='',
/** @var string|null */
public ?string $detail=null,
/** @var array<BatteryProjectForOptimizer>|null */
public ?array $items=null
) {
}
/** @throws Exception */
public function fromMap($o): void {
if (isset($o['status'])) $this->status = JsonConverters::from('ApiResponseStatus', $o['status']);
if (isset($o['message'])) $this->message = $o['message'];
if (isset($o['apiActionId'])) $this->apiActionId = $o['apiActionId'];
if (isset($o['detail'])) $this->detail = $o['detail'];
if (isset($o['items'])) $this->items = JsonConverters::fromArray('BatteryProjectForOptimizer', $o['items']);
}
/** @throws Exception */
public function jsonSerialize(): mixed
{
$o = [];
if (isset($this->status)) $o['status'] = JsonConverters::to('ApiResponseStatus', $this->status);
if (isset($this->message)) $o['message'] = $this->message;
if (isset($this->apiActionId)) $o['apiActionId'] = $this->apiActionId;
if (isset($this->detail)) $o['detail'] = $this->detail;
if (isset($this->items)) $o['items'] = JsonConverters::toArray('BatteryProjectForOptimizer', $this->items);
return empty($o) ? new class(){} : $o;
}
}
PHP CommonOptimizerRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /optimizer/ftm HTTP/1.1
Host: dev-optimization.power.dev
Accept: application/xml
Content-Type: application/xml
Content-Length: length
<CommonOptimizerRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.ServiceModel">
<ApiActionId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">00000000-0000-0000-0000-000000000000</ApiActionId>
<DisableEBSSpot xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">false</DisableEBSSpot>
<EnsureExlusive xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">0</EnsureExlusive>
<Force xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">false</Force>
<IsBatchSimulation xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">false</IsBatchSimulation>
<IsServerless xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">false</IsServerless>
<NodeId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">0</NodeId>
<ParallelProject xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">0</ParallelProject>
<ParallelYears xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">0</ParallelYears>
<ProjectId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">00000000-0000-0000-0000-000000000000</ProjectId>
</CommonOptimizerRequest>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <CommonOptimizerResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Common.Models"> <ApiActionId>00000000-0000-0000-0000-000000000000</ApiActionId> <Detail>String</Detail> <Items i:nil="true" /> <Message>String</Message> <Status>Undefined</Status> </CommonOptimizerResponse>