Power.Dev Optimization Services

<back to all web services

CommonOptimizerMonthlyRequest

The following routes are available for this service:
POST/optimizer/monthly

export enum DataProvider
{
    Undefined = 0,
    SPP = 1,
    ERCOT = 2,
    MISO = 3,
    CAISO = 4,
    PJM = 5,
    ISONE = 6,
    NYISO = 7,
    NW = 8,
    SW = 9,
    SE = 10,
    AESO = 11,
    IESO = 12,
    CENACE = 20,
    NONISO = 99,
    EIA = 100,
    PNM = 150,
    NREL = 200,
    NOAA = 210,
    ENTSOE = 1000,
    EPIAS = 1010,
    SELF = 10000,
}

export enum BooleanValue
{
    Undefined = 'Undefined',
    Yes = 'Yes',
    No = 'No',
    Custom = 'Custom',
}

export enum PriceMarketType
{
    Undefined = 0,
    Realtime = 1,
    DayAhead = 10,
    DART = 101,
}

export class BatteryProjectTodItem
{
    public month: number;
    public weekDay: number;
    public hour: number;
    public price: number;
    // @Ignore()
    public id: string;

    public constructor(init?: Partial<BatteryProjectTodItem>) { (Object as any).assign(this, init); }
}

export enum RevenueStackingMode
{
    SolveWithoutAncillary = 'SolveWithoutAncillary',
    SolveWithAncillary = 'SolveWithAncillary',
}

export class MonthlyRequestBase
{
    public projectId: string;
    public nodeAltId: number;
    public iso: DataProvider;
    public useEnergy: BooleanValue;
    public useAncillary: BooleanValue;
    public useCapacityTod: boolean;
    public baseMarket: PriceMarketType;
    public capacityTODs: BatteryProjectTodItem[];
    public useRegup: number;
    public useRegdown: number;
    public useSpinning: number;
    public useNonSpinning: number;
    public paraciticLossesOperation: number;
    public paraciticLossesResting: number;
    public hvacLosses: number;
    public acCablingLosses: number;
    public transformatorLosses: number;
    public otherLosses: number;
    public representativeYear: number;
    public incrementReferanceYear: number;
    public useFutureData: number;
    public maxDailyCycle: number;
    public minDailyProfitPerMw: number;
    public ancillaryFileId: number;
    public lmpFileId: number;
    public maxChargingPriceCap: number;
    public maxDischargingPriceCap: number;
    public maxAncillaryPriceCap: number;
    public revenueStackingMode: RevenueStackingMode;
    public optimizationQuality: number;
    public ensureExlusive: number;
    public nodeRefId: number;
    public useInternalSolver: boolean;

    public constructor(init?: Partial<MonthlyRequestBase>) { (Object as any).assign(this, init); }
}

export enum PowerPlantType
{
    Undefined = 'Undefined',
    Solar = 'Solar',
    Wind = 'Wind',
    Hybrid = 'Hybrid',
}

export class BatteryScenarioKeyGroup
{
    public keyId: number;
    public year: number;
    public nodeId: number;
    public provider: DataProvider;
    public zoneId: number;
    public plantType: PowerPlantType;
    public solarId: number;
    public windId: number;
    public isServerless: boolean;

    public constructor(init?: Partial<BatteryScenarioKeyGroup>) { (Object as any).assign(this, init); }
}

export enum BatteryScenarioType
{
    Undefined = 'Undefined',
    Optimization = 'Optimization',
    Sum = 'Sum',
    OptiSum = 'OptiSum',
    FullTod = 'FullTod',
    CapacityTod = 'CapacityTod',
}

export class BatteryScenarioKeyItem
{
    public projectId: string;
    public keyId: number;
    public keyType: BatteryScenarioType;
    public recordKey: string;
    public jobStatus: number;
    public status: number;
    public minDate: string;
    public maxDate: string;
    public year: number;
    public yoyStatus: number;
    public usableCapacity: number;
    public usableCapacityFactor: number;
    public solarUsableCapacity: number;
    public solarUsableCapacityFactor: number;
    public baseMarket: PriceMarketType;
    public baseCapacityRate: number;
    public capacityRate: number;
    public solarCapacityRate: number;
    public windCapacityRate: number;
    public chargeEfficinecy: number;
    public dischargeEfficinecy: number;
    public nodeId: number;
    public provider: DataProvider;
    public zoneId: number;
    public lmpFileId: number;
    public productionFileId: number;
    public loadFileId: number;
    public capacityFileId: number;
    public plantType: PowerPlantType;
    public solarId: number;
    public windId: number;
    public ancillaryIncrementFactor: number;
    public energyIncrementFactor: number;
    public capacityIncrementFactor: number;

    public constructor(init?: Partial<BatteryScenarioKeyItem>) { (Object as any).assign(this, init); }
}

export enum BatteryProjectGroup
{
    Undefined = 'Undefined',
    StandAlone = 'StandAlone',
    FTM = 'FTM',
    BTM = 'BTM',
}

export class CommonOptimizerMonthlyRequest extends MonthlyRequestBase
{
    public month: number;
    public group: BatteryScenarioKeyGroup;
    public key: BatteryScenarioKeyItem;
    public projectGroup: BatteryProjectGroup;

    public constructor(init?: Partial<CommonOptimizerMonthlyRequest>) { super(init); (Object as any).assign(this, init); }
}

export class MonthlyApiStatusResponse
{
    public failedCount: number;

    public constructor(init?: Partial<MonthlyApiStatusResponse>) { (Object as any).assign(this, init); }
}

TypeScript CommonOptimizerMonthlyRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + 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
}