AlbaApi

<back to all web services

MemberValidateReq

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

abstract class IVirtualDirectory
{
}

abstract class IVirtualPathProvider
{
    IVirtualDirectory? rootDirectory;
    String? virtualPathSeparator;
    String? realPathSeparator;
}

abstract class IVirtualFile
{
    IVirtualPathProvider? virtualPathProvider;
    String? extension;
    int? length;
}

// @flags()
class CacheControl
{
    static const CacheControl None = const CacheControl._(0);
    static const CacheControl Public = const CacheControl._(1);
    static const CacheControl Private = const CacheControl._(2);
    static const CacheControl MustRevalidate = const CacheControl._(4);
    static const CacheControl NoCache = const CacheControl._(8);
    static const CacheControl NoStore = const CacheControl._(16);
    static const CacheControl NoTransform = const CacheControl._(32);
    static const CacheControl ProxyRevalidate = const CacheControl._(64);

    final int _value;
    const CacheControl._(this._value);
    int get value => _value;
    static List<CacheControl> get values => const [None,Public,Private,MustRevalidate,NoCache,NoStore,NoTransform,ProxyRevalidate];
}

abstract class IContentTypeWriter
{
}

abstract class IResponse
{
    dynamic? originalResponse;
    IRequest? request;
    int? statusCode;
    String? statusDescription;
    String? contentType;
    Uint8List? outputStream;
    dynamic? dto;
    bool? useBufferedStream;
    bool? isClosed;
    bool? keepAlive;
    bool? hasStarted;
    Map<String,dynamic?>? items;
}

// @flags()
class RequestAttributes
{
    static const RequestAttributes None = const RequestAttributes._(0);
    static const RequestAttributes Localhost = const RequestAttributes._(1);
    static const RequestAttributes LocalSubnet = const RequestAttributes._(2);
    static const RequestAttributes External = const RequestAttributes._(4);
    static const RequestAttributes Secure = const RequestAttributes._(8);
    static const RequestAttributes InSecure = const RequestAttributes._(16);
    static const RequestAttributes AnySecurityMode = const RequestAttributes._(24);
    static const RequestAttributes HttpHead = const RequestAttributes._(32);
    static const RequestAttributes HttpGet = const RequestAttributes._(64);
    static const RequestAttributes HttpPost = const RequestAttributes._(128);
    static const RequestAttributes HttpPut = const RequestAttributes._(256);
    static const RequestAttributes HttpDelete = const RequestAttributes._(512);
    static const RequestAttributes HttpPatch = const RequestAttributes._(1024);
    static const RequestAttributes HttpOptions = const RequestAttributes._(2048);
    static const RequestAttributes HttpOther = const RequestAttributes._(4096);
    static const RequestAttributes AnyHttpMethod = const RequestAttributes._(8160);
    static const RequestAttributes OneWay = const RequestAttributes._(8192);
    static const RequestAttributes Reply = const RequestAttributes._(16384);
    static const RequestAttributes AnyCallStyle = const RequestAttributes._(24576);
    static const RequestAttributes Soap11 = const RequestAttributes._(32768);
    static const RequestAttributes Soap12 = const RequestAttributes._(65536);
    static const RequestAttributes Xml = const RequestAttributes._(131072);
    static const RequestAttributes Json = const RequestAttributes._(262144);
    static const RequestAttributes Jsv = const RequestAttributes._(524288);
    static const RequestAttributes ProtoBuf = const RequestAttributes._(1048576);
    static const RequestAttributes Csv = const RequestAttributes._(2097152);
    static const RequestAttributes Html = const RequestAttributes._(4194304);
    static const RequestAttributes Wire = const RequestAttributes._(8388608);
    static const RequestAttributes MsgPack = const RequestAttributes._(16777216);
    static const RequestAttributes FormatOther = const RequestAttributes._(33554432);
    static const RequestAttributes AnyFormat = const RequestAttributes._(67076096);
    static const RequestAttributes Http = const RequestAttributes._(67108864);
    static const RequestAttributes MessageQueue = const RequestAttributes._(134217728);
    static const RequestAttributes Tcp = const RequestAttributes._(268435456);
    static const RequestAttributes Grpc = const RequestAttributes._(536870912);
    static const RequestAttributes EndpointOther = const RequestAttributes._(1073741824);
    static const RequestAttributes AnyEndpoint = const RequestAttributes._(2080374784);
    static const RequestAttributes InProcess = const RequestAttributes._(-2147483648);
    static const RequestAttributes InternalNetworkAccess = const RequestAttributes._(-2147483645);
    static const RequestAttributes AnyNetworkAccessType = const RequestAttributes._(-2147483641);
    static const RequestAttributes Any = const RequestAttributes._(-1);

