#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
use chrono::{DateTime, Utc};
use serde::{Deserialize, Serialize};
use std::collections::HashMap;
#[derive(Debug, Deserialize, Serialize)]
pub enum MarketProjection {
COMPETITION,
EVENT,
EVENT_TYPE,
MARKET_START_TIME,
MARKET_DESCRIPTION,
RUNNER_DESCRIPTION,
RUNNER_METADATA,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum PriceData {
SP_AVAILABLE,
SP_TRADED,
EX_BEST_OFFERS,
EX_ALL_OFFERS,
EX_TRADED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum MatchProjection {
NO_ROLLUP,
ROLLED_UP_BY_PRICE,
ROLLED_UP_BY_AVG_PRICE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum OrderProjection {
ALL,
EXECUTABLE,
EXECUTION_COMPLETE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum MarketStatus {
INACTIVE,
OPEN,
SUSPENDED,
CLOSED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum RunnerStatus {
ACTIVE,
WINNER,
LOSER,
REMOVED_VACANT,
REMOVED,
PLACED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum TimeGranularity {
DAYS,
HOURS,
MINUTES,
}
pub type MarketType = String;
pub type Venue = String;
pub type MarketId = String;
pub type SelectionId = i64;
pub type Handicap = f64;
pub type EventId = String;
pub type EventTypeId = String;
pub type CountryCode = String;
pub type ExchangeId = String;
pub type CompetitionId = String;
pub type Price = f64;
pub type Size = f64;
pub type BetId = String;
pub type MatchId = String;
pub type CustomerOrderRef = String;
pub type CustomerStrategyRef = String;
#[derive(Debug, Deserialize, Serialize)]
pub enum Side {
BACK,
LAY,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum OrderStatus {
PENDING,
EXECUTION_COMPLETE,
EXECUTABLE,
EXPIRED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum OrderBy {
BY_BET,
BY_MARKET,
BY_PLACE_TIME,
BY_MATCH_TIME,
BY_VOID_TIME,
BY_SETTLED_TIME,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum SortDir {
EARLIEST_TO_LATEST,
LATEST_TO_EARLIEST,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum OrderType {
LIMIT,
LIMIT_ON_CLOSE,
MARKET_ON_CLOSE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum MarketSort {
MINIMUM_TRADED,
MAXIMUM_TRADED,
MINIMUM_AVAILABLE,
MAXIMUM_AVAILABLE,
FIRST_TO_START,
LAST_TO_START,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum MarketBettingType {
ODDS,
LINE,
RANGE,
ASIAN_HANDICAP_DOUBLE_LINE,
ASIAN_HANDICAP_SINGLE_LINE,
FIXED_ODDS,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum ExecutionReportStatus {
SUCCESS,
FAILURE,
PROCESSED_WITH_ERRORS,
TIMEOUT,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum ExecutionReportErrorCode {
ERROR_IN_MATCHER,
PROCESSED_WITH_ERRORS,
BET_ACTION_ERROR,
INVALID_ACCOUNT_STATE,
INVALID_WALLET_STATUS,
INSUFFICIENT_FUNDS,
LOSS_LIMIT_EXCEEDED,
MARKET_SUSPENDED,
MARKET_NOT_OPEN_FOR_BETTING,
DUPLICATE_TRANSACTION,
INVALID_ORDER,
INVALID_MARKET_ID,
PERMISSION_DENIED,
DUPLICATE_BETIDS,
NO_ACTION_REQUIRED,
SERVICE_UNAVAILABLE,
REJECTED_BY_REGULATOR,
NO_CHASING,
REGULATOR_IS_NOT_AVAILABLE,
TOO_MANY_INSTRUCTIONS,
INVALID_MARKET_VERSION,
EVENT_EXPOSURE_LIMIT_EXCEEDED,
EVENT_MATCHED_EXPOSURE_LIMIT_EXCEEDED,
EVENT_BLOCKED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum PersistenceType {
LAPSE,
PERSIST,
MARKET_ON_CLOSE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum InstructionReportStatus {
SUCCESS,
FAILURE,
TIMEOUT,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum InstructionReportErrorCode {
INVALID_BET_SIZE,
INVALID_RUNNER,
BET_TAKEN_OR_LAPSED,
BET_IN_PROGRESS,
RUNNER_REMOVED,
MARKET_NOT_OPEN_FOR_BETTING,
LOSS_LIMIT_EXCEEDED,
MARKET_NOT_OPEN_FOR_BSP_BETTING,
INVALID_PRICE_EDIT,
INVALID_ODDS,
INSUFFICIENT_FUNDS,
INVALID_PERSISTENCE_TYPE,
ERROR_IN_MATCHER,
INVALID_BACK_LAY_COMBINATION,
ERROR_IN_ORDER,
INVALID_BID_TYPE,
INVALID_BET_ID,
CANCELLED_NOT_PLACED,
RELATED_ACTION_FAILED,
NO_ACTION_REQUIRED,
INVALID_MIN_FILL_SIZE,
INVALID_CUSTOMER_ORDER_REF,
TIME_IN_FORCE_CONFLICT,
UNEXPECTED_PERSISTENCE_TYPE,
INVALID_ORDER_TYPE,
UNEXPECTED_MIN_FILL_SIZE,
INVALID_CUSTOMER_STRATEGY_REF,
BET_LAPSED_PRICE_IMPROVEMENT_TOO_LARGE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum RollupModel {
STAKE,
PAYOUT,
MANAGED_LIABILITY,
NONE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum GroupBy {
EVENT_TYPE,
EVENT,
MARKET,
RUNNER,
SIDE,
BET,
STRATEGY,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum BetStatus {
SETTLED,
VOIDED,
LAPSED,
CANCELLED,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum TimeInForce {
FILL_OR_KILL,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum BetTargetType {
PAYOUT,
BACKERS_PROFIT,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum PriceLadderType {
CLASSIC,
FINEST,
LINE_RANGE,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum MarketGroupType {
EVENT,
}
#[derive(Debug, Deserialize, Serialize)]
pub enum LimitBreachActionType {
REJECT_BETS,
STOP_BETTING,
TEAR_DOWN_MARKET_GROUP,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketFilter {
#[serde(skip_serializing_if = "Option::is_none")]
pub textQuery: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exchangeIds: Option<Vec<ExchangeId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventTypeIds: Option<Vec<EventTypeId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventIds: Option<Vec<EventId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub competitionIds: Option<Vec<CompetitionId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketIds: Option<Vec<MarketId>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub venues: Option<Vec<Venue>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bspOnly: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub turnInPlayEnabled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inPlayOnly: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketBettingTypes: Option<Vec<MarketBettingType>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCountries: Option<Vec<CountryCode>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketTypeCodes: Option<Vec<MarketType>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketStartTime: Option<TimeRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub withOrders: Option<Vec<OrderStatus>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub raceTypes: Option<Vec<String>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketCatalogue {
pub marketId: String,
pub marketName: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketStartTime: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub description: Option<MarketDescription>,
#[serde(skip_serializing_if = "Option::is_none")]
pub totalMatched: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runners: Option<Vec<RunnerCatalog>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventType: Option<EventType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub competition: Option<Competition>,
#[serde(skip_serializing_if = "Option::is_none")]
pub event: Option<Event>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketBook {
pub marketId: String,
pub isMarketDataDelayed: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub status: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betDelay: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub bspReconciled: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub complete: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub inplay: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub numberOfWinners: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub numberOfRunners: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub numberOfActiveRunners: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lastMatchTime: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub totalMatched: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub totalAvailable: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub crossMatching: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runnersVoidable: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runners: Option<Vec<Runner>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub keyLineDescription: Option<KeyLineDescription>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct RunnerCatalog {
pub selectionId: SelectionId,
pub runnerName: String,
pub handicap: f64,
pub sortPriority: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<HashMap<String, String>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Runner {
pub selectionId: SelectionId,
pub handicap: f64,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub adjustmentFactor: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lastPriceTraded: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub totalMatched: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub removalDate: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sp: Option<StartingPrices>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ex: Option<ExchangePrices>,
#[serde(skip_serializing_if = "Option::is_none")]
pub orders: Option<Vec<Order>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub matches: Option<Vec<Match>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub matchesByStrategy: Option<HashMap<String, Matches>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct StartingPrices {
#[serde(skip_serializing_if = "Option::is_none")]
pub nearPrice: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub farPrice: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub backStakeTaken: Option<Vec<PriceSize>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub layLiabilityTaken: Option<Vec<PriceSize>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub actualSP: Option<f64>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ExchangePrices {
#[serde(skip_serializing_if = "Option::is_none")]
pub availableToBack: Option<Vec<PriceSize>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub availableToLay: Option<Vec<PriceSize>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tradedVolume: Option<Vec<PriceSize>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Event {
#[serde(skip_serializing_if = "Option::is_none")]
pub r#id: Option<EventId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub countryCode: Option<CountryCode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timezone: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub venue: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub openDate: Option<DateTime<Utc>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct EventResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub event: Option<Event>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Competition {
#[serde(skip_serializing_if = "Option::is_none")]
pub r#id: Option<CompetitionId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CompetitionResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub competition: Option<Competition>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub competitionRegion: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct EventType {
#[serde(skip_serializing_if = "Option::is_none")]
pub r#id: Option<EventTypeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub name: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct EventTypeResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub eventType: Option<EventType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketTypeResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub marketType: Option<MarketType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CountryCodeResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub countryCode: Option<CountryCode>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct VenueResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub venue: Option<Venue>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TimeRange {
#[serde(skip_serializing_if = "Option::is_none")]
pub from: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub to: Option<DateTime<Utc>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct TimeRangeResult {
#[serde(skip_serializing_if = "Option::is_none")]
pub timeRange: Option<TimeRange>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketCount: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Order {
pub betId: BetId,
pub orderType: String,
pub status: String,
pub persistenceType: String,
pub side: String,
pub price: Price,
pub size: Size,
pub bspLiability: Size,
pub placedDate: DateTime<Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub avgPriceMatched: Option<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeMatched: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeRemaining: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeLapsed: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeCancelled: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeVoided: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerOrderRef: Option<CustomerOrderRef>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerStrategyRef: Option<CustomerStrategyRef>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Matches {
#[serde(skip_serializing_if = "Option::is_none")]
pub matches: Option<Vec<Match>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct Match {
#[serde(skip_serializing_if = "Option::is_none")]
pub betId: Option<BetId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub matchId: Option<MatchId>,
pub side: String,
pub price: Price,
pub Size: Size,
#[serde(skip_serializing_if = "Option::is_none")]
pub matchDate: Option<DateTime<Utc>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketState {
pub status: String,
pub betDelay: i32,
pub bspReconciled: bool,
pub complete: bool,
pub inplay: bool,
pub numberOfActiveRunners: i32,
pub lastMatchTime: DateTime<Utc>,
pub totalMatched: Size,
pub totalAvailable: Size,
#[serde(skip_serializing_if = "Option::is_none")]
pub keyLineDescription: Option<KeyLineDescription>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketVersion {
#[serde(skip_serializing_if = "Option::is_none")]
pub version: Option<i64>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketDescription {
pub persistenceEnabled: bool,
pub bspMarket: bool,
pub marketTime: DateTime<Utc>,
pub suspendTime: DateTime<Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub settleTime: Option<DateTime<Utc>>,
pub bettingType: String,
pub turnInPlayEnabled: bool,
pub marketType: String,
pub regulator: String,
pub marketBaseRate: f64,
pub discountAllowed: bool,
#[serde(skip_serializing_if = "Option::is_none")]
pub wallet: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rules: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rulesHasDate: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clarifications: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eachWayDivisor: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lineRangeInfo: Option<MarketLineRangeInfo>,
#[serde(skip_serializing_if = "Option::is_none")]
pub raceType: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priceLadderDescription: Option<PriceLadderDescription>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketRates {
pub marketBaseRate: f64,
pub discountAllowed: bool,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketLicence {
pub wallet: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub rules: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rulesHasDate: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub clarifications: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketLineRangeInfo {
pub maxUnitValue: f64,
pub minUnitValue: f64,
pub interval: f64,
pub marketUnit: String,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PriceSize {
pub price: Price,
pub size: Size,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CurrentOrderSummaryReport {
pub currentOrders: Vec<CurrentOrderSummary>,
pub moreAvailable: bool,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CurrentOrderSummary {
pub betId: BetId,
pub marketId: MarketId,
pub selectionId: SelectionId,
pub handicap: Handicap,
pub priceSize: PriceSize,
pub bspLiability: Size,
pub side: String,
pub status: String,
pub persistenceType: String,
pub orderType: String,
pub placedDate: DateTime<Utc>,
pub matchedDate: DateTime<Utc>,
#[serde(skip_serializing_if = "Option::is_none")]
pub averagePriceMatched: Option<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeMatched: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeRemaining: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeLapsed: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeCancelled: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeVoided: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub regulatorAuthCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub regulatorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerOrderRef: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerStrategyRef: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ClearedOrderSummary {
#[serde(skip_serializing_if = "Option::is_none")]
pub eventTypeId: Option<EventTypeId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventId: Option<EventId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<MarketId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub selectionId: Option<SelectionId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub handicap: Option<Handicap>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betId: Option<BetId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub placedDate: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub persistenceType: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub orderType: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub side: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub itemDescription: Option<ItemDescription>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betOutcome: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priceRequested: Option<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub settledDate: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub lastMatchedDate: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betCount: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub commission: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priceMatched: Option<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub priceReduced: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeSettled: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub profit: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeCancelled: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerOrderRef: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerStrategyRef: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ClearedOrderSummaryReport {
pub clearedOrders: Vec<ClearedOrderSummary>,
pub moreAvailable: bool,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ItemDescription {
#[serde(skip_serializing_if = "Option::is_none")]
pub eventTypeDesc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eventDesc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketDesc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketType: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketStartTime: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub runnerDesc: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub numberOfWinners: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub eachWayDivisor: Option<f64>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct RunnerId {
pub marketId: MarketId,
pub selectionId: SelectionId,
#[serde(skip_serializing_if = "Option::is_none")]
pub handicap: Option<Handicap>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PlaceInstruction {
pub orderType: OrderType,
pub selectionId: SelectionId,
#[serde(skip_serializing_if = "Option::is_none")]
pub handicap: Option<Handicap>,
pub side: Side,
#[serde(skip_serializing_if = "Option::is_none")]
pub limitOrder: Option<LimitOrder>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limitOnCloseOrder: Option<LimitOnCloseOrder>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketOnCloseOrder: Option<MarketOnCloseOrder>,
#[serde(skip_serializing_if = "Option::is_none")]
pub customerOrderRef: Option<String>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PlaceExecutionReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub customerRef: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<MarketId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructionReports: Option<Vec<PlaceInstructionReport>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct LimitOrder {
#[serde(skip_serializing_if = "Option::is_none")]
pub size: Option<Size>,
pub price: Price,
#[serde(skip_serializing_if = "Option::is_none")]
pub persistenceType: Option<PersistenceType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub timeInForce: Option<TimeInForce>,
#[serde(skip_serializing_if = "Option::is_none")]
pub minFillSize: Option<Size>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betTargetType: Option<BetTargetType>,
#[serde(skip_serializing_if = "Option::is_none")]
pub betTargetSize: Option<Size>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct LimitOnCloseOrder {
pub liability: Size,
pub price: Price,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketOnCloseOrder {
pub liability: Size,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PlaceInstructionReport {
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub orderStatus: Option<OrderStatus>,
pub instruction: PlaceInstruction,
#[serde(skip_serializing_if = "Option::is_none")]
pub betId: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub placedDate: Option<DateTime<Utc>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub averagePriceMatched: Option<Price>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeMatched: Option<Size>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CancelInstruction {
pub betId: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub sizeReduction: Option<Size>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CancelExecutionReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub customerRef: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<MarketId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructionReports: Option<Vec<CancelInstructionReport>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ReplaceInstruction {
pub betId: String,
pub newPrice: Price,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ReplaceExecutionReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub customerRef: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<MarketId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructionReports: Option<Vec<ReplaceInstructionReport>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ReplaceInstructionReport {
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub cancelInstructionReport: Option<CancelInstructionReport>,
#[serde(skip_serializing_if = "Option::is_none")]
pub placeInstructionReport: Option<PlaceInstructionReport>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct CancelInstructionReport {
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instruction: Option<CancelInstruction>,
pub sizeCancelled: Size,
pub cancelledDate: DateTime<Utc>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct UpdateInstruction {
pub betId: String,
pub newPersistenceType: PersistenceType,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct UpdateExecutionReport {
#[serde(skip_serializing_if = "Option::is_none")]
pub customerRef: Option<String>,
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<MarketId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructionReports: Option<Vec<UpdateInstructionReport>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct UpdateInstructionReport {
pub status: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub errorCode: Option<String>,
pub instruction: UpdateInstruction,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PriceProjection {
#[serde(skip_serializing_if = "Option::is_none")]
pub priceData: Option<Vec<PriceData>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub exBestOffersOverrides: Option<ExBestOffersOverrides>,
#[serde(skip_serializing_if = "Option::is_none")]
pub virtualise: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rolloverStakes: Option<bool>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ExBestOffersOverrides {
#[serde(skip_serializing_if = "Option::is_none")]
pub bestPricesDepth: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rollupModel: Option<RollupModel>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rollupLimit: Option<i32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rollupLiabilityThreshold: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub rollupLiabilityFactor: Option<i32>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketProfitAndLoss {
#[serde(skip_serializing_if = "Option::is_none")]
pub marketId: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub commissionApplied: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub profitAndLosses: Option<Vec<RunnerProfitAndLoss>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct RunnerProfitAndLoss {
#[serde(skip_serializing_if = "Option::is_none")]
pub selectionId: Option<SelectionId>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ifWin: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ifLose: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ifPlace: Option<f64>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct PriceLadderDescription {
pub r#type: PriceLadderType,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct KeyLineSelection {
pub selectionId: SelectionId,
pub handicap: Handicap,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct KeyLineDescription {
pub keyLine: Vec<KeyLineSelection>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ExposureLimitsForMarketGroups {
pub marketGroupType: MarketGroupType,
#[serde(skip_serializing_if = "Option::is_none")]
pub defaultLimit: Option<ExposureLimit>,
#[serde(skip_serializing_if = "Option::is_none")]
pub groupLimits: Option<Vec<MarketGroupExposureLimit>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub blockedMarketGroups: Option<Vec<MarketGroupId>>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketGroup {
pub r#type: MarketGroupType,
pub r#id: MarketGroupId,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketGroupId {
#[serde(skip_serializing_if = "Option::is_none")]
pub eventId: Option<i64>,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct LimitBreachAction {
pub actionType: LimitBreachActionType,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct MarketGroupExposureLimit {
pub groupId: MarketGroupId,
pub limit: ExposureLimit,
}
#[derive(Debug, Deserialize, Serialize)]
pub struct ExposureLimit {
#[serde(skip_serializing_if = "Option::is_none")]
pub matched: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub total: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub limitBreachAction: Option<LimitBreachAction>,
}