POST | /optimizer/ftm | ||
---|---|---|---|
POST | /optimizer/common |
import java.math.*
import java.util.*
import net.servicestack.client.*
open class CommonOptimizerRequest : CommonOptimizerPortalRequestBase()
{
}
open class CommonOptimizerPortalRequestBase
{
var projectId:UUID? = null
var isBatchSimulation:Boolean? = null
var force:Boolean? = null
var disableEBSSpot:Boolean? = null
var isServerless:Boolean? = null
var apiActionId:UUID? = null
var nodeId:Int? = null
var parallelProject:Int? = null
var parallelYears:Int? = null
var ensureExlusive:Int? = null
}
open class CommonOptimizerResponse
{
var status:ApiResponseStatus? = null
var message:String? = null
var apiActionId:UUID? = null
var detail:String? = null
var items:ArrayList<BatteryProjectForOptimizer> = ArrayList<BatteryProjectForOptimizer>()
}
enum class ApiResponseStatus(val value:Int)
{
Undefined(0),
Success(1),
Pending(10),
Failed(100),
}
open class BatteryProjectForOptimizer
{
var projectId:UUID? = null
var version:String? = null
var baseId:UUID? = null
var altId:Int? = null
var simulationType:BatterySimulationType? = null
var projectGroup:BatteryProjectGroup? = null
var projectAction:BatteryProjectAction? = null
var iso:DataProvider? = null
var name:String? = null
var baseNodeId:Int? = null
var orgNodeId:Int? = null
var baseZoneId:Int? = null
var dataSource:BatteryDataSoruce? = null
var baseMarket:PriceMarketType? = null
var priceGranularity:TimeGranularity? = null
var startDate:Date? = null
var endDate:Date? = null
var batteryCapacity:BigDecimal? = null
var interconnectionLimit:BigDecimal? = null
var namepaletCapacity:BigDecimal? = null
@Ignore()
var chargeDischargeLimit:BigDecimal? = null
@Ignore()
var baseCapacityRate:BigDecimal? = null
@Ignore()
var capacityRate:BigDecimal? = null
var chargeEfficiency:BigDecimal? = null
var disChargeEfficiency:BigDecimal? = null
var paraciticLossesOperation:BigDecimal? = null
var paraciticLossesResting:BigDecimal? = null
var hvacLosses:BigDecimal? = null
var acCablingLosses:BigDecimal? = null
var transformatorLosses:BigDecimal? = null
var thermalLosses:BigDecimal? = null
var otherLosses:BigDecimal? = null
var useEnergy:BooleanValue? = null
var useCapacity:BooleanValue? = null
var capacityBasis:CapacityMethod? = null
var capacityPayment:BigDecimal? = null
var netCapacityFactor:BigDecimal? = null
var useAncillary:BooleanValue? = null
var productionDataSource:BatteryProductionDataSource? = null
var powerPlantType:PowerPlantType? = null
var solarAcCapacity:BigDecimal? = null
var solarDcCapacity:BigDecimal? = null
var windAcCapacity:BigDecimal? = null
@Ignore()
var solarCapacityRate:BigDecimal? = null
@Ignore()
var windCapacityRate:BigDecimal? = null
var status:Int? = null
var simulationStatus:Int? = null
var lastSimulationDate:Date? = null
var dataStartDate:Date? = null
var dataEndDate:Date? = null
var solarId:Int? = null
var windId:Int? = null
var lmpFileId:Int? = null
var productionFileId:Int? = null
var loadFileId:Int? = null
var capacityFileId:Int? = null
var nodeAltId:Int? = null
var nodeRefId:Int? = null
var useRegup:BigDecimal? = null
var useRegdown:BigDecimal? = null
var useSpinning:BigDecimal? = null
var useNonSpinning:BigDecimal? = null
var solarDegredation:BigDecimal? = null
var batteryDegredation:BigDecimal? = null
var augmentation:BigDecimal? = null
var augmentationFrequency:BigDecimal? = null
var energyIncrement:BigDecimal? = null
var ancillaryIncrement:BigDecimal? = null
var enableGridArbitrage:Int? = null
var incrementReferanceYear:Int? = null
var representativeYear:Int? = null
var useFutureData:Int? = null
var maxDailyCycle:BigDecimal? = null
var minDailyProfitPerMw:BigDecimal? = null
var ancillaryFileId:Int? = null
var maxChargingPriceCap:BigDecimal? = null
var maxDischargingPriceCap:BigDecimal? = null
var maxAncillaryPriceCap:BigDecimal? = null
var revenueStackingMode:RevenueStackingMode? = null
var optimizationQuality:Int? = null
var useInternalSolver:Boolean? = null
}
enum class BatterySimulationType(val value:Int)
{
Undefined(0),
SingleRun(1),
BatchSimulation(2),
BatchSub(21),
Siting(100),
}
enum class BatteryProjectGroup
{
Undefined,
StandAlone,
Ftm,
Btm,
}
enum class BatteryProjectAction
{
Undefined,
Arbitrage,
PeakShaving,
Smooting,
Firming,
}
enum class DataProvider(val value:Int)
{
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),
}
enum class BatteryDataSoruce
{
Undefined,
Merchant,
Future,
Tod,
}
enum class PriceMarketType(val value:Int)
{
Undefined(0),
Realtime(1),
DayAhead(10),
Dart(101),
}
enum class TimeGranularity(val value:Int)
{
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),
}
enum class BooleanValue
{
Undefined,
Yes,
No,
Custom,
}
enum class CapacityMethod
{
Undefined,
Annual,
Tod,
Schedule,
}
enum class BatteryProductionDataSource
{
Undefined,
SetClosest,
UploadedFile,
}
enum class PowerPlantType
{
Undefined,
Solar,
Wind,
Hybrid,
}
enum class RevenueStackingMode
{
SolveWithoutAncillary,
SolveWithAncillary,
}
Kotlin CommonOptimizerRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv
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/csv
Content-Type: text/csv
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/csv Content-Length: length {"status":"Undefined","message":"String","apiActionId":"00000000000000000000000000000000","detail":"String"}