    final int _value;
    const RequestAttributes._(this._value);
    int get value => _value;
    static List<RequestAttributes> get values => const [None,Localhost,LocalSubnet,External,Secure,InSecure,AnySecurityMode,HttpHead,HttpGet,HttpPost,HttpPut,HttpDelete,HttpPatch,HttpOptions,HttpOther,AnyHttpMethod,OneWay,Reply,AnyCallStyle,Soap11,Soap12,Xml,Json,Jsv,ProtoBuf,Csv,Html,Wire,MsgPack,FormatOther,AnyFormat,Http,MessageQueue,Tcp,Grpc,EndpointOther,AnyEndpoint,InProcess,InternalNetworkAccess,AnyNetworkAccessType,Any];
}

abstract class IRequestPreferences
{
    bool? acceptsBrotli;
    bool? acceptsDeflate;
    bool? acceptsGzip;
}

abstract class IRequest
{
    dynamic? originalRequest;
    IResponse? response;
    String? operationName;
    String? verb;
    RequestAttributes? requestAttributes;
    IRequestPreferences? requestPreferences;
    dynamic? dto;
    String? contentType;
    bool? isLocal;
    String? userAgent;
    Map<String,Cookie?>? cookies;
    String? responseContentType;
    bool? hasExplicitResponseContentType;
    Map<String,dynamic?>? items;
    NameValueCollection? headers;
    NameValueCollection? queryString;
    NameValueCollection? formData;
    bool? useBufferedStream;
    String? rawUrl;
    String? absoluteUri;
    String? userHostAddress;
    String? remoteIp;
    String? authorization;
    bool? isSecureConnection;
    List<String>? acceptTypes;
    String? pathInfo;
    String? originalPathInfo;
    Uint8List? inputStream;
    int? contentLength;
    List<IHttpFile>? files;
    Uri? urlReferrer;
}

class HttpResult implements IConvertible
{
    String? responseText;
    Uint8List? responseStream;
    FileInfo? fileInfo;
    IVirtualFile? virtualFile;
    String? contentType;
    Map<String,String?>? headers;
    List<Cookie>? cookies;
    String? eTag;
    Duration? age;
    Duration? maxAge;
    DateTime? expires;
    DateTime? lastModified;
    CacheControl? cacheControl;
    Func<IDisposable>? resultScope;
    bool? allowsPartialResponse;
    Map<String,String?>? options;
    int? status;
    HttpStatusCode? statusCode;
    String? statusDescription;
    dynamic? response;
    IContentTypeWriter? responseFilter;
    IRequest? requestContext;
    String? view;
    String? template;
    int? paddingLength;
    bool? isPartialRequest;

    HttpResult({this.responseText,this.responseStream,this.fileInfo,this.virtualFile,this.contentType,this.headers,this.cookies,this.eTag,this.age,this.maxAge,this.expires,this.lastModified,this.cacheControl,this.resultScope,this.allowsPartialResponse,this.options,this.status,this.statusCode,this.statusDescription,this.response,this.responseFilter,this.requestContext,this.view,this.template,this.paddingLength,this.isPartialRequest});
    HttpResult.fromJson(Map<String, dynamic> json) { fromMap(json); }

