POST | /member/validate |
---|
import java.math.*;
import java.util.*;
import net.servicestack.client.*;
public class dtos
{
public static class MemberValidateReq
{
public Member member = null;
public Member getMember() { return member; }
public MemberValidateReq setMember(Member value) { this.member = value; return this; }
}
public static class Member extends Member
{
public String id = null;
public String email = null;
public String employeeGuidString = null;
public Boolean ignoreGender = null;
public String getId() { return id; }
public Member setId(String value) { this.id = value; return this; }
public String getEmail() { return email; }
public Member setEmail(String value) { this.email = value; return this; }
public String getEmployeeGuidString() { return employeeGuidString; }
public Member setEmployeeGuidString(String value) { this.employeeGuidString = value; return this; }
public Boolean isIgnoreGender() { return ignoreGender; }
public Member setIgnoreGender(Boolean value) { this.ignoreGender = value; return this; }
}
public static class HttpResult
{
public String responseText = null;
public InputStream responseStream = null;
public FileInfo fileInfo = null;
public IVirtualFile virtualFile = null;
public String contentType = null;
public HashMap<String,String> headers = null;
public ArrayList<Cookie> cookies = null;
public String eTag = null;
public TimeSpan age = null;
public TimeSpan maxAge = null;
public Date expires = null;
public Date lastModified = null;
public CacheControl cacheControl = null;
public Func<IDisposable> resultScope = null;
public Boolean allowsPartialResponse = null;
public HashMap<String,String> options = null;
public Integer status = null;
public HttpStatusCode statusCode = null;
public String statusDescription = null;
public Object response = null;
public IContentTypeWriter responseFilter = null;
public IRequest requestContext = null;
public String view = null;
public String template = null;
public Integer paddingLength = null;
public Boolean isPartialRequest = null;
public String getResponseText() { return responseText; }
public HttpResult setResponseText(String value) { this.responseText = value; return this; }
public InputStream getResponseStream() { return responseStream; }
public HttpResult setResponseStream(InputStream value) { this.responseStream = value; return this; }
public FileInfo getFileInfo() { return fileInfo; }
public HttpResult setFileInfo(FileInfo value) { this.fileInfo = value; return this; }
public IVirtualFile getVirtualFile() { return virtualFile; }
public HttpResult setVirtualFile(IVirtualFile value) { this.virtualFile = value; return this; }
public String getContentType() { return contentType; }
public HttpResult setContentType(String value) { this.contentType = value; return this; }
public HashMap<String,String> getHeaders() { return headers; }
public HttpResult setHeaders(HashMap<String,String> value) { this.headers = value; return this; }
public ArrayList<Cookie> getCookies() { return cookies; }
public HttpResult setCookies(ArrayList<Cookie> value) { this.cookies = value; return this; }
public String getETag() { return eTag; }
public HttpResult setETag(String value) { this.eTag = value; return this; }
public TimeSpan getAge() { return age; }
public HttpResult setAge(TimeSpan value) { this.age = value; return this; }
public TimeSpan getMaxAge() { return maxAge; }
public HttpResult setMaxAge(TimeSpan value) { this.maxAge = value; return this; }
public Date getExpires() { return expires; }
public HttpResult setExpires(Date value) { this.expires = value; return this; }
public Date getLastModified() { return lastModified; }
public HttpResult setLastModified(Date value) { this.lastModified = value; return this; }
public CacheControl getCacheControl() { return cacheControl; }
public HttpResult setCacheControl(CacheControl value) { this.cacheControl = value; return this; }
public Func<IDisposable> getResultScope() { return resultScope; }
public HttpResult setResultScope(Func<IDisposable> value) { this.resultScope = value; return this; }
public Boolean isAllowsPartialResponse() { return allowsPartialResponse; }
public HttpResult setAllowsPartialResponse(Boolean value) { this.allowsPartialResponse = value; return this; }
public HashMap<String,String> getOptions() { return options; }
public HttpResult setOptions(HashMap<String,String> value) { this.options = value; return this; }
public Integer getStatus() { return status; }
public HttpResult setStatus(Integer value) { this.status = value; return this; }
public HttpStatusCode getStatusCode() { return statusCode; }
public HttpResult setStatusCode(HttpStatusCode value) { this.statusCode = value; return this; }
public String getStatusDescription() { return statusDescription; }
public HttpResult setStatusDescription(String value) { this.statusDescription = value; return this; }
public Object getResponse() { return response; }
public HttpResult setResponse(Object value) { this.response = value; return this; }
public IContentTypeWriter getResponseFilter() { return responseFilter; }
public HttpResult setResponseFilter(IContentTypeWriter value) { this.responseFilter = value; return this; }
public IRequest getRequestContext() { return requestContext; }
public HttpResult setRequestContext(IRequest value) { this.requestContext = value; return this; }
public String getView() { return view; }
public HttpResult setView(String value) { this.view = value; return this; }
public String getTemplate() { return template; }
public HttpResult setTemplate(String value) { this.template = value; return this; }
public Integer getPaddingLength() { return paddingLength; }
public HttpResult setPaddingLength(Integer value) { this.paddingLength = value; return this; }
public Boolean getIsPartialRequest() { return isPartialRequest; }
public HttpResult setIsPartialRequest(Boolean value) { this.isPartialRequest = value; return this; }
}
public static interface IVirtualFile
{
public IVirtualPathProvider virtualPathProvider = null;
public String extension = null;
public Long length = null;
}
public static interface IVirtualPathProvider
{
public IVirtualDirectory rootDirectory = null;
public String virtualPathSeparator = null;
public String realPathSeparator = null;
}
public static interface IVirtualDirectory
{
}
@Flags()
public static enum CacheControl
{
@SerializedName("0") None(0),
@SerializedName("1") Public(1),
@SerializedName("2") Private(2),
@SerializedName("4") MustRevalidate(4),
@SerializedName("8") NoCache(8),
@SerializedName("16") NoStore(16),
@SerializedName("32") NoTransform(32),
@SerializedName("64") ProxyRevalidate(64);
private final int value;
CacheControl(final int intValue) { value = intValue; }
public int getValue() { return value; }
}
public static interface IContentTypeWriter
{
}
public static interface IRequest
{
public Object originalRequest = null;
public IResponse response = null;
public String operationName = null;
public String verb = null;
public RequestAttributes requestAttributes = null;
public IRequestPreferences requestPreferences = null;
public Object dto = null;
public String contentType = null;
public Boolean isLocal = null;
public String userAgent = null;
public HashMap<String,Cookie> cookies = null;
public String responseContentType = null;
public Boolean hasExplicitResponseContentType = null;
public HashMap<String,Object> items = null;
public NameValueCollection headers = null;
public NameValueCollection queryString = null;
public NameValueCollection formData = null;
public Boolean useBufferedStream = null;
public String rawUrl = null;
public String absoluteUri = null;
public String userHostAddress = null;
public String remoteIp = null;
public String authorization = null;
public Boolean isSecureConnection = null;
public ArrayList<String> acceptTypes = null;
public String pathInfo = null;
public String originalPathInfo = null;
public InputStream inputStream = null;
public Long contentLength = null;
public ArrayList<IHttpFile> files = null;
public Uri urlReferrer = null;
}
public static interface IResponse
{
public Object originalResponse = null;
public IRequest request = null;
public Integer statusCode = null;
public String statusDescription = null;
public String contentType = null;
public InputStream outputStream = null;
public Object dto = null;
public Boolean useBufferedStream = null;
public Boolean isClosed = null;
public Boolean keepAlive = null;
public Boolean hasStarted = null;
public HashMap<String,Object> items = null;
}
@Flags()
public static enum RequestAttributes
{
@SerializedName("0") None(0),
@SerializedName("1") Localhost(1),
@SerializedName("2") LocalSubnet(2),
@SerializedName("4") External(4),
@SerializedName("8") Secure(8),
@SerializedName("16") InSecure(16),
@SerializedName("24") AnySecurityMode(24),
@SerializedName("32") HttpHead(32),
@SerializedName("64") HttpGet(64),
@SerializedName("128") HttpPost(128),
@SerializedName("256") HttpPut(256),
@SerializedName("512") HttpDelete(512),
@SerializedName("1024") HttpPatch(1024),
@SerializedName("2048") HttpOptions(2048),
@SerializedName("4096") HttpOther(4096),
@SerializedName("8160") AnyHttpMethod(8160),
@SerializedName("8192") OneWay(8192),
@SerializedName("16384") Reply(16384),
@SerializedName("24576") AnyCallStyle(24576),
@SerializedName("32768") Soap11(32768),
@SerializedName("65536") Soap12(65536),
@SerializedName("131072") Xml(131072),
@SerializedName("262144") Json(262144),
@SerializedName("524288") Jsv(524288),
@SerializedName("1048576") ProtoBuf(1048576),
@SerializedName("2097152") Csv(2097152),
@SerializedName("4194304") Html(4194304),
@SerializedName("8388608") Wire(8388608),
@SerializedName("16777216") MsgPack(16777216),
@SerializedName("33554432") FormatOther(33554432),
@SerializedName("67076096") AnyFormat(67076096),
@SerializedName("67108864") Http(67108864),
@SerializedName("134217728") MessageQueue(134217728),
@SerializedName("268435456") Tcp(268435456),
@SerializedName("536870912") Grpc(536870912),
@SerializedName("1073741824") EndpointOther(1073741824),
@SerializedName("2080374784") AnyEndpoint(2080374784),
@SerializedName("-2147483648") InProcess(-2147483648),
@SerializedName("-2147483645") InternalNetworkAccess(-2147483645),
@SerializedName("-2147483641") AnyNetworkAccessType(-2147483641),
@SerializedName("-1") Any(-1);
private final int value;
RequestAttributes(final int intValue) { value = intValue; }
public int getValue() { return value; }
}
public static interface IRequestPreferences
{
public Boolean acceptsBrotli = null;
public Boolean acceptsDeflate = null;
public Boolean acceptsGzip = null;
}
public static interface IHttpFile
{
public String name = null;
public String fileName = null;
public Long contentLength = null;
public String contentType = null;
public InputStream inputStream = null;
}
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=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 { }