AlbaApi

<back to all web services

ClientCountryConfigValidateReq

The following routes are available for this service:
POST/clientcountryconfig/validate
import 'package:servicestack/servicestack.dart';
import 'dart:typed_data';

class Entity implements IEntity, IConvertible
{
    String? id;

    Entity({this.id});
    Entity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        id = json['id'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'id': id
    };

    getTypeName() => "Entity";
    TypeContext? context = _ctx;
}

abstract class DatedEntity extends Entity implements IDatedEntity
{
    DateTime? asAt;

    DatedEntity({this.asAt});
    DatedEntity.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        asAt = JsonConverters.fromJson(json['asAt'],'DateTime',context!);
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'asAt': JsonConverters.toJson(asAt,'DateTime',context!)
    });

    getTypeName() => "DatedEntity";
    TypeContext? context = _ctx;
}

enum DataSource
{
    Db,
    Cache,
    Parameter,
    NA,
}

class DataSourceResult implements IConvertible
{
    DataSource? d;
    int? t;

    DataSourceResult({this.d,this.t});
    DataSourceResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        d = JsonConverters.fromJson(json['d'],'DataSource',context!);
        t = json['t'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'd': JsonConverters.toJson(d,'DataSource',context!),
        't': t
    };

    getTypeName() => "DataSourceResult";
    TypeContext? context = _ctx;
}

enum Gender
{
    Female,
    Male,
    Other,
}

class LifeTableName implements IConvertible
{
    String? name;
    Gender? gender;

    LifeTableName({this.name,this.gender});
    LifeTableName.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        name = json['name'];
        gender = JsonConverters.fromJson(json['gender'],'Gender',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'name': name,
        'gender': JsonConverters.toJson(gender,'Gender',context!)
    };

    getTypeName() => "LifeTableName";
    TypeContext? context = _ctx;
}

enum AnnuityPriceType
{
    Calc,
    Table,
}

class AnnuityConfig implements IConvertible
{
    List<LifeTableName>? tableNames;
    List<LifeTableName>? imprFactorTableNames;
    double? reversion;
    double? guarantee;
    double? timing;
    bool? allowDiscountPreRet;
    double? scaleQx;
    double? scaleImpr;
    int? ageRating;
    int? spouseAgeRating;
    double? expense;
    double? percBalanceSpent;
    double? amountSpent;
    double? incomePurchased;
    int? deferralPeriod;
    String? indexationName;
    String? drStochastic;
    String? impliedInflationStochasticSeries;
    double? targetTpx;
    AnnuityPriceType? priceType;
    double? price;

    AnnuityConfig({this.tableNames,this.imprFactorTableNames,this.reversion,this.guarantee,this.timing,this.allowDiscountPreRet,this.scaleQx,this.scaleImpr,this.ageRating,this.spouseAgeRating,this.expense,this.percBalanceSpent,this.amountSpent,this.incomePurchased,this.deferralPeriod,this.indexationName,this.drStochastic,this.impliedInflationStochasticSeries,this.targetTpx,this.priceType,this.price});
    AnnuityConfig.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        tableNames = JsonConverters.fromJson(json['tableNames'],'List<LifeTableName>',context!);
        imprFactorTableNames = JsonConverters.fromJson(json['imprFactorTableNames'],'List<LifeTableName>',context!);
        reversion = JsonConverters.toDouble(json['reversion']);
        guarantee = JsonConverters.toDouble(json['guarantee']);
        timing = JsonConverters.toDouble(json['timing']);
        allowDiscountPreRet = json['allowDiscountPreRet'];
        scaleQx = JsonConverters.toDouble(json['scaleQx']);
        scaleImpr = JsonConverters.toDouble(json['scaleImpr']);
        ageRating = json['ageRating'];
        spouseAgeRating = json['spouseAgeRating'];
        expense = JsonConverters.toDouble(json['expense']);
        percBalanceSpent = JsonConverters.toDouble(json['percBalanceSpent']);
        amountSpent = JsonConverters.toDouble(json['amountSpent']);
        incomePurchased = JsonConverters.toDouble(json['incomePurchased']);
        deferralPeriod = json['deferralPeriod'];
        indexationName = json['indexationName'];
        drStochastic = json['drStochastic'];
        impliedInflationStochasticSeries = json['impliedInflationStochasticSeries'];
        targetTpx = JsonConverters.toDouble(json['targetTpx']);
        priceType = JsonConverters.fromJson(json['priceType'],'AnnuityPriceType',context!);
        price = JsonConverters.toDouble(json['price']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'tableNames': JsonConverters.toJson(tableNames,'List<LifeTableName>',context!),
        'imprFactorTableNames': JsonConverters.toJson(imprFactorTableNames,'List<LifeTableName>',context!),
        'reversion': reversion,
        'guarantee': guarantee,
        'timing': timing,
        'allowDiscountPreRet': allowDiscountPreRet,
        'scaleQx': scaleQx,
        'scaleImpr': scaleImpr,
        'ageRating': ageRating,
        'spouseAgeRating': spouseAgeRating,
        'expense': expense,
        'percBalanceSpent': percBalanceSpent,
        'amountSpent': amountSpent,
        'incomePurchased': incomePurchased,
        'deferralPeriod': deferralPeriod,
        'indexationName': indexationName,
        'drStochastic': drStochastic,
        'impliedInflationStochasticSeries': impliedInflationStochasticSeries,
        'targetTpx': targetTpx,
        'priceType': JsonConverters.toJson(priceType,'AnnuityPriceType',context!),
        'price': price
    };

