Six4Win.WebApi

<back to all web services

GetDrawDignostics

The following routes are available for this service:
All Verbs/qry/rounds/draw/diagnostics
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Initialization:
    data_load_duration: int = 0
    bets_collections_creation_duration: int = 0
    combinations_occurance_lookup_initialization_duration: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SequenceGeneration:
    nr_of_threads: int = 0
    nr_of_results_probed: int = 0
    duration: int = 0
    avg_single_pass_duration: int = 0


class SortingOrder(IntEnum):
    NONE = 0
    ASCENDING = 1
    DESCENDING = 2


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BestFitFinder:
    target_amount: Decimal = decimal.Decimal(0)
    awarded_amount: Decimal = decimal.Decimal(0)
    deviation: Decimal = decimal.Decimal(0)
    deviation_pct: Decimal = decimal.Decimal(0)
    sequence_result_type: Optional[str] = None
    is_jack_pot5_drawn: bool = False
    filtering_period: int = 0
    win_count_order: Optional[SortingOrder] = None
    min_amount: Decimal = decimal.Decimal(0)
    max_amount: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Bet:
    is_found: bool = False
    bet_id: Optional[str] = None
    slip_id: Optional[str] = None
    comb_stake: Optional[Object] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class QualifiedPool:
    id: int = 0
    name: Optional[str] = None
    coefficient: Decimal = decimal.Decimal(0)
    available_amount: Decimal = decimal.Decimal(0)
    awarded_amount: Decimal = decimal.Decimal(0)
    target_bet: Optional[Bet] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Purger:
    prevalent_stake: Decimal = decimal.Decimal(0)
    pool_purger: Optional[str] = None
    qualified_pools: Optional[List[QualifiedPool]] = None


