| Requires any of the roles: | Riskstore.Write, Riskstore.Admin |
| POST | /api/riskstore/rollup | Rollup Request | Rollup 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(){}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .json suffix or ?format=json
To embed the response in a jsonp callback, append ?callback=myCallback
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: application/json
Content-Type: application/json
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: application/json
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"}