    fromMap(Map<String, dynamic> json) {
        responseText = json['responseText'];
        responseStream = JsonConverters.fromJson(json['responseStream'],'Uint8List',context!);
        fileInfo = JsonConverters.fromJson(json['fileInfo'],'FileInfo',context!);
        virtualFile = JsonConverters.fromJson(json['virtualFile'],'IVirtualFile',context!);
        contentType = json['contentType'];
        headers = JsonConverters.toStringMap(json['headers']);
        cookies = JsonConverters.fromJson(json['cookies'],'List<Cookie>',context!);
        eTag = json['eTag'];
        age = JsonConverters.fromJson(json['age'],'Duration',context!);
        maxAge = JsonConverters.fromJson(json['maxAge'],'Duration',context!);
        expires = JsonConverters.fromJson(json['expires'],'DateTime',context!);
        lastModified = JsonConverters.fromJson(json['lastModified'],'DateTime',context!);
        cacheControl = JsonConverters.fromJson(json['cacheControl'],'CacheControl',context!);
        resultScope = JsonConverters.fromJson(json['resultScope'],'Func<IDisposable>',context!);
        allowsPartialResponse = json['allowsPartialResponse'];
        options = JsonConverters.fromJson(json['options'],'Map<String,String?>',context!);
        status = json['status'];
        statusCode = JsonConverters.fromJson(json['statusCode'],'HttpStatusCode',context!);
        statusDescription = json['statusDescription'];
        response = JsonConverters.fromJson(json['response'],'dynamic',context!);
        responseFilter = JsonConverters.fromJson(json['responseFilter'],'IContentTypeWriter',context!);
        requestContext = JsonConverters.fromJson(json['requestContext'],'IRequest',context!);
        view = json['view'];
        template = json['template'];
        paddingLength = json['paddingLength'];
        isPartialRequest = json['isPartialRequest'];
        return this;
    }

    Map<String, dynamic> toJson() => {
        'responseText': responseText,
        'responseStream': JsonConverters.toJson(responseStream,'Uint8List',context!),
        'fileInfo': JsonConverters.toJson(fileInfo,'FileInfo',context!),
        'virtualFile': JsonConverters.toJson(virtualFile,'IVirtualFile',context!),
        'contentType': contentType,
        'headers': headers,
        'cookies': JsonConverters.toJson(cookies,'List<Cookie>',context!),
        'eTag': eTag,
        'age': JsonConverters.toJson(age,'Duration',context!),
        'maxAge': JsonConverters.toJson(maxAge,'Duration',context!),
        'expires': JsonConverters.toJson(expires,'DateTime',context!),
        'lastModified': JsonConverters.toJson(lastModified,'DateTime',context!),
        'cacheControl': JsonConverters.toJson(cacheControl,'CacheControl',context!),
        'resultScope': JsonConverters.toJson(resultScope,'Func<IDisposable>',context!),
        'allowsPartialResponse': allowsPartialResponse,
        'options': JsonConverters.toJson(options,'Map<String,String?>',context!),
        'status': status,
        'statusCode': JsonConverters.toJson(statusCode,'HttpStatusCode',context!),
        'statusDescription': statusDescription,
        'response': JsonConverters.toJson(response,'dynamic',context!),
        'responseFilter': JsonConverters.toJson(responseFilter,'IContentTypeWriter',context!),
        'requestContext': JsonConverters.toJson(requestContext,'IRequest',context!),
        'view': view,
        'template': template,
        'paddingLength': paddingLength,
        'isPartialRequest': isPartialRequest
    };

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

class Member extends Member implements IConvertible
{
    String? id;
    String? email;
    String? employeeGuidString;
    bool? ignoreGender;

    Member({this.id,this.email,this.employeeGuidString,this.ignoreGender});
    Member.fromJson(Map<String, dynamic> json) { fromMap(json); }

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

