Power.Dev Optimization Services

<back to all web services

CommonOptimizerYearlyRequest

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

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 CommonOptimizerYearlyRequest extends MonthlyRequestBase
{
    public month: number;
    public group: BatteryScenarioKeyGroup;
    public key: BatteryScenarioKeyItem;
    public projectGroup: BatteryProjectGroup;

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

export class YearlyApiStatusResponse
{
    public failedCount: number;
    public message: string;

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

TypeScript CommonOptimizerYearlyRequest DTOs

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

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /optimizer/yearly HTTP/1.1 
Host: dev-optimization.power.dev 
Accept: text/csv
Content-Type: text/csv
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/csv
Content-Length: length

{"failedCount":0,"message":"String"}