    getTypeName() => "AnnuityConfig";
    TypeContext? context = _ctx;
}

enum ContributionType
{
    Fixed,
    Time,
    Lookup,
    Match,
}

class ContributionConstraint implements IConvertible
{
    int? fromAge;
    int? toAge;
    double? min;
    double? max;
    double? step;

    ContributionConstraint({this.fromAge,this.toAge,this.min,this.max,this.step});
    ContributionConstraint.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        fromAge = json['fromAge'];
        toAge = json['toAge'];
        min = JsonConverters.toDouble(json['min']);
        max = JsonConverters.toDouble(json['max']);
        step = JsonConverters.toDouble(json['step']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'fromAge': fromAge,
        'toAge': toAge,
        'min': min,
        'max': max,
        'step': step
    };

    getTypeName() => "ContributionConstraint";
    TypeContext? context = _ctx;
}

enum AmountType
{
    Any,
    Amount,
    Rate,
}

class ContributionSpec implements IConvertible
{
    String? code;
    String? name;
    ContributionType? type;
    bool? isEmployeeCont;
    String? table;
    String? ccy;
    int? fromAge;
    int? toAge;
    String? indexationType;
    String? salaryType;
    bool? isTaxable;
    String? relatedRate;
    int? order;
    bool? editable;
    List<ContributionConstraint>? constraints;
    AmountType? amountType;
    bool? isOneOff;

    ContributionSpec({this.code,this.name,this.type,this.isEmployeeCont,this.table,this.ccy,this.fromAge,this.toAge,this.indexationType,this.salaryType,this.isTaxable,this.relatedRate,this.order,this.editable,this.constraints,this.amountType,this.isOneOff});
    ContributionSpec.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        code = json['code'];
        name = json['name'];
        type = JsonConverters.fromJson(json['type'],'ContributionType',context!);
        isEmployeeCont = json['isEmployeeCont'];
        table = json['table'];
        ccy = json['ccy'];
        fromAge = json['fromAge'];
        toAge = json['toAge'];
        indexationType = json['indexationType'];
        salaryType = json['salaryType'];
        isTaxable = json['isTaxable'];
        relatedRate = json['relatedRate'];
        order = json['order'];
        editable = json['editable'];
        constraints = JsonConverters.fromJson(json['constraints'],'List<ContributionConstraint>',context!);
        amountType = JsonConverters.fromJson(json['amountType'],'AmountType',context!);
        isOneOff = json['isOneOff'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'code': code,
        'name': name,
        'type': JsonConverters.toJson(type,'ContributionType',context!),
        'isEmployeeCont': isEmployeeCont,
        'table': table,
        'ccy': ccy,
        'fromAge': fromAge,
        'toAge': toAge,
        'indexationType': indexationType,
        'salaryType': salaryType,
        'isTaxable': isTaxable,
        'relatedRate': relatedRate,
        'order': order,
        'editable': editable,
        'constraints': JsonConverters.toJson(constraints,'List<ContributionConstraint>',context!),
        'amountType': JsonConverters.toJson(amountType,'AmountType',context!),
        'isOneOff': isOneOff
    };

    getTypeName() => "ContributionSpec";
    TypeContext? context = _ctx;
}