    Map<String, dynamic> toJson() => super.toJson()..addAll({
        'id': id,
        'email': email,
        'employeeGuidString': employeeGuidString,
        'ignoreGender': ignoreGender
    });

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

class MemberValidateReq implements IConvertible
{
    Member? member;

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

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

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

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

abstract class IHttpFile
{
    String? name;
    String? fileName;
    int? contentLength;
    String? contentType;
    Uint8List? inputStream;
}

TypeContext _ctx = TypeContext(library: 'hcbtas_q_albamfs_api.azurewebsites.net', types: <String, TypeInfo> {
    'IVirtualDirectory': TypeInfo(TypeOf.Interface),
    'IVirtualPathProvider': TypeInfo(TypeOf.Interface),
    'IVirtualFile': TypeInfo(TypeOf.Interface),
    'CacheControl': TypeInfo(TypeOf.Enum, enumValues:CacheControl.values),
    'IContentTypeWriter': TypeInfo(TypeOf.Interface),
    'IResponse': TypeInfo(TypeOf.Interface),
    'RequestAttributes': TypeInfo(TypeOf.Enum, enumValues:RequestAttributes.values),
    'IRequestPreferences': TypeInfo(TypeOf.Interface),
    'IRequest': TypeInfo(TypeOf.Interface),
    'HttpResult': TypeInfo(TypeOf.Class, create:() => HttpResult()),
    'Uint8List': TypeInfo(TypeOf.Class, create:() => Uint8List(0)),
    'FileInfo': TypeInfo(TypeOf.Class, create:() => FileInfo()),
    'List<Cookie>': TypeInfo(TypeOf.Class, create:() => <Cookie>[]),
    'Cookie': TypeInfo(TypeOf.Class, create:() => Cookie()),
    'Func<IDisposable>': TypeInfo(TypeOf.Class, create:() => Func<IDisposable>()),
    'IDisposable': TypeInfo(TypeOf.Class, create:() => IDisposable()),
    'Map<String,String?>': TypeInfo(TypeOf.Class, create:() => Map<String,String?>()),
    'HttpStatusCode': TypeInfo(TypeOf.Class, create:() => HttpStatusCode()),
    'Member': TypeInfo(TypeOf.Class, create:() => Member()),
    'MemberValidateReq': TypeInfo(TypeOf.Class, create:() => MemberValidateReq()),
    'IHttpFile': TypeInfo(TypeOf.Interface),
});

Dart MemberValidateReq 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 /member/validate HTTP/1.1 
Host: hcbtas-q-albamfs-api.azurewebsites.net 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	member: 
	{
		userId: String,
		systemId: String,
		schemeCode: String,
		sessionId: String,
		clientId: String,
		clientCode: String,
		isDefault: False,
		groupId: String,
		groupNameUpper: String,
		appName: String,
		appNameUpper: String,
		key: String,
		keyUpper: String,
		country: String,
		locale: String,
		ccy: String,
		cdy: String,
		status: String,
		statusCode: String,
		category: String,
		scheme: String,
		primarySalary: String,
		email: String,
		employer: 
		{
			id: String,
			code: String,
			name: String,
			logo: String,
			config: {}
		},
		roles: 0,
		asAt: 0001-01-01,
		calcDate: 0001-01-01,
		nextEOFY: 0001-06-30,
		periodToNextEOFY: 0.5,
		year: 0,
		hasPartner: False,
		includePartner: False,
		includePartnerInCalc: False,
		homeOwner: False,
		targetAge: 0,
		targetTime: 0,
		targetIncomeR: 0,
		targetIncomeRFreq: 0,
		targetIncomeRAnnual: 0,
		targetP: 0,
		includeSS: False,
		firstName: String,
		lastName: String,
		gender: Female,
		dob: 0001-01-01,
		salary: 0,
		people: 
		[
			{
				type: Primary,
				index: 0,
				firstName: String,
				lastName: String,
				gender: Female,
				isAgeInput: False,
				dob: 0001-01-01,
				age: 0,
				exactAge: 0,
				ageAtLast30June: 0,
				privateHealthInsurance: False,
				serviceDate: 0001-01-01,
				service: 0,
				intService: 0,
				ageR: 0,
				ageRMonths: 0,
				email: String,
				salaries: 
				{
					String: 
					{
						type: String,
						ccy: String,
						amount: 0,
						freq: 0,
						annualAmount: 0,
						indexType: String,
						salaryChanges: 
						[
							{
								fromAge: 0,
								amount: 0
							}
						]
					}
				},
				salary: 0,
				salaryFreq: 0,
				salaryChangeSeries: 
				[
					0
				],
				hasOtherIncome: False,
				otherIncome: 
				[
					{
						name: String,
						type: Pension,
						amount: 0,
						fromAge: 0,
						toAge: 0,
						isTaxable: False,
						isVector: False,
						vector: 
						[
							0
						],
						custom: 
						{
							String: String
						},
						asAt: 0001-01-01,
						age: 0,
						intAge: 0,
						year: 0,
						periodToNextEOFY: 0.5,
						indexType: String,
						deflationType: String,
						indexTypePre: String,
						indexTypePost: String
					}
				],
				socialSecurity: 
				{
					asAt: 0001-01-01,
					age: 0,
					intAge: 0,
					year: 0,
					periodToNextEOFY: 0.5,
					indexType: String,
					deflationType: String,
					indexTypePre: String,
					indexTypePost: String
				},
				taxableDeductions: 0,
				nonTaxableDeductions: 0,
				careerChanges: 
				{
					willTake: False,
					breaks: 
					[
						{
							fromAge: 0,
							toAge: 0,
							workingRate: 0
						}
					],
					careerBreakSeries: 
					[
						0
					],
					totalYears: 0
				},
				custom: 
				{
					String: String
				},
				salaryKey: String,
				annualProjectibleSalary: 0,
				projectionBreakdownCode: Salary You,
				lookup: "Salary You:Primary",
				ssBreakdownCode: SocialSecurityYou,
				ssLookup: "SocialSecurityYou:Primary",
				asAt: 0001-01-01,
				intAge: 0,
				year: 0,
				periodToNextEOFY: 0.5,
				indexType: String,
				deflationType: String,
				indexTypePre: String,
				indexTypePost: String
			}
		],
		assets: 
		[
			{
				type: FinAsset,
				owner: Primary,
				code: String,
				assetIndex: 0,
				lookup: "String:Primary:0",
				name: String,
				ccy: String,
				value: 0,
				change: 0,
				transferTo: 0,
				transferAge: 0,
				willSpend: False,
				minRule: NoMinimum,
				maxRule: NoMaximum,
				ssTreatment: Exempt,
				spendOnAnnuity: False,
				contTaxRate: 0,
				totalConts: 0,
				usePreCalculatedContributions: False,
				totalContributions: 
				[
					[
						0
					]
				],
				futureAllocations: 
				[
					[
						{
							String: 0
						}
					]
				],
				assetType: FinAsset,
				totalContsFreq: 1,
				totalLumpSumConts: 0,
				contributions: 
				[
					{
						code: String,
						index: 0,
						name: String,
						ccy: String,
						contTable: String,
						isEmployeeCont: False,
						employerFlag: False,
						type: Fixed,
						linkedContIndex: 0,
						sourceRate: String,
						isTaxable: False,
						amount: 0,
						coreAmount: 0,
						freq: 0,
						rate: 0,
						coreRate: 0,
						fromAge: 0,
						toAge: 0,
						salary: 0,
						annualAmount: 0,
						annualCoreAmount: 0,
						isAlwaysOneOff: False,
						isOneOff: True,
						constraintType: LumpSum,
						custom: 
						{
							String: String
						},
						memberRateLookup: 
						{
							0: 0
						},
						isFromSalary: False,
						asAt: 0001-01-01,
						age: 0,
						intAge: 0,
						year: 0,
						periodToNextEOFY: 0.5,
						indexType: String,
						deflationType: String,
						indexTypePre: String,
						indexTypePost: String
					}
				],
				fees: 
				[
					{
						name: String,
						ccy: String,
						amount: 0,
						freq: 0,
						annualAmount: 0,
						rate: 0,
						isTaxable: False,
						fromAge: 0,
						toAge: 0,
						custom: 
						{
							String: String
						},
						asAt: 0001-01-01,
						age: 0,
						intAge: 0,
						year: 0,
						periodToNextEOFY: 0.5,
						indexType: String,
						deflationType: String,
						indexTypePre: String,
						indexTypePost: String
					}
				],
				feeCapArrangements: 
				[
					{
						name: String,
						amount: 0,
						indexationRateSeries: 0,
						rate: 0,
						feesIncluded: 
						[
							0
						],
						fromTime: 0,
						toTime: 0,
						custom: 
						{
							String: String
						},
						asAt: 0001-01-01,
						age: 0,
						intAge: 0,
						year: 0,
						periodToNextEOFY: 0.5,
						indexType: String,
						deflationType: String,
						indexTypePre: String,
						indexTypePost: String
					}
				],
				custom: 
				{
					String: String
				},
				rebalance: False,
				retLumpSum: False,
				allocSeries: 
				[
					{
						current: 
						{
							String: 0
						},
						future: 
						{
							String: 0
						}
					}
				],
				currentAssetClassAllocSeries: 
				{
					0: 
					{
						String: 0
					}
				},
				futureAssetClassAllocSeries: 
				{
					0: 
					{
						String: 0
					}
				},
				ratesSource: DB,
				alloc: 
				[
					{
						name: String,
						fromAge: 0,
						optAlloc: 
						{
							current: 
							{
								String: 0
							},
							future: 
							{
								String: 0
							}
						},
						currentAssetClassAlloc: 
						{
							String: 0
						},
						futureAssetClassAlloc: 
						{
							String: 0
						},
						totalCurrentAlloc: 0,
						totalFutureAlloc: 0
					}
				],
				allocKeys: 
				[
					String
				],
				returns: 
				{
					String: 
					[
						{
							name: String,
							fromAge: 0,
							earningRate: 0,
							taxRate: 0,
							returnRate: 0
						}
					]
				},
				returnRates: 
				{
					String: 
					{
						earningRates: 
						[
							0
						],
						taxRates: 
						[
							0
						]
					}
				},
				asAt: 0001-01-01,
				age: 0,
				intAge: 0,
				year: 0,
				periodToNextEOFY: 0.5,
				indexType: String,
				deflationType: String,
				indexTypePre: String,
				indexTypePost: String
			}
		],
		includeAnnuities: False,
		annuities: 
		[
			{
				priceType: Calc,
				price: 0,
				owner: Primary,
				gender: Female,
				ownerAge: 0,
				spouseAge: 0,
				type: Deferred,
				purchaseType: Perc,
				purchaseAmount: 0,
				percBalanceSpent: 0,
				amountSpent: 0,
				incomePurchased: 0,
				purchaseAge: 0,
				deferralPeriod: 0,
				indexationName: String,
				drStochastic: String,
				impliedInflationStochasticSeries: String,
				reversion: 0,
				guarantee: 0,
				timing: 0,
				scaleQx: 0,
				scaleQxPartner: 0,
				scaleImpr: 0,
				scaleImprPartner: 0,
				ageRating: 0,
				spouseAgeRating: 0,
				custom: 
				{
					String: String
				},
				tableName: String,
				tableNamePartner: String,
				imprFactorTableName: String,
				imprFactorTableNamePartner: String,
				hasPartnerTables: True,
				spouseAgeAtPurchase: 0,
				expense: 0,
				cacheKey: LifeTables-String-String,
				partnerCacheKey: LifeTables-String-String,
				targetTpx: 0,
				paymentTerm: 0,
				asAt: 0001-01-01,
				age: 0,
				intAge: 0,
				year: 0,
				periodToNextEOFY: 0.5,
				indexType: String,
				deflationType: String,
				indexTypePre: String,
				indexTypePost: String
			}
		],
		spending: 
		{
			selected: String,
			willChangeLate: False,
			ageRLate: 0,
			selectedLate: String,
			goals: 
			[
				{
					name: String,
					amount: 0,
					freq: 0,
					effectiveFreq: 1,
					excludeFromProjection: False,
					fromAge: 0,
					toAge: 0,
					selectedPersonalised: String,
					tag: String,
					custom: 
					{
						String: String
					},
					asAt: 0001-01-01,
					age: 0,
					intAge: 0,
					year: 0,
					periodToNextEOFY: 0.5,
					indexType: String,
					deflationType: String,
					indexTypePre: String,
					indexTypePost: String
				}
			],
			lumpSumType: Perc,
			lumpSumRate: 0,
			lumpSumAmount: 0,
			count: 1,
			custom: 
			{
				String: String
			},
			asAt: 0001-01-01,
			age: 0,
			intAge: 0,
			year: 0,
			periodToNextEOFY: 0.5,
			indexType: String,
			deflationType: String,
			indexTypePre: String,
			indexTypePost: String
		},
		investmentProperties: 
		[
			{
				owner: Primary,
				value: 0,
				rentYield: 0,
				expense: 0,
				downsize: 0,
				downsizeAge: 0,
				downsizeToAsset: 0,
				rates: 0,
				lookup: "Prop:Primary",
				asAt: 0001-01-01,
				age: 0,
				intAge: 0,
				year: 0,
				periodToNextEOFY: 0.5,
				indexType: String,
				deflationType: String,
				indexTypePre: String,
				indexTypePost: String
			}
		],
		incomeVectors: 
		{
			String: 
			[
				0
			]
		},
		config: 
		{
			country: String,
			clientCode: String,
			isStochastic: False,
			stochasticLoopType: Parallel,
			stochProjServiceLoc: WebServer,
			stochProjSvcCallType: Sync,
			dataSet: String,
			solveTarget: NA,
			solveTolerance: 0,
			indexationRatesSource: DB,
			discRatesSource: DB,
			returnRatesSource: DB,
			deterministicSim: 0,
			stochasticSim: 0,
			simCount: 0,
			simsToIncludeDetails: 
			[
				0
			],
			includeBalArray: False,
			includeProjectionInStochasticResult: False,
			includeFirstProjectionInStochasticResult: False,
			usesStochasticData: True,
			includeAllSpendingResult: False,
			includeAllContributionProjectionResult: False,
			includeAllAssetsProjectionResults: False,
			includeAllSummaryProjectionResult: False,
			includePreCalculatedContributionsInResponse: False,
			includedProjections: 
			[
				String
			]
		},
		indexation: 
		[
			{
				name: String,
				fromAge: 0,
				rate: 0
			}
		],
		annuityDisc: 
		[
			{
				name: String,
				fromAge: 0,
				rate: 0
			}
		],
		indexationRates: 
		{
			String: 
			[
				0
			]
		},
		annuityDiscRates: 
		{
			String: 
			[
				0
			]
		},
		balance: 0,
		planSomeValue: String,
		flag1: False,
		flag2: True,
		isFriendly: True,
		financingOption: String,
		totalYears: 7,
		totalLoopYears: 100,
		age: 0,
		ageR: 0,
		intAge: 0,
		indexType: String,
		indexTypePre: String,
		indexTypePost: String,
		deflationType: String,
		custom: 
		{
			String: String
		},
		countryCalcConfig: {},
		summary: 
		{
			age: 0,
			salary: 0,
			balance: 0,
			invOption: String,
			contributions: 
			[
				{
					code: String,
					name: String,
					assetCode: String,
					assetName: String,
					isEmployeeCont: False,
					amount: 0,
					freq: 0,
					rate: 0
				}
			]
		},
		lastModified: 0001-01-01,
		isReturningUser: False,
		clientCountryConfigCacheKey: ClientCountryConfig-String-String,
		personalAssets: 0,
		resultsSummary: 
		{
			asAt: 0001-01-01,
			age: 0,
			intAge: 0,
			year: 0,
			periodToNextEOFY: 0.5,
			indexType: String,
			deflationType: String,
			indexTypePre: String,
			indexTypePost: String
		},
		totalContribution: 
		{
			asAt: 0001-01-01,
			age: 0,
			intAge: 0,
			year: 0,
			periodToNextEOFY: 0.5,
			indexType: String,
			deflationType: String,
			indexTypePre: String,
			indexTypePost: String
		},
		id: String
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	
}