Six4Win.WebApi

<back to all web services

GetFeed

The following routes are available for this service:
All Verbs/qry/feed
const std = @import("std");

pub const RoundStatus = enum(i32) {
    Pending = 0,
    InProgress = 1,
    Ended = 2,
};

pub const CountdownConfiguration = struct {
    lockdownStepFromEnd: i32 = 0,
    assertLockdownStepFromEnd: i32 = 0,
};

pub const DrawConfiguration = struct {
    introIntervalInMs: i32 = 0,
    animationIntervalInMs: i32 = 0,
    outroIntervalInMs: i32 = 0,
};

pub const RTPStrategies = enum(i32) {
    RNG = 0,
    Accumulator = 1,
};

pub const HappyHourConfiguration = struct {
    isHappyHour: bool = false,
    oddsModifier: f64 = 0,
    roundPoolBonusPct: f64 = 0,
    useOnlyRoundPoolWithNoOptimizations: bool = false,
    overrideSyphonCombinationCountPerRoundThreshold: bool = false,
    syphonCombinationCountPerRoundThresholdPctOverride: f64 = 0,
};

pub const RoundConfiguration = struct {
    coefficients: ?RecordList = null,
    isDoubleTripleActive: bool = false,
    isJackpot5Active: bool = false,
    countdownDurationInSeconds: i32 = 0,
    countdownConfiguration: ?CountdownConfiguration = null,
    drawConfiguration: ?DrawConfiguration = null,
    resultsDurationInSeconds: i32 = 0,
    rtpStrategy: ?RTPStrategies = null,
    happyHourConfiguration: ?HappyHourConfiguration = 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 JackPot5Winner = struct {
    betId: ?[]const u8 = null,
    nrOfCombinations: i32 = 0,
    winningsAmount: f64 = 0,
    origin: ?Origin = null,
    bettor: ?Ref = null,
    payload: ?std.json.Value = null,
};

pub const Jackpot5Info = struct {
    isHit: bool = false,
    amountAccumulated: f64 = 0,
    amountAwarded: f64 = 0,
    nrOfWinners: i32 = 0,
    jackPot5Winners: ?[]JackPot5Winner = null,
};

pub const SuperWinWinner = struct {
    isDrawn: bool = false,
    drawnAtUtc: ?[]const u8 = null,
    roundId: ?[]const u8 = null,
    betId: ?[]const u8 = null,
    slipId: ?[]const u8 = null,
    origin: ?Origin = null,
    bettor: ?Ref = null,
    code: ?[]const u8 = null,
    amount: f64 = 0,
    locationAddressOrBettorInfo: ?[]const u8 = null,
};

pub const SuperWinInfo = struct {
    isActive: bool = false,
    winner: ?SuperWinWinner = null,
    availableAmount: f64 = 0,
    allPrizesAwarded: bool = false,
};

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 GlobalCodePotInfo = struct {
    isActive: bool = false,
    isDrawn: bool = false,
    winner: ?WinnerByCode = null,
    inertCode: ?[]const u8 = null,
    accumulation: f64 = 0,
};

pub const Stages = enum(i32) {
    None = 0,
    Countdown = 1,
    Processing = 2,
    Draw = 3,
    Results = 4,
};

pub const RoundProgress = struct {
    stage: ?Stages = null,
    step: i32 = 0,
    steps: i32 = 0,
    utcTimestamp: ?[]const u8 = null,
};

pub const Round = struct {
    id: ?[]const u8 = null,
    createdAt: ?[]const u8 = null,
    updatedAt: ?[]const u8 = null,
    shouldStartAtUtc: ?[]const u8 = null,
    startedAtUtc: ?[]const u8 = null,
    status: ?RoundStatus = null,
    configuration: ?RoundConfiguration = null,
    sequence: ?[]const u8 = null,
    jackpot5Info: ?Jackpot5Info = null,
    superWinInfo: ?SuperWinInfo = null,
    globalCodePotInfo: ?GlobalCodePotInfo = null,
    progress: ?RoundProgress = null,
    isLocked: bool = false,
    isCalculated: bool = false,
};

pub const Feed = struct {
    id: ?[]const u8 = null,
    round: ?Round = null,
    lastJackpot5Info: ?Jackpot5Info = null,
    superWinInfo: ?SuperWinInfo = null,
    globalCodePotInfo: ?GlobalCodePotInfo = null,
};

pub const GetFeed = struct {};

pub fn RecordList(comptime T: type) type {
    _ = T;
    return struct {
        pub const ss_collection = "items";

        items: []T = &.{},
    };

    pub fn RecordDictionary(comptime TKey: type, comptime TVal: type) type {
        _ = TKey;
        _ = TVal;
        return struct {};
    }

Zig GetFeed 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/feed HTTP/1.1 
Host: s4w1.api.bettor.webhop.biz 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	id: String,
	round: 
	{
		id: String,
		createdAt: 0001-01-01,
		updatedAt: 0001-01-01,
		shouldStartAtUtc: 0001-01-01,
		startedAtUtc: 0001-01-01,
		status: 0,
		configuration: 
		{
			coefficients: 
			[
				0
			],
			isDoubleTripleActive: False,
			isJackpot5Active: False,
			countdownDurationInSeconds: 0,
			countdownConfiguration: 
			{
				lockdownStepFromEnd: 0,
				assertLockdownStepFromEnd: 0
			},
			drawConfiguration: 
			{
				introIntervalInMs: 0,
				animationIntervalInMs: 0,
				outroIntervalInMs: 0
			},
			resultsDurationInSeconds: 0,
			rtpStrategy: 0,
			happyHourConfiguration: 
			{
				isHappyHour: False,
				oddsModifier: 0,
				roundPoolBonusPct: 0,
				useOnlyRoundPoolWithNoOptimizations: False,
				overrideSyphonCombinationCountPerRoundThreshold: False,
				syphonCombinationCountPerRoundThresholdPctOverride: 0
			}
		},
		sequence: String,
		jackpot5Info: 
		{
			isHit: False,
			amountAccumulated: 0,
			amountAwarded: 0,
			nrOfWinners: 0,
			jackPot5Winners: 
			[
				{
					betId: String,
					nrOfCombinations: 0,
					winningsAmount: 0,
					origin: 
					{
						application: 
						{
							name: String,
							version: String
						},
						ip: String,
						organization: 
						{
							data: 
							{
								String: String
							},
							id: String,
							val: String
						},
						region: 
						{
							id: String,
							val: String
						},
						locationGroup: 
						{
							id: String,
							val: String
						},
						location: 
						{
							data: 
							{
								String: String
							},
							id: String,
							val: String
						},
						device: 
						{
							data: 
							{
								String: String
							},
							id: String,
							val: String
						},
						clerk: 
						{
							id: String,
							val: String
						}
					},
					bettor: 
					{
						id: String,
						val: String
					},
					payload: 
					{
						String: String
					}
				}
			]
		},
		superWinInfo: 
		{
			isActive: False,
			winner: 
			{
				isDrawn: False,
				drawnAtUtc: 0001-01-01,
				roundId: String,
				betId: String,
				slipId: String,
				origin: 
				{
					application: 
					{
						name: String,
						version: String
					},
					ip: String,
					organization: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					region: 
					{
						id: String,
						val: String
					},
					locationGroup: 
					{
						id: String,
						val: String
					},
					location: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					device: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					clerk: 
					{
						id: String,
						val: String
					}
				},
				bettor: 
				{
					id: String,
					val: String
				},
				code: String,
				amount: 0,
				locationAddressOrBettorInfo: String
			},
			availableAmount: 0,
			allPrizesAwarded: False
		},
		globalCodePotInfo: 
		{
			isActive: False,
			isDrawn: True,
			winner: 
			{
				roundId: String,
				drawnAtUtc: 0001-01-01,
				slipId: String,
				betId: String,
				code: String,
				amount: 0,
				origin: 
				{
					application: 
					{
						name: String,
						version: String
					},
					ip: String,
					organization: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					region: 
					{
						id: String,
						val: String
					},
					locationGroup: 
					{
						id: String,
						val: String
					},
					location: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					device: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					clerk: 
					{
						id: String,
						val: String
					}
				},
				bettor: 
				{
					id: String,
					val: String
				},
				locationAddressOrBettorInfo: String
			},
			inertCode: String,
			accumulation: 0
		},
		progress: 
		{
			stage: 0,
			step: 0,
			steps: 0,
			utcTimestamp: 0001-01-01
		},
		isLocked: False,
		isCalculated: False
	},
	lastJackpot5Info: 
	{
		isHit: False,
		amountAccumulated: 0,
		amountAwarded: 0,
		nrOfWinners: 0,
		jackPot5Winners: 
		[
			{
				betId: String,
				nrOfCombinations: 0,
				winningsAmount: 0,
				origin: 
				{
					application: 
					{
						name: String,
						version: String
					},
					ip: String,
					organization: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					region: 
					{
						id: String,
						val: String
					},
					locationGroup: 
					{
						id: String,
						val: String
					},
					location: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					device: 
					{
						data: 
						{
							String: String
						},
						id: String,
						val: String
					},
					clerk: 
					{
						id: String,
						val: String
					}
				},
				bettor: 
				{
					id: String,
					val: String
				},
				payload: 
				{
					String: String
				}
			}
		]
	},
	superWinInfo: 
	{
		isActive: False,
		winner: 
		{
			isDrawn: False,
			drawnAtUtc: 0001-01-01,
			roundId: String,
			betId: String,
			slipId: String,
			origin: 
			{
				application: 
				{
					name: String,
					version: String
				},
				ip: String,
				organization: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				region: 
				{
					id: String,
					val: String
				},
				locationGroup: 
				{
					id: String,
					val: String
				},
				location: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				device: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				clerk: 
				{
					id: String,
					val: String
				}
			},
			bettor: 
			{
				id: String,
				val: String
			},
			code: String,
			amount: 0,
			locationAddressOrBettorInfo: String
		},
		availableAmount: 0,
		allPrizesAwarded: False
	},
	globalCodePotInfo: 
	{
		isActive: False,
		isDrawn: True,
		winner: 
		{
			roundId: String,
			drawnAtUtc: 0001-01-01,
			slipId: String,
			betId: String,
			code: String,
			amount: 0,
			origin: 
			{
				application: 
				{
					name: String,
					version: String
				},
				ip: String,
				organization: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				region: 
				{
					id: String,
					val: String
				},
				locationGroup: 
				{
					id: String,
					val: String
				},
				location: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				device: 
				{
					data: 
					{
						String: String
					},
					id: String,
					val: String
				},
				clerk: 
				{
					id: String,
					val: String
				}
			},
			bettor: 
			{
				id: String,
				val: String
			},
			locationAddressOrBettorInfo: String
		},
		inertCode: String,
		accumulation: 0
	}
}