/* Options: Date: 2025-09-10 19:19:33 SwiftVersion: 5.0 Version: 8.30 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://dev-optimization.power.dev //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True IncludeTypes: CommonOptimizerRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: True //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/optimizer/ftm", "POST") // @Route("/optimizer/common", "POST") public class CommonOptimizerRequest : CommonOptimizerPortalRequestBase, IReturn { public typealias Return = CommonOptimizerResponse required public init(){ super.init() } required public init(from decoder: Decoder) throws { try super.init(from: decoder) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) } } public class CommonOptimizerResponse : Codable { public var status:ApiResponseStatus public var message:String public var apiActionId:String public var detail:String public var items:[BatteryProjectForOptimizer] = [] required public init(){} } public class CommonOptimizerPortalRequestBase : Codable { public var projectId:String public var isBatchSimulation:Bool public var force:Bool public var disableEBSSpot:Bool public var isServerless:Bool public var apiActionId:String public var nodeId:Int public var parallelProject:Int public var parallelYears:Int public var ensureExlusive:Int required public init(){} } public enum BatteryProjectGroup : String, Codable { case Undefined case StandAlone case FTM case BTM } 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 enum RevenueStackingMode : String, Codable { case SolveWithoutAncillary case SolveWithAncillary } public enum ApiResponseStatus : Int, Codable { case Undefined = 0 case Success = 1 case Pending = 10 case Failed = 100 } public class BatteryProjectForOptimizer : Codable { public var projectId:String public var version:String public var baseId:String public var altId:Int public var simulationType:BatterySimulationType public var projectGroup:BatteryProjectGroup public var projectAction:BatteryProjectAction public var iso:DataProvider public var name:String public var baseNodeId:Int public var orgNodeId:Int public var baseZoneId:Int public var dataSource:BatteryDataSoruce public var baseMarket:PriceMarketType public var priceGranularity:TimeGranularity public var startDate:Date public var endDate:Date public var batteryCapacity:Double public var interconnectionLimit:Double public var namepaletCapacity:Double // @Ignore() public var chargeDischargeLimit:Double // @Ignore() public var baseCapacityRate:Double // @Ignore() public var capacityRate:Double public var chargeEfficiency:Double public var disChargeEfficiency:Double public var paraciticLossesOperation:Double public var paraciticLossesResting:Double public var hvacLosses:Double public var acCablingLosses:Double public var transformatorLosses:Double public var thermalLosses:Double public var otherLosses:Double public var useEnergy:BooleanValue public var useCapacity:BooleanValue public var capacityBasis:CapacityMethod public var capacityPayment:Double public var netCapacityFactor:Double public var useAncillary:BooleanValue public var productionDataSource:BatteryProductionDataSource public var powerPlantType:PowerPlantType public var solarAcCapacity:Double public var solarDcCapacity:Double public var windAcCapacity:Double // @Ignore() public var solarCapacityRate:Double // @Ignore() public var windCapacityRate:Double public var status:Int public var simulationStatus:Int public var lastSimulationDate:Date public var dataStartDate:Date public var dataEndDate:Date public var solarId:Int public var windId:Int public var lmpFileId:Int public var productionFileId:Int public var loadFileId:Int public var capacityFileId:Int public var nodeAltId:Int public var nodeRefId:Int public var useRegup:Double public var useRegdown:Double public var useSpinning:Double public var useNonSpinning:Double public var solarDegredation:Double public var batteryDegredation:Double public var augmentation:Double public var augmentationFrequency:Double public var energyIncrement:Double public var ancillaryIncrement:Double public var enableGridArbitrage:Int public var incrementReferanceYear:Int public var representativeYear:Int public var useFutureData:Int public var maxDailyCycle:Double public var minDailyProfitPerMw:Double public var ancillaryFileId:Int public var maxChargingPriceCap:Double public var maxDischargingPriceCap:Double public var maxAncillaryPriceCap:Double public var revenueStackingMode:RevenueStackingMode public var optimizationQuality:Int public var useInternalSolver:Bool required public init(){} } public enum PowerPlantType : String, Codable { case Undefined case Solar case Wind case Hybrid } public enum BatterySimulationType : Int, Codable { case Undefined = 0 case SingleRun = 1 case BatchSimulation = 2 case BatchSub = 21 case Siting = 100 } public enum BatteryProjectAction : String, Codable { case Undefined case Arbitrage case PeakShaving case Smooting case Firming } public enum BatteryDataSoruce : String, Codable { case Undefined case Merchant case Future case TOD } public enum TimeGranularity : Int, Codable { case Undefined = 0 case hourly = 1 case daily = 2 case weekly = 3 case monthy = 4 case yearly = 5 case fivemin = 10 case tenmin = 11 case fifteenmin = 12 case halfhour = 13 case quarterly = 14 case twohours = 21 case threehours = 22 case fourhours = 24 case sixhours = 26 case eighthours = 28 case twelvehours = 32 case irregular = 100 } public enum CapacityMethod : String, Codable { case Undefined case Annual case Tod case Schedule } public enum BatteryProductionDataSource : String, Codable { case Undefined case SetClosest case UploadedFile }