AlbaApi

<back to all web services

ClientCountryConfigValidateReq

The following routes are available for this service:
POST/clientcountryconfig/validate
namespace CalcEngineApi.ServiceModel

open System
open System.Collections
open System.Collections.Generic
open System.Runtime.Serialization
open ServiceStack
open ServiceStack.DataAnnotations

    [<AllowNullLiteral>]
    type Entity() = 
        member val Id:String = null with get,set

    [<AllowNullLiteral>]
    type DatedEntity() = 
        inherit Entity()
        member val AsAt:DateTime = new DateTime() with get,set

    type DataSource =
        | Db = 0
        | Cache = 1
        | Parameter = 2
        | NA = 3

    [<AllowNullLiteral>]
    type DataSourceResult() = 
        member val D:DataSource = new DataSource() with get,set
        member val T:Int64 = new Int64() with get,set

    type Gender =
        | Female = 0
        | Male = 1
        | Other = 2

    [<AllowNullLiteral>]
    type LifeTableName() = 
        member val Name:String = null with get,set
        member val Gender:Gender = new Gender() with get,set

    type AnnuityPriceType =
        | Calc = 0
        | Table = 1

    [<AllowNullLiteral>]
    type AnnuityConfig() = 
        member val TableNames:ResizeArray<LifeTableName> = new ResizeArray<LifeTableName>() with get,set
        member val ImprFactorTableNames:ResizeArray<LifeTableName> = new ResizeArray<LifeTableName>() with get,set
        member val Reversion:Nullable<Double> = new Nullable<Double>() with get,set
        member val Guarantee:Nullable<Double> = new Nullable<Double>() with get,set
        member val Timing:Nullable<Double> = new Nullable<Double>() with get,set
        member val AllowDiscountPreRet:Nullable<Boolean> = new Nullable<Boolean>() with get,set
        member val ScaleQx:Nullable<Double> = new Nullable<Double>() with get,set
        member val ScaleImpr:Nullable<Double> = new Nullable<Double>() with get,set
        member val AgeRating:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val SpouseAgeRating:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Expense:Nullable<Double> = new Nullable<Double>() with get,set
        member val PercBalanceSpent:Nullable<Double> = new Nullable<Double>() with get,set
        member val AmountSpent:Nullable<Double> = new Nullable<Double>() with get,set
        member val IncomePurchased:Nullable<Double> = new Nullable<Double>() with get,set
        member val DeferralPeriod:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val IndexationName:String = null with get,set
        member val DRStochastic:String = null with get,set
        member val ImpliedInflationStochasticSeries:String = null with get,set
        member val TargetTpx:Nullable<Double> = new Nullable<Double>() with get,set
        member val PriceType:AnnuityPriceType = new AnnuityPriceType() with get,set
        member val Price:Double = new Double() with get,set

    type ContributionType =
        | Fixed = 0
        | Time = 1
        | Lookup = 2
        | Match = 3

    [<AllowNullLiteral>]
    type ContributionConstraint() = 
        member val FromAge:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val ToAge:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Min:Nullable<Double> = new Nullable<Double>() with get,set
        member val Max:Nullable<Double> = new Nullable<Double>() with get,set
        member val Step:Nullable<Double> = new Nullable<Double>() with get,set

    type AmountType =
        | Any = 0
        | Amount = 1
        | Rate = 2

    [<AllowNullLiteral>]
    type ContributionSpec() = 
        member val Code:String = null with get,set
        member val Name:String = null with get,set
        member val Type:ContributionType = new ContributionType() with get,set
        member val IsEmployeeCont:Boolean = new Boolean() with get,set
        member val Table:String = null with get,set
        member val Ccy:String = null with get,set
        member val FromAge:Int32 = new Int32() with get,set
        member val ToAge:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val IndexationType:String = null with get,set
        member val SalaryType:String = null with get,set
        member val IsTaxable:Boolean = new Boolean() with get,set
        member val RelatedRate:String = null with get,set
        member val Order:Int32 = new Int32() with get,set
        member val Editable:Boolean = new Boolean() with get,set
        member val Constraints:ResizeArray<ContributionConstraint> = new ResizeArray<ContributionConstraint>() with get,set
        member val AmountType:AmountType = new AmountType() with get,set
        member val IsOneOff:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type AssetConfig() = 
        member val Code:String = null with get,set
        member val Name:String = null with get,set
        member val Rebalance:Boolean = new Boolean() with get,set
        member val CanEditInvestmentChoice:Boolean = new Boolean() with get,set
        member val WillSpend:Boolean = new Boolean() with get,set
        member val Investments:ResizeArray<String> = new ResizeArray<String>() with get,set
        member val Contributions:ResizeArray<ContributionSpec> = new ResizeArray<ContributionSpec>() with get,set
        member val IsOneOff:Boolean = new Boolean() with get,set

    [<AllowNullLiteral>]
    type ContributionRateSpec() = 
        member val FromAge:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val ToAge:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val FromService:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val ToService:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val SourceRate:Nullable<Double> = new Nullable<Double>() with get,set
        member val DateFrom:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val DateTo:Nullable<DateTime> = new Nullable<DateTime>() with get,set
        member val UpperLimit:Nullable<Double> = new Nullable<Double>() with get,set
        member val Rate:Double = new Double() with get,set
        member val CoreRate:Double = new Double() with get,set
        member val LookupKey:String = null with get,set

    [<AllowNullLiteral>]
    type ContributionTableSpec() = 
        member val Code:String = null with get,set
        member val Type:ContributionType = new ContributionType() with get,set
        member val Rates:Dictionary<String, Double> = new Dictionary<String, Double>() with get,set
        member val RateSpecs:ResizeArray<ContributionRateSpec> = new ResizeArray<ContributionRateSpec>() with get,set
        member val KeyTemplate:String = null with get,set

    [<AllowNullLiteral>]
    type InvestmentProductAllocationsSpec() = 
        member val FromAge:Int32 = new Int32() with get,set
        member val Term:Nullable<Int32> = new Nullable<Int32>() with get,set
        member val Allocs:Dictionary<String, Double> = new Dictionary<String, Double>() with get,set
        member val TotalAlloc:Double = new Double() with get,set

    [<AllowNullLiteral>]
    type InvestmentProduct() = 
        member val Code:String = null with get,set
        member val Name:String = null with get,set
        member val Group:String = null with get,set
        member val IsAssetClassFund:Boolean = new Boolean() with get,set
        member val Allocs:ResizeArray<InvestmentProductAllocationsSpec> = new ResizeArray<InvestmentProductAllocationsSpec>() with get,set
        member val Order:Int32 = new Int32() with get,set
        member val AllocationsDictionary:Dictionary<Int32, Dictionary<String,Double>> = new Dictionary<Int32, Dictionary<String,Double>>() with get,set

    [<AllowNullLiteral>]
    type ReturnRates() = 
        member val EarningRates:ResizeArray<Double> = new ResizeArray<Double>() with get,set
        member val TaxRates:ResizeArray<Double> = new ResizeArray<Double>() with get,set

    [<AllowNullLiteral>]
    type ClientCountryConfig() = 
        inherit DatedEntity()
        member val ClientCode:String = null with get,set
        member val ClientName:String = null with get,set
        member val CountryCode:String = null with get,set
        member val Source:DataSourceResult = null with get,set
        member val AgeRMin:Int32 = new Int32() with get,set
        member val AgeRMax:Int32 = new Int32() with get,set
        member val PrimarySalary:String = null with get,set
        member val AnnuityConfig:AnnuityConfig = null with get,set
        member val Assets:ResizeArray<AssetConfig> = new ResizeArray<AssetConfig>() with get,set
        member val ContTables:ResizeArray<ContributionTableSpec> = new ResizeArray<ContributionTableSpec>() with get,set
        member val Investments:ResizeArray<InvestmentProduct> = new ResizeArray<InvestmentProduct>() with get,set
        member val Content:Dictionary<String, List<Content>> = new Dictionary<String, List<Content>>() with get,set
        member val Environments:Dictionary<String, String> = new Dictionary<String, String>() with get,set
        member val CustomNumericConstraints:Dictionary<String, Constraint<Decimal>> = new Dictionary<String, Constraint<Decimal>>() with get,set
        member val AssetReturnRates:Dictionary<String, ReturnRates> = new Dictionary<String, ReturnRates>() with get,set
        member val InvestmentPropertyRates:Double = new Double() with get,set
        member val GetAssetClassFundDictionary:Dictionary<String, Boolean> = new Dictionary<String, Boolean>() with get,set
        member val GetTermBasedFundDictionary:Dictionary<String, Boolean> = new Dictionary<String, Boolean>() with get,set
        member val GetAllocationsDictionary:Dictionary<String, Dictionary<Int32,Dictionary<String,Double>>> = new Dictionary<String, Dictionary<Int32,Dictionary<String,Double>>>() with get,set
        member val AssetNameMap:Dictionary<String, String> = new Dictionary<String, String>() with get,set
        member val AssetContNameMap:Dictionary<String, Dictionary<String,String>> = new Dictionary<String, Dictionary<String,String>>() with get,set
        member val CacheKey:String = null with get,set

    [<AllowNullLiteral>]
    type ClientCountryConfigValidateReq() = 
        member val Config:ClientCountryConfig = null with get,set

