| All Verbs | /qry/rounds/draw/diagnostics |
|---|
const std = @import("std");
pub const Initialization = struct {
dataLoadDuration: i64 = 0,
betsCollectionsCreationDuration: i64 = 0,
combinationsOccuranceLookupInitializationDuration: i64 = 0,
};
pub const SequenceGeneration = struct {
nrOfThreads: i32 = 0,
nrOfResultsProbed: i32 = 0,
duration: i64 = 0,
avgSinglePassDuration: i64 = 0,
};
pub const SortingOrder = enum(i32) {
None = 0,
Ascending = 1,
Descending = 2,
};
pub const BestFitFinder = struct {
targetAmount: f64 = 0,
awardedAmount: f64 = 0,
deviation: f64 = 0,
deviationPct: f64 = 0,
sequenceResultType: ?[]const u8 = null,
isJackPot5Drawn: bool = false,
filteringPeriod: i64 = 0,
winCountOrder: ?SortingOrder = null,
minAmount: f64 = 0,
maxAmount: f64 = 0,
};
pub const Bet = struct {
isFound: bool = false,
betId: ?[]const u8 = null,
slipId: ?[]const u8 = null,
combStake: ?std.json.Value = null,
};
pub const QualifiedPool = struct {
id: i32 = 0,
name: ?[]const u8 = null,
coefficient: f64 = 0,
availableAmount: f64 = 0,
awardedAmount: f64 = 0,
targetBet: ?Bet = null,
};
pub const Purger = struct {
prevalentStake: f64 = 0,
poolPurger: ?[]const u8 = null,
qualifiedPools: ?[]QualifiedPool = null,
};
pub const ResponseStatus = enum(i32) {
Failure = 0,
Success = 1,
};
pub const StimulationResponse = struct {
stimulationId: ?[]const u8 = null,
status: ?ResponseStatus = null,
failureReason: ?[]const u8 = null,
slipId: ?[]const u8 = null,
betId: ?[]const u8 = null,
amountAwarded: f64 = 0,
};
pub const CurrentRoundInfo = struct {
roundId: ?[]const u8 = null,
amount: f64 = 0,
inertCode: ?[]const u8 = null,
};
pub const BettingApp = struct {
name: ?[]const u8 = null,
version: ?[]const u8 = null,
};
pub const Ref = struct {
id: ?[]const u8 = null,
val: ?[]const u8 = null,
};
pub const RefEx = struct {
id: ?[]const u8 = null,
val: ?[]const u8 = null,
data: ?RecordDictionary = null,
};
pub const Origin = struct {
application: ?BettingApp = null,
ip: ?[]const u8 = null,
organization: ?RefEx = null,
region: ?Ref = null,
locationGroup: ?Ref = null,
location: ?RefEx = null,
device: ?RefEx = null,
clerk: ?Ref = null,
};
pub const WinnerByCode = struct {
roundId: ?[]const u8 = null,
drawnAtUtc: ?[]const u8 = null,
slipId: ?[]const u8 = null,
betId: ?[]const u8 = null,
code: ?[]const u8 = null,
amount: f64 = 0,
origin: ?Origin = null,
bettor: ?Ref = null,
locationAddressOrBettorInfo: ?[]const u8 = null,
};
pub const LocalCodePotInfo = struct {
isActive: bool = false,
current: ?CurrentRoundInfo = null,
winners: ?[]WinnerByCode = null,
};
pub const SuperWinInfo = struct {
durationInMs: i64 = 0,
reasoning: ?[]const u8 = null,
};
pub const HappyHourInfo = struct {
isHappyHour: bool = false,
oddsModifier: f64 = 0,
roundPoolBonusPct: f64 = 0,
};
pub const AccumulatorConfiguration = struct {
id: ?[]const u8 = null,
updatedAt: ?[]const u8 = null,
};
pub const SyphonType = enum(i32) {
Location = 0,
Bettor = 1,
};
pub const Syphon = struct {
id: ?[]const u8 = null,
name: ?[]const u8 = null,
type: ?SyphonType = null,
nrOfCombinations: i32 = 0,
};
pub const SyphonInfo = struct {
bettors: ?std.json.Value = null,
locations: ?std.json.Value = null,
hasSyphons: bool = false,
totalSyphonsInRound: i32 = 0,
};
pub const DrawDiagnostics = struct {
id: ?[]const u8 = null,
initializationInfo: ?Initialization = null,
sequenceGenerationInfo: ?SequenceGeneration = null,
bestFitFinderInfo: ?BestFitFinder = null,
purgerInfo: ?Purger = null,
duration: i64 = 0,
stimulationResponses: ?[]StimulationResponse = null,
localCodePot: ?LocalCodePotInfo = null,
superWin: ?SuperWinInfo = null,
happyHour: ?HappyHourInfo = null,
reasoning: ?[]const u8 = null,
configuration: ?AccumulatorConfiguration = null,
syphonInfo: ?SyphonInfo = null,
};
pub const GetDrawDignostics = struct {
id: ?[]const u8 = null,
};
pub fn RecordDictionary(comptime TKey: type, comptime TVal: type) type {
_ = TKey;
_ = TVal;
return struct {};
}
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: s4w1.api.bettor.webhop.biz
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,
reasoning: String
},
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
}
],
blacklists:
{
locations:
[
{
id: String,
val: String
}
],
players:
[
{
id: String,
val: String
}
]
},
includeRoundPctAsBettorSyphonCriteria: False,
isActive: False
}
},
debugConfig:
{
logLocationStats: False,
logBettorStats: False
},
jP5WinnerCooldownPolicy:
{
isActive: False,
cooldownIntervalInDays: 0
}
},
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
}
}