Six4Win.WebApi

<back to all web services

GetGameConfig

The following routes are available for this service:
All Verbs/qry/config/game
#![allow(
    dead_code,
    non_camel_case_types,
    non_snake_case,
    clippy::upper_case_acronyms
)]

use serde::{Deserialize, Serialize};
use serde_json::Value;
use std::collections::HashMap;

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct CountdownConfiguration {
    #[serde(rename = "lockdownStepFromEnd")]
    pub lockdown_step_from_end: i32,
    #[serde(rename = "assertLockdownStepFromEnd")]
    pub assert_lockdown_step_from_end: i32,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct DrawConfiguration {
    #[serde(rename = "introIntervalInMs")]
    pub intro_interval_in_ms: i32,
    #[serde(rename = "animationIntervalInMs")]
    pub animation_interval_in_ms: i32,
    #[serde(rename = "outroIntervalInMs")]
    pub outro_interval_in_ms: i32,
}

#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[repr(i32)]
pub enum RTPStrategies {
    #[default]
    RNG = 0,
    Accumulator = 1,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HappyHourConfiguration {
    #[serde(rename = "isHappyHour")]
    pub is_happy_hour: bool,
    #[serde(rename = "oddsModifier")]
    pub odds_modifier: f64,
    #[serde(rename = "roundPoolBonusPct")]
    pub round_pool_bonus_pct: f64,
    #[serde(rename = "useOnlyRoundPoolWithNoOptimizations")]
    pub use_only_round_pool_with_no_optimizations: bool,
    #[serde(rename = "overrideSyphonCombinationCountPerRoundThreshold")]
    pub override_syphon_combination_count_per_round_threshold: bool,
    #[serde(rename = "syphonCombinationCountPerRoundThresholdPctOverride")]
    pub syphon_combination_count_per_round_threshold_pct_override: f64,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct RoundConfiguration {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub coefficients: Option<RecordList>,
    #[serde(rename = "isDoubleTripleActive")]
    pub is_double_triple_active: bool,
    #[serde(rename = "isJackpot5Active")]
    pub is_jackpot5_active: bool,
    #[serde(rename = "countdownDurationInSeconds")]
    pub countdown_duration_in_seconds: i32,
    #[serde(rename = "countdownConfiguration")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub countdown_configuration: Option<CountdownConfiguration>,
    #[serde(rename = "drawConfiguration")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub draw_configuration: Option<DrawConfiguration>,
    #[serde(rename = "resultsDurationInSeconds")]
    pub results_duration_in_seconds: i32,
    #[serde(rename = "rtpStrategy")]
    pub rtp_strategy: RTPStrategies,
    #[serde(rename = "happyHourConfiguration")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub happy_hour_configuration: Option<HappyHourConfiguration>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct TimePoint {
    pub hour: i32,
    pub minute: i32,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct TimeInterval {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub start: Option<TimePoint>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub end: Option<TimePoint>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HappyHourItem {
    pub id: i64,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub interval: Option<TimeInterval>,
    #[serde(rename = "oddsModifier")]
    pub odds_modifier: f64,
    #[serde(rename = "roundPoolBonusPct")]
    pub round_pool_bonus_pct: f64,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HappyHourConfig {
    #[serde(rename = "isActive")]
    pub is_active: bool,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub items: Option<Vec<HappyHourItem>>,
    #[serde(rename = "useOnlyRoundPoolWithNoOptimizations")]
    pub use_only_round_pool_with_no_optimizations: bool,
    #[serde(rename = "overrideSyphonCombinationCountPerRoundThreshold")]
    pub override_syphon_combination_count_per_round_threshold: bool,
    #[serde(rename = "syphonCombinationCountPerRoundThresholdPctOverride")]
    pub syphon_combination_count_per_round_threshold_pct_override: f64,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct GameConfiguration {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(rename = "queueSize")]
    pub queue_size: i32,
    #[serde(rename = "roundConfiguration")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub round_configuration: Option<RoundConfiguration>,
    #[serde(rename = "happyHourConfig")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub happy_hour_config: Option<HappyHourConfig>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct GetGameConfig {
    #[serde(rename = "locationId")]
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub location_id: Option<String>,
}

#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct RecordList(pub Vec<T>);

Rust GetGameConfig 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/config/game HTTP/1.1 
Host: s4w2.api.bettor.webhop.biz 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

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

{
	id: String,
	queueSize: 0,
	roundConfiguration: 
	{
		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
		}
	},
	happyHourConfig: 
	{
		isActive: False,
		items: 
		[
			{
				id: 0,
				interval: 
				{
					start: 
					{
						hour: 0,
						minute: 0
					},
					end: 
					{
						hour: 0,
						minute: 0
					}
				},
				oddsModifier: 0,
				roundPoolBonusPct: 0
			}
		],
		useOnlyRoundPoolWithNoOptimizations: False,
		overrideSyphonCombinationCountPerRoundThreshold: False,
		syphonCombinationCountPerRoundThresholdPctOverride: 0
	}
}