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 .xml suffix or ?format=xml

HTTP + XML

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: application/xml
Content-Type: application/xml
Content-Length: length

<GetGameConfig xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Six4Win.WebApi.ServiceModel">
  <LocationId>String</LocationId>
</GetGameConfig>
HTTP/1.1 200 OK
Content-Type: application/xml
Content-Length: length

<GameConfiguration xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Six4Win.ReadModel">
  <HappyHourConfig xmlns:d2p1="http://schemas.datacontract.org/2004/07/Six4Win">
    <d2p1:IsActive>false</d2p1:IsActive>
    <d2p1:Items>
      <d2p1:HappyHourConfig.HappyHourItem>
        <d2p1:Id>0</d2p1:Id>
        <d2p1:Interval>
          <d2p1:End>
            <d2p1:Hour>0</d2p1:Hour>
            <d2p1:Minute>0</d2p1:Minute>
          </d2p1:End>
          <d2p1:Start>
            <d2p1:Hour>0</d2p1:Hour>
            <d2p1:Minute>0</d2p1:Minute>
          </d2p1:Start>
        </d2p1:Interval>
        <d2p1:OddsModifier>0</d2p1:OddsModifier>
        <d2p1:RoundPoolBonusPct>0</d2p1:RoundPoolBonusPct>
      </d2p1:HappyHourConfig.HappyHourItem>
    </d2p1:Items>
    <d2p1:OverrideSyphonCombinationCountPerRoundThreshold>false</d2p1:OverrideSyphonCombinationCountPerRoundThreshold>
    <d2p1:SyphonCombinationCountPerRoundThresholdPctOverride>0</d2p1:SyphonCombinationCountPerRoundThresholdPctOverride>
    <d2p1:UseOnlyRoundPoolWithNoOptimizations>false</d2p1:UseOnlyRoundPoolWithNoOptimizations>
  </HappyHourConfig>
  <Id>String</Id>
  <QueueSize>0</QueueSize>
  <RoundConfiguration xmlns:d2p1="http://schemas.datacontract.org/2004/07/Six4Win">
    <d2p1:Coefficients xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:float>0</d3p1:float>
    </d2p1:Coefficients>
    <d2p1:CountdownConfiguration>
      <d2p1:AssertLockdownStepFromEnd>0</d2p1:AssertLockdownStepFromEnd>
      <d2p1:LockdownStepFromEnd>0</d2p1:LockdownStepFromEnd>
    </d2p1:CountdownConfiguration>
    <d2p1:CountdownDurationInSeconds>0</d2p1:CountdownDurationInSeconds>
    <d2p1:DrawConfiguration>
      <d2p1:AnimationIntervalInMs>0</d2p1:AnimationIntervalInMs>
      <d2p1:IntroIntervalInMs>0</d2p1:IntroIntervalInMs>
      <d2p1:OutroIntervalInMs>0</d2p1:OutroIntervalInMs>
    </d2p1:DrawConfiguration>
    <d2p1:HappyHourConfiguration>
      <d2p1:IsHappyHour>false</d2p1:IsHappyHour>
      <d2p1:OddsModifier>0</d2p1:OddsModifier>
      <d2p1:OverrideSyphonCombinationCountPerRoundThreshold>false</d2p1:OverrideSyphonCombinationCountPerRoundThreshold>
      <d2p1:RoundPoolBonusPct>0</d2p1:RoundPoolBonusPct>
      <d2p1:SyphonCombinationCountPerRoundThresholdPctOverride>0</d2p1:SyphonCombinationCountPerRoundThresholdPctOverride>
      <d2p1:UseOnlyRoundPoolWithNoOptimizations>false</d2p1:UseOnlyRoundPoolWithNoOptimizations>
    </d2p1:HappyHourConfiguration>
    <d2p1:IsDoubleTripleActive>false</d2p1:IsDoubleTripleActive>
    <d2p1:IsJackpot5Active>false</d2p1:IsJackpot5Active>
    <d2p1:RTPStrategy>RNG</d2p1:RTPStrategy>
    <d2p1:ResultsDurationInSeconds>0</d2p1:ResultsDurationInSeconds>
  </RoundConfiguration>
</GameConfiguration>