# frozen_string_literal: true # encoding: utf-8 # Options: =begin Date: 2026-11-07 04:16:36 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: ConfigureAccumulator.* #ExcludeTypes: #AddNamespaces: #AddDefaultXmlNamespace: http://schemas.servicestack.net/types =end require 'json' require 'servicestack' module LocationOptimizationLevel NONE = 0 LOW = 1 MEDIUM = 2 HIGH = 3 end module SortingOrder NONE = 0 ASCENDING = 1 DESCENDING = 2 end module StakeCategory PICKEREL = 0 FISH = 1 SALMON = 2 TUNA = 3 SHARK = 4 WHALE = 5 NONE = -1 end module ResponseStatus FAILURE = 0 SUCCESS = 1 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 Pool include ServiceStack::DTO # @return [Integer] attr_accessor :id # @return [String] attr_accessor :name # @return [BigDecimal] attr_accessor :treshold def self.properties { id: { name: 'id' }, name: { name: 'name' }, treshold: { name: 'treshold' }, } end end class ThresholdInterval include ServiceStack::DTO # @return [BigDecimal] attr_accessor :start # @return [BigDecimal] attr_accessor :end def self.properties { start: { name: 'start' }, end: { name: 'end' }, } end end class WinCountOrderProbability include ServiceStack::DTO # @return [SortingOrder] attr_accessor :order # @return [Integer] attr_accessor :probability def self.properties { order: { name: 'order' }, probability: { name: 'probability' }, } end end class PoolCaps include ServiceStack::DTO # @return [BigDecimal] attr_accessor :plus_coef # @return [BigDecimal] attr_accessor :minus_coef # @return [BigDecimal] attr_accessor :max_amount_in_prevalent_stakes def self.properties { plus_coef: { name: 'plusCoef' }, minus_coef: { name: 'minusCoef' }, max_amount_in_prevalent_stakes: { name: 'maxAmountInPrevalentStakes' }, } end end class PoolSettings include ServiceStack::DTO # @return [Integer] attr_accessor :id # @return [String] attr_accessor :name # @return [TrueClass] attr_accessor :is_active # @return [BigDecimal] attr_accessor :contribution_to_round_pool_pct # @return [PoolCaps] attr_accessor :caps def self.properties { id: { name: 'id' }, name: { name: 'name' }, is_active: { name: 'isActive' }, contribution_to_round_pool_pct: { name: 'contributionToRoundPoolPct' }, caps: { name: 'caps', type: PoolCaps }, } end end class CategoryThreshold include ServiceStack::DTO # @return [StakeCategory] attr_accessor :category # @return [BigDecimal] attr_accessor :threshold def self.properties { category: { name: 'category' }, threshold: { name: 'threshold' }, } end end class HighRollerSettings include ServiceStack::DTO # @return [RecordList] attr_accessor :pools # @return [RecordList] attr_accessor :category_thresholds def self.properties { pools: { name: 'pools', type: RecordList }, category_thresholds: { name: 'categoryThresholds', type: RecordList }, } end end class SyphonBlacklists include ServiceStack::DTO # @return [RecordList] attr_accessor :locations # @return [RecordList] attr_accessor :players def self.properties { locations: { name: 'locations', type: RecordList }, players: { name: 'players', type: RecordList }, } end end class AntiSyphonConfig include ServiceStack::DTO # @return [BigDecimal] attr_accessor :combination_count_per_round_threshold_pct # @return [RecordList] attr_accessor :excluded_locations # @return [SyphonBlacklists] attr_accessor :blacklists # @return [TrueClass] attr_accessor :include_round_pct_as_bettor_syphon_criteria # @return [TrueClass] attr_accessor :is_active def self.properties { combination_count_per_round_threshold_pct: { name: 'combinationCountPerRoundThresholdPct' }, excluded_locations: { name: 'excludedLocations', type: RecordList }, blacklists: { name: 'blacklists', type: SyphonBlacklists }, include_round_pct_as_bettor_syphon_criteria: { name: 'includeRoundPctAsBettorSyphonCriteria' }, is_active: { name: 'isActive' }, } end end class FraudDetectionConfiguration include ServiceStack::DTO # @return [AntiSyphonConfig] attr_accessor :anti_syphon def self.properties { anti_syphon: { name: 'antiSyphon', type: AntiSyphonConfig }, } end end class DebugConfiguration include ServiceStack::DTO # @return [TrueClass] attr_accessor :log_location_stats # @return [TrueClass] attr_accessor :log_bettor_stats def self.properties { log_location_stats: { name: 'logLocationStats' }, log_bettor_stats: { name: 'logBettorStats' }, } end end class JP5WinnerCooldownPolicyConfig include ServiceStack::DTO # @return [TrueClass] attr_accessor :is_active # @return [Integer] attr_accessor :cooldown_interval_in_days def self.properties { is_active: { name: 'isActive' }, cooldown_interval_in_days: { name: 'cooldownIntervalInDays' }, } end end class AccumulatorConfiguration include ServiceStack::DTO # @return [RecordList] attr_accessor :pools # @return [BigDecimal] attr_accessor :prevalent_stake # @return [BigDecimal] attr_accessor :purge_threshold_modifier # @return [LocationOptimizationLevel] attr_accessor :location_optimization_level # @return [ThresholdInterval] attr_accessor :jack_pot5_threshold_interval # @return [Integer] attr_accessor :deviation_category_span_in_pct # @return [BigDecimal] attr_accessor :deviation_category_threshold_amount # @return [BigDecimal] attr_accessor :round_pool_circuit_breaker_threshold # @return [Integer] attr_accessor :low_win_count_affinity_in_pct # @return [RecordList] attr_accessor :win_count_order_affinity # @return [HighRollerSettings] attr_accessor :high_roller_settings # @return [TrueClass] attr_accessor :overflow_coefficient_pools_to_round # @return [TrueClass] attr_accessor :anti_syphon_protection_override # @return [FraudDetectionConfiguration] attr_accessor :fraud_detection_config # @return [DebugConfiguration] attr_accessor :debug_config # @return [JP5WinnerCooldownPolicyConfig] attr_accessor :j_p5_winner_cooldown_policy def self.properties { pools: { name: 'pools', type: RecordList }, prevalent_stake: { name: 'prevalentStake' }, purge_threshold_modifier: { name: 'purgeThresholdModifier' }, location_optimization_level: { name: 'locationOptimizationLevel' }, jack_pot5_threshold_interval: { name: 'jackPot5ThresholdInterval', type: ThresholdInterval }, deviation_category_span_in_pct: { name: 'deviationCategorySpanInPct' }, deviation_category_threshold_amount: { name: 'deviationCategoryThresholdAmount' }, round_pool_circuit_breaker_threshold: { name: 'roundPoolCircuitBreakerThreshold' }, low_win_count_affinity_in_pct: { name: 'lowWinCountAffinityInPct' }, win_count_order_affinity: { name: 'winCountOrderAffinity', type: RecordList }, high_roller_settings: { name: 'highRollerSettings', type: HighRollerSettings }, overflow_coefficient_pools_to_round: { name: 'overflowCoefficientPoolsToRound' }, anti_syphon_protection_override: { name: 'antiSyphonProtectionOverride' }, fraud_detection_config: { name: 'fraudDetectionConfig', type: FraudDetectionConfiguration }, debug_config: { name: 'debugConfig', type: DebugConfiguration }, j_p5_winner_cooldown_policy: { name: 'jP5WinnerCooldownPolicy', type: JP5WinnerCooldownPolicyConfig }, } end end class Pool include ServiceStack::DTO # @return [Integer] attr_accessor :id # @return [String] attr_accessor :name # @return [BigDecimal] attr_accessor :coefficient # @return [BigDecimal] attr_accessor :rtp # @return [BigDecimal] attr_accessor :threshold # @return [BigDecimal] attr_accessor :balance # @return [BigDecimal] attr_accessor :rrtp # @return [BigDecimal] attr_accessor :r_balance def self.properties { id: { name: 'id' }, name: { name: 'name' }, coefficient: { name: 'coefficient' }, rtp: { name: 'rtp' }, threshold: { name: 'threshold' }, balance: { name: 'balance' }, rrtp: { name: 'rrtp' }, r_balance: { name: 'rBalance' }, } end end class RecordList < Array end class Pool include ServiceStack::DTO # @return [Integer] attr_accessor :id # @return [String] attr_accessor :name # @return [BigDecimal] attr_accessor :rtp # @return [BigDecimal] attr_accessor :reserve_r_t_p # @return [BigDecimal] attr_accessor :total_r_t_p def self.properties { id: { name: 'id' }, name: { name: 'name' }, rtp: { name: 'rtp' }, reserve_r_t_p: { name: 'reserveRTP' }, total_r_t_p: { name: 'totalRTP' }, } end 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/accumulator", "POST") class ConfigureAccumulator include ServiceStack::DTO # @return [String] attr_accessor :id # @return [AccumulatorConfiguration] attr_accessor :configuration def self.properties { id: { name: 'id' }, configuration: { name: 'configuration', type: AccumulatorConfiguration }, } end def response_type() = ResponseStatus def get_type_name() = 'ConfigureAccumulator' def get_method() = 'POST' end