| 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>);
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=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
}
}