POST | /optimizer/monthly |
---|
import Foundation
import ServiceStack
public class CommonOptimizerMonthlyRequest : MonthlyRequestBase
{
public var month:Int
public var group:BatteryScenarioKeyGroup
public var key:BatteryScenarioKeyItem
public var projectGroup:BatteryProjectGroup
required public init(){ super.init() }
private enum CodingKeys : String, CodingKey {
case month
case group
case key
case projectGroup
}
required public init(from decoder: Decoder) throws {
try super.init(from: decoder)
let container = try decoder.container(keyedBy: CodingKeys.self)
month = try container.decodeIfPresent(Int.self, forKey: .month)
group = try container.decodeIfPresent(BatteryScenarioKeyGroup.self, forKey: .group)
key = try container.decodeIfPresent(BatteryScenarioKeyItem.self, forKey: .key)
projectGroup = try container.decodeIfPresent(BatteryProjectGroup.self, forKey: .projectGroup)
}
public override func encode(to encoder: Encoder) throws {
try super.encode(to: encoder)
var container = encoder.container(keyedBy: CodingKeys.self)
if month != nil { try container.encode(month, forKey: .month) }
if group != nil { try container.encode(group, forKey: .group) }
if key != nil { try container.encode(key, forKey: .key) }
if projectGroup != nil { try container.encode(projectGroup, forKey: .projectGroup) }
}
}
public class MonthlyRequestBase : Codable
{
public var projectId:String
public var nodeAltId:Int
public var iso:DataProvider
public var useEnergy:BooleanValue
public var useAncillary:BooleanValue
public var useCapacityTod:Bool
public var baseMarket:PriceMarketType
public var capacityTODs:[BatteryProjectTodItem] = []
public var useRegup:Double
public var useRegdown:Double
public var useSpinning:Double
public var useNonSpinning:Double
public var paraciticLossesOperation:Double
public var paraciticLossesResting:Double
public var hvacLosses:Double
public var acCablingLosses:Double
public var transformatorLosses:Double
public var otherLosses:Double
public var representativeYear:Int
public var incrementReferanceYear:Int
public var useFutureData:Int
public var maxDailyCycle:Double
public var minDailyProfitPerMw:Double
public var ancillaryFileId:Int
public var lmpFileId:Int
public var maxChargingPriceCap:Double
public var maxDischargingPriceCap:Double
public var maxAncillaryPriceCap:Double
public var revenueStackingMode:RevenueStackingMode
public var optimizationQuality:Int
public var ensureExlusive:Int
public var nodeRefId:Int
public var useInternalSolver:Bool
required public init(){}
}
public enum DataProvider : Int, Codable
{
case Undefined = 0
case SPP = 1
case ERCOT = 2
case MISO = 3
case CAISO = 4
case PJM = 5
case ISONE = 6
case NYISO = 7
case NW = 8
case SW = 9
case SE = 10
case AESO = 11
case IESO = 12
case CENACE = 20
case NONISO = 99
case EIA = 100
case PNM = 150
case NREL = 200
case NOAA = 210
case ENTSOE = 1000
case EPIAS = 1010
case SELF = 10000
}
public enum BooleanValue : String, Codable
{
case Undefined
case Yes
case No
case Custom
}
public enum PriceMarketType : Int, Codable
{
case Undefined = 0
case Realtime = 1
case DayAhead = 10
case DART = 101
}
public class BatteryProjectTodItem : Codable
{
public var month:Int
public var weekDay:Int
public var hour:Int
public var price:Double
// @Ignore()
public var id:String
required public init(){}
}
public enum RevenueStackingMode : String, Codable
{
case SolveWithoutAncillary
case SolveWithAncillary
}
public class BatteryScenarioKeyGroup : Codable
{
public var keyId:Int
public var year:Int
public var nodeId:Int
public var provider:DataProvider
public var zoneId:Int
public var plantType:PowerPlantType
public var solarId:Int
public var windId:Int
public var isServerless:Bool
required public init(){}
}
public enum PowerPlantType : String, Codable
{
case Undefined
case Solar
case Wind
case Hybrid
}
public class BatteryScenarioKeyItem : Codable
{
public var projectId:String
public var keyId:Int
public var keyType:BatteryScenarioType
public var recordKey:String
public var jobStatus:Int
public var status:Int
public var minDate:Date
public var maxDate:Date
public var year:Int
public var yoyStatus:Int
public var usableCapacity:Double
public var usableCapacityFactor:Double
public var solarUsableCapacity:Double
public var solarUsableCapacityFactor:Double
public var baseMarket:PriceMarketType
public var baseCapacityRate:Double
public var capacityRate:Double
public var solarCapacityRate:Double
public var windCapacityRate:Double
public var chargeEfficinecy:Double
public var dischargeEfficinecy:Double
public var nodeId:Int
public var provider:DataProvider
public var zoneId:Int
public var lmpFileId:Int
public var productionFileId:Int
public var loadFileId:Int
public var capacityFileId:Int
public var plantType:PowerPlantType
public var solarId:Int
public var windId:Int
public var ancillaryIncrementFactor:Double
public var energyIncrementFactor:Double
public var capacityIncrementFactor:Double
required public init(){}
}
public enum BatteryScenarioType : String, Codable
{
case Undefined
case Optimization
case Sum
case OptiSum
case FullTod
case CapacityTod
}
public enum BatteryProjectGroup : String, Codable
{
case Undefined
case StandAlone
case FTM
case BTM
}
public class MonthlyApiStatusResponse : Codable
{
public var failedCount:Int
required public init(){}
}
Swift CommonOptimizerMonthlyRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=xml
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: application/xml
Content-Type: application/xml
Content-Length: length
<CommonOptimizerMonthlyRequest xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.ServiceModel">
<AcCablingLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</AcCablingLosses>
<AncillaryFileId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</AncillaryFileId>
<BaseMarket xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</BaseMarket>
<CapacityTODs xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models" i:nil="true" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models" />
<EnsureExlusive xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</EnsureExlusive>
<HVACLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</HVACLosses>
<IncrementReferanceYear xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</IncrementReferanceYear>
<Iso xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</Iso>
<LmpFileId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</LmpFileId>
<MaxAncillaryPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxAncillaryPriceCap>
<MaxChargingPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxChargingPriceCap>
<MaxDailyCycle xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxDailyCycle>
<MaxDischargingPriceCap xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MaxDischargingPriceCap>
<MinDailyProfitPerMw xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</MinDailyProfitPerMw>
<NodeAltId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</NodeAltId>
<NodeRefId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</NodeRefId>
<OptimizationQuality xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</OptimizationQuality>
<OtherLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</OtherLosses>
<ParaciticLossesOperation xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</ParaciticLossesOperation>
<ParaciticLossesResting xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</ParaciticLossesResting>
<ProjectId xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">00000000-0000-0000-0000-000000000000</ProjectId>
<RepresentativeYear xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</RepresentativeYear>
<RevenueStackingMode xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">SolveWithoutAncillary</RevenueStackingMode>
<TransformatorLosses xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</TransformatorLosses>
<UseAncillary xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</UseAncillary>
<UseCapacityTod xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">false</UseCapacityTod>
<UseEnergy xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">Undefined</UseEnergy>
<UseFutureData xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseFutureData>
<UseInternalSolver xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">false</UseInternalSolver>
<UseNonSpinning xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseNonSpinning>
<UseRegdown xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseRegdown>
<UseRegup xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseRegup>
<UseSpinning xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models">0</UseSpinning>
<Group xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">
<d2p1:IsServerless>false</d2p1:IsServerless>
<d2p1:KeyId>0</d2p1:KeyId>
<d2p1:NodeId>0</d2p1:NodeId>
<d2p1:PlantType>Undefined</d2p1:PlantType>
<d2p1:Provider>Undefined</d2p1:Provider>
<d2p1:SolarId>0</d2p1:SolarId>
<d2p1:WindId>0</d2p1:WindId>
<d2p1:Year>0</d2p1:Year>
<d2p1:ZoneId>0</d2p1:ZoneId>
</Group>
<Key xmlns:d2p1="http://schemas.datacontract.org/2004/07/powerDev.Common.Models">
<d2p1:AncillaryIncrementFactor>0</d2p1:AncillaryIncrementFactor>
<d2p1:BaseCapacityRate>0</d2p1:BaseCapacityRate>
<d2p1:BaseMarket>Undefined</d2p1:BaseMarket>
<d2p1:CapacityFileId>0</d2p1:CapacityFileId>
<d2p1:CapacityIncrementFactor>0</d2p1:CapacityIncrementFactor>
<d2p1:CapacityRate>0</d2p1:CapacityRate>
<d2p1:ChargeEfficinecy>0</d2p1:ChargeEfficinecy>
<d2p1:DischargeEfficinecy>0</d2p1:DischargeEfficinecy>
<d2p1:EnergyIncrementFactor>0</d2p1:EnergyIncrementFactor>
<d2p1:JobStatus>0</d2p1:JobStatus>
<d2p1:KeyId>0</d2p1:KeyId>
<d2p1:KeyType>Undefined</d2p1:KeyType>
<d2p1:LmpFileId>0</d2p1:LmpFileId>
<d2p1:LoadFileId>0</d2p1:LoadFileId>
<d2p1:MaxDate>0001-01-01T00:00:00</d2p1:MaxDate>
<d2p1:MinDate>0001-01-01T00:00:00</d2p1:MinDate>
<d2p1:NodeId>0</d2p1:NodeId>
<d2p1:PlantType>Undefined</d2p1:PlantType>
<d2p1:ProductionFileId>0</d2p1:ProductionFileId>
<d2p1:ProjectId>00000000-0000-0000-0000-000000000000</d2p1:ProjectId>
<d2p1:Provider>Undefined</d2p1:Provider>
<d2p1:RecordKey>String</d2p1:RecordKey>
<d2p1:SolarCapacityRate>0</d2p1:SolarCapacityRate>
<d2p1:SolarId>0</d2p1:SolarId>
<d2p1:SolarUsableCapacity>0</d2p1:SolarUsableCapacity>
<d2p1:SolarUsableCapacityFactor>0</d2p1:SolarUsableCapacityFactor>
<d2p1:Status>0</d2p1:Status>
<d2p1:UsableCapacity>0</d2p1:UsableCapacity>
<d2p1:UsableCapacityFactor>0</d2p1:UsableCapacityFactor>
<d2p1:WindCapacityRate>0</d2p1:WindCapacityRate>
<d2p1:WindId>0</d2p1:WindId>
<d2p1:Year>0</d2p1:Year>
<d2p1:YoyStatus>0</d2p1:YoyStatus>
<d2p1:ZoneId>0</d2p1:ZoneId>
</Key>
<Month>0</Month>
<ProjectGroup>Undefined</ProjectGroup>
</CommonOptimizerMonthlyRequest>
HTTP/1.1 200 OK Content-Type: application/xml Content-Length: length <MonthlyApiStatusResponse xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/powerDev.Optimization.Models"> <FailedCount>0</FailedCount> </MonthlyApiStatusResponse>