class AssetConfig implements IConvertible
{
    String? code;
    String? name;
    bool? rebalance;
    bool? canEditInvestmentChoice;
    bool? willSpend;
    List<String>? investments;
    List<ContributionSpec>? contributions;
    bool? isOneOff;

    AssetConfig({this.code,this.name,this.rebalance,this.canEditInvestmentChoice,this.willSpend,this.investments,this.contributions,this.isOneOff});
    AssetConfig.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        code = json['code'];
        name = json['name'];
        rebalance = json['rebalance'];
        canEditInvestmentChoice = json['canEditInvestmentChoice'];
        willSpend = json['willSpend'];
        investments = JsonConverters.fromJson(json['investments'],'List<String>',context!);
        contributions = JsonConverters.fromJson(json['contributions'],'List<ContributionSpec>',context!);
        isOneOff = json['isOneOff'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'code': code,
        'name': name,
        'rebalance': rebalance,
        'canEditInvestmentChoice': canEditInvestmentChoice,
        'willSpend': willSpend,
        'investments': JsonConverters.toJson(investments,'List<String>',context!),
        'contributions': JsonConverters.toJson(contributions,'List<ContributionSpec>',context!),
        'isOneOff': isOneOff
    };

    getTypeName() => "AssetConfig";
    TypeContext? context = _ctx;
}

class ContributionRateSpec implements IConvertible
{
    int? fromAge;
    int? toAge;
    int? fromService;
    int? toService;
    double? sourceRate;
    DateTime? dateFrom;
    DateTime? dateTo;
    double? upperLimit;
    double? rate;
    double? coreRate;
    String? lookupKey;

    ContributionRateSpec({this.fromAge,this.toAge,this.fromService,this.toService,this.sourceRate,this.dateFrom,this.dateTo,this.upperLimit,this.rate,this.coreRate,this.lookupKey});
    ContributionRateSpec.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        fromAge = json['fromAge'];
        toAge = json['toAge'];
        fromService = json['fromService'];
        toService = json['toService'];
        sourceRate = JsonConverters.toDouble(json['sourceRate']);
        dateFrom = JsonConverters.fromJson(json['dateFrom'],'DateTime',context!);
        dateTo = JsonConverters.fromJson(json['dateTo'],'DateTime',context!);
        upperLimit = JsonConverters.toDouble(json['upperLimit']);
        rate = JsonConverters.toDouble(json['rate']);
        coreRate = JsonConverters.toDouble(json['coreRate']);
        lookupKey = json['lookupKey'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'fromAge': fromAge,
        'toAge': toAge,
        'fromService': fromService,
        'toService': toService,
        'sourceRate': sourceRate,
        'dateFrom': JsonConverters.toJson(dateFrom,'DateTime',context!),
        'dateTo': JsonConverters.toJson(dateTo,'DateTime',context!),
        'upperLimit': upperLimit,
        'rate': rate,
        'coreRate': coreRate,
        'lookupKey': lookupKey
    };

    getTypeName() => "ContributionRateSpec";
    TypeContext? context = _ctx;
}

class ContributionTableSpec implements IConvertible
{
    String? code;
    ContributionType? type;
    Map<String,double?>? rates;
    List<ContributionRateSpec>? rateSpecs;
    String? keyTemplate;

    ContributionTableSpec({this.code,this.type,this.rates,this.rateSpecs,this.keyTemplate});
    ContributionTableSpec.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        code = json['code'];
        type = JsonConverters.fromJson(json['type'],'ContributionType',context!);
        rates = JsonConverters.fromJson(json['rates'],'Map<String,double?>',context!);
        rateSpecs = JsonConverters.fromJson(json['rateSpecs'],'List<ContributionRateSpec>',context!);
        keyTemplate = json['keyTemplate'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'code': code,
        'type': JsonConverters.toJson(type,'ContributionType',context!),
        'rates': JsonConverters.toJson(rates,'Map<String,double?>',context!),
        'rateSpecs': JsonConverters.toJson(rateSpecs,'List<ContributionRateSpec>',context!),
        'keyTemplate': keyTemplate
    };

    getTypeName() => "ContributionTableSpec";
    TypeContext? context = _ctx;
}

class InvestmentProductAllocationsSpec implements IConvertible
{
    int? fromAge;
    int? term;
    Map<String,double?>? allocs;
    double? totalAlloc;

