POST | /optimizer/ftm | ||
---|---|---|---|
POST | /optimizer/common |
"use strict";
export class CommonOptimizerPortalRequestBase {
/** @param {{projectId?:string,isBatchSimulation?:boolean,force?:boolean,disableEBSSpot?:boolean,isServerless?:boolean,apiActionId?:string,nodeId?:number,parallelProject?:number,parallelYears?:number,ensureExlusive?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
projectId;
/** @type {boolean} */
isBatchSimulation;
/** @type {boolean} */
force;
/** @type {boolean} */
disableEBSSpot;
/** @type {boolean} */
isServerless;
/** @type {string} */
apiActionId;
/** @type {number} */
nodeId;
/** @type {number} */
parallelProject;
/** @type {number} */
parallelYears;
/** @type {number} */
ensureExlusive;
}
export class CommonOptimizerRequest extends CommonOptimizerPortalRequestBase {
/** @param {{projectId?:string,isBatchSimulation?:boolean,force?:boolean,disableEBSSpot?:boolean,isServerless?:boolean,apiActionId?:string,nodeId?:number,parallelProject?:number,parallelYears?:number,ensureExlusive?:number}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
}
/** @typedef {number} */
export var ApiResponseStatus;
(function (ApiResponseStatus) {
ApiResponseStatus[ApiResponseStatus["Undefined"] = 0] = "Undefined"
ApiResponseStatus[ApiResponseStatus["Success"] = 1] = "Success"
ApiResponseStatus[ApiResponseStatus["Pending"] = 10] = "Pending"
ApiResponseStatus[ApiResponseStatus["Failed"] = 100] = "Failed"
})(ApiResponseStatus || (ApiResponseStatus = {}));
/** @typedef {number} */
export var BatterySimulationType;
(function (BatterySimulationType) {
BatterySimulationType[BatterySimulationType["Undefined"] = 0] = "Undefined"
BatterySimulationType[BatterySimulationType["SingleRun"] = 1] = "SingleRun"
BatterySimulationType[BatterySimulationType["BatchSimulation"] = 2] = "BatchSimulation"
BatterySimulationType[BatterySimulationType["BatchSub"] = 21] = "BatchSub"
BatterySimulationType[BatterySimulationType["Siting"] = 100] = "Siting"
})(BatterySimulationType || (BatterySimulationType = {}));
/** @typedef {'Undefined'|'StandAlone'|'FTM'|'BTM'} */
export var BatteryProjectGroup;
(function (BatteryProjectGroup) {
BatteryProjectGroup["Undefined"] = "Undefined"
BatteryProjectGroup["StandAlone"] = "StandAlone"
BatteryProjectGroup["FTM"] = "FTM"
BatteryProjectGroup["BTM"] = "BTM"
})(BatteryProjectGroup || (BatteryProjectGroup = {}));
/** @typedef {'Undefined'|'Arbitrage'|'PeakShaving'|'Smooting'|'Firming'} */
export var BatteryProjectAction;
(function (BatteryProjectAction) {
BatteryProjectAction["Undefined"] = "Undefined"
BatteryProjectAction["Arbitrage"] = "Arbitrage"
BatteryProjectAction["PeakShaving"] = "PeakShaving"
BatteryProjectAction["Smooting"] = "Smooting"
BatteryProjectAction["Firming"] = "Firming"
})(BatteryProjectAction || (BatteryProjectAction = {}));
/** @typedef {number} */
export var DataProvider;
(function (DataProvider) {
DataProvider[DataProvider["Undefined"] = 0] = "Undefined"
DataProvider[DataProvider["SPP"] = 1] = "SPP"
DataProvider[DataProvider["ERCOT"] = 2] = "ERCOT"
DataProvider[DataProvider["MISO"] = 3] = "MISO"
DataProvider[DataProvider["CAISO"] = 4] = "CAISO"
DataProvider[DataProvider["PJM"] = 5] = "PJM"
DataProvider[DataProvider["ISONE"] = 6] = "ISONE"
DataProvider[DataProvider["NYISO"] = 7] = "NYISO"
DataProvider[DataProvider["NW"] = 8] = "NW"
DataProvider[DataProvider["SW"] = 9] = "SW"
DataProvider[DataProvider["SE"] = 10] = "SE"
DataProvider[DataProvider["AESO"] = 11] = "AESO"
DataProvider[DataProvider["IESO"] = 12] = "IESO"
DataProvider[DataProvider["CENACE"] = 20] = "CENACE"
DataProvider[DataProvider["NONISO"] = 99] = "NONISO"
DataProvider[DataProvider["EIA"] = 100] = "EIA"
DataProvider[DataProvider["PNM"] = 150] = "PNM"
DataProvider[DataProvider["NREL"] = 200] = "NREL"
DataProvider[DataProvider["NOAA"] = 210] = "NOAA"
DataProvider[DataProvider["ENTSOE"] = 1000] = "ENTSOE"
DataProvider[DataProvider["EPIAS"] = 1010] = "EPIAS"
DataProvider[DataProvider["SELF"] = 10000] = "SELF"
})(DataProvider || (DataProvider = {}));
/** @typedef {'Undefined'|'Merchant'|'Future'|'TOD'} */
export var BatteryDataSoruce;
(function (BatteryDataSoruce) {
BatteryDataSoruce["Undefined"] = "Undefined"
BatteryDataSoruce["Merchant"] = "Merchant"
BatteryDataSoruce["Future"] = "Future"
BatteryDataSoruce["TOD"] = "TOD"
})(BatteryDataSoruce || (BatteryDataSoruce = {}));
/** @typedef {number} */
export var PriceMarketType;
(function (PriceMarketType) {
PriceMarketType[PriceMarketType["Undefined"] = 0] = "Undefined"
PriceMarketType[PriceMarketType["Realtime"] = 1] = "Realtime"
PriceMarketType[PriceMarketType["DayAhead"] = 10] = "DayAhead"
PriceMarketType[PriceMarketType["DART"] = 101] = "DART"
})(PriceMarketType || (PriceMarketType = {}));
/** @typedef {number} */
export var TimeGranularity;
(function (TimeGranularity) {
TimeGranularity[TimeGranularity["Undefined"] = 0] = "Undefined"
TimeGranularity[TimeGranularity["hourly"] = 1] = "hourly"
TimeGranularity[TimeGranularity["daily"] = 2] = "daily"
TimeGranularity[TimeGranularity["weekly"] = 3] = "weekly"
TimeGranularity[TimeGranularity["monthy"] = 4] = "monthy"
TimeGranularity[TimeGranularity["yearly"] = 5] = "yearly"
TimeGranularity[TimeGranularity["fivemin"] = 10] = "fivemin"
TimeGranularity[TimeGranularity["tenmin"] = 11] = "tenmin"
TimeGranularity[TimeGranularity["fifteenmin"] = 12] = "fifteenmin"
TimeGranularity[TimeGranularity["halfhour"] = 13] = "halfhour"
TimeGranularity[TimeGranularity["quarterly"] = 14] = "quarterly"
TimeGranularity[TimeGranularity["twohours"] = 21] = "twohours"
TimeGranularity[TimeGranularity["threehours"] = 22] = "threehours"
TimeGranularity[TimeGranularity["fourhours"] = 24] = "fourhours"
TimeGranularity[TimeGranularity["sixhours"] = 26] = "sixhours"
TimeGranularity[TimeGranularity["eighthours"] = 28] = "eighthours"
TimeGranularity[TimeGranularity["twelvehours"] = 32] = "twelvehours"
TimeGranularity[TimeGranularity["irregular"] = 100] = "irregular"
})(TimeGranularity || (TimeGranularity = {}));
/** @typedef {'Undefined'|'Yes'|'No'|'Custom'} */
export var BooleanValue;
(function (BooleanValue) {
BooleanValue["Undefined"] = "Undefined"
BooleanValue["Yes"] = "Yes"
BooleanValue["No"] = "No"
BooleanValue["Custom"] = "Custom"
})(BooleanValue || (BooleanValue = {}));
/** @typedef {'Undefined'|'Annual'|'Tod'|'Schedule'} */
export var CapacityMethod;
(function (CapacityMethod) {
CapacityMethod["Undefined"] = "Undefined"
CapacityMethod["Annual"] = "Annual"
CapacityMethod["Tod"] = "Tod"
CapacityMethod["Schedule"] = "Schedule"
})(CapacityMethod || (CapacityMethod = {}));
/** @typedef {'Undefined'|'SetClosest'|'UploadedFile'} */
export var BatteryProductionDataSource;
(function (BatteryProductionDataSource) {
BatteryProductionDataSource["Undefined"] = "Undefined"
BatteryProductionDataSource["SetClosest"] = "SetClosest"
BatteryProductionDataSource["UploadedFile"] = "UploadedFile"
})(BatteryProductionDataSource || (BatteryProductionDataSource = {}));
/** @typedef {'Undefined'|'Solar'|'Wind'|'Hybrid'} */
export var PowerPlantType;
(function (PowerPlantType) {
PowerPlantType["Undefined"] = "Undefined"
PowerPlantType["Solar"] = "Solar"
PowerPlantType["Wind"] = "Wind"
PowerPlantType["Hybrid"] = "Hybrid"
})(PowerPlantType || (PowerPlantType = {}));
/** @typedef {'SolveWithoutAncillary'|'SolveWithAncillary'} */
export var RevenueStackingMode;
(function (RevenueStackingMode) {
RevenueStackingMode["SolveWithoutAncillary"] = "SolveWithoutAncillary"
RevenueStackingMode["SolveWithAncillary"] = "SolveWithAncillary"
})(RevenueStackingMode || (RevenueStackingMode = {}));
export class BatteryProjectForOptimizer {
/** @param {{projectId?:string,version?:string,baseId?:string,altId?:number,simulationType?:BatterySimulationType,projectGroup?:BatteryProjectGroup,projectAction?:BatteryProjectAction,iso?:DataProvider,name?:string,baseNodeId?:number,orgNodeId?:number,baseZoneId?:number,dataSource?:BatteryDataSoruce,baseMarket?:PriceMarketType,priceGranularity?:TimeGranularity,startDate?:string,endDate?:string,batteryCapacity?:number,interconnectionLimit?:number,namepaletCapacity?:number,chargeDischargeLimit?:number,baseCapacityRate?:number,capacityRate?:number,chargeEfficiency?:number,disChargeEfficiency?:number,paraciticLossesOperation?:number,paraciticLossesResting?:number,hvacLosses?:number,acCablingLosses?:number,transformatorLosses?:number,thermalLosses?:number,otherLosses?:number,useEnergy?:BooleanValue,useCapacity?:BooleanValue,capacityBasis?:CapacityMethod,capacityPayment?:number,netCapacityFactor?:number,useAncillary?:BooleanValue,productionDataSource?:BatteryProductionDataSource,powerPlantType?:PowerPlantType,solarAcCapacity?:number,solarDcCapacity?:number,windAcCapacity?:number,solarCapacityRate?:number,windCapacityRate?:number,status?:number,simulationStatus?:number,lastSimulationDate?:string,dataStartDate?:string,dataEndDate?:string,solarId?:number,windId?:number,lmpFileId?:number,productionFileId?:number,loadFileId?:number,capacityFileId?:number,nodeAltId?:number,nodeRefId?:number,useRegup?:number,useRegdown?:number,useSpinning?:number,useNonSpinning?:number,solarDegredation?:number,batteryDegredation?:number,augmentation?:number,augmentationFrequency?:number,energyIncrement?:number,ancillaryIncrement?:number,enableGridArbitrage?:number,incrementReferanceYear?:number,representativeYear?:number,useFutureData?:number,maxDailyCycle?:number,minDailyProfitPerMw?:number,ancillaryFileId?:number,maxChargingPriceCap?:number,maxDischargingPriceCap?:number,maxAncillaryPriceCap?:number,revenueStackingMode?:RevenueStackingMode,optimizationQuality?:number,useInternalSolver?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
projectId;
/** @type {string} */
version;
/** @type {string} */
baseId;
/** @type {number} */
altId;
/** @type {BatterySimulationType} */
simulationType;
/** @type {BatteryProjectGroup} */
projectGroup;
/** @type {BatteryProjectAction} */
projectAction;
/** @type {DataProvider} */
iso;
/** @type {string} */
name;
/** @type {number} */
baseNodeId;
/** @type {number} */
orgNodeId;
/** @type {number} */
baseZoneId;
/** @type {BatteryDataSoruce} */
dataSource;
/** @type {PriceMarketType} */
baseMarket;
/** @type {TimeGranularity} */
priceGranularity;
/** @type {string} */
startDate;
/** @type {string} */
endDate;
/** @type {number} */
batteryCapacity;
/** @type {number} */
interconnectionLimit;
/** @type {number} */
namepaletCapacity;
/** @type {number} */
chargeDischargeLimit;
/** @type {number} */
baseCapacityRate;
/** @type {number} */
capacityRate;
/** @type {number} */
chargeEfficiency;
/** @type {number} */
disChargeEfficiency;
/** @type {number} */
paraciticLossesOperation;
/** @type {number} */
paraciticLossesResting;
/** @type {number} */
hvacLosses;
/** @type {number} */
acCablingLosses;
/** @type {number} */
transformatorLosses;
/** @type {number} */
thermalLosses;
/** @type {number} */
otherLosses;
/** @type {BooleanValue} */
useEnergy;
/** @type {BooleanValue} */
useCapacity;
/** @type {CapacityMethod} */
capacityBasis;
/** @type {number} */
capacityPayment;
/** @type {number} */
netCapacityFactor;
/** @type {BooleanValue} */
useAncillary;
/** @type {BatteryProductionDataSource} */
productionDataSource;
/** @type {PowerPlantType} */
powerPlantType;
/** @type {number} */
solarAcCapacity;
/** @type {number} */
solarDcCapacity;
/** @type {number} */
windAcCapacity;
/** @type {number} */
solarCapacityRate;
/** @type {number} */
windCapacityRate;
/** @type {number} */
status;
/** @type {number} */
simulationStatus;
/** @type {string} */
lastSimulationDate;
/** @type {string} */
dataStartDate;
/** @type {string} */
dataEndDate;
/** @type {number} */
solarId;
/** @type {number} */
windId;
/** @type {number} */
lmpFileId;
/** @type {number} */
productionFileId;
/** @type {number} */
loadFileId;
/** @type {number} */
capacityFileId;
/** @type {number} */
nodeAltId;
/** @type {number} */
nodeRefId;
/** @type {number} */
useRegup;
/** @type {number} */
useRegdown;
/** @type {number} */
useSpinning;
/** @type {number} */
useNonSpinning;
/** @type {number} */
solarDegredation;
/** @type {number} */
batteryDegredation;
/** @type {number} */
augmentation;
/** @type {number} */
augmentationFrequency;
/** @type {number} */
energyIncrement;
/** @type {number} */
ancillaryIncrement;
/** @type {number} */
enableGridArbitrage;
/** @type {number} */
incrementReferanceYear;
/** @type {number} */
representativeYear;
/** @type {number} */
useFutureData;
/** @type {number} */
maxDailyCycle;
/** @type {number} */
minDailyProfitPerMw;
/** @type {number} */
ancillaryFileId;
/** @type {number} */
maxChargingPriceCap;
/** @type {number} */
maxDischargingPriceCap;
/** @type {number} */
maxAncillaryPriceCap;
/** @type {RevenueStackingMode} */
revenueStackingMode;
/** @type {number} */
optimizationQuality;
/** @type {boolean} */
useInternalSolver;
}
export class CommonOptimizerResponse {
/** @param {{status?:ApiResponseStatus,message?:string,apiActionId?:string,detail?:string,items?:BatteryProjectForOptimizer[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {ApiResponseStatus} */
status;
/** @type {string} */
message;
/** @type {string} */
apiActionId;
/** @type {string} */
detail;
/** @type {BatteryProjectForOptimizer[]} */
items;
}
JavaScript CommonOptimizerRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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: text/jsv
Content-Type: text/jsv
Content-Length: length
{
projectId: 00000000000000000000000000000000,
isBatchSimulation: False,
force: False,
disableEBSSpot: False,
isServerless: False,
apiActionId: 00000000000000000000000000000000,
nodeId: 0,
parallelProject: 0,
parallelYears: 0,
ensureExlusive: 0
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { status: Undefined, message: String, apiActionId: 00000000000000000000000000000000, detail: String }