Nephila RiskStore

<back to all web services

ReProcessAnalysisRequest

General
Requires Authentication
Requires any of the roles:Riskstore.Write, Riskstore.Admin
The following routes are available for this service:
POST/api/riskstore/rollup/reprocessProcess an existing analysis that is not been run or failed to runProcess 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

HTTP + 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
}