Nephila RiskStore

<back to all web services

SaveAnalysisResultsRequest

General
Requires Authentication
Requires any of the roles:Riskstore.Write, Riskstore.Admin
The following routes are available for this service:
POST/api/riskstore/rollup/save-rollup-resultsMark an existing analysis as final (save results), it will re-run it if expiredMark an existing analysis as final (save results), it will re-run it if expired
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 SaveAnalysisResultsRequest() = 
        interface IPost
        ///<summary>
        ///The analysis id to mark as final
        ///</summary>
        [<ApiMember(DataType="integer", Description="The analysis id to mark as final", Format="int64", IsRequired=true)>]
        member val AnalysisId:Int64 = new Int64() with get,set

F# SaveAnalysisResultsRequest 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/save-rollup-results HTTP/1.1 
Host: riskstoreng-dev.nephila.com 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	analysisId: 0
}
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
}