F# ClientCountryConfigValidateReq DTOs

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

HTTP + JSON

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /clientcountryconfig/validate HTTP/1.1 
Host: hcbtas-q-albamfs-api.azurewebsites.net 
Accept: application/json
Content-Type: application/json
Content-Length: length

{"config":{"clientCode":"String","clientName":"String","countryCode":"String","source":{"d":"Db","t":0},"ageRMin":0,"ageRMax":0,"primarySalary":"String","annuityConfig":{"tableNames":[{"name":"String","gender":"Female"}],"imprFactorTableNames":[{"name":"String","gender":"Female"}],"reversion":0,"guarantee":0,"timing":0,"allowDiscountPreRet":false,"scaleQx":0,"scaleImpr":0,"ageRating":0,"spouseAgeRating":0,"expense":0,"percBalanceSpent":0,"amountSpent":0,"incomePurchased":0,"deferralPeriod":0,"indexationName":"String","drStochastic":"String","impliedInflationStochasticSeries":"String","targetTpx":0,"priceType":"Calc","price":0},"assets":[{"code":"String","name":"String","rebalance":false,"canEditInvestmentChoice":false,"willSpend":false,"investments":["String"],"contributions":[{"code":"String","name":"String","type":"Fixed","isEmployeeCont":false,"table":"String","ccy":"String","fromAge":0,"toAge":0,"indexationType":"String","salaryType":"String","isTaxable":false,"relatedRate":"String","order":0,"editable":false,"constraints":[{"fromAge":0,"toAge":0,"min":0,"max":0,"step":0}],"amountType":"Any","isOneOff":false}],"isOneOff":false}],"contTables":[{"code":"String","type":"Fixed","rates":{"String":0},"rateSpecs":[{"fromAge":0,"toAge":0,"fromService":0,"toService":0,"sourceRate":0,"dateFrom":"0001-01-01T00:00:00.0000000","dateTo":"0001-01-01T00:00:00.0000000","upperLimit":0,"rate":0,"coreRate":0,"lookupKey":"String"}],"keyTemplate":"age-service-rate"}],"investments":[{"code":"String","name":"String","group":"String","isAssetClassFund":false,"allocs":[{"fromAge":0,"term":0,"allocs":{"String":0},"totalAlloc":0}],"order":0,"allocationsDictionary":{"0":{}}}],"content":{"String":[{"section":"String","itemId":"String","itemCode":"String","country":"String","lang":"String","app":"String","companyId":"String","company":"String","elements":{"String":"String"},"id":"String"}]},"environments":{"String":"String"},"customNumericConstraints":{"String":{"min":0,"max":0,"step":0}},"assetReturnRates":{"String":{"earningRates":[0],"taxRates":[0]}},"investmentPropertyRates":0,"getAssetClassFundDictionary":{"String":false},"getTermBasedFundDictionary":{"String":true},"getAllocationsDictionary":{"String":{"0":{}}},"assetNameMap":{"String":"String"},"assetContNameMap":{"String":{"String":"String"}},"cacheKey":"ClientCountryConfig-String-String","asAt":"0001-01-01T00:00:00.0000000","id":"String"}}
HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: length

