/* Options: Date: 2026-06-13 13:36:02 SwiftVersion: 6.0 Version: 8.80 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://riskstoreng-dev.nephila.com/api //BaseClass: //AddModelExtensions: True //AddServiceStackTypes: True //MakePropertiesOptional: True IncludeTypes: FindAnalysisRequest.* //ExcludeTypes: //ExcludeGenericBaseTypes: False //AddResponseStatus: False //AddImplicitVersion: //AddDescriptionAsComments: True //InitializeCollections: False //TreatTypesAsStrings: //DefaultImports: Foundation,ServiceStack */ import Foundation import ServiceStack // @Route("/riskstore/analysis", "GET") public class FindAnalysisRequest : QueryDb, IReturn { public typealias Return = QueryResponse /** * The Ids of the Analyses */ // @ApiMember(DataType="integer", Description="The Ids of the Analyses", Format="int64") public var ids:[Int]? /** * The partial name of the analyses */ // @ApiMember(DataType="string", Description="The partial name of the analyses") public var name:String? /** * Filter only Standard analysis type */ // @ApiMember(DataType="boolean", Description="Filter only Standard analysis type") public var standardEnabled:Bool? /** * Filter only Run Off analysis type */ // @ApiMember(DataType="boolean", Description="Filter only Run Off analysis type") public var runOffEnabled:Bool? /** * The perspective id used for the analysis */ // @ApiMember(DataType="integer", Description="The perspective id used for the analysis", Format="int32") public var perspectiveId:Int? /** * The partial name of the user who run the analysis */ // @ApiMember(DataType="string", Description="The partial name of the user who run the analysis") public var createdBy:String? /** * The analysis run date to filter from */ // @ApiMember(DataType="string", Description="The analysis run date to filter from", Format="date-time") public var analysisRunFromDateTime:Date? /** * The analysis run date to filter to */ // @ApiMember(DataType="string", Description="The analysis run date to filter to", Format="date-time") public var analysisRunToDateTime:Date? /** * The status of the analysis. 1 = Processing, 10 = Failed, 20 = Successful */ // @ApiMember(DataType="integer", Description="The status of the analysis. 1 = Processing, 10 = Failed, 20 = Successful", Format="int32") public var processingStatus:ProcessingStatus? required public init(){ super.init() } private enum CodingKeys : String, CodingKey { case ids case name case standardEnabled case runOffEnabled case perspectiveId case createdBy case analysisRunFromDateTime case analysisRunToDateTime case processingStatus } required public init(from decoder: Decoder) throws { try super.init(from: decoder) let container = try decoder.container(keyedBy: CodingKeys.self) ids = try container.decodeIfPresent([Int].self, forKey: .ids) ?? [] name = try container.decodeIfPresent(String.self, forKey: .name) standardEnabled = try container.decodeIfPresent(Bool.self, forKey: .standardEnabled) runOffEnabled = try container.decodeIfPresent(Bool.self, forKey: .runOffEnabled) perspectiveId = try container.decodeIfPresent(Int.self, forKey: .perspectiveId) createdBy = try container.decodeIfPresent(String.self, forKey: .createdBy) analysisRunFromDateTime = try container.decodeIfPresent(Date.self, forKey: .analysisRunFromDateTime) analysisRunToDateTime = try container.decodeIfPresent(Date.self, forKey: .analysisRunToDateTime) processingStatus = try container.decodeIfPresent(ProcessingStatus.self, forKey: .processingStatus) } public override func encode(to encoder: Encoder) throws { try super.encode(to: encoder) var container = encoder.container(keyedBy: CodingKeys.self) if ids != nil { try container.encode(ids, forKey: .ids) } if name != nil { try container.encode(name, forKey: .name) } if standardEnabled != nil { try container.encode(standardEnabled, forKey: .standardEnabled) } if runOffEnabled != nil { try container.encode(runOffEnabled, forKey: .runOffEnabled) } if perspectiveId != nil { try container.encode(perspectiveId, forKey: .perspectiveId) } if createdBy != nil { try container.encode(createdBy, forKey: .createdBy) } if analysisRunFromDateTime != nil { try container.encode(analysisRunFromDateTime, forKey: .analysisRunFromDateTime) } if analysisRunToDateTime != nil { try container.encode(analysisRunToDateTime, forKey: .analysisRunToDateTime) } if processingStatus != nil { try container.encode(processingStatus, forKey: .processingStatus) } } } public enum ProcessingStatus : Int, Codable { case New = 0 case Processing = 1 case Failed = 10 case Successful = 20 } // @DataContract public class Analysis : IObjectWithId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var name:String? // @DataMember(Order=3) public var modelAsOfDate:Date? // @DataMember(Order=4) public var perspectiveId:Int? // @DataMember(Order=5) public var configurations:[AnalysisConfiguration]? // @DataMember(Order=6) public var deals:[AnalysisDeal]? // @DataMember(Order=7) public var eventIdFilters:[AnalysisEventIdFilter]? // @DataMember(Order=8) public var createdBy:String? // @DataMember(Order=9) public var createdDateUtc:Date? // @DataMember(Order=10) public var completedDateUtc:Date? // @DataMember(Order=11) public var legacyAnalysisId:Int? // @DataMember(Order=12) public var resultPersistenceTracking:[MessageTracking]? // @DataMember(Order=13) public var processingStatus:ProcessingStatus? // @DataMember(Order=14) public var saveResults:Bool? // @DataMember(Order=15) public var eventSourceSystem:String? // @DataMember(Order=16) public var updatedDateUtc:Date? // @DataMember(Order=17) public var isExpired:Bool? // @DataMember(Order=18) public var rowIdentifier:String? // @DataMember(Order=19) public var errorMessage:String? /** * Take the minimum simulation count when we have different simulations between event sets */ // @DataMember(Order=20) // @ApiMember(DataType="boolean", Description="Take the minimum simulation count when we have different simulations between event sets") public var ignoreSimulationCountMismatch:Bool? // @DataMember(Order=21) // @Ignore() public var finalStatus:ProcessingStatus? required public init(){} } public enum ResultOutputLevel : String, Codable { case NotSet case PortfolioMetrics case Curve case YLT case TailIntensity case DealYlt case DealElt case DealEltWithIndustryLoss case PortfolioElt case PortfolioEltWithIndustryLoss case EventSetGeneration case PortfolioRaps case DealRaps case PortfolioSepyIndustryLoss case DealSepyIndustryLoss } public protocol IObjectWithId { var id:Int? { get set } var rowIdentifier:String? { get set } } // @DataContract public class AnalysisConfiguration : IObjectWithId, IHasAnalysisId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var analysisId:Int? // @DataMember(Order=3) public var windowStartDate:Date? // @DataMember(Order=4) public var windowEndDate:Date? // @DataMember(Order=5) public var standardEnabled:Bool? // @DataMember(Order=6) public var runOffEnabled:Bool? // @DataMember(Order=7) public var aggregateEnabled:Bool? // @DataMember(Order=8) public var occurrenceEnabled:Bool? // @DataMember(Order=9) public var nettEnabled:Bool? // @DataMember(Order=10) public var grossEnabled:Bool? // @DataMember(Order=11) public var tailIntensityPercentageStart:Double? // @DataMember(Order=12) public var tailIntensityPercentageEnd:Double? // @DataMember(Order=13) public var metaRiskId:Int? // @DataMember(Order=14) public var outputLevel:ResultOutputLevel? // @DataMember(Order=15) public var processingStatus:ProcessingStatus? // @DataMember(Order=16) public var eventLossFloorStartRange:Double? // @DataMember(Order=17) public var eventLossFloorEndRange:Double? // @DataMember(Order=18) public var analysisPortfolioEventSetConfigurations:[AnalysisPortfolioEventSetConfiguration]? // @DataMember(Order=19) public var rowIdentifier:String? required public init(){} } // @DataContract public class AnalysisDeal : IObjectWithId, IHasAnalysisId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var analysisId:Int? // @DataMember(Order=3) public var sourceDealId:String? // @DataMember(Order=4) public var dealRef:String? // @DataMember(Order=5) public var sourceDealSystem:String? // @DataMember(Order=6) public var eventSetId:Int? // @DataMember(Order=7) public var rol:Double? // @DataMember(Order=8) public var limit:Double? // @DataMember(Order=9) public var inceptionDate:Date? // @DataMember(Order=10) public var expiryDate:Date? // @DataMember(Order=11) public var transactionType:TransactionType? // @DataMember(Order=12) public var allocations:[AnalysisPortfolioAllocation]? // @DataMember(Order=13) public var perspectiveIdOverride:Int? // @DataMember(Order=14) public var eventSetIdOverride:Int? // @DataMember(Order=15) public var modelAsOfDateOverride:Date? // @DataMember(Order=16) public var sourceModelSystemOverride:String? // @DataMember(Order=17) public var sourceModelIdOverride:String? // @DataMember(Order=18) public var sourceEventSetIdOverride:String? // @DataMember(Order=19) public var eventSourceSystemOverride:String? // @DataMember(Order=20) public var rowIdentifier:String? required public init(){} } // @DataContract public class AnalysisEventIdFilter : IObjectWithId, IHasAnalysisId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var analysisId:Int? // @DataMember(Order=3) public var eventSourceId:Int? // @DataMember(Order=4) public var eventId:Int? // @DataMember(Order=5) public var rowIdentifier:String? required public init(){} } // @DataContract public class MessageTracking : Codable { // @DataMember(Order=1) public var id:String? // @DataMember(Order=2) public var analysisId:Int? // @DataMember(Order=3) public var processingStatus:ProcessingStatus? // @DataMember(Order=4) public var messageType:MessageType? // @DataMember(Order=5) public var createdDateUtc:Date? // @DataMember(Order=6) public var updatedDateUtc:Date? required public init(){} } public protocol IHasAnalysisId { var analysisId:Int? { get set } } public class AnalysisPortfolioEventSetConfiguration : IObjectWithId, IHasAnalysisId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var analysisId:Int? // @DataMember(Order=3) public var analysisConfigurationId:Int? // @DataMember(Order=4) public var portfolioName:String? // @DataMember(Order=5) public var modelId:String? // @DataMember(Order=6) public var rowIdentifier:String? required public init(){} } public enum TransactionType : String, Codable { case NotSet case S case B } // @DataContract public class AnalysisPortfolioAllocation : IObjectWithId, Codable { // @DataMember(Order=1) public var id:Int? // @DataMember(Order=2) public var analysisDealId:Int? // @DataMember(Order=3) // @Validate(Validator="NotEmpty", Message="PortfolioName is mandatory") public var portfolioName:String? // @DataMember(Order=4) public var allocationPercentage:Double? // @DataMember(Order=5) public var rowIdentifier:String? required public init(){} } public enum MessageType : String, Codable { case NotSet case Persistence case Archival }