Six4Win.WebApi

<back to all web services

GetDrawDignostics

The following routes are available for this service:
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 {};
}

Zig GetDrawDignostics 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 /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
	}
}