Six4Win.WebApi

<back to all web services

ConfigureGame

Requires Authentication
The following routes are available for this service:
POST/cmd/configure/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 ConfigureGame {
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub id: Option<String>,
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub configuration: Option<GameConfiguration>,
}

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

Rust ConfigureGame 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 /cmd/configure/game HTTP/1.1 
Host: s4w1.api.bettor.webhop.biz 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	id: String,
	configuration: 
	{
		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
		}
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	errorCode: String,
	message: String,
	stackTrace: String,
	errors: 
	[
		{
			errorCode: String,
			fieldName: String,
			message: String,
			meta: 
			{
				String: String
			}
		}
	],
	meta: 
	{
		String: String
	}
}