# frozen_string_literal: true # encoding: utf-8 # Options: =begin Date: 2026-11-07 04:02:38 Version: 10.42 Tip: To override a DTO option, remove "//" prefix before updating BaseUrl: https://s4w1.api.bettor.webhop.biz #MakePartial: True #MakeVirtual: True #MakeInternal: False #MakeDataContractsExtensible: False #AddReturnMarker: True #AddDescriptionAsComments: True #AddDataContractAttributes: False #AddIndexesToDataMembers: False #AddGeneratedCodeAttributes: False #AddResponseStatus: False #AddImplicitVersion: #InitializeCollections: False #ExportValueTypes: False IncludeTypes: ConfigureGame.* #ExcludeTypes: #AddNamespaces: #AddDefaultXmlNamespace: http://schemas.servicestack.net/types =end require 'json' require 'servicestack' module RTPStrategies RNG = 0 ACCUMULATOR = 1 end module ResponseStatus FAILURE = 0 SUCCESS = 1 end module IReturn def response_type() = T def get_type_name() = 'IReturn' end class CountdownConfiguration include ServiceStack::DTO # @return [Integer] attr_accessor :lockdown_step_from_end # @return [Integer] attr_accessor :assert_lockdown_step_from_end def self.properties { lockdown_step_from_end: { name: 'lockdownStepFromEnd' }, assert_lockdown_step_from_end: { name: 'assertLockdownStepFromEnd' }, } end end class DrawConfiguration include ServiceStack::DTO # @return [Integer] attr_accessor :intro_interval_in_ms # @return [Integer] attr_accessor :animation_interval_in_ms # @return [Integer] attr_accessor :outro_interval_in_ms def self.properties { intro_interval_in_ms: { name: 'introIntervalInMs' }, animation_interval_in_ms: { name: 'animationIntervalInMs' }, outro_interval_in_ms: { name: 'outroIntervalInMs' }, } end end class HappyHourConfiguration include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_happy_hour # @return [BigDecimal] attr_accessor :odds_modifier # @return [BigDecimal] attr_accessor :round_pool_bonus_pct # @return [TrueClass] attr_accessor :use_only_round_pool_with_no_optimizations # @return [TrueClass] attr_accessor :override_syphon_combination_count_per_round_threshold # @return [BigDecimal] attr_accessor :syphon_combination_count_per_round_threshold_pct_override def self.properties { is_happy_hour: { name: 'isHappyHour' }, odds_modifier: { name: 'oddsModifier' }, round_pool_bonus_pct: { name: 'roundPoolBonusPct' }, use_only_round_pool_with_no_optimizations: { name: 'useOnlyRoundPoolWithNoOptimizations' }, override_syphon_combination_count_per_round_threshold: { name: 'overrideSyphonCombinationCountPerRoundThreshold' }, syphon_combination_count_per_round_threshold_pct_override: { name: 'syphonCombinationCountPerRoundThresholdPctOverride' }, } end end class RoundConfiguration include ServiceStack::DTO # @return [RecordList] attr_accessor :coefficients # @return [TrueClass] attr_accessor :is_double_triple_active # @return [TrueClass] attr_accessor :is_jackpot5_active # @return [Integer] attr_accessor :countdown_duration_in_seconds # @return [CountdownConfiguration] attr_accessor :countdown_configuration # @return [DrawConfiguration] attr_accessor :draw_configuration # @return [Integer] attr_accessor :results_duration_in_seconds # @return [RTPStrategies] attr_accessor :rtp_strategy # @return [HappyHourConfiguration] attr_accessor :happy_hour_configuration def self.properties { coefficients: { name: 'coefficients', type: RecordList }, is_double_triple_active: { name: 'isDoubleTripleActive' }, is_jackpot5_active: { name: 'isJackpot5Active' }, countdown_duration_in_seconds: { name: 'countdownDurationInSeconds' }, countdown_configuration: { name: 'countdownConfiguration', type: CountdownConfiguration }, draw_configuration: { name: 'drawConfiguration', type: DrawConfiguration }, results_duration_in_seconds: { name: 'resultsDurationInSeconds' }, rtp_strategy: { name: 'rtpStrategy' }, happy_hour_configuration: { name: 'happyHourConfiguration', type: HappyHourConfiguration }, } end end class TimePoint include ServiceStack::DTO # @return [Integer] attr_accessor :hour # @return [Integer] attr_accessor :minute def self.properties { hour: { name: 'hour' }, minute: { name: 'minute' }, } end end class TimeInterval include ServiceStack::DTO # @return [TimePoint] attr_accessor :start # @return [TimePoint] attr_accessor :end def self.properties { start: { name: 'start', type: TimePoint }, end: { name: 'end', type: TimePoint }, } end end class HappyHourItem include ServiceStack::DTO # @return [Integer] attr_accessor :id # @return [TimeInterval] attr_accessor :interval # @return [BigDecimal] attr_accessor :odds_modifier # @return [BigDecimal] attr_accessor :round_pool_bonus_pct def self.properties { id: { name: 'id' }, interval: { name: 'interval', type: TimeInterval }, odds_modifier: { name: 'oddsModifier' }, round_pool_bonus_pct: { name: 'roundPoolBonusPct' }, } end end class HappyHourConfig include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_active # @return [List] attr_accessor :items # @return [TrueClass] attr_accessor :use_only_round_pool_with_no_optimizations # @return [TrueClass] attr_accessor :override_syphon_combination_count_per_round_threshold # @return [BigDecimal] attr_accessor :syphon_combination_count_per_round_threshold_pct_override def self.properties { is_active: { name: 'isActive' }, items: { name: 'items', type: [HappyHourItem] }, use_only_round_pool_with_no_optimizations: { name: 'useOnlyRoundPoolWithNoOptimizations' }, override_syphon_combination_count_per_round_threshold: { name: 'overrideSyphonCombinationCountPerRoundThreshold' }, syphon_combination_count_per_round_threshold_pct_override: { name: 'syphonCombinationCountPerRoundThresholdPctOverride' }, } end end class GameConfiguration include ServiceStack::DTO # @return [Integer] attr_accessor :queue_size # @return [RoundConfiguration] attr_accessor :round_configuration # @return [HappyHourConfig] attr_accessor :happy_hour_config def self.properties { queue_size: { name: 'queueSize' }, round_configuration: { name: 'roundConfiguration', type: RoundConfiguration }, happy_hour_config: { name: 'happyHourConfig', type: HappyHourConfig }, } end end class RecordList < Array end # @DataContract class ResponseStatus include ServiceStack::DTO # @DataMember(Order=1) # @return [String] attr_accessor :error_code # @DataMember(Order=2) # @return [String] attr_accessor :message # @DataMember(Order=3) # @return [String] attr_accessor :stack_trace # @DataMember(Order=4) # @return [List] attr_accessor :errors # @DataMember(Order=5) # @return [Dictionary] attr_accessor :meta def self.properties { error_code: { name: 'errorCode' }, message: { name: 'message' }, stack_trace: { name: 'stackTrace' }, errors: { name: 'errors', type: [ServiceStack::ResponseError] }, meta: { name: 'meta' }, } end end # @Route("/cmd/configure/game", "POST") class ConfigureGame include ServiceStack::DTO # @return [String] attr_accessor :id # @return [GameConfiguration] attr_accessor :configuration def self.properties { id: { name: 'id' }, configuration: { name: 'configuration', type: GameConfiguration }, } end def response_type() = ResponseStatus def get_type_name() = 'ConfigureGame' def get_method() = 'POST' end