| All Verbs | /qry/rounds/draw/diagnostics |
|---|
import java.math.*
import java.util.*
import java.io.InputStream
import net.servicestack.client.*
import com.google.gson.annotations.*
import com.google.gson.reflect.*
open class GetDrawDignostics
{
open var id:String? = null
}
open class DrawDiagnostics
{
open var id:String? = null
open var initializationInfo:Initialization? = null
open var sequenceGenerationInfo:SequenceGeneration? = null
open var bestFitFinderInfo:BestFitFinder? = null
open var purgerInfo:Purger? = null
open var duration:Long? = null
open var stimulationResponses:ArrayList<StimulationResponse>? = null
open var localCodePot:LocalCodePotInfo? = null
open var superWin:SuperWinInfo? = null
open var happyHour:HappyHourInfo? = null
open var reasoning:String? = null
open var configuration:AccumulatorConfiguration? = null
open var syphonInfo:SyphonInfo? = null
}
open class Initialization
{
open var dataLoadDuration:Long? = null
open var betsCollectionsCreationDuration:Long? = null
open var combinationsOccuranceLookupInitializationDuration:Long? = null
}
open class SequenceGeneration
{
open var nrOfThreads:Int? = null
open var nrOfResultsProbed:Int? = null
open var duration:Long? = null
open var avgSinglePassDuration:Long? = null
}
open class BestFitFinder
{
open var targetAmount:BigDecimal? = null
open var awardedAmount:BigDecimal? = null
open var deviation:BigDecimal? = null
open var deviationPct:BigDecimal? = null
open var sequenceResultType:String? = null
open var isJackPot5Drawn:Boolean? = null
open var filteringPeriod:Long? = null
open var winCountOrder:SortingOrder? = null
open var minAmount:BigDecimal? = null
open var maxAmount:BigDecimal? = null
}
enum class SortingOrder(val value:Int)
{
@SerializedName("0") None(0),
@SerializedName("1") Ascending(1),
@SerializedName("2") Descending(2),
}
open class Purger
{
open var prevalentStake:BigDecimal? = null
open var poolPurger:String? = null
open var qualifiedPools:ArrayList<QualifiedPool>? = null
}
open class QualifiedPool
{
open var id:Int? = null
open var name:String? = null
open var coefficient:BigDecimal? = null
open var availableAmount:BigDecimal? = null
open var awardedAmount:BigDecimal? = null
open var targetBet:Bet? = null
}
open class Bet
{
open var isFound:Boolean? = null
open var betId:String? = null
open var slipId:String? = null
open var combStake:Object? = null
}
open class StimulationResponse
{
open var stimulationId:String? = null
open var status:ResponseStatus? = null
open var failureReason:String? = null
open var slipId:String? = null
open var betId:String? = null
open var amountAwarded:BigDecimal? = null
}
open class LocalCodePotInfo
{
open var isActive:Boolean? = null
open var current:CurrentRoundInfo? = null
open var winners:ArrayList<WinnerByCode>? = null
}
open class CurrentRoundInfo
{
open var roundId:String? = null
open var amount:BigDecimal? = null
open var inertCode:String? = null
}
open class WinnerByCode
{
open var roundId:String? = null
open var drawnAtUtc:Date? = null
open var slipId:String? = null
open var betId:String? = null
open var code:String? = null
open var amount:BigDecimal? = null
open var origin:Origin? = null
open var bettor:Ref? = null
open var locationAddressOrBettorInfo:String? = null
}
open class Origin
{
open var application:BettingApp? = null
open var ip:String? = null
open var organization:RefEx? = null
open var region:Ref? = null
open var locationGroup:Ref? = null
open var location:RefEx? = null
open var device:RefEx? = null
open var clerk:Ref? = null
}
open class BettingApp
{
open var name:String? = null
open var version:String? = null
}
open class RefEx : Ref()
{
@SerializedName("data") open var Data:RecordDictionary<String, String>? = null
}
open class Ref
{
open var id:String? = null
@SerializedName("val") open var Val:String? = null
}
open class RecordDictionary<TKey, TVal> : HashMap<TKey,TVal>()
{
}
open class SuperWinInfo
{
open var durationInMs:Long? = null
}
open class HappyHourInfo
{
open var isHappyHour:Boolean? = null
open var oddsModifier:BigDecimal? = null
open var roundPoolBonusPct:BigDecimal? = null
}
open class AccumulatorConfiguration : AccumulatorConfiguration()
{
open var id:String? = null
open var updatedAt:Date? = null
}
open class SyphonInfo
{
open var bettors:HashMap<String,Syphon>? = null
open var locations:HashMap<String,Syphon>? = null
open var hasSyphons:Boolean? = null
open var totalSyphonsInRound:Int? = null
}
open class Syphon
{
open var id:String? = null
open var name:String? = null
@SerializedName("type") open var Type:SyphonType? = null
open var nrOfCombinations:Int? = null
}
enum class SyphonType(val value:Int)
{
@SerializedName("0") Location(0),
@SerializedName("1") Bettor(1),
}
To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv
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: text/jsv
Content-Type: text/jsv
Content-Length: length
{
id: String
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length
{
id: String,
initializationInfo:
{
dataLoadDuration: 0,
betsCollectionsCreationDuration: 0,
combinationsOccuranceLookupInitializationDuration: 0
},
sequenceGenerationInfo:
{
nrOfThreads: 0,
nrOfResultsProbed: 0,
duration: 0,
avgSinglePassDuration: 0
},
bestFitFinderInfo:
{
targetAmount: 0,
awardedAmount: 0,
deviation: 0,
deviationPct: 0,
sequenceResultType: String,
isJackPot5Drawn: False,
filteringPeriod: 0,
winCountOrder: 0,
minAmount: 0,
maxAmount: 0
},
purgerInfo:
{
prevalentStake: 0,
poolPurger: String,
qualifiedPools:
[
{
id: 0,
name: String,
coefficient: 0,
availableAmount: 0,
awardedAmount: 0,
targetBet:
{
isFound: False,
betId: String,
slipId: String,
combStake: {}
}
}
]
},
duration: 0,
stimulationResponses:
[
{
stimulationId: String,
status: 0,
failureReason: String,
slipId: String,
betId: String,
amountAwarded: 0
}
],
localCodePot:
{
durationInMs: 0
},
superWin:
{
durationInMs: 0
},
happyHour:
{
isHappyHour: False,
oddsModifier: 0,
roundPoolBonusPct: 0
},
reasoning: String,
configuration:
{
pools:
[
{
id: 0,
name: String,
rtp: 0,
reserveRTP: 0,
totalRTP: 0
}
],
prevalentStake: 0,
purgeThresholdModifier: 0,
locationOptimizationLevel: 0,
jackPot5ThresholdInterval:
{
start: 0,
end: 0
},
deviationCategorySpanInPct: 0,
deviationCategoryThresholdAmount: 0,
roundPoolCircuitBreakerThreshold: 0,
lowWinCountAffinityInPct: 0,
winCountOrderAffinity:
[
{
order: 0,
probability: 0
}
],
highRollerSettings:
{
pools:
[
{
id: 0,
name: String,
isActive: False,
contributionToRoundPoolPct: 0,
caps:
{
plusCoef: 0,
minusCoef: 0,
maxAmountInPrevalentStakes: 0
}
}
],
categoryThresholds:
[
{
category: 0,
threshold: 0
}
]
},
overflowCoefficientPoolsToRound: False,
antiSyphonProtectionOverride: False,
fraudDetectionConfig:
{
antiSyphon:
{
combinationCountPerRoundThresholdPct: 0,
excludedLocations:
[
{
id: String,
val: String
}
],
includeRoundPctAsBettorSyphonCriteria: False,
isActive: False
}
},
debugConfig:
{
logLocationStats: False,
logBettorSats: False
}
},
syphonInfo:
{
bettors:
{
String:
{
id: String,
name: String,
type: 0,
nrOfCombinations: 0
}
},
locations:
{
String:
{
id: String,
name: String,
type: 0,
nrOfCombinations: 0
}
},
hasSyphons: True,
totalSyphonsInRound: 2
}
}