| All Verbs | /qry/rounds/draw/diagnostics |
|---|
"use strict";
export class Initialization {
/** @param {{dataLoadDuration?:number,betsCollectionsCreationDuration?:number,combinationsOccuranceLookupInitializationDuration?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
dataLoadDuration;
/** @type {number} */
betsCollectionsCreationDuration;
/** @type {number} */
combinationsOccuranceLookupInitializationDuration;
}
export class SequenceGeneration {
/** @param {{nrOfThreads?:number,nrOfResultsProbed?:number,duration?:number,avgSinglePassDuration?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
nrOfThreads;
/** @type {number} */
nrOfResultsProbed;
/** @type {number} */
duration;
/** @type {number} */
avgSinglePassDuration;
}
/** @typedef {number} */
export var SortingOrder;
(function (SortingOrder) {
SortingOrder[SortingOrder["None"] = 0] = "None"
SortingOrder[SortingOrder["Ascending"] = 1] = "Ascending"
SortingOrder[SortingOrder["Descending"] = 2] = "Descending"
})(SortingOrder || (SortingOrder = {}));
export class BestFitFinder {
/** @param {{targetAmount?:number,awardedAmount?:number,deviation?:number,deviationPct?:number,sequenceResultType?:string,isJackPot5Drawn?:boolean,filteringPeriod?:number,winCountOrder?:SortingOrder,minAmount?:number,maxAmount?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
targetAmount;
/** @type {number} */
awardedAmount;
/** @type {number} */
deviation;
/** @type {number} */
deviationPct;
/** @type {string} */
sequenceResultType;
/** @type {boolean} */
isJackPot5Drawn;
/** @type {number} */
filteringPeriod;
/** @type {SortingOrder} */
winCountOrder;
/** @type {number} */
minAmount;
/** @type {number} */
maxAmount;
}
export class Bet {
/** @param {{isFound?:boolean,betId?:string,slipId?:string,combStake?:Object}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
isFound;
/** @type {string} */
betId;
/** @type {string} */
slipId;
/** @type {Object} */
combStake;
}
export class QualifiedPool {
/** @param {{id?:number,name?:string,coefficient?:number,availableAmount?:number,awardedAmount?:number,targetBet?:Bet}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
id;
/** @type {string} */
name;
/** @type {number} */
coefficient;
/** @type {number} */
availableAmount;
/** @type {number} */
awardedAmount;
/** @type {Bet} */
targetBet;
}
export class Purger {
/** @param {{prevalentStake?:number,poolPurger?:string,qualifiedPools?:QualifiedPool[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
prevalentStake;
/** @type {string} */
poolPurger;
/** @type {QualifiedPool[]} */
qualifiedPools;
}
/** @typedef {number} */
export var ResponseStatus;
(function (ResponseStatus) {
ResponseStatus[ResponseStatus["Failure"] = 0] = "Failure"
ResponseStatus[ResponseStatus["Success"] = 1] = "Success"
})(ResponseStatus || (ResponseStatus = {}));
export class StimulationResponse {
/** @param {{stimulationId?:string,status?:ResponseStatus,failureReason?:string,slipId?:string,betId?:string,amountAwarded?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
stimulationId;
/** @type {ResponseStatus} */
status;
/** @type {string} */
failureReason;
/** @type {string} */
slipId;
/** @type {string} */
betId;
/** @type {number} */
amountAwarded;
}
export class CurrentRoundInfo {
/** @param {{roundId?:string,amount?:number,inertCode?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
roundId;
/** @type {number} */
amount;
/** @type {string} */
inertCode;
}
export class BettingApp {
/** @param {{name?:string,version?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
name;
/** @type {string} */
version;
}
export class Ref {
/** @param {{id?:string,val?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {string} */
val;
}
export class RefEx extends Ref {
/** @param {{data?:RecordDictionary<string, string>,id?:string,val?:string}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {RecordDictionary<string, string>} */
data;
}
export class Origin {
/** @param {{application?:BettingApp,ip?:string,organization?:RefEx,region?:Ref,locationGroup?:Ref,location?:RefEx,device?:RefEx,clerk?:Ref}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {BettingApp} */
application;
/** @type {string} */
ip;
/** @type {RefEx} */
organization;
/** @type {Ref} */
region;
/** @type {Ref} */
locationGroup;
/** @type {RefEx} */
location;
/** @type {RefEx} */
device;
/** @type {Ref} */
clerk;
}
export class WinnerByCode {
/** @param {{roundId?:string,drawnAtUtc?:string,slipId?:string,betId?:string,code?:string,amount?:number,origin?:Origin,bettor?:Ref,locationAddressOrBettorInfo?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
roundId;
/** @type {string} */
drawnAtUtc;
/** @type {string} */
slipId;
/** @type {string} */
betId;
/** @type {string} */
code;
/** @type {number} */
amount;
/** @type {Origin} */
origin;
/** @type {Ref} */
bettor;
/** @type {string} */
locationAddressOrBettorInfo;
}
export class LocalCodePotInfo {
/** @param {{isActive?:boolean,current?:CurrentRoundInfo,winners?:WinnerByCode[]}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
isActive;
/** @type {CurrentRoundInfo} */
current;
/** @type {WinnerByCode[]} */
winners;
}
export class SuperWinInfo {
/** @param {{durationInMs?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {number} */
durationInMs;
}
export class HappyHourInfo {
/** @param {{isHappyHour?:boolean,oddsModifier?:number,roundPoolBonusPct?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {boolean} */
isHappyHour;
/** @type {number} */
oddsModifier;
/** @type {number} */
roundPoolBonusPct;
}
export class AccumulatorConfiguration extends AccumulatorConfiguration {
/** @param {{id?:string,updatedAt?:string}} [init] */
constructor(init) { super(init); Object.assign(this, init) }
/** @type {string} */
id;
/** @type {string} */
updatedAt;
}
/** @typedef {number} */
export var SyphonType;
(function (SyphonType) {
SyphonType[SyphonType["Location"] = 0] = "Location"
SyphonType[SyphonType["Bettor"] = 1] = "Bettor"
})(SyphonType || (SyphonType = {}));
export class Syphon {
/** @param {{id?:string,name?:string,type?:SyphonType,nrOfCombinations?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {string} */
name;
/** @type {SyphonType} */
type;
/** @type {number} */
nrOfCombinations;
}
export class SyphonInfo {
/** @param {{bettors?:{ [index:string]: Syphon; },locations?:{ [index:string]: Syphon; },hasSyphons?:boolean,totalSyphonsInRound?:number}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {{ [index:string]: Syphon; }} */
bettors;
/** @type {{ [index:string]: Syphon; }} */
locations;
/** @type {boolean} */
hasSyphons;
/** @type {number} */
totalSyphonsInRound;
}
export class DrawDiagnostics {
/** @param {{id?:string,initializationInfo?:Initialization,sequenceGenerationInfo?:SequenceGeneration,bestFitFinderInfo?:BestFitFinder,purgerInfo?:Purger,duration?:number,stimulationResponses?:StimulationResponse[],localCodePot?:LocalCodePotInfo,superWin?:SuperWinInfo,happyHour?:HappyHourInfo,reasoning?:string,configuration?:AccumulatorConfiguration,syphonInfo?:SyphonInfo}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
/** @type {Initialization} */
initializationInfo;
/** @type {SequenceGeneration} */
sequenceGenerationInfo;
/** @type {BestFitFinder} */
bestFitFinderInfo;
/** @type {Purger} */
purgerInfo;
/** @type {number} */
duration;
/** @type {StimulationResponse[]} */
stimulationResponses;
/** @type {LocalCodePotInfo} */
localCodePot;
/** @type {SuperWinInfo} */
superWin;
/** @type {HappyHourInfo} */
happyHour;
/** @type {string} */
reasoning;
/** @type {AccumulatorConfiguration} */
configuration;
/** @type {SyphonInfo} */
syphonInfo;
}
export class GetDrawDignostics {
/** @param {{id?:string}} [init] */
constructor(init) { Object.assign(this, init) }
/** @type {string} */
id;
}
class Dictionary {}
/** @typedef TKey {any} */
/** @typedef TVal {any} */
export class RecordDictionary extends Dictionary {
constructor(init) { super(init); Object.assign(this, init) }
}
JavaScript GetDrawDignostics 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 /qry/rounds/draw/diagnostics HTTP/1.1
Host: s4w2.api.bettor.cc
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length
{
id: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
id: String,
initializationInfo:
{
dataLoadDuration: 0,
betsCollectionsCreationDuration: 0,
combinationsOccuranceLookupInitializationDuration: 0
},
sequenceGenerationInfo:
{
nrOfThreads: 0,
nrOfResultsProbed: 0,
duration: 0,
avgSinglePassDuration: 0
},
bestFitFinderInfo:
{
targetAmount: 0,
awardedAmount: 0,
deviation: 0,
deviationPct: 0,
sequenceResultType: String,
isJackPot5Drawn: False,
filteringPeriod: 0,
winCountOrder: 0,
minAmount: 0,
maxAmount: 0
},
purgerInfo:
{
prevalentStake: 0,
poolPurger: String,
qualifiedPools:
[
{
id: 0,
name: String,
coefficient: 0,
availableAmount: 0,
awardedAmount: 0,
targetBet:
{
isFound: False,
betId: String,
slipId: String,
combStake: {}
}
}
]
},
duration: 0,
stimulationResponses:
[
{
stimulationId: String,
status: 0,
failureReason: String,
slipId: String,
betId: String,
amountAwarded: 0
}
],
localCodePot:
{
durationInMs: 0
},
superWin:
{
durationInMs: 0
},
happyHour:
{
isHappyHour: False,
oddsModifier: 0,
roundPoolBonusPct: 0
},
reasoning: String,
configuration:
{
pools:
[
{
id: 0,
name: String,
rtp: 0,
reserveRTP: 0,
totalRTP: 0
}
],
prevalentStake: 0,
purgeThresholdModifier: 0,
locationOptimizationLevel: 0,
jackPot5ThresholdInterval:
{
start: 0,
end: 0
},
deviationCategorySpanInPct: 0,
deviationCategoryThresholdAmount: 0,
roundPoolCircuitBreakerThreshold: 0,
lowWinCountAffinityInPct: 0,
winCountOrderAffinity:
[
{
order: 0,
probability: 0
}
],
highRollerSettings:
{
pools:
[
{
id: 0,
name: String,
isActive: False,
contributionToRoundPoolPct: 0,
caps:
{
plusCoef: 0,
minusCoef: 0,
maxAmountInPrevalentStakes: 0
}
}
],
categoryThresholds:
[
{
category: 0,
threshold: 0
}
]
},
overflowCoefficientPoolsToRound: False,
antiSyphonProtectionOverride: False,
fraudDetectionConfig:
{
antiSyphon:
{
combinationCountPerRoundThresholdPct: 0,
excludedLocations:
[
{
id: String,
val: String
}
],
includeRoundPctAsBettorSyphonCriteria: False,
isActive: False
}
},
debugConfig:
{
logLocationStats: False,
logBettorSats: False
}
},
syphonInfo:
{
bettors:
{
String:
{
id: String,
name: String,
type: 0,
nrOfCombinations: 0
}
},
locations:
{
String:
{
id: String,
name: String,
type: 0,
nrOfCombinations: 0
}
},
hasSyphons: True,
totalSyphonsInRound: 2
}
}