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 .other suffix or ?format=other
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/jsonl
Content-Type: text/jsonl
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/jsonl Content-Length: length {"status":"Undefined","message":"String","apiActionId":"00000000000000000000000000000000","detail":"String"}