    InvestmentProductAllocationsSpec({this.fromAge,this.term,this.allocs,this.totalAlloc});
    InvestmentProductAllocationsSpec.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        fromAge = json['fromAge'];
        term = json['term'];
        allocs = JsonConverters.fromJson(json['allocs'],'Map<String,double?>',context!);
        totalAlloc = JsonConverters.toDouble(json['totalAlloc']);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'fromAge': fromAge,
        'term': term,
        'allocs': JsonConverters.toJson(allocs,'Map<String,double?>',context!),
        'totalAlloc': totalAlloc
    };

    getTypeName() => "InvestmentProductAllocationsSpec";
    TypeContext? context = _ctx;
}

class InvestmentProduct implements IConvertible
{
    String? code;
    String? name;
    String? group;
    bool? isAssetClassFund;
    List<InvestmentProductAllocationsSpec>? allocs;
    int? order;
    Map<int,Map<String,double>?>? allocationsDictionary;

    InvestmentProduct({this.code,this.name,this.group,this.isAssetClassFund,this.allocs,this.order,this.allocationsDictionary});
    InvestmentProduct.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        code = json['code'];
        name = json['name'];
        group = json['group'];
        isAssetClassFund = json['isAssetClassFund'];
        allocs = JsonConverters.fromJson(json['allocs'],'List<InvestmentProductAllocationsSpec>',context!);
        order = json['order'];
        allocationsDictionary = JsonConverters.fromJson(json['allocationsDictionary'],'Map<int,Map<String,double>?>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'code': code,
        'name': name,
        'group': group,
        'isAssetClassFund': isAssetClassFund,
        'allocs': JsonConverters.toJson(allocs,'List<InvestmentProductAllocationsSpec>',context!),
        'order': order,
        'allocationsDictionary': JsonConverters.toJson(allocationsDictionary,'Map<int,Map<String,double>?>',context!)
    };

    getTypeName() => "InvestmentProduct";
    TypeContext? context = _ctx;
}

class ReturnRates implements IConvertible
{
    List<double>? earningRates;
    List<double>? taxRates;

    ReturnRates({this.earningRates,this.taxRates});
    ReturnRates.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        earningRates = JsonConverters.fromJson(json['earningRates'],'List<double>',context!);
        taxRates = JsonConverters.fromJson(json['taxRates'],'List<double>',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'earningRates': JsonConverters.toJson(earningRates,'List<double>',context!),
        'taxRates': JsonConverters.toJson(taxRates,'List<double>',context!)
    };

    getTypeName() => "ReturnRates";
    TypeContext? context = _ctx;
}

class ClientCountryConfig extends DatedEntity implements IConvertible
{
    String? clientCode;
    String? clientName;
    String? countryCode;
    DataSourceResult? source;
    int? ageRMin;
    int? ageRMax;
    String? primarySalary;
    AnnuityConfig? annuityConfig;
    List<AssetConfig>? assets;
    List<ContributionTableSpec>? contTables;
    List<InvestmentProduct>? investments;
    Map<String,List<Content>?>? content;
    Map<String,String?>? environments;
    Map<String,Constraint<double>?>? customNumericConstraints;
    Map<String,ReturnRates?>? assetReturnRates;
    double? investmentPropertyRates;
    Map<String,bool?>? getAssetClassFundDictionary;
    Map<String,bool?>? getTermBasedFundDictionary;
    Map<String,Map<int,Map<String,double>>?>? getAllocationsDictionary;
    Map<String,String?>? assetNameMap;
    Map<String,Map<String,String>?>? assetContNameMap;
    String? cacheKey;

