Nephila RiskStore

<back to all web services

FindAnalysisRequest

General
Requires Authentication
Requires any of the roles:Riskstore.Write, Riskstore.Admin
The following routes are available for this service:
GET/api/riskstore/analysisSearch for analyses
import Foundation
import ServiceStack

public class FindAnalysisRequest : QueryDb<Analysis>
{
    /**
    * 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) }
    }
}

// @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(){}
}

// @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(){}
}

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 enum ProcessingStatus : Int, Codable
{
    case New = 0
    case Processing = 1
    case Failed = 10
    case Successful = 20
}

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(){}
}

// @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(){}
}

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(){}
}

// @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 enum MessageType : String, Codable
{
    case NotSet
    case Persistence
    case Archival
}


Swift FindAnalysisRequest DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .csv suffix or ?format=csv

HTTP + CSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

GET /api/riskstore/analysis HTTP/1.1 
Host: riskstoreng-dev.nephila.com 
Accept: text/csv
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"offset":0,"total":0,"results":[{"id":0,"name":"String","modelAsOfDate":"0001-01-01T00:00:00.0000000Z","perspectiveId":0,"configurations":[{"id":0,"analysisId":0,"windowStartDate":"0001-01-01T00:00:00.0000000Z","windowEndDate":"0001-01-01T00:00:00.0000000Z","standardEnabled":false,"runOffEnabled":false,"aggregateEnabled":false,"occurrenceEnabled":false,"nettEnabled":false,"grossEnabled":false,"tailIntensityPercentageStart":0,"tailIntensityPercentageEnd":0,"metaRiskId":0,"outputLevel":"NotSet","processingStatus":"New","eventLossFloorStartRange":0,"eventLossFloorEndRange":0,"analysisPortfolioEventSetConfigurations":[{"id":0,"analysisId":0,"analysisConfigurationId":0,"portfolioName":"String","modelId":"String","rowIdentifier":"00000000000000000000000000000000"}],"rowIdentifier":"00000000000000000000000000000000"}],"deals":[{"id":0,"analysisId":0,"sourceDealId":"String","dealRef":"String","sourceDealSystem":"String","eventSetId":0,"rol":0,"limit":0,"inceptionDate":"0001-01-01T00:00:00.0000000Z","expiryDate":"0001-01-01T00:00:00.0000000Z","transactionType":"NotSet","allocations":[{"id":0,"analysisDealId":0,"portfolioName":"String","allocationPercentage":0,"rowIdentifier":"00000000000000000000000000000000"}],"perspectiveIdOverride":0,"eventSetIdOverride":0,"modelAsOfDateOverride":"0001-01-01T00:00:00.0000000Z","sourceModelSystemOverride":"String","sourceModelIdOverride":"String","sourceEventSetIdOverride":"String","eventSourceSystemOverride":"String","rowIdentifier":"00000000000000000000000000000000"}],"eventIdFilters":[{"id":0,"analysisId":0,"eventSourceId":0,"eventId":0,"rowIdentifier":"00000000000000000000000000000000"}],"createdBy":"String","createdDateUtc":"0001-01-01T00:00:00.0000000Z","completedDateUtc":"0001-01-01T00:00:00.0000000Z","legacyAnalysisId":0,"resultPersistenceTracking":[{"id":"00000000000000000000000000000000","analysisId":0,"processingStatus":"New","messageType":"NotSet","createdDateUtc":"0001-01-01T00:00:00.0000000Z","updatedDateUtc":"0001-01-01T00:00:00.0000000Z"}],"processingStatus":"New","saveResults":false,"eventSourceSystem":"String","updatedDateUtc":"0001-01-01T00:00:00.0000000Z","isExpired":false,"rowIdentifier":"00000000000000000000000000000000","errorMessage":"String","ignoreSimulationCountMismatch":false,"finalStatus":"New"}],"meta":{"String":"String"},"responseStatus":{"__type":"ServiceStack.ResponseStatus, ServiceStack.Interfaces","errorCode":"String","message":"String","stackTrace":"String","errors":[{"__type":"ServiceStack.ResponseError, ServiceStack.Interfaces","errorCode":"String","fieldName":"String","message":"String","meta":{"String":"String"}}],"meta":{"String":"String"}}}