# frozen_string_literal: true # encoding: utf-8 # Options: =begin Date: 2026-11-07 04:16:29 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: GetFeed.* #ExcludeTypes: #AddNamespaces: #AddDefaultXmlNamespace: http://schemas.servicestack.net/types =end require 'json' require 'servicestack' module RTPStrategies RNG = 0 ACCUMULATOR = 1 end module RoundStatus PENDING = 0 IN_PROGRESS = 1 ENDED = 2 end module Stages NONE = 0 COUNTDOWN = 1 PROCESSING = 2 DRAW = 3 RESULTS = 4 end module IReturn def response_type() = T def get_type_name() = 'IReturn' end class Ref include ServiceStack::DTO # @return [String] attr_accessor :id # @return [String] attr_accessor :val def self.properties { id: { name: 'id' }, val: { name: 'val' }, } end end class BettingApp include ServiceStack::DTO # @return [String] attr_accessor :name # @return [String] attr_accessor :version def self.properties { name: { name: 'name' }, version: { name: 'version' }, } end end class RefEx < Ref # @return [RecordDictionary] attr_accessor :data def self.properties { data: { name: 'data', type: RecordDictionary }, } end end class Origin include ServiceStack::DTO # @return [BettingApp] attr_accessor :application # @return [String] attr_accessor :ip # @return [RefEx] attr_accessor :organization # @return [Ref] attr_accessor :region # @return [Ref] attr_accessor :location_group # @return [RefEx] attr_accessor :location # @return [RefEx] attr_accessor :device # @return [Ref] attr_accessor :clerk def self.properties { application: { name: 'application', type: BettingApp }, ip: { name: 'ip' }, organization: { name: 'organization', type: RefEx }, region: { name: 'region', type: Ref }, location_group: { name: 'locationGroup', type: Ref }, location: { name: 'location', type: RefEx }, device: { name: 'device', type: RefEx }, clerk: { name: 'clerk', type: Ref }, } end end class RecordDictionary < Hash 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 RecordList < Array end class JackPot5Winner include ServiceStack::DTO # @return [String] attr_accessor :bet_id # @return [Integer] attr_accessor :nr_of_combinations # @return [BigDecimal] attr_accessor :winnings_amount # @return [Origin] attr_accessor :origin # @return [Ref] attr_accessor :bettor # @return [Dictionary] attr_accessor :payload def self.properties { bet_id: { name: 'betId' }, nr_of_combinations: { name: 'nrOfCombinations' }, winnings_amount: { name: 'winningsAmount' }, origin: { name: 'origin', type: Origin }, bettor: { name: 'bettor', type: Ref }, payload: { name: 'payload' }, } end end class Jackpot5Info include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_hit # @return [BigDecimal] attr_accessor :amount_accumulated # @return [BigDecimal] attr_accessor :amount_awarded # @return [Integer] attr_accessor :nr_of_winners # @return [List] attr_accessor :jack_pot5_winners def self.properties { is_hit: { name: 'isHit' }, amount_accumulated: { name: 'amountAccumulated' }, amount_awarded: { name: 'amountAwarded' }, nr_of_winners: { name: 'nrOfWinners' }, jack_pot5_winners: { name: 'jackPot5Winners', type: [JackPot5Winner] }, } end end class SuperWinInfo include ServiceStack::DTO # @return [Integer] attr_accessor :duration_in_ms # @return [String] attr_accessor :reasoning def self.properties { duration_in_ms: { name: 'durationInMs' }, reasoning: { name: 'reasoning' }, } end end class WinnerByCode include ServiceStack::DTO # @return [String] attr_accessor :round_id # @return [DateTime] attr_accessor :drawn_at_utc # @return [String] attr_accessor :slip_id # @return [String] attr_accessor :bet_id # @return [String] attr_accessor :code # @return [BigDecimal] attr_accessor :amount # @return [Origin] attr_accessor :origin # @return [Ref] attr_accessor :bettor # @return [String] attr_accessor :location_address_or_bettor_info def self.properties { round_id: { name: 'roundId' }, drawn_at_utc: { name: 'drawnAtUtc', type: DateTime }, slip_id: { name: 'slipId' }, bet_id: { name: 'betId' }, code: { name: 'code' }, amount: { name: 'amount' }, origin: { name: 'origin', type: Origin }, bettor: { name: 'bettor', type: Ref }, location_address_or_bettor_info: { name: 'locationAddressOrBettorInfo' }, } end end class GlobalCodePotInfo include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_active # @return [TrueClass] attr_accessor :is_drawn # @return [WinnerByCode] attr_accessor :winner # @return [String] attr_accessor :inert_code # @return [BigDecimal] attr_accessor :accumulation def self.properties { is_active: { name: 'isActive' }, is_drawn: { name: 'isDrawn' }, winner: { name: 'winner', type: WinnerByCode }, inert_code: { name: 'inertCode' }, accumulation: { name: 'accumulation' }, } end end class RoundProgress include ServiceStack::DTO # @return [Stages] attr_accessor :stage # @return [Integer] attr_accessor :step # @return [Integer] attr_accessor :steps # @return [DateTime] attr_accessor :utc_timestamp def self.properties { stage: { name: 'stage' }, step: { name: 'step' }, steps: { name: 'steps' }, utc_timestamp: { name: 'utcTimestamp', type: DateTime }, } end end class Round include ServiceStack::DTO # @return [String] attr_accessor :id # @return [DateTime] attr_accessor :created_at # @return [DateTime] attr_accessor :updated_at # @return [DateTime] attr_accessor :should_start_at_utc # @return [DateTime] attr_accessor :started_at_utc # @return [RoundStatus] attr_accessor :status # @return [RoundConfiguration] attr_accessor :configuration # @return [String] attr_accessor :sequence # @return [Jackpot5Info] attr_accessor :jackpot5_info # @return [SuperWinInfo] attr_accessor :super_win_info # @return [GlobalCodePotInfo] attr_accessor :global_code_pot_info # @return [RoundProgress] attr_accessor :progress # @return [TrueClass] attr_accessor :is_locked # @return [TrueClass] attr_accessor :is_calculated def self.properties { id: { name: 'id' }, created_at: { name: 'createdAt', type: DateTime }, updated_at: { name: 'updatedAt', type: DateTime }, should_start_at_utc: { name: 'shouldStartAtUtc', type: DateTime }, started_at_utc: { name: 'startedAtUtc', type: DateTime }, status: { name: 'status' }, configuration: { name: 'configuration', type: RoundConfiguration }, sequence: { name: 'sequence' }, jackpot5_info: { name: 'jackpot5Info', type: Jackpot5Info }, super_win_info: { name: 'superWinInfo', type: SuperWinInfo }, global_code_pot_info: { name: 'globalCodePotInfo', type: GlobalCodePotInfo }, progress: { name: 'progress', type: RoundProgress }, is_locked: { name: 'isLocked' }, is_calculated: { name: 'isCalculated' }, } end end class SuperWinInfo include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_active # @return [SuperWinWinner] attr_accessor :winner # @return [BigDecimal] attr_accessor :available_amount # @return [TrueClass] attr_accessor :all_prizes_awarded def self.properties { is_active: { name: 'isActive' }, winner: { name: 'winner' }, available_amount: { name: 'availableAmount' }, all_prizes_awarded: { name: 'allPrizesAwarded' }, } end end class Feed include ServiceStack::DTO # @return [String] attr_accessor :id # @return [Round] attr_accessor :round # @return [Jackpot5Info] attr_accessor :last_jackpot5_info # @return [SuperWinInfo] attr_accessor :super_win_info # @return [GlobalCodePotInfo] attr_accessor :global_code_pot_info def self.properties { id: { name: 'id' }, round: { name: 'round', type: Round }, last_jackpot5_info: { name: 'lastJackpot5Info', type: Jackpot5Info }, super_win_info: { name: 'superWinInfo', type: SuperWinInfo }, global_code_pot_info: { name: 'globalCodePotInfo', type: GlobalCodePotInfo }, } end end # @Route("/qry/feed") class GetFeed include ServiceStack::DTO def response_type() = Feed def get_type_name() = 'GetFeed' def get_method() = 'POST' end