    ClientCountryConfig({this.clientCode,this.clientName,this.countryCode,this.source,this.ageRMin,this.ageRMax,this.primarySalary,this.annuityConfig,this.assets,this.contTables,this.investments,this.content,this.environments,this.customNumericConstraints,this.assetReturnRates,this.investmentPropertyRates,this.getAssetClassFundDictionary,this.getTermBasedFundDictionary,this.getAllocationsDictionary,this.assetNameMap,this.assetContNameMap,this.cacheKey});
    ClientCountryConfig.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        super.fromMap(json);
        clientCode = json['clientCode'];
        clientName = json['clientName'];
        countryCode = json['countryCode'];
        source = JsonConverters.fromJson(json['source'],'DataSourceResult',context!);
        ageRMin = json['ageRMin'];
        ageRMax = json['ageRMax'];
        primarySalary = json['primarySalary'];
        annuityConfig = JsonConverters.fromJson(json['annuityConfig'],'AnnuityConfig',context!);
        assets = JsonConverters.fromJson(json['assets'],'List<AssetConfig>',context!);
        contTables = JsonConverters.fromJson(json['contTables'],'List<ContributionTableSpec>',context!);
        investments = JsonConverters.fromJson(json['investments'],'List<InvestmentProduct>',context!);
        content = JsonConverters.fromJson(json['content'],'Map<String,List<Content>?>',context!);
        environments = JsonConverters.toStringMap(json['environments']);
        customNumericConstraints = JsonConverters.fromJson(json['customNumericConstraints'],'Map<String,Constraint<double>?>',context!);
        assetReturnRates = JsonConverters.fromJson(json['assetReturnRates'],'Map<String,ReturnRates?>',context!);
        investmentPropertyRates = JsonConverters.toDouble(json['investmentPropertyRates']);
        getAssetClassFundDictionary = JsonConverters.fromJson(json['getAssetClassFundDictionary'],'Map<String,bool?>',context!);
        getTermBasedFundDictionary = JsonConverters.fromJson(json['getTermBasedFundDictionary'],'Map<String,bool?>',context!);
        getAllocationsDictionary = JsonConverters.fromJson(json['getAllocationsDictionary'],'Map<String,Map<int,Map<String,double>>?>',context!);
        assetNameMap = JsonConverters.toStringMap(json['assetNameMap']);
        assetContNameMap = JsonConverters.fromJson(json['assetContNameMap'],'Map<String,Map<String,String>?>',context!);
        cacheKey = json['cacheKey'];
        return this;
    }

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'clientCode': clientCode,
        'clientName': clientName,
        'countryCode': countryCode,
        'source': JsonConverters.toJson(source,'DataSourceResult',context!),
        'ageRMin': ageRMin,
        'ageRMax': ageRMax,
        'primarySalary': primarySalary,
        'annuityConfig': JsonConverters.toJson(annuityConfig,'AnnuityConfig',context!),
        'assets': JsonConverters.toJson(assets,'List<AssetConfig>',context!),
        'contTables': JsonConverters.toJson(contTables,'List<ContributionTableSpec>',context!),
        'investments': JsonConverters.toJson(investments,'List<InvestmentProduct>',context!),
        'content': JsonConverters.toJson(content,'Map<String,List<Content>?>',context!),
        'environments': environments,
        'customNumericConstraints': JsonConverters.toJson(customNumericConstraints,'Map<String,Constraint<double>?>',context!),
        'assetReturnRates': JsonConverters.toJson(assetReturnRates,'Map<String,ReturnRates?>',context!),
        'investmentPropertyRates': investmentPropertyRates,
        'getAssetClassFundDictionary': JsonConverters.toJson(getAssetClassFundDictionary,'Map<String,bool?>',context!),
        'getTermBasedFundDictionary': JsonConverters.toJson(getTermBasedFundDictionary,'Map<String,bool?>',context!),
        'getAllocationsDictionary': JsonConverters.toJson(getAllocationsDictionary,'Map<String,Map<int,Map<String,double>>?>',context!),
        'assetNameMap': assetNameMap,
        'assetContNameMap': JsonConverters.toJson(assetContNameMap,'Map<String,Map<String,String>?>',context!),
        'cacheKey': cacheKey
    });

    getTypeName() => "ClientCountryConfig";
    TypeContext? context = _ctx;
}

class ClientCountryConfigValidateReq implements IConvertible
{
    ClientCountryConfig? config;

    ClientCountryConfigValidateReq({this.config});
    ClientCountryConfigValidateReq.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        config = JsonConverters.fromJson(json['config'],'ClientCountryConfig',context!);
        return this;
    }

    Map<String, dynamic> toJson() => {
        'config': JsonConverters.toJson(config,'ClientCountryConfig',context!)
    };

    getTypeName() => "ClientCountryConfigValidateReq";
    TypeContext? context = _ctx;
}

