Six4Win.WebApi

<back to all web services

GetDrawDignostics

The following routes are available for this service:
All Verbs/qry/rounds/draw/diagnostics

export class Initialization
{
    public dataLoadDuration: number;
    public betsCollectionsCreationDuration: number;
    public combinationsOccuranceLookupInitializationDuration: number;

    public constructor(init?: Partial<Initialization>) { (Object as any).assign(this, init); }
}

export class SequenceGeneration
{
    public nrOfThreads: number;
    public nrOfResultsProbed: number;
    public duration: number;
    public avgSinglePassDuration: number;

    public constructor(init?: Partial<SequenceGeneration>) { (Object as any).assign(this, init); }
}

export enum SortingOrder
{
    None = 0,
    Ascending = 1,
    Descending = 2,
}

export class BestFitFinder
{
    public targetAmount: number;
    public awardedAmount: number;
    public deviation: number;
    public deviationPct: number;
    public sequenceResultType: string;
    public isJackPot5Drawn: boolean;
    public filteringPeriod: number;
    public winCountOrder: SortingOrder;
    public minAmount: number;
    public maxAmount: number;

    public constructor(init?: Partial<BestFitFinder>) { (Object as any).assign(this, init); }
}

export class Bet
{
    public isFound: boolean;
    public betId: string;
    public slipId: string;
    public combStake: Object;

    public constructor(init?: Partial<Bet>) { (Object as any).assign(this, init); }
}

export class QualifiedPool
{
    public id: number;
    public name: string;
    public coefficient: number;
    public availableAmount: number;
    public awardedAmount: number;
    public targetBet: Bet;

    public constructor(init?: Partial<QualifiedPool>) { (Object as any).assign(this, init); }
}

export class Purger
{
    public prevalentStake: number;
    public poolPurger: string;
    public qualifiedPools: QualifiedPool[];

    public constructor(init?: Partial<Purger>) { (Object as any).assign(this, init); }
}

export enum ResponseStatus
{
    Failure = 0,
    Success = 1,
}

export class StimulationResponse
{
    public stimulationId: string;
    public status: ResponseStatus;
    public failureReason: string;
    public slipId: string;
    public betId: string;
    public amountAwarded: number;

    public constructor(init?: Partial<StimulationResponse>) { (Object as any).assign(this, init); }
}

export class CurrentRoundInfo
{
    public roundId: string;
    public amount: number;
    public inertCode: string;

    public constructor(init?: Partial<CurrentRoundInfo>) { (Object as any).assign(this, init); }
}

export class BettingApp
{
    public name: string;
    public version: string;

    public constructor(init?: Partial<BettingApp>) { (Object as any).assign(this, init); }
}

export class Ref
{
    public id: string;
    public val: string;

    public constructor(init?: Partial<Ref>) { (Object as any).assign(this, init); }
}

export class RefEx extends Ref
{
    public data: RecordDictionary<string, string>;

    public constructor(init?: Partial<RefEx>) { super(init); (Object as any).assign(this, init); }
}

export class Origin
{
    public application: BettingApp;
    public ip: string;
    public organization: RefEx;
    public region: Ref;
    public locationGroup: Ref;
    public location: RefEx;
    public device: RefEx;
    public clerk: Ref;

    public constructor(init?: Partial<Origin>) { (Object as any).assign(this, init); }
}

export class WinnerByCode
{
    public roundId: string;
    public drawnAtUtc: string;
    public slipId: string;
    public betId: string;
    public code: string;
    public amount: number;
    public origin: Origin;
    public bettor: Ref;
    public locationAddressOrBettorInfo: string;

    public constructor(init?: Partial<WinnerByCode>) { (Object as any).assign(this, init); }
}

export class LocalCodePotInfo
{
    public isActive: boolean;
    public current: CurrentRoundInfo;
    public winners: WinnerByCode[];

    public constructor(init?: Partial<LocalCodePotInfo>) { (Object as any).assign(this, init); }
}

export class SuperWinInfo
{
    public durationInMs: number;

    public constructor(init?: Partial<SuperWinInfo>) { (Object as any).assign(this, init); }
}

export class HappyHourInfo
{
    public isHappyHour: boolean;
    public oddsModifier: number;
    public roundPoolBonusPct: number;

    public constructor(init?: Partial<HappyHourInfo>) { (Object as any).assign(this, init); }
}

export class AccumulatorConfiguration extends AccumulatorConfiguration
{
    public id: string;
    public updatedAt: string;

    public constructor(init?: Partial<AccumulatorConfiguration>) { super(init); (Object as any).assign(this, init); }
}

export enum SyphonType
{
    Location = 0,
    Bettor = 1,
}

export class Syphon
{
    public id: string;
    public name: string;
    public type: SyphonType;
    public nrOfCombinations: number;

    public constructor(init?: Partial<Syphon>) { (Object as any).assign(this, init); }
}

export class SyphonInfo
{
    public bettors: { [index:string]: Syphon; };
    public locations: { [index:string]: Syphon; };
    public hasSyphons: boolean;
    public totalSyphonsInRound: number;

    public constructor(init?: Partial<SyphonInfo>) { (Object as any).assign(this, init); }
}

export class DrawDiagnostics
{
    public id: string;
    public initializationInfo: Initialization;
    public sequenceGenerationInfo: SequenceGeneration;
    public bestFitFinderInfo: BestFitFinder;
    public purgerInfo: Purger;
    public duration: number;
    public stimulationResponses: StimulationResponse[];
    public localCodePot: LocalCodePotInfo;
    public superWin: SuperWinInfo;
    public happyHour: HappyHourInfo;
    public reasoning: string;
    public configuration: AccumulatorConfiguration;
    public syphonInfo: SyphonInfo;

    public constructor(init?: Partial<DrawDiagnostics>) { (Object as any).assign(this, init); }
}

export class GetDrawDignostics
{
    public id: string;

    public constructor(init?: Partial<GetDrawDignostics>) { (Object as any).assign(this, init); }
}

export class Dictionary<T> { [Key: string]: T; }

export class RecordDictionary<TKey, TVal> extends Dictionary<TVal>
{

    public constructor(init?: Partial<RecordDictionary<TKey, TVal>>) { super(); (Object as any).assign(this, init); }
}

TypeScript 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: 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
	}
}