POST | /optimizer/monthly |
---|
import java.math.*
import java.util.*
import net.servicestack.client.*
open class CommonOptimizerMonthlyRequest : MonthlyRequestBase()
{
var month:Int? = null
var group:BatteryScenarioKeyGroup? = null
var key:BatteryScenarioKeyItem? = null
var projectGroup:BatteryProjectGroup? = null
}
open class MonthlyRequestBase
{
var projectId:UUID? = null
var nodeAltId:Int? = null
var iso:DataProvider? = null
var useEnergy:BooleanValue? = null
var useAncillary:BooleanValue? = null
var useCapacityTod:Boolean? = null
var baseMarket:PriceMarketType? = null
var capacityTODs:ArrayList<BatteryProjectTodItem> = ArrayList<BatteryProjectTodItem>()
var useRegup:BigDecimal? = null
var useRegdown:BigDecimal? = null
var useSpinning:BigDecimal? = null
var useNonSpinning:BigDecimal? = null
var paraciticLossesOperation:BigDecimal? = null
var paraciticLossesResting:BigDecimal? = null
var hvacLosses:BigDecimal? = null
var acCablingLosses:BigDecimal? = null
var transformatorLosses:BigDecimal? = null
var otherLosses:BigDecimal? = null
var representativeYear:Int? = null
var incrementReferanceYear:Int? = null
var useFutureData:Int? = null
var maxDailyCycle:BigDecimal? = null
var minDailyProfitPerMw:BigDecimal? = null
var ancillaryFileId:Int? = null
var lmpFileId:Int? = null
var maxChargingPriceCap:BigDecimal? = null
var maxDischargingPriceCap:BigDecimal? = null
var maxAncillaryPriceCap:BigDecimal? = null
var revenueStackingMode:RevenueStackingMode? = null
var optimizationQuality:Int? = null
var ensureExlusive:Int? = null
var nodeRefId:Int? = null
var useInternalSolver:Boolean? = null
}
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 BooleanValue
{
Undefined,
Yes,
No,
Custom,
}
enum class PriceMarketType(val value:Int)
{
Undefined(0),
Realtime(1),
DayAhead(10),
Dart(101),
}
open class BatteryProjectTodItem
{
var month:Int? = null
var weekDay:Int? = null
var hour:Int? = null
var price:BigDecimal? = null
@Ignore()
var id:String? = null
}
enum class RevenueStackingMode
{
SolveWithoutAncillary,
SolveWithAncillary,
}
open class BatteryScenarioKeyGroup
{
var keyId:Int? = null
var year:Int? = null
var nodeId:Int? = null
var provider:DataProvider? = null
var zoneId:Int? = null
var plantType:PowerPlantType? = null
var solarId:Int? = null
var windId:Int? = null
var isServerless:Boolean? = null
}
enum class PowerPlantType
{
Undefined,
Solar,
Wind,
Hybrid,
}
open class BatteryScenarioKeyItem
{
var projectId:UUID? = null
var keyId:Int? = null
var keyType:BatteryScenarioType? = null
var recordKey:String? = null
var jobStatus:Int? = null
var status:Int? = null
var minDate:Date? = null
var maxDate:Date? = null
var year:Int? = null
var yoyStatus:Int? = null
var usableCapacity:BigDecimal? = null
var usableCapacityFactor:BigDecimal? = null
var solarUsableCapacity:BigDecimal? = null
var solarUsableCapacityFactor:BigDecimal? = null
var baseMarket:PriceMarketType? = null
var baseCapacityRate:BigDecimal? = null
var capacityRate:BigDecimal? = null
var solarCapacityRate:BigDecimal? = null
var windCapacityRate:BigDecimal? = null
var chargeEfficinecy:BigDecimal? = null
var dischargeEfficinecy:BigDecimal? = null
var nodeId:Int? = null
var provider:DataProvider? = null
var zoneId:Int? = null
var lmpFileId:Int? = null
var productionFileId:Int? = null
var loadFileId:Int? = null
var capacityFileId:Int? = null
var plantType:PowerPlantType? = null
var solarId:Int? = null
var windId:Int? = null
var ancillaryIncrementFactor:BigDecimal? = null
var energyIncrementFactor:BigDecimal? = null
var capacityIncrementFactor:BigDecimal? = null
}
enum class BatteryScenarioType
{
Undefined,
Optimization,
Sum,
OptiSum,
FullTod,
CapacityTod,
}
enum class BatteryProjectGroup
{
Undefined,
StandAlone,
Ftm,
Btm,
}
open class MonthlyApiStatusResponse
{
var failedCount:Int? = null
}
Kotlin CommonOptimizerMonthlyRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=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 }