Power.Dev Optimization Services

<back to all web services

CommonOptimizerRequest

The following routes are available for this service:
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 .json suffix or ?format=json

To embed the response in a jsonp callback, append ?callback=myCallback

HTTP + JSON

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/json
Content-Type: application/json
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: application/json
Content-Length: length

{"status":"Undefined","message":"String","apiActionId":"00000000000000000000000000000000","detail":"String"}