{"clientCode":"String","clientName":"String","countryCode":"String","source":{"d":"Db","t":0},"ageRMin":0,"ageRMax":0,"primarySalary":"String","annuityConfig":{"tableNames":[{"name":"String","gender":"Female"}],"imprFactorTableNames":[{"name":"String","gender":"Female"}],"reversion":0,"guarantee":0,"timing":0,"allowDiscountPreRet":false,"scaleQx":0,"scaleImpr":0,"ageRating":0,"spouseAgeRating":0,"expense":0,"percBalanceSpent":0,"amountSpent":0,"incomePurchased":0,"deferralPeriod":0,"indexationName":"String","drStochastic":"String","impliedInflationStochasticSeries":"String","targetTpx":0,"priceType":"Calc","price":0},"assets":[{"code":"String","name":"String","rebalance":false,"canEditInvestmentChoice":false,"willSpend":false,"investments":["String"],"contributions":[{"code":"String","name":"String","type":"Fixed","isEmployeeCont":false,"table":"String","ccy":"String","fromAge":0,"toAge":0,"indexationType":"String","salaryType":"String","isTaxable":false,"relatedRate":"String","order":0,"editable":false,"constraints":[{"fromAge":0,"toAge":0,"min":0,"max":0,"step":0}],"amountType":"Any","isOneOff":false}],"isOneOff":false}],"contTables":[{"code":"String","type":"Fixed","rates":{"String":0},"rateSpecs":[{"fromAge":0,"toAge":0,"fromService":0,"toService":0,"sourceRate":0,"dateFrom":"0001-01-01T00:00:00.0000000","dateTo":"0001-01-01T00:00:00.0000000","upperLimit":0,"rate":0,"coreRate":0,"lookupKey":"String"}],"keyTemplate":"age-service-rate"}],"investments":[{"code":"String","name":"String","group":"String","isAssetClassFund":false,"allocs":[{"fromAge":0,"term":0,"allocs":{"String":0},"totalAlloc":0}],"order":0,"allocationsDictionary":{"0":{}}}],"content":{"String":[{"section":"String","itemId":"String","itemCode":"String","country":"String","lang":"String","app":"String","companyId":"String","company":"String","elements":{"String":"String"},"id":"String"}]},"environments":{"String":"String"},"customNumericConstraints":{"String":{"min":0,"max":0,"step":0}},"assetReturnRates":{"String":{"earningRates":[0],"taxRates":[0]}},"investmentPropertyRates":0,"getAssetClassFundDictionary":{"String":false},"getTermBasedFundDictionary":{"String":true},"getAllocationsDictionary":{"String":{"0":{}}},"assetNameMap":{"String":"String"},"assetContNameMap":{"String":{"String":"String"}},"cacheKey":"ClientCountryConfig-String-String","asAt":"0001-01-01T00:00:00.0000000","id":"String"}