TypeContext _ctx = TypeContext(library: 'hcbtas_q_albamfs_api.azurewebsites.net', types: <String, TypeInfo> {
    'Entity': TypeInfo(TypeOf.Class, create:() => Entity()),
    'DatedEntity': TypeInfo(TypeOf.AbstractClass),
    'DataSource': TypeInfo(TypeOf.Enum, enumValues:DataSource.values),
    'DataSourceResult': TypeInfo(TypeOf.Class, create:() => DataSourceResult()),
    'Gender': TypeInfo(TypeOf.Enum, enumValues:Gender.values),
    'LifeTableName': TypeInfo(TypeOf.Class, create:() => LifeTableName()),
    'AnnuityPriceType': TypeInfo(TypeOf.Enum, enumValues:AnnuityPriceType.values),
    'AnnuityConfig': TypeInfo(TypeOf.Class, create:() => AnnuityConfig()),
    'List<LifeTableName>': TypeInfo(TypeOf.Class, create:() => <LifeTableName>[]),
    'ContributionType': TypeInfo(TypeOf.Enum, enumValues:ContributionType.values),
    'ContributionConstraint': TypeInfo(TypeOf.Class, create:() => ContributionConstraint()),
    'AmountType': TypeInfo(TypeOf.Enum, enumValues:AmountType.values),
    'ContributionSpec': TypeInfo(TypeOf.Class, create:() => ContributionSpec()),
    'List<ContributionConstraint>': TypeInfo(TypeOf.Class, create:() => <ContributionConstraint>[]),
    'AssetConfig': TypeInfo(TypeOf.Class, create:() => AssetConfig()),
    'List<ContributionSpec>': TypeInfo(TypeOf.Class, create:() => <ContributionSpec>[]),
    'ContributionRateSpec': TypeInfo(TypeOf.Class, create:() => ContributionRateSpec()),
    'ContributionTableSpec': TypeInfo(TypeOf.Class, create:() => ContributionTableSpec()),
    'Map<String,double?>': TypeInfo(TypeOf.Class, create:() => Map<String,double?>()),
    'List<ContributionRateSpec>': TypeInfo(TypeOf.Class, create:() => <ContributionRateSpec>[]),
    'InvestmentProductAllocationsSpec': TypeInfo(TypeOf.Class, create:() => InvestmentProductAllocationsSpec()),
    'InvestmentProduct': TypeInfo(TypeOf.Class, create:() => InvestmentProduct()),
    'List<InvestmentProductAllocationsSpec>': TypeInfo(TypeOf.Class, create:() => <InvestmentProductAllocationsSpec>[]),
    'Map<int,Map<String,double>?>': TypeInfo(TypeOf.Class, create:() => Map<int,Map<String,double>?>()),
    'Map<String,double>': TypeInfo(TypeOf.Class, create:() => Map<String,double>()),
    'ReturnRates': TypeInfo(TypeOf.Class, create:() => ReturnRates()),
    'ClientCountryConfig': TypeInfo(TypeOf.Class, create:() => ClientCountryConfig()),
    'List<AssetConfig>': TypeInfo(TypeOf.Class, create:() => <AssetConfig>[]),
    'List<ContributionTableSpec>': TypeInfo(TypeOf.Class, create:() => <ContributionTableSpec>[]),
    'List<InvestmentProduct>': TypeInfo(TypeOf.Class, create:() => <InvestmentProduct>[]),
    'Map<String,List<Content>?>': TypeInfo(TypeOf.Class, create:() => Map<String,List<Content>?>()),
    'List<Content>': TypeInfo(TypeOf.Class, create:() => <Content>[]),
    'Content': TypeInfo(TypeOf.Class, create:() => Content()),
    'Map<String,Constraint<double>?>': TypeInfo(TypeOf.Class, create:() => Map<String,Constraint<double>?>()),
    'Constraint<double>': TypeInfo(TypeOf.Class, create:() => Constraint<double>()),
    'Map<String,ReturnRates?>': TypeInfo(TypeOf.Class, create:() => Map<String,ReturnRates?>()),
    'Map<String,bool?>': TypeInfo(TypeOf.Class, create:() => Map<String,bool?>()),
    'Map<String,Map<int,Map<String,double>>?>': TypeInfo(TypeOf.Class, create:() => Map<String,Map<int,Map<String,double>>?>()),
    'Map<int,Map<String,double>>': TypeInfo(TypeOf.Class, create:() => Map<int,Map<String,double>>()),
    'Map<String,Map<String,String>?>': TypeInfo(TypeOf.Class, create:() => Map<String,Map<String,String>?>()),
    'ClientCountryConfigValidateReq': TypeInfo(TypeOf.Class, create:() => ClientCountryConfigValidateReq()),
});

Dart 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"}