class ResponseStatus(IntEnum):
    FAILURE = 0
    SUCCESS = 1


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class StimulationResponse:
    stimulation_id: Optional[str] = None
    status: Optional[ResponseStatus] = None
    failure_reason: Optional[str] = None
    slip_id: Optional[str] = None
    bet_id: Optional[str] = None
    amount_awarded: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class CurrentRoundInfo:
    round_id: Optional[str] = None
    amount: Decimal = decimal.Decimal(0)
    inert_code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class BettingApp:
    name: Optional[str] = None
    version: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Ref:
    id: Optional[str] = None
    val: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RefEx(Ref):
    data: Optional[RecordDictionary[str, str]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Origin:
    application: Optional[BettingApp] = None
    ip: Optional[str] = None
    organization: Optional[RefEx] = None
    region: Optional[Ref] = None
    location_group: Optional[Ref] = None
    location: Optional[RefEx] = None
    device: Optional[RefEx] = None
    clerk: Optional[Ref] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class WinnerByCode:
    round_id: Optional[str] = None
    drawn_at_utc: datetime.datetime = datetime.datetime(1, 1, 1)
    slip_id: Optional[str] = None
    bet_id: Optional[str] = None
    code: Optional[str] = None
    amount: Decimal = decimal.Decimal(0)
    origin: Optional[Origin] = None
    bettor: Optional[Ref] = None
    location_address_or_bettor_info: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class LocalCodePotInfo:
    is_active: bool = False
    current: Optional[CurrentRoundInfo] = None
    winners: Optional[List[WinnerByCode]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SuperWinInfo:
    duration_in_ms: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class HappyHourInfo:
    is_happy_hour: bool = False
    odds_modifier: Decimal = decimal.Decimal(0)
    round_pool_bonus_pct: Decimal = decimal.Decimal(0)


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class AccumulatorConfiguration(AccumulatorConfiguration):
    id: Optional[str] = None
    updated_at: datetime.datetime = datetime.datetime(1, 1, 1)


class SyphonType(IntEnum):
    LOCATION = 0
    BETTOR = 1


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Syphon:
    id: Optional[str] = None
    name: Optional[str] = None
    type: Optional[SyphonType] = None
    nr_of_combinations: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class SyphonInfo:
    bettors: Optional[Dict[str, Syphon]] = None
    locations: Optional[Dict[str, Syphon]] = None
    has_syphons: bool = False
    total_syphons_in_round: int = 0


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DrawDiagnostics:
    id: Optional[str] = None
    initialization_info: Optional[Initialization] = None
    sequence_generation_info: Optional[SequenceGeneration] = None
    best_fit_finder_info: Optional[BestFitFinder] = None
    purger_info: Optional[Purger] = None
    duration: int = 0
    stimulation_responses: Optional[List[StimulationResponse]] = None
    local_code_pot: Optional[LocalCodePotInfo] = None
    super_win: Optional[SuperWinInfo] = None
    happy_hour: Optional[HappyHourInfo] = None
    reasoning: Optional[str] = None
    configuration: Optional[AccumulatorConfiguration] = None
    syphon_info: Optional[SyphonInfo] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class GetDrawDignostics:
    id: Optional[str] = None


TKey = TypeVar('TKey')
TVal = TypeVar('TVal')


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class RecordDictionary(Generic[TKey, TVal], Dict[TKey,TVal]):
    pass

Python GetDrawDignostics 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/rounds/draw/diagnostics HTTP/1.1 
Host: s4w2.api.bettor.cc 
Accept: application/xml
Content-Type: application/xml
Content-Length: length

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

<DrawDiagnostics xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Six4Win.ReadModel">
  <BestFitFinderInfo>
    <AwardedAmount>0</AwardedAmount>
    <Deviation>0</Deviation>
    <DeviationPct>0</DeviationPct>
    <FilteringPeriod>0</FilteringPeriod>
    <IsJackPot5Drawn>false</IsJackPot5Drawn>
    <MaxAmount>0</MaxAmount>
    <MinAmount>0</MinAmount>
    <SequenceResultType>String</SequenceResultType>
    <TargetAmount>0</TargetAmount>
    <WinCountOrder>None</WinCountOrder>
  </BestFitFinderInfo>
  <Configuration xmlns:d2p1="http://schemas.datacontract.org/2004/07/Six4Win">
    <d2p1:AntiSyphonProtectionOverride>false</d2p1:AntiSyphonProtectionOverride>
    <d2p1:DebugConfig>
      <d2p1:LogBettorSats>false</d2p1:LogBettorSats>
      <d2p1:LogLocationStats>false</d2p1:LogLocationStats>
    </d2p1:DebugConfig>
    <d2p1:DeviationCategorySpanInPct>0</d2p1:DeviationCategorySpanInPct>
    <d2p1:DeviationCategoryThresholdAmount>0</d2p1:DeviationCategoryThresholdAmount>
    <d2p1:FraudDetectionConfig>
      <d2p1:AntiSyphon>
        <d2p1:CombinationCountPerRoundThresholdPct>0</d2p1:CombinationCountPerRoundThresholdPct>
        <d2p1:ExcludedLocations xmlns:d5p1="http://schemas.datacontract.org/2004/07/Starnet.Common">
          <d5p1:Ref>
            <d5p1:Id>String</d5p1:Id>
            <d5p1:Val>String</d5p1:Val>
          </d5p1:Ref>
        </d2p1:ExcludedLocations>
        <d2p1:IncludeRoundPctAsBettorSyphonCriteria>false</d2p1:IncludeRoundPctAsBettorSyphonCriteria>
        <d2p1:IsActive>false</d2p1:IsActive>
      </d2p1:AntiSyphon>
    </d2p1:FraudDetectionConfig>
    <d2p1:HighRollerSettings>
      <d2p1:CategoryThresholds>
        <d2p1:HighRollerSettings.CategoryThreshold>
          <d2p1:Category>Pickerel</d2p1:Category>
          <d2p1:Threshold>0</d2p1:Threshold>
        </d2p1:HighRollerSettings.CategoryThreshold>
      </d2p1:CategoryThresholds>
      <d2p1:Pools>
        <d2p1:HighRollerSettings.PoolSettings>
          <d2p1:Caps>
            <d2p1:MaxAmountInPrevalentStakes>0</d2p1:MaxAmountInPrevalentStakes>
            <d2p1:MinusCoef>0</d2p1:MinusCoef>
            <d2p1:PlusCoef>0</d2p1:PlusCoef>
          </d2p1:Caps>
          <d2p1:ContributionToRoundPoolPct>0</d2p1:ContributionToRoundPoolPct>
          <d2p1:Id>0</d2p1:Id>
          <d2p1:IsActive>false</d2p1:IsActive>
          <d2p1:Name>String</d2p1:Name>
        </d2p1:HighRollerSettings.PoolSettings>
      </d2p1:Pools>
    </d2p1:HighRollerSettings>
    <d2p1:JackPot5ThresholdInterval>
      <d2p1:End>0</d2p1:End>
      <d2p1:Start>0</d2p1:Start>
    </d2p1:JackPot5ThresholdInterval>
    <d2p1:LocationOptimizationLevel>None</d2p1:LocationOptimizationLevel>
    <d2p1:LowWinCountAffinityInPct>0</d2p1:LowWinCountAffinityInPct>
    <d2p1:OverflowCoefficientPoolsToRound>false</d2p1:OverflowCoefficientPoolsToRound>
    <d2p1:Pools>
      <d2p1:AccumulatorConfiguration.Pool>
        <d2p1:Id>0</d2p1:Id>
        <d2p1:Name>String</d2p1:Name>
        <d2p1:RTP>0</d2p1:RTP>
        <d2p1:ReserveRTP>0</d2p1:ReserveRTP>
      </d2p1:AccumulatorConfiguration.Pool>
    </d2p1:Pools>
    <d2p1:PrevalentStake>0</d2p1:PrevalentStake>
    <d2p1:PurgeThresholdModifier>0</d2p1:PurgeThresholdModifier>
    <d2p1:RoundPoolCircuitBreakerThreshold>0</d2p1:RoundPoolCircuitBreakerThreshold>
    <d2p1:WinCountOrderAffinity>
      <d2p1:WinCountOrderProbability>
        <d2p1:Order>None</d2p1:Order>
        <d2p1:Probability>0</d2p1:Probability>
      </d2p1:WinCountOrderProbability>
    </d2p1:WinCountOrderAffinity>
  </Configuration>
  <Duration>0</Duration>
  <HappyHour>
    <IsHappyHour>false</IsHappyHour>
    <OddsModifier>0</OddsModifier>
    <RoundPoolBonusPct>0</RoundPoolBonusPct>
  </HappyHour>
  <Id>String</Id>
  <InitializationInfo>
    <BetsCollectionsCreationDuration>0</BetsCollectionsCreationDuration>
    <CombinationsOccuranceLookupInitializationDuration>0</CombinationsOccuranceLookupInitializationDuration>
    <DataLoadDuration>0</DataLoadDuration>
  </InitializationInfo>
  <LocalCodePot>
    <DurationInMs>0</DurationInMs>
  </LocalCodePot>
  <PurgerInfo>
    <PoolPurger>String</PoolPurger>
    <PrevalentStake>0</PrevalentStake>
    <QualifiedPools>
      <DrawDiagnostics.QualifiedPool>
        <AvailableAmount>0</AvailableAmount>
        <AwardedAmount>0</AwardedAmount>
        <Coefficient>0</Coefficient>
        <Id>0</Id>
        <Name>String</Name>
        <TargetBet>
          <BetId>String</BetId>
          <CombStake />
          <IsFound>false</IsFound>
          <SlipId>String</SlipId>
        </TargetBet>
      </DrawDiagnostics.QualifiedPool>
    </QualifiedPools>
  </PurgerInfo>
  <Reasoning>String</Reasoning>
  <SequenceGenerationInfo>
    <AvgSinglePassDuration>0</AvgSinglePassDuration>
    <Duration>0</Duration>
    <NrOfResultsProbed>0</NrOfResultsProbed>
    <NrOfThreads>0</NrOfThreads>
  </SequenceGenerationInfo>
  <StimulationResponses>
    <DrawDiagnostics.StimulationResponse>
      <AmountAwarded>0</AmountAwarded>
      <BetId>String</BetId>
      <FailureReason>String</FailureReason>
      <SlipId>String</SlipId>
      <Status>Failure</Status>
      <StimulationId>String</StimulationId>
    </DrawDiagnostics.StimulationResponse>
  </StimulationResponses>
  <SuperWin>
    <DurationInMs>0</DurationInMs>
  </SuperWin>
  <SyphonInfo xmlns:d2p1="http://schemas.datacontract.org/2004/07/Six4Win.Common">
    <d2p1:Bettors xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringSyphonFQuwRXs4>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>
          <d2p1:Id>String</d2p1:Id>
          <d2p1:Name>String</d2p1:Name>
          <d2p1:NrOfCombinations>0</d2p1:NrOfCombinations>
          <d2p1:Type>Location</d2p1:Type>
        </d3p1:Value>
      </d3p1:KeyValueOfstringSyphonFQuwRXs4>
    </d2p1:Bettors>
    <d2p1:Locations xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
      <d3p1:KeyValueOfstringSyphonFQuwRXs4>
        <d3p1:Key>String</d3p1:Key>
        <d3p1:Value>
          <d2p1:Id>String</d2p1:Id>
          <d2p1:Name>String</d2p1:Name>
          <d2p1:NrOfCombinations>0</d2p1:NrOfCombinations>
          <d2p1:Type>Location</d2p1:Type>
        </d3p1:Value>
      </d3p1:KeyValueOfstringSyphonFQuwRXs4>
    </d2p1:Locations>
  </SyphonInfo>
</DrawDiagnostics>