POST | /optimizer/monthly |
---|
"use strict";
/** @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'|'Yes'|'No'|'Custom'} */
export var BooleanValue;
(function (BooleanValue) {
BooleanValue["Undefined"] = "Undefined"
BooleanValue["Yes"] = "Yes"
BooleanValue["No"] = "No"
BooleanValue["Custom"] = "Custom"
})(BooleanValue || (BooleanValue = {}));
/** @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 = {}));
export class BatteryProjectTodItem {
/** @param {{month?:number,weekDay?:number,hour?:number,price?:number,id?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
month;
/** @type {number} */
weekDay;
/** @type {number} */
hour;
/** @type {number} */
price;
/** @type {string} */
id;
}
/** @typedef {'SolveWithoutAncillary'|'SolveWithAncillary'} */
export var RevenueStackingMode;
(function (RevenueStackingMode) {
RevenueStackingMode["SolveWithoutAncillary"] = "SolveWithoutAncillary"
RevenueStackingMode["SolveWithAncillary"] = "SolveWithAncillary"
})(RevenueStackingMode || (RevenueStackingMode = {}));
export class MonthlyRequestBase {
/** @param {{projectId?:string,nodeAltId?:number,iso?:DataProvider,useEnergy?:BooleanValue,useAncillary?:BooleanValue,useCapacityTod?:boolean,baseMarket?:PriceMarketType,capacityTODs?:BatteryProjectTodItem[],useRegup?:number,useRegdown?:number,useSpinning?:number,useNonSpinning?:number,paraciticLossesOperation?:number,paraciticLossesResting?:number,hvacLosses?:number,acCablingLosses?:number,transformatorLosses?:number,otherLosses?:number,representativeYear?:number,incrementReferanceYear?:number,useFutureData?:number,maxDailyCycle?:number,minDailyProfitPerMw?:number,ancillaryFileId?:number,lmpFileId?:number,maxChargingPriceCap?:number,maxDischargingPriceCap?:number,maxAncillaryPriceCap?:number,revenueStackingMode?:RevenueStackingMode,optimizationQuality?:number,ensureExlusive?:number,nodeRefId?:number,useInternalSolver?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
projectId;
/** @type {number} */
nodeAltId;
/** @type {DataProvider} */
iso;
/** @type {BooleanValue} */
useEnergy;
/** @type {BooleanValue} */
useAncillary;
/** @type {boolean} */
useCapacityTod;
/** @type {PriceMarketType} */
baseMarket;
/** @type {BatteryProjectTodItem[]} */
capacityTODs;
/** @type {number} */
useRegup;
/** @type {number} */
useRegdown;
/** @type {number} */
useSpinning;
/** @type {number} */
useNonSpinning;
/** @type {number} */
paraciticLossesOperation;
/** @type {number} */
paraciticLossesResting;
/** @type {number} */
hvacLosses;
/** @type {number} */
acCablingLosses;
/** @type {number} */
transformatorLosses;
/** @type {number} */
otherLosses;
/** @type {number} */
representativeYear;
/** @type {number} */
incrementReferanceYear;
/** @type {number} */
useFutureData;
/** @type {number} */
maxDailyCycle;
/** @type {number} */
minDailyProfitPerMw;
/** @type {number} */
ancillaryFileId;
/** @type {number} */
lmpFileId;
/** @type {number} */
maxChargingPriceCap;
/** @type {number} */
maxDischargingPriceCap;
/** @type {number} */
maxAncillaryPriceCap;
/** @type {RevenueStackingMode} */
revenueStackingMode;
/** @type {number} */
optimizationQuality;
/** @type {number} */
ensureExlusive;
/** @type {number} */
nodeRefId;
/** @type {boolean} */
useInternalSolver;
}
/** @typedef {'Undefined'|'Solar'|'Wind'|'Hybrid'} */
export var PowerPlantType;
(function (PowerPlantType) {
PowerPlantType["Undefined"] = "Undefined"
PowerPlantType["Solar"] = "Solar"
PowerPlantType["Wind"] = "Wind"
PowerPlantType["Hybrid"] = "Hybrid"
})(PowerPlantType || (PowerPlantType = {}));
export class BatteryScenarioKeyGroup {
/** @param {{keyId?:number,year?:number,nodeId?:number,provider?:DataProvider,zoneId?:number,plantType?:PowerPlantType,solarId?:number,windId?:number,isServerless?:boolean}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
keyId;
/** @type {number} */
year;
/** @type {number} */
nodeId;
/** @type {DataProvider} */
provider;
/** @type {number} */
zoneId;
/** @type {PowerPlantType} */
plantType;
/** @type {number} */
solarId;
/** @type {number} */
windId;
/** @type {boolean} */
isServerless;
}
/** @typedef {'Undefined'|'Optimization'|'Sum'|'OptiSum'|'FullTod'|'CapacityTod'} */
export var BatteryScenarioType;
(function (BatteryScenarioType) {
BatteryScenarioType["Undefined"] = "Undefined"
BatteryScenarioType["Optimization"] = "Optimization"
BatteryScenarioType["Sum"] = "Sum"
BatteryScenarioType["OptiSum"] = "OptiSum"
BatteryScenarioType["FullTod"] = "FullTod"
BatteryScenarioType["CapacityTod"] = "CapacityTod"
})(BatteryScenarioType || (BatteryScenarioType = {}));
export class BatteryScenarioKeyItem {
/** @param {{projectId?:string,keyId?:number,keyType?:BatteryScenarioType,recordKey?:string,jobStatus?:number,status?:number,minDate?:string,maxDate?:string,year?:number,yoyStatus?:number,usableCapacity?:number,usableCapacityFactor?:number,solarUsableCapacity?:number,solarUsableCapacityFactor?:number,baseMarket?:PriceMarketType,baseCapacityRate?:number,capacityRate?:number,solarCapacityRate?:number,windCapacityRate?:number,chargeEfficinecy?:number,dischargeEfficinecy?:number,nodeId?:number,provider?:DataProvider,zoneId?:number,lmpFileId?:number,productionFileId?:number,loadFileId?:number,capacityFileId?:number,plantType?:PowerPlantType,solarId?:number,windId?:number,ancillaryIncrementFactor?:number,energyIncrementFactor?:number,capacityIncrementFactor?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
projectId;
/** @type {number} */
keyId;
/** @type {BatteryScenarioType} */
keyType;
/** @type {string} */
recordKey;
/** @type {number} */
jobStatus;
/** @type {number} */
status;
/** @type {string} */
minDate;
/** @type {string} */
maxDate;
/** @type {number} */
year;
/** @type {number} */
yoyStatus;
/** @type {number} */
usableCapacity;
/** @type {number} */
usableCapacityFactor;
/** @type {number} */
solarUsableCapacity;
/** @type {number} */
solarUsableCapacityFactor;
/** @type {PriceMarketType} */
baseMarket;
/** @type {number} */
baseCapacityRate;
/** @type {number} */
capacityRate;
/** @type {number} */
solarCapacityRate;
/** @type {number} */
windCapacityRate;
/** @type {number} */
chargeEfficinecy;
/** @type {number} */
dischargeEfficinecy;
/** @type {number} */
nodeId;
/** @type {DataProvider} */
provider;
/** @type {number} */
zoneId;
/** @type {number} */
lmpFileId;
/** @type {number} */
productionFileId;
/** @type {number} */
loadFileId;
/** @type {number} */
capacityFileId;
/** @type {PowerPlantType} */
plantType;
/** @type {number} */
solarId;
/** @type {number} */
windId;
/** @type {number} */
ancillaryIncrementFactor;
/** @type {number} */
energyIncrementFactor;
/** @type {number} */
capacityIncrementFactor;
}
/** @typedef {'Undefined'|'StandAlone'|'FTM'|'BTM'} */
export var BatteryProjectGroup;
(function (BatteryProjectGroup) {
BatteryProjectGroup["Undefined"] = "Undefined"
BatteryProjectGroup["StandAlone"] = "StandAlone"
BatteryProjectGroup["FTM"] = "FTM"
BatteryProjectGroup["BTM"] = "BTM"
})(BatteryProjectGroup || (BatteryProjectGroup = {}));
export class CommonOptimizerMonthlyRequest extends MonthlyRequestBase {
/** @param {{month?:number,group?:BatteryScenarioKeyGroup,key?:BatteryScenarioKeyItem,projectGroup?:BatteryProjectGroup,projectId?:string,nodeAltId?:number,iso?:DataProvider,useEnergy?:BooleanValue,useAncillary?:BooleanValue,useCapacityTod?:boolean,baseMarket?:PriceMarketType,capacityTODs?:BatteryProjectTodItem[],useRegup?:number,useRegdown?:number,useSpinning?:number,useNonSpinning?:number,paraciticLossesOperation?:number,paraciticLossesResting?:number,hvacLosses?:number,acCablingLosses?:number,transformatorLosses?:number,otherLosses?:number,representativeYear?:number,incrementReferanceYear?:number,useFutureData?:number,maxDailyCycle?:number,minDailyProfitPerMw?:number,ancillaryFileId?:number,lmpFileId?:number,maxChargingPriceCap?:number,maxDischargingPriceCap?:number,maxAncillaryPriceCap?:number,revenueStackingMode?:RevenueStackingMode,optimizationQuality?:number,ensureExlusive?:number,nodeRefId?:number,useInternalSolver?:boolean}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {number} */
month;
/** @type {BatteryScenarioKeyGroup} */
group;
/** @type {BatteryScenarioKeyItem} */
key;
/** @type {BatteryProjectGroup} */
projectGroup;
}
export class MonthlyApiStatusResponse {
/** @param {{failedCount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
failedCount;
}
JavaScript CommonOptimizerMonthlyRequest 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/monthly HTTP/1.1
Host: dev-optimization.power.dev
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
month: 0,
group:
{
keyId: 0,
year: 0,
nodeId: 0,
provider: Undefined,
zoneId: 0,
plantType: Undefined,
solarId: 0,
windId: 0,
isServerless: False
},
key:
{
projectId: 00000000000000000000000000000000,
keyId: 0,
keyType: Undefined,
recordKey: String,
jobStatus: 0,
status: 0,
year: 0,
yoyStatus: 0,
usableCapacity: 0,
usableCapacityFactor: 0,
solarUsableCapacity: 0,
solarUsableCapacityFactor: 0,
baseMarket: Undefined,
baseCapacityRate: 0,
capacityRate: 0,
solarCapacityRate: 0,
windCapacityRate: 0,
chargeEfficinecy: 0,
dischargeEfficinecy: 0,
nodeId: 0,
provider: Undefined,
zoneId: 0,
lmpFileId: 0,
productionFileId: 0,
loadFileId: 0,
capacityFileId: 0,
plantType: Undefined,
solarId: 0,
windId: 0,
ancillaryIncrementFactor: 0,
energyIncrementFactor: 0,
capacityIncrementFactor: 0
},
projectGroup: Undefined,
projectId: 00000000000000000000000000000000,
nodeAltId: 0,
iso: Undefined,
useEnergy: Undefined,
useAncillary: Undefined,
useCapacityTod: False,
baseMarket: Undefined,
useRegup: 0,
useRegdown: 0,
useSpinning: 0,
useNonSpinning: 0,
paraciticLossesOperation: 0,
paraciticLossesResting: 0,
hvacLosses: 0,
acCablingLosses: 0,
transformatorLosses: 0,
otherLosses: 0,
representativeYear: 0,
incrementReferanceYear: 0,
useFutureData: 0,
maxDailyCycle: 0,
minDailyProfitPerMw: 0,
ancillaryFileId: 0,
lmpFileId: 0,
maxChargingPriceCap: 0,
maxDischargingPriceCap: 0,
maxAncillaryPriceCap: 0,
revenueStackingMode: SolveWithoutAncillary,
optimizationQuality: 0,
ensureExlusive: 0,
nodeRefId: 0,
useInternalSolver: False
}
HTTP/1.1 200 OK Content-Type: text/jsv Content-Length: length { failedCount: 0 }