| Requires any of the roles: | Riskstore.Write, Riskstore.Admin |
| POST | /api/riskstore/rollup/reprocess | Process an existing analysis that is not been run or failed to run | Process an existing analysis that is not been run or failed to run |
|---|
namespace Nephila.RiskStore.ServiceModel
open System
open System.IO
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations
type ResultOutputLevel =
| NotSet = 0
| PortfolioMetrics = 1
| Curve = 2
| YLT = 3
| TailIntensity = 4
| DealYlt = 5
| DealElt = 6
| DealEltWithIndustryLoss = 7
| PortfolioElt = 8
| PortfolioEltWithIndustryLoss = 9
| EventSetGeneration = 10
| PortfolioRaps = 11
| DealRaps = 12
| PortfolioSepyIndustryLoss = 13
| DealSepyIndustryLoss = 14
type ProcessingStatus =
| New = 0
| Processing = 1
| Failed = 10
| Successful = 20
[<AllowNullLiteral>]
type AnalysisPortfolioEventSetConfiguration() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val AnalysisConfigurationId:Int64 = new Int64() with get,set
[<DataMember(Order=4)>]
member val PortfolioName:String = null with get,set
[<DataMember(Order=5)>]
member val ModelId:String = null with get,set
[<DataMember(Order=6)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type AnalysisConfiguration() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val WindowStartDate:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Order=4)>]
member val WindowEndDate:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Order=5)>]
member val StandardEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=6)>]
member val RunOffEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=7)>]
member val AggregateEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=8)>]
member val OccurrenceEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=9)>]
member val NettEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=10)>]
member val GrossEnabled:Boolean = new Boolean() with get,set
[<DataMember(Order=11)>]
member val TailIntensityPercentageStart:Nullable<Decimal> = new Nullable<Decimal>() with get,set
[<DataMember(Order=12)>]
member val TailIntensityPercentageEnd:Nullable<Decimal> = new Nullable<Decimal>() with get,set
[<DataMember(Order=13)>]
member val MetaRiskId:Int32 = new Int32() with get,set
[<DataMember(Order=14)>]
member val OutputLevel:ResultOutputLevel = new ResultOutputLevel() with get,set
[<DataMember(Order=15)>]
member val ProcessingStatus:ProcessingStatus = new ProcessingStatus() with get,set
[<DataMember(Order=16)>]
member val EventLossFloorStartRange:Nullable<Decimal> = new Nullable<Decimal>() with get,set
[<DataMember(Order=17)>]
member val EventLossFloorEndRange:Nullable<Decimal> = new Nullable<Decimal>() with get,set
[<DataMember(Order=18)>]
member val AnalysisPortfolioEventSetConfigurations:ResizeArray<AnalysisPortfolioEventSetConfiguration> = null with get,set
[<DataMember(Order=19)>]
member val RowIdentifier:Guid = new Guid() with get,set
type TransactionType =
| NotSet = 0
| S = 1
| B = 2
[<DataContract>]
[<AllowNullLiteral>]
type AnalysisPortfolioAllocation() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisDealId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
[<Validate(Validator="NotEmpty", Message="PortfolioName is mandatory")>]
member val PortfolioName:String = null with get,set
[<DataMember(Order=4)>]
member val AllocationPercentage:Double = new Double() with get,set
[<DataMember(Order=5)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type AnalysisDeal() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val SourceDealId:String = null with get,set
[<DataMember(Order=4)>]
member val DealRef:String = null with get,set
[<DataMember(Order=5)>]
member val SourceDealSystem:String = null with get,set
[<DataMember(Order=6)>]
member val EventSetId:Int64 = new Int64() with get,set
[<DataMember(Order=7)>]
member val ROL:Double = new Double() with get,set
[<DataMember(Order=8)>]
member val Limit:Double = new Double() with get,set
[<DataMember(Order=9)>]
member val InceptionDate:DateTime = new DateTime() with get,set
[<DataMember(Order=10)>]
member val ExpiryDate:DateTime = new DateTime() with get,set
[<DataMember(Order=11)>]
member val TransactionType:TransactionType = new TransactionType() with get,set
[<DataMember(Order=12)>]
member val Allocations:ResizeArray<AnalysisPortfolioAllocation> = null with get,set
[<DataMember(Order=13)>]
member val PerspectiveIdOverride:Nullable<Int32> = new Nullable<Int32>() with get,set
[<DataMember(Order=14)>]
member val EventSetIdOverride:Nullable<Int64> = new Nullable<Int64>() with get,set
[<DataMember(Order=15)>]
member val ModelAsOfDateOverride:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Order=16)>]
member val SourceModelSystemOverride:String = null with get,set
[<DataMember(Order=17)>]
member val SourceModelIdOverride:String = null with get,set
[<DataMember(Order=18)>]
member val SourceEventSetIdOverride:String = null with get,set
[<DataMember(Order=19)>]
member val EventSourceSystemOverride:String = null with get,set
[<DataMember(Order=20)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type AnalysisEventIdFilter() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val EventSourceId:Int32 = new Int32() with get,set
[<DataMember(Order=4)>]
member val EventId:Int64 = new Int64() with get,set
[<DataMember(Order=5)>]
member val RowIdentifier:Guid = new Guid() with get,set
type MessageType =
| NotSet = 0
| Persistence = 1
| Archival = 2
[<DataContract>]
[<AllowNullLiteral>]
type MessageTracking() =
[<DataMember(Order=1)>]
member val Id:Guid = new Guid() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Nullable<Int64> = new Nullable<Int64>() with get,set
[<DataMember(Order=3)>]
member val ProcessingStatus:ProcessingStatus = new ProcessingStatus() with get,set
[<DataMember(Order=4)>]
member val MessageType:MessageType = new MessageType() with get,set
[<DataMember(Order=5)>]
member val CreatedDateUtc:DateTime = new DateTime() with get,set
[<DataMember(Order=6)>]
member val UpdatedDateUtc:DateTime = new DateTime() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type Analysis() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val Name:String = null with get,set
[<DataMember(Order=3)>]
member val ModelAsOfDate:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Order=4)>]
member val PerspectiveId:Int32 = new Int32() with get,set
[<DataMember(Order=5)>]
member val Configurations:ResizeArray<AnalysisConfiguration> = null with get,set
[<DataMember(Order=6)>]
member val Deals:ResizeArray<AnalysisDeal> = null with get,set
[<DataMember(Order=7)>]
member val EventIdFilters:ResizeArray<AnalysisEventIdFilter> = null with get,set
[<DataMember(Order=8)>]
member val CreatedBy:String = null with get,set
[<DataMember(Order=9)>]
member val CreatedDateUtc:DateTime = new DateTime() with get,set
[<DataMember(Order=10)>]
member val CompletedDateUtc:Nullable<DateTime> = new Nullable<DateTime>() with get,set
[<DataMember(Order=11)>]
member val LegacyAnalysisId:Nullable<Int64> = new Nullable<Int64>() with get,set
[<DataMember(Order=12)>]
member val ResultPersistenceTracking:ResizeArray<MessageTracking> = null with get,set
[<DataMember(Order=13)>]
member val ProcessingStatus:ProcessingStatus = new ProcessingStatus() with get,set
[<DataMember(Order=14)>]
member val SaveResults:Boolean = new Boolean() with get,set
[<DataMember(Order=15)>]
member val EventSourceSystem:String = null with get,set
[<DataMember(Order=16)>]
member val UpdatedDateUtc:DateTime = new DateTime() with get,set
[<DataMember(Order=17)>]
member val IsExpired:Boolean = new Boolean() with get,set
[<DataMember(Order=18)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<DataMember(Order=19)>]
member val ErrorMessage:String = null with get,set
///<summary>
///Take the minimum simulation count when we have different simulations between event sets
///</summary>
[<DataMember(Order=20)>]
[<ApiMember(DataType="boolean", Description="Take the minimum simulation count when we have different simulations between event sets")>]
member val IgnoreSimulationCountMismatch:Boolean = new Boolean() with get,set
[<DataMember(Order=21)>]
[<Ignore>]
member val FinalStatus:ProcessingStatus = new ProcessingStatus() with get,set
type AnalysisType =
| NotSet = 0
| Standard = 1
| RunOff = 2
type SimulationLossPerspective =
| NotSet = 0
| Agg = 1
| Occ = 2
type ReinsurancePremiumLossType =
| NotSet = 0
| Net = 1
| Gross = 2
[<AllowNullLiteral>]
type AnalysisPortfolioMetric() =
member val AnalysisType:AnalysisType = new AnalysisType() with get,set
member val SimulationLossPerspective:SimulationLossPerspective = new SimulationLossPerspective() with get,set
member val ReinsurancePremiumLossType:ReinsurancePremiumLossType = new ReinsurancePremiumLossType() with get,set
member val MetricDescription:String = null with get,set
member val PortfolioName:String = null with get,set
member val Metric:Double = new Double() with get,set
member val MetaRiskId:Int32 = new Int32() with get,set
member val Simulation:Nullable<Int32> = new Nullable<Int32>() with get,set
member val AnalysisResultId:Int64 = new Int64() with get,set
[<AllowNullLiteral>]
type AnalysisPortfolioEventSetResult() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val AnalysisPortfolioEventSetConfigurationId:Int64 = new Int64() with get,set
[<DataMember(Order=4)>]
member val AnalysisResultId:Int64 = new Int64() with get,set
[<DataMember(Order=5)>]
member val PortfolioName:String = null with get,set
[<DataMember(Order=6)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<DataContract>]
[<AllowNullLiteral>]
type AnalysisResult() =
[<DataMember(Order=1)>]
member val Id:Int64 = new Int64() with get,set
[<DataMember(Order=2)>]
member val AnalysisId:Int64 = new Int64() with get,set
[<DataMember(Order=3)>]
member val AnalysisConfigurationId:Int64 = new Int64() with get,set
[<DataMember(Order=4)>]
member val Container:String = null with get,set
[<DataMember(Order=5)>]
member val BlobName:String = null with get,set
[<DataMember(Order=6)>]
member val ResultTableName:String = null with get,set
[<DataMember(Order=7)>]
member val AnalysisType:AnalysisType = new AnalysisType() with get,set
[<DataMember(Order=8)>]
member val SimulationLossPerspective:SimulationLossPerspective = new SimulationLossPerspective() with get,set
[<DataMember(Order=9)>]
member val ReinsurancePremiumLossType:ReinsurancePremiumLossType = new ReinsurancePremiumLossType() with get,set
[<DataMember(Order=10)>]
member val OutputLevel:ResultOutputLevel = new ResultOutputLevel() with get,set
[<DataMember(Order=11)>]
member val MetaRiskId:Int32 = new Int32() with get,set
[<DataMember(Order=12)>]
member val AnalysisPortfolioEventSetResults:ResizeArray<AnalysisPortfolioEventSetResult> = null with get,set
[<DataMember(Order=13)>]
member val RowIdentifier:Guid = new Guid() with get,set
[<AllowNullLiteral>]
type RollupResponse() =
member val Analysis:Analysis = null with get,set
member val PortfolioMetrics:ResizeArray<AnalysisPortfolioMetric> = null with get,set
member val Results:ResizeArray<AnalysisResult> = null with get,set
member val ResponseStatus:ResponseStatus = null with get,set
member val UnresolvedDealIds:ResizeArray<String> = null with get,set
member val UnlinkedDealIds:ResizeArray<ValueTuple<String,String>> = null with get,set
member val Message:String = null with get,set
[<AllowNullLiteral>]
type ReProcessAnalysisRequest() =
interface IPost
///<summary>
///The analysis id to run
///</summary>
[<ApiMember(DataType="integer", Description="The analysis id to run", Format="int64", IsRequired=true)>]
member val AnalysisId:Int64 = new Int64() with get,set
///<summary>
///Pass true when the analysis is still in processing state and you know it will not finish
///</summary>
[<ApiMember(DataType="boolean", Description="Pass true when the analysis is still in processing state and you know it will not finish")>]
member val ForceRerunWhenProcessing:Boolean = new Boolean() with get,set
///<summary>
///Pass true to make sure the analysis results are not removed
///</summary>
[<ApiMember(DataType="boolean", Description="Pass true to make sure the analysis results are not removed")>]
member val PermanentlySaveResults:Boolean = new Boolean() with get,set
///<summary>
///Take the minimum simulation count when we have different simulations between event sets
///</summary>
[<ApiMember(DataType="boolean", Description="Take the minimum simulation count when we have different simulations between event sets")>]
member val IgnoreSimulationCountMismatch:Boolean = new Boolean() with get,set
F# ReProcessAnalysisRequest DTOs
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.
POST /api/riskstore/rollup/reprocess HTTP/1.1
Host: riskstoreng-dev.nephila.com
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
analysisId: 0,
forceRerunWhenProcessing: False,
permanentlySaveResults: False,
ignoreSimulationCountMismatch: False
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
analysis:
{
id: 0,
name: String,
modelAsOfDate: 0001-01-01,
perspectiveId: 0,
configurations:
[
{
id: 0,
analysisId: 0,
windowStartDate: 0001-01-01,
windowEndDate: 0001-01-01,
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-01,
expiryDate: 0001-01-01,
transactionType: NotSet,
allocations:
[
{
id: 0,
analysisDealId: 0,
portfolioName: String,
allocationPercentage: 0,
rowIdentifier: 00000000000000000000000000000000
}
],
perspectiveIdOverride: 0,
eventSetIdOverride: 0,
modelAsOfDateOverride: 0001-01-01,
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-01,
completedDateUtc: 0001-01-01,
legacyAnalysisId: 0,
resultPersistenceTracking:
[
{
id: 00000000000000000000000000000000,
analysisId: 0,
processingStatus: New,
messageType: NotSet,
createdDateUtc: 0001-01-01,
updatedDateUtc: 0001-01-01
}
],
processingStatus: New,
saveResults: False,
eventSourceSystem: String,
updatedDateUtc: 0001-01-01,
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:
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
},
unresolvedDealIds:
[
String
],
unlinkedDealIds:
[
"(, )"
],
message: String
}