Nephila RiskStore

<back to all web services

RollupRequest

General
Requires Authentication
Requires any of the roles:Riskstore.Write, Riskstore.Admin
The following routes are available for this service:
POST/api/riskstore/rollupRollup RequestRollup Request
import Foundation
import ServiceStack

// @DataContract
public class RollupRequest : IPost, IHasVersion, Codable
{
    // @DataMember(Order=1)
    // @ApiMember(IsRequired=true)
    public var analysis:Analysis

    // @DataMember(Order=2)
    // @ApiMember()
    public var version:Int

    required public init(){}
}

// @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
}

public class RollupResponse : Codable
{
    public var analysis:Analysis
    public var portfolioMetrics:[AnalysisPortfolioMetric]
    public var results:[AnalysisResult]
    public var responseStatus:ResponseStatus
    public var unresolvedDealIds:[String]
    public var unlinkedDealIds:[ValueTuple<String,String>]
    public var message:String

    required public init(){}
}

public class AnalysisPortfolioMetric : IHasAnalysisResultId, Codable
{
    public var analysisType:AnalysisType
    public var simulationLossPerspective:SimulationLossPerspective
    public var reinsurancePremiumLossType:ReinsurancePremiumLossType
    public var metricDescription:String
    public var portfolioName:String
    public var metric:Double
    public var metaRiskId:Int
    public var simulation:Int?
    public var analysisResultId:Int

    required public init(){}
}

public enum AnalysisType : String, Codable
{
    case NotSet
    case Standard
    case RunOff
}

public enum SimulationLossPerspective : String, Codable
{
    case NotSet
    case Agg
    case Occ
}

public enum ReinsurancePremiumLossType : String, Codable
{
    case NotSet
    case Net
    case Gross
}

// @DataContract
public class AnalysisResult : IObjectWithId, 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 container:String

    // @DataMember(Order=5)
    public var blobName:String

    // @DataMember(Order=6)
    public var resultTableName:String

    // @DataMember(Order=7)
    public var analysisType:AnalysisType

    // @DataMember(Order=8)
    public var simulationLossPerspective:SimulationLossPerspective

    // @DataMember(Order=9)
    public var reinsurancePremiumLossType:ReinsurancePremiumLossType

    // @DataMember(Order=10)
    public var outputLevel:ResultOutputLevel

    // @DataMember(Order=11)
    public var metaRiskId:Int

    // @DataMember(Order=12)
    public var analysisPortfolioEventSetResults:[AnalysisPortfolioEventSetResult]

    // @DataMember(Order=13)
    public var rowIdentifier:String

    required public init(){}
}

public class AnalysisPortfolioEventSetResult : IObjectWithId, IHasAnalysisId, Codable
{
    // @DataMember(Order=1)
    public var id:Int

    // @DataMember(Order=2)
    public var analysisId:Int

    // @DataMember(Order=3)
    public var analysisPortfolioEventSetConfigurationId:Int

    // @DataMember(Order=4)
    public var analysisResultId:Int

    // @DataMember(Order=5)
    public var portfolioName:String

    // @DataMember(Order=6)
    public var rowIdentifier:String

    required public init(){}
}


Swift RollupRequest 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.

POST /api/riskstore/rollup HTTP/1.1 
Host: riskstoreng-dev.nephila.com 
Accept: text/csv
Content-Type: text/csv
Content-Length: length

{"analysis":{"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"},"version":0}
HTTP/1.1 200 OK
Content-Type: text/csv
Content-Length: length

{"analysis":{"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"},"portfolioMetrics":[{"analysisType":"NotSet","simulationLossPerspective":"NotSet","reinsurancePremiumLossType":"NotSet","metricDescription":"String","portfolioName":"String","metric":0,"metaRiskId":0,"simulation":0,"analysisResultId":0}],"results":[{"id":0,"analysisId":0,"analysisConfigurationId":0,"container":"String","blobName":"String","resultTableName":"String","analysisType":"NotSet","simulationLossPerspective":"NotSet","reinsurancePremiumLossType":"NotSet","outputLevel":"NotSet","metaRiskId":0,"analysisPortfolioEventSetResults":[{"id":0,"analysisId":0,"analysisPortfolioEventSetConfigurationId":0,"analysisResultId":0,"portfolioName":"String","rowIdentifier":"00000000000000000000000000000000"}],"rowIdentifier":"00000000000000000000000000000000"}],"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"}},"unresolvedDealIds":["String"],"unlinkedDealIds":["(, )"],"message":"String"}