| All Verbs | /qry/rounds/draw/diagnostics |
|---|
#![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 Initialization {
#[serde(rename = "dataLoadDuration")]
pub data_load_duration: i64,
#[serde(rename = "betsCollectionsCreationDuration")]
pub bets_collections_creation_duration: i64,
#[serde(rename = "combinationsOccuranceLookupInitializationDuration")]
pub combinations_occurance_lookup_initialization_duration: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct SequenceGeneration {
#[serde(rename = "nrOfThreads")]
pub nr_of_threads: i32,
#[serde(rename = "nrOfResultsProbed")]
pub nr_of_results_probed: i32,
pub duration: i64,
#[serde(rename = "avgSinglePassDuration")]
pub avg_single_pass_duration: i64,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[repr(i32)]
pub enum SortingOrder {
#[default]
None = 0,
Ascending = 1,
Descending = 2,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct BestFitFinder {
#[serde(rename = "targetAmount")]
pub target_amount: f64,
#[serde(rename = "awardedAmount")]
pub awarded_amount: f64,
pub deviation: f64,
#[serde(rename = "deviationPct")]
pub deviation_pct: f64,
#[serde(rename = "sequenceResultType")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_result_type: Option<String>,
#[serde(rename = "isJackPot5Drawn")]
pub is_jack_pot5_drawn: bool,
#[serde(rename = "filteringPeriod")]
pub filtering_period: i64,
#[serde(rename = "winCountOrder")]
pub win_count_order: SortingOrder,
#[serde(rename = "minAmount")]
pub min_amount: f64,
#[serde(rename = "maxAmount")]
pub max_amount: f64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Bet {
#[serde(rename = "isFound")]
pub is_found: bool,
#[serde(rename = "betId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bet_id: Option<String>,
#[serde(rename = "slipId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slip_id: Option<String>,
#[serde(rename = "combStake")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub comb_stake: Option<Value>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct QualifiedPool {
pub id: i32,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub coefficient: f64,
#[serde(rename = "availableAmount")]
pub available_amount: f64,
#[serde(rename = "awardedAmount")]
pub awarded_amount: f64,
#[serde(rename = "targetBet")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub target_bet: Option<Bet>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Purger {
#[serde(rename = "prevalentStake")]
pub prevalent_stake: f64,
#[serde(rename = "poolPurger")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub pool_purger: Option<String>,
#[serde(rename = "qualifiedPools")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub qualified_pools: Option<Vec<QualifiedPool>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[repr(i32)]
pub enum ResponseStatus {
#[default]
Failure = 0,
Success = 1,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct StimulationResponse {
#[serde(rename = "stimulationId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stimulation_id: Option<String>,
pub status: ResponseStatus,
#[serde(rename = "failureReason")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub failure_reason: Option<String>,
#[serde(rename = "slipId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slip_id: Option<String>,
#[serde(rename = "betId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bet_id: Option<String>,
#[serde(rename = "amountAwarded")]
pub amount_awarded: f64,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct CurrentRoundInfo {
#[serde(rename = "roundId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub round_id: Option<String>,
pub amount: f64,
#[serde(rename = "inertCode")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub inert_code: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct BettingApp {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub version: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Ref {
pub id: String,
pub val: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct RefEx {
#[serde(flatten)]
pub r#ref: Ref,
pub data: RecordDictionary,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Origin {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub application: Option<BettingApp>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub ip: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub organization: Option<RefEx>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub region: Option<Ref>,
#[serde(rename = "locationGroup")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location_group: Option<Ref>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location: Option<RefEx>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub device: Option<RefEx>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub clerk: Option<Ref>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct WinnerByCode {
#[serde(rename = "roundId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub round_id: Option<String>,
#[serde(rename = "drawnAtUtc")]
pub drawn_at_utc: String,
#[serde(rename = "slipId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub slip_id: Option<String>,
#[serde(rename = "betId")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bet_id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub code: Option<String>,
pub amount: f64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub origin: Option<Origin>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bettor: Option<Ref>,
#[serde(rename = "locationAddressOrBettorInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub location_address_or_bettor_info: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct LocalCodePotInfo {
#[serde(rename = "isActive")]
pub is_active: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub current: Option<CurrentRoundInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub winners: Option<Vec<WinnerByCode>>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct SuperWinInfo {
#[serde(rename = "durationInMs")]
pub duration_in_ms: i64,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reasoning: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct HappyHourInfo {
#[serde(rename = "isHappyHour")]
pub is_happy_hour: bool,
#[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 AccumulatorConfiguration {
#[serde(flatten)]
pub accumulator_configuration: AccumulatorConfiguration,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "updatedAt")]
pub updated_at: String,
}
#[derive(Serialize, Deserialize, Debug, Clone, Copy, PartialEq, Eq, Hash, Default)]
#[repr(i32)]
pub enum SyphonType {
#[default]
Location = 0,
Bettor = 1,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct Syphon {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
pub r#type: SyphonType,
#[serde(rename = "nrOfCombinations")]
pub nr_of_combinations: i32,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct SyphonInfo {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub bettors: Option<HashMap<String, Syphon>>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub locations: Option<HashMap<String, Syphon>>,
#[serde(rename = "hasSyphons")]
pub has_syphons: bool,
#[serde(rename = "totalSyphonsInRound")]
pub total_syphons_in_round: i32,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct DrawDiagnostics {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
#[serde(rename = "initializationInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub initialization_info: Option<Initialization>,
#[serde(rename = "sequenceGenerationInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub sequence_generation_info: Option<SequenceGeneration>,
#[serde(rename = "bestFitFinderInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub best_fit_finder_info: Option<BestFitFinder>,
#[serde(rename = "purgerInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub purger_info: Option<Purger>,
pub duration: i64,
#[serde(rename = "stimulationResponses")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub stimulation_responses: Option<Vec<StimulationResponse>>,
#[serde(rename = "localCodePot")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub local_code_pot: Option<LocalCodePotInfo>,
#[serde(rename = "superWin")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub super_win: Option<SuperWinInfo>,
#[serde(rename = "happyHour")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub happy_hour: Option<HappyHourInfo>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub reasoning: Option<String>,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub configuration: Option<AccumulatorConfiguration>,
#[serde(rename = "syphonInfo")]
#[serde(default, skip_serializing_if = "Option::is_none")]
pub syphon_info: Option<SyphonInfo>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct GetDrawDignostics {
#[serde(default, skip_serializing_if = "Option::is_none")]
pub id: Option<String>,
}
#[derive(Serialize, Deserialize, Debug, Clone, PartialEq, Default)]
#[serde(default)]
pub struct RecordDictionary(pub HashMap<TKey, TVal>);
To override the Content-type in your clients, use the HTTP Accept Header, append the .xml suffix or ?format=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.webhop.biz
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:LogBettorStats>false</d2p1:LogBettorStats>
<d2p1:LogLocationStats>false</d2p1:LogLocationStats>
</d2p1:DebugConfig>
<d2p1:DeviationCategorySpanInPct>0</d2p1:DeviationCategorySpanInPct>
<d2p1:DeviationCategoryThresholdAmount>0</d2p1:DeviationCategoryThresholdAmount>
<d2p1:FraudDetectionConfig>
<d2p1:AntiSyphon>
<d2p1:Blacklists>
<d2p1:Locations xmlns:d6p1="http://schemas.datacontract.org/2004/07/Starnet.Common">
<d6p1:Ref>
<d6p1:_x003C_Id_x003E_k__BackingField>String</d6p1:_x003C_Id_x003E_k__BackingField>
<d6p1:_x003C_Val_x003E_k__BackingField>String</d6p1:_x003C_Val_x003E_k__BackingField>
</d6p1:Ref>
</d2p1:Locations>
<d2p1:Players xmlns:d6p1="http://schemas.datacontract.org/2004/07/Starnet.Common">
<d6p1:Ref>
<d6p1:_x003C_Id_x003E_k__BackingField>String</d6p1:_x003C_Id_x003E_k__BackingField>
<d6p1:_x003C_Val_x003E_k__BackingField>String</d6p1:_x003C_Val_x003E_k__BackingField>
</d6p1:Ref>
</d2p1:Players>
</d2p1:Blacklists>
<d2p1:CombinationCountPerRoundThresholdPct>0</d2p1:CombinationCountPerRoundThresholdPct>
<d2p1:ExcludedLocations xmlns:d5p1="http://schemas.datacontract.org/2004/07/Starnet.Common">
<d5p1:Ref>
<d5p1:_x003C_Id_x003E_k__BackingField>String</d5p1:_x003C_Id_x003E_k__BackingField>
<d5p1:_x003C_Val_x003E_k__BackingField>String</d5p1:_x003C_Val_x003E_k__BackingField>
</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:JP5WinnerCooldownPolicy>
<d2p1:CooldownIntervalInDays>0</d2p1:CooldownIntervalInDays>
<d2p1:IsActive>false</d2p1:IsActive>
</d2p1:JP5WinnerCooldownPolicy>
<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>
<Reasoning>String</Reasoning>
</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>