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
import Foundation
import ServiceStack

public class ReProcessAnalysisRequest : IPost, Codable
{
    /**
    * The analysis id to run
    */
    // @ApiMember(DataType="integer", Description="The analysis id to run", Format="int64", IsRequired=true)
    public var analysisId:Int

    /**
    * Pass true when the analysis is still in processing state and you know it will not finish
    */
    // @ApiMember(DataType="boolean", Description="Pass true when the analysis is still in processing state and you know it will not finish")
    public var forceRerunWhenProcessing:Bool

    /**
    * Pass true to make sure the analysis results are not removed
    */
    // @ApiMember(DataType="boolean", Description="Pass true to make sure the analysis results are not removed")
    public var permanentlySaveResults:Bool

    /**
    * Take the minimum simulation count when we have different simulations between event sets
    */
    // @ApiMember(DataType="boolean", Description="Take the minimum simulation count when we have different simulations between event sets")
    public var ignoreSimulationCountMismatch:Bool

    required public init(){}
}

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(){}
}

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