| POST | /cmd/users/register |
|---|
"use strict";
export class LoginCredentials {
/** @param {{username?:string,password?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
username;
/** @type {string} */
password;
}
export class Name {
/** @param {{first?:string,last?:string,full?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
first;
/** @type {string} */
last;
/** @type {string} */
full;
}
export class Ref {
/** @param {{id?:string,val?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {string} */
val;
}
export class GPSCoordinates {
/** @param {{lat?:number,lng?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
lat;
/** @type {number} */
lng;
}
export class Address {
/** @param {{street?:string,city?:string,state?:string,postalCode?:string,country?:Ref,gps?:GPSCoordinates,data?:RecordDictionary<string, string>}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
street;
/** @type {string} */
city;
/** @type {string} */
state;
/** @type {string} */
postalCode;
/** @type {Ref} */
country;
/** @type {GPSCoordinates} */
gps;
/** @type {RecordDictionary<string, string>} */
data;
}
export class ContactInfo {
/** @param {{phone?:string,email?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
phone;
/** @type {string} */
email;
}
export class Person {
/** @param {{name?:Name,address?:Address,dateOfBirth?:string,contactInfo?:ContactInfo}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {Name} */
name;
/** @type {Address} */
address;
/** @type {?string} */
dateOfBirth;
/** @type {ContactInfo} */
contactInfo;
}
export class AvatarImage {
/** @param {{base64?:string,tag?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
base64;
/** @type {string} */
tag;
}
export class NewUserDTO {
/** @param {{externalUserId?:string,credentials?:LoginCredentials,person?:Person,roles?:RecordList<string>,avatar?:AvatarImage}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
externalUserId;
/** @type {LoginCredentials} */
credentials;
/** @type {Person} */
person;
/** @type {RecordList<string>} */
roles;
/** @type {AvatarImage} */
avatar;
}
export class RegisterUserAccount {
/** @param {{id?:string,newUserDTO?:NewUserDTO}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {NewUserDTO} */
newUserDTO;
}
class Dictionary {}
/** @typedef TKey {any} */
/** @typedef TVal {any} */
export class RecordDictionary extends Dictionary {
constructor(init) { super(init); Object.assign(this, init) }
}
/** @typedef T {any} */
export class RecordList extends Array {
constructor(init) { super(init); Object.assign(this, init) }
}
JavaScript RegisterUserAccount DTOs
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 /cmd/users/register HTTP/1.1
Host: api.sbbet.ath.cx
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
id: String,
newUserDTO:
{
externalUserId: String,
credentials:
{
username: String,
password: String
},
person:
{
name:
{
first: String,
last: String,
full: String String
},
address:
{
street: String,
city: String,
state: String,
postalCode: String,
country:
{
id: String,
val: String
},
gps:
{
lat: 0,
lng: 0
},
data:
{
String: String
}
},
dateOfBirth: 0001-01-01,
contactInfo:
{
phone: String,
email: String
}
},
roles:
[
String
],
avatar:
{
base64: String,
tag: String
}
}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
errorCode: String,
message: String,
stackTrace: String,
errors:
[
{
errorCode: String,
fieldName: String,
message: String,
meta:
{
String: String
}
}
],
meta:
{
String: String
}
}