Power.Dev Optimization Services

<back to all web services

CommonOptimizerRequest

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

export class CommonOptimizerPortalRequestBase
{
    public projectId: string;
    public isBatchSimulation: boolean;
    public force: boolean;
    public disableEBSSpot: boolean;
    public isServerless: boolean;
    public apiActionId: string;
    public nodeId: number;
    public parallelProject: number;
    public parallelYears: number;
    public ensureExlusive: number;

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

export class CommonOptimizerRequest extends CommonOptimizerPortalRequestBase
{

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

export enum ApiResponseStatus
{
    Undefined = 0,
    Success = 1,
    Pending = 10,
    Failed = 100,
}

export enum BatterySimulationType
{
    Undefined = 0,
    SingleRun = 1,
    BatchSimulation = 2,
    BatchSub = 21,
    Siting = 100,
}

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

export enum BatteryProjectAction
{
    Undefined = 'Undefined',
    Arbitrage = 'Arbitrage',
    PeakShaving = 'PeakShaving',
    Smooting = 'Smooting',
    Firming = 'Firming',
}

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 BatteryDataSoruce
{
    Undefined = 'Undefined',
    Merchant = 'Merchant',
    Future = 'Future',
    TOD = 'TOD',
}

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

export enum TimeGranularity
{
    Undefined = 0,
    hourly = 1,
    daily = 2,
    weekly = 3,
    monthy = 4,
    yearly = 5,
    fivemin = 10,
    tenmin = 11,
    fifteenmin = 12,
    halfhour = 13,
    quarterly = 14,
    twohours = 21,
    threehours = 22,
    fourhours = 24,
    sixhours = 26,
    eighthours = 28,
    twelvehours = 32,
    irregular = 100,
}

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

export enum CapacityMethod
{
    Undefined = 'Undefined',
    Annual = 'Annual',
    Tod = 'Tod',
    Schedule = 'Schedule',
}

export enum BatteryProductionDataSource
{
    Undefined = 'Undefined',
    SetClosest = 'SetClosest',
    UploadedFile = 'UploadedFile',
}

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

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

export class BatteryProjectForOptimizer
{
    public projectId: string;
    public version: string;
    public baseId: string;
    public altId: number;
    public simulationType: BatterySimulationType;
    public projectGroup: BatteryProjectGroup;
    public projectAction: BatteryProjectAction;
    public iso: DataProvider;
    public name: string;
    public baseNodeId: number;
    public orgNodeId: number;
    public baseZoneId: number;
    public dataSource: BatteryDataSoruce;
    public baseMarket: PriceMarketType;
    public priceGranularity: TimeGranularity;
    public startDate: string;
    public endDate: string;
    public batteryCapacity: number;
    public interconnectionLimit: number;
    public namepaletCapacity: number;
    // @Ignore()
    public chargeDischargeLimit: number;

    // @Ignore()
    public baseCapacityRate: number;

    // @Ignore()
    public capacityRate: number;

    public chargeEfficiency: number;
    public disChargeEfficiency: number;
    public paraciticLossesOperation: number;
    public paraciticLossesResting: number;
    public hvacLosses: number;
    public acCablingLosses: number;
    public transformatorLosses: number;
    public thermalLosses: number;
    public otherLosses: number;
    public useEnergy: BooleanValue;
    public useCapacity: BooleanValue;
    public capacityBasis: CapacityMethod;
    public capacityPayment: number;
    public netCapacityFactor: number;
    public useAncillary: BooleanValue;
    public productionDataSource: BatteryProductionDataSource;
    public powerPlantType: PowerPlantType;
    public solarAcCapacity: number;
    public solarDcCapacity: number;
    public windAcCapacity: number;
    // @Ignore()
    public solarCapacityRate: number;

    // @Ignore()
    public windCapacityRate: number;

    public status: number;
    public simulationStatus: number;
    public lastSimulationDate: string;
    public dataStartDate: string;
    public dataEndDate: string;
    public solarId: number;
    public windId: number;
    public lmpFileId: number;
    public productionFileId: number;
    public loadFileId: number;
    public capacityFileId: number;
    public nodeAltId: number;
    public nodeRefId: number;
    public useRegup: number;
    public useRegdown: number;
    public useSpinning: number;
    public useNonSpinning: number;
    public solarDegredation: number;
    public batteryDegredation: number;
    public augmentation: number;
    public augmentationFrequency: number;
    public energyIncrement: number;
    public ancillaryIncrement: number;
    public enableGridArbitrage: number;
    public incrementReferanceYear: number;
    public representativeYear: number;
    public useFutureData: number;
    public maxDailyCycle: number;
    public minDailyProfitPerMw: number;
    public ancillaryFileId: number;
    public maxChargingPriceCap: number;
    public maxDischargingPriceCap: number;
    public maxAncillaryPriceCap: number;
    public revenueStackingMode: RevenueStackingMode;
    public optimizationQuality: number;
    public useInternalSolver: boolean;

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

export class CommonOptimizerResponse
{
    public status: ApiResponseStatus;
    public message: string;
    public apiActionId: string;
    public detail: string;
    public items: BatteryProjectForOptimizer[];

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

TypeScript CommonOptimizerRequest 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/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
}