SDK Models
A list of all the SDKs of the Fans United platform
The Fans United platform provides multiple SDKs to facilitate the integration by clients. Even though the
SDKs target different platforms, they share models and conventions. This page details all the models used in the SDKs.
Generic models
The following models are used across namespaces.
Meta
All paginated responses are generic type PaginationModel<M>
except for Football and Activity paginated models.
class PaginationModel<M> {
meta: MetaModel = new MetaModel();
data: M[] = [];
}
class MetaModel {
pagination: MetaProperties = new MetaProperties();
}
class MetaProperties {
nextPageStartsAfter: string = null;
itemsPerPage: number = null;
}
Football models
Meta
Meta property for paginated responses in Football and Activity namespace is different than the default one for Fans United SDK.
class MetaFootballModel {
pagination: PaginationFootballProperties = new PaginationFootballProperties();
}
class PaginationFootballProperties {
currentPage: number = null;
itemsPerPage: number = null;
totalItems: number = null;
numberOfPages: number = null;
}
Country
Country information about all football related data.
class FootballCountryModel {
id: string = null;
alias: string = null;
countryCode = null;
assets: {} = null;
name: string = null;
}
Basic Competition
This model is used in competition listings, e.g. array of competitions.
class CompetitionBasicModel {
id: string = '';
country: FootballCountryModel = null;
gender: string = '';
assets: {} = null;
type: string = '';
name: string = '';
}
Full Competition
This model is used when all the competition info needs to be returned.
class CompetitionFullModel {
id: string = null;
country: FootballCountryModel = null;
gender: string = null;
assets: {} = null;
type: string = null;
name: string = null;
participants: TeamBasicModel[] = [];
}
Competition Filters
Filters model for getCompetitions endpoint.
class CompetitionFilters {
countryId: string = null;
name: string = null;
gender: string = null;
type: string = null;
sortField: string = null;
sortOrder: string =
competitionIds: string[] = null;
}
Basic Player
This model is used in player listings, e.g. array of players.
class PlayerBasicModel {
id: string = null;
country: FootballCountryModel = null;
birthDate: string = null;
firstName: string = null;
lastName: string = null;
name: string = null;
position: string = null;
assets: {} = null;
teams: TeamBasicModel[] = [];
isDeleted: boolean = false;
}
Full Player
This model is used when all the player info needs to be returned.
class PlayerFullModel {
id: string = null;
country: FootballCountryModel = null;
birthDate: string = null;
firstName: string = null;
lastName: string = null;
name: string = null;
position: string = null;
assets: {} = null;
competitions: CompetitionBasicModel[] = [];
teams: TeamBasicModel[] = [];
isDeleted: boolean = false;
}
Player in Squad
This model is used when player info is returned in squad list.
class PlayerSquadModel {
id: string = null;
startDate: string = null;
endDate: string = null;
shirtNumber: number;
loan: boolean = false;
position: string = null;
country: FootballCountryModel = null;
name: string = null;
assets: {} = null;
birthDate: string = null;
}
Player in Matches
This model is used when player info is returned in Full Match model.
class PlayerShortModel {
id: string = null;
name: string = null;
position: string = null;
shirtNumber: number = null;
assets: {} = null;
type: string = null;
}
Player in Top players list
This model is used when player info is returned in Top players list.
class TopPlayerModel {
id: string = null;
country: FootballCountryModel = null;
birthDate: string = null;
firstName: string = null;
lastName: string = null;
name: string = null;
position: string = null;
assets: {} = null;
}
Player in market correct results
This model is used when player info is returned in markets correct result.
class PlayerMarketResultModel {
id: string = null;
name: string = null;
country: FootballCountryModel = null;
}
Filters for players
Filters model for getPlayers endpoint.
class PlayerFilters {
countryId: string = null;
scope: string[] = null;
name: string = null;
playerIds: string[] = null;
limit: number = null;
page: number = null;
sortField: string = null;
sortOrder: string = null;
}
Basic Team
This model is used in team listings, e.g. array of teams, such as competition participants.
class TeamBasicModel {
id: string = null;
country: FootballCountryModel = null;
gender: string = null;
assets: {} = null;
name: string = null;
code: string = null;
national: boolean = false;
fullName: string = null;
shortName: string = null;
isDeleted: boolean = false;
}
Full Team
This model is used when all the team info needs to be returned.
class TeamFullModel {
id: string = null;
country: FootballCountryModel = null;
gender: string = null;
assets: {} = null;
name: string = null;
competitions: CompetitionBasicModel[] = [];
code: string = null;
national: boolean = false;
fullName: string = null;
shortName: string = null;
colors: TeamColors = new TeamColors();
squad: PlayerSquadModel[] = [];
isDeleted: boolean = false;
}
Team colors
class TeamColors {
primary: string = null;
secondary: string = null;
tertiary: string = null;
}
Filters for teams
Filters model for getTeams endpoint.
class PlayerFilters {
countryId: string = null;
scope: string[] = null;
name: string = null;
playerIds: string[] = null;
limit: number = null;
page: number = null;
sortField: string = null;
sortOrder: string = null;
}
Basic Match
This model is used in match listings, e.g. array of matches.
class MatchBasicModel {
id: string = null;
kickoffAt: string = null;
finishedAt: string = null;
updatedAt: string = null;
availableMarkets: string[] = null;
homeTeam: TeamBasicModel = null;
awayTeam: TeamBasicModel = null;
lineupsConfirmed: boolean = false;
startedAt: string = null;
minute: string = null;
scores: any = null;
context: { competition: CompetitionBasicModel } = { competition: null };
status: { type: string, subType: string } = { type: null, subType: null};
isDeleted: boolean = false;
}
Full Match
This model is used when all the match info needs to be returned.
class MatchFullModel {
id: string = null;
kickoffAt: string = null;
finishedAt: string = null;
updatedAt: string = null;
availableMarkets: string[] = null;
homeTeam: TeamBasicModel = null;
awayTeam: TeamBasicModel = null;
lineupsConfirmed: boolean = false;
startedAt: string = null;
minute: string = null;
scores: ScoredModel = null;
stats: StatsModel = null;
context: { competition: CompetitionBasicModel } = { competition: null };
timeline: TimelineModel[] = [];
status: { type: string, subType: string } = { type: null, subType: null};
lineups: LineupsModel = null;
isDeleted: boolean = false;
}
These models are used as sub-objects inside the main Match models.
Timeline model
class TimelineModel {
minute: string = null;
type: string = null;
teamId: string = null;
player: PlayerShortModel = null;
relatedPlayer: PlayerShortModel = null;
updatedAt: string = null;
}
Stats model
class StatsModel {
corners: StatType = null;
cornersFirstHalf: StatType = null;
cornersSecondHalf: StatType = null;
cornersExtraTime: StatType = null;
crosses: StatType = null;
crossesFirstHalf: StatType = null;
crossesSecondHalf: StatType = null;
crossesExtraTime: StatType = null;
offside: StatType = null;
offsideFirstHalf: StatType = null;
offsideSecondHalf: StatType = null;
offsideExtraTime: StatType = null;
shotsOn: StatType = null;
shotsOnFirstHalf: StatType = null;
shotsOnSecondHalf: StatType = null;
shotsOnExtraTime: StatType = null;
throwIn: StatType = null;
throwInFirstHalf: StatType = null;
throwInSecondHalf: StatType = null;
throwInExtraTime: StatType = null;
redCards: StatType = null;
redCardsFirstHalf: StatType = null;
redCardsSecondHalf: StatType = null;
redCardsExtraTime: StatType = null;
shotsOff: StatType = null;
shotsOffFirstHalf: StatType = null;
shotsOffSecondHalf: StatType = null;
shotsOffExtraTime: StatType = null;
goalKicks: StatType = null;
goalKicksFirstHalf: StatType = null;
goalKicksSecondHalf: StatType = null;
goalKicksExtraTime: StatType = null;
possession: StatType = null;
possessionFirstHalf: StatType = null;
possessionSecondHalf: StatType = null;
possessionExtraTime: StatType = null;
treatments: StatType = null;
treatmentsFirstHalf: StatType = null;
treatmentsSecondHalf: StatType = null;
treatmentsExtraTime: StatType = null;
yellowCards: StatType = null;
yellowCardsFirstHalf: StatType = null;
yellowCardsSecondHalf: StatType = null;
yellowCardsExtraTime: StatType = null;
shotsBlocked: StatType = null;
shotsBlockedFirstHalf: StatType = null;
shotsBlockedSecondHalf: StatType = null;
shotsBlockedExtraTime: StatType = null;
substitutions: StatType = null;
substitutionsFirstHalf: StatType = null;
substitutionsSecondHalf: StatType = null;
substitutionsExtraTime: StatType = null;
counterAttacks: StatType = null;
counterAttacksFirstHalf: StatType = null;
counterAttacksSecondHalf: StatType = null;
counterAttacksExtraTime: StatType = null;
foulsCommitted: StatType = null;
foulsCommittedFirstHalf: StatType = null;
foulsCommittedSecondHalf: StatType = null;
foulsCommittedExtraTime: StatType = null;
}
Scores model
class ScoresModel {
ftScore: ScoresType = null;
htScore: ScoresType = null;
aetScore: ScoresType = null;
aggScore: ScoresType = null;
penScore: ScoresType = null;
}
Lineups model
class LineupsModel {
homeTeam: { players: PlayerShortModel[] } = { players: [] };
awayTeam: { players: PlayerShortModel[] } = { players: [] };
}
Scores type
type ScoresType = {
homeGoals: number;
awayGoals: number;
}
Stats type
type StatType = {
homeTeam: number;
awayTeam: number;
}
Filters for matches
Filters model for getMatches endpoint.
class MatchFilters {
countryIds: string[] = null;
competitionIds: string[] = null;
matchIds: string[] = null;
status: string = null;
teamIds: string[] = null;
fromDate: string = null;
toDate: string = null;
limit: number = null;
page: number = null;
sortField: string = null;
sortOrder: string = null;
}
Profile models
Profile
This model is used when profile info is returned.
class ProfileModel {
id: string = null;
name: string = null;
nickname: string = null;
avatar: string = null;
gender: string = null;
country: ProfileCountryModel = null;
birthDate: string = null;
interests: InterestModel[] = [];
followingCount: number = null;
followersCount: number = null;
}
Raw Interests model
This model is used when interest info is returned.
class InterestModel {
id: string = null;
source: string = null;
type: string = null;
favourite: boolean = null;
}
Full Interests model
This model is used when interest info is returned.
class FullInterestModel {
id: string = null;
source: string = null;
type: string = null;
favourite: boolean = null;
model: PlayerBasicModel|TeamBasicModel|CompetitionBasicModel = null;
}
Country model
This models is used when a country is returned anywhere in this namespace.
class ProfileCountryModel {
id: string = null;
name: string = null;
assets: {} = null;
}
Profile Fullness model
This models is used for showing the fullness of one's profile.
class FullnessProfile {
totalPercentage: number = null;
breakdown: BreakdownModel = null;
}
class BreakdownModel {
teamFollowed: CompletedModel = null;
teamFavourite: CompletedModel = null;
playerFollowed: CompletedModel = null;
playerFavourite: CompletedModel = null;
competitionFollowed: CompletedModel = null;
competitionFavourite: CompletedModel = null;
addedBirthdate: CompletedModel = null;
addedGender: CompletedModel = null;
addedCountry: CompletedModel = null;
addedAvatar: CompletedModel = null;
}
class CompletedModel {
completed: boolean = null;
percentage: number = null;
}
Following & Followers model
This models is used for showing a list of users (followers or following).
class FollowingModel {
avatar: string = null;
followingId: string = null;
name: string = null;
profileId: string = null;
nickname: string = null;
}
class FollowersModel {
avatar: string = null;
followerId: string = null;
name: string = null;
profileId: string = null;
nickname: string = null;
}
Filters for Follow
Used as a type of argument filters
for getFollowing and getFollowers methods.
class FollowFilters {
limit: number = null;
startAfter: string = null;
}
Profile stats model
Model is used to display points, tier and success rates for own or specific users. Related to getStats()
class ProfileStatsModel {
profileId: string;
tier: string;
predictionsMade: number;
points: number;
successRates: SuccessRates = new SuccessRates();
predictions: PredictionsStats = new PredictionsStats();
tiers: AchievementsStats[] = [];
badges: AchievementsStats[] = [];
}
class SuccessRates {
overallPercent: number;
byFootballCompetition: Record<string, SuccessRatePercent>;
byFootballTeam: Record<string, SuccessRatePercent>;
byFootballMarket: Record<string, SuccessRatePercent>;
}
class SuccessRatePercent {
successRatePercent: number;
}
class PredictionsStats {
single: SinglePredictionsStats = new SinglePredictionsStats();
topX: GamePredictionsStats = new GamePredictionsStats();
matchQuiz: GamePredictionsStats = new GamePredictionsStats();
}
class GamePredictionsStats {
participations: number = 0;
points: number = 0;
}
class SinglePredictionsStats {
predictionsMade: number = 0;
correct: number = 0;
points: number = 0;
breakdown: SummarizedBreakdown = new SummarizedBreakdown();
}
class SummarizedBreakdown {
footballCompetitions: SinglePredictionsBreakdown[] = [];
footballTeams: SinglePredictionsBreakdown[] = [];
}
class AchievementsStats {
id: string = "";
achievedAt: string = "";
}
Predictor models
Match Summary model
This model is used for showing the summary of all predictions for a match.
class MatchSummaryModel {
matchId: string = null;
matchType: string = null;
predictions: PredictionsModel = null;
}
class PredictionsModel {
fullTimeOneXTwo: any = {};
halfTimeOneXTwo: any = {};
bothTeamsScore: NoYesModel = new NoYesModel();
overZeroPointFiveGoals: NoYesModel = new NoYesModel();
overOnePointFiveGoals: NoYesModel = new NoYesModel();
overTwoPointFiveGoals: NoYesModel = new NoYesModel();
overThreePointFiveGoals: NoYesModel = new NoYesModel();
overFourPointFiveGoals: NoYesModel = new NoYesModel();
overFivePointFiveGoals: NoYesModel = new NoYesModel();
overSixPointFiveGoals: NoYesModel = new NoYesModel();
overSixPointFiveCorners: NoYesModel = new NoYesModel();
overSevenPointFiveCorners: NoYesModel = new NoYesModel();
overEightPointFiveCorners: NoYesModel = new NoYesModel();
overNinePointFiveCorners: NoYesModel = new NoYesModel();
overTenPointFiveCorners: NoYesModel = new NoYesModel();
overElevenPointFiveCorners: NoYesModel = new NoYesModel();
overTwelvePointFiveCorners: NoYesModel = new NoYesModel();
overThirteenPointFiveCorners: NoYesModel = new NoYesModel();
doubleChance: any = {};
halfTimeFullTime: any = {};
playerScore: any = {};
playerYellowCard: any = {};
playerRedCard: any = {};
redCardMatch: NoYesModel = new NoYesModel();
penaltyMatch: NoYesModel = new NoYesModel();
playerScoreFirstGoal: any = {};
cornersMatch: any = {};
correctScore: any = {};
playerScoreHattrick: any = {};
playerScoreTwice: any = {};
}
class NoYesModel {
no: number = 0;
yes: number = 0;
}
Prediction model
This model is used for the response data of a prediction
class PredictionResponseModel {
id: string = null;
gameInstanceId: string = null;
wager: number = null;
totalFixtures: number = null;
settledFixtures: number = null;
userId: string = null;
fixtures: FixturesResponseModel[] = null;
status: string = null;
tiebreaker: TiebreakerModel = new TiebreakerModel();
points: number = null;
createdAt: string = null;
updatedAt: string = null;
}
class FixturesResponseModel {
matchId: string = null;
matchType: string = null;
result: ResultModel = null;
market: MarketEnum = null;
prediction?: string | boolean;
target?: string;
playerId?: string;
goalsHome?: string;
goalsAway?: string;
}
class ResultModel {
settledAt: string = null;
resettledAt: string = null;
status: string = null;
outcome: OutcomeEnum = null;
points: number = 0;
}
enum OutcomeEnum {
CORRECT = "CORRECT",
INCORRECT = "INCORRECT",
PARTIALLY_CORRECT = "PARTIALLY_CORRECT",
NOT_VERIFIED = "NOT_VERIFIED"
}
enum MarketEnum {
FT_1X2 = 'FT_1X2',
HT_1X2 = "HT_1X2",
BOTH_TEAMS_SCORE = "BOTH_TEAMS_SCORE",
OVER_GOALS_0_5 = "OVER_GOALS_0_5",
OVER_GOALS_1_5 = "OVER_GOALS_1_5",
OVER_GOALS_2_5 = "OVER_GOALS_2_5",
OVER_GOALS_3_5 = "OVER_GOALS_3_5",
OVER_GOALS_4_5 = "OVER_GOALS_4_5",
OVER_GOALS_5_5 = "OVER_GOALS_5_5",
OVER_GOALS_6_5 = "OVER_GOALS_6_5",
OVER_CORNERS_6_5 = "OVER_CORNERS_6_5",
OVER_CORNERS_7_5 = "OVER_CORNERS_7_5",
OVER_CORNERS_8_5 = "OVER_CORNERS_8_5",
OVER_CORNERS_9_5 = "OVER_CORNERS_9_5",
OVER_CORNERS_10_5 = "OVER_CORNERS_10_5",
OVER_CORNERS_11_5 = "OVER_CORNERS_11_5",
OVER_CORNERS_12_5 = "OVER_CORNERS_12_5",
OVER_CORNERS_13_5 = "OVER_CORNERS_13_5",
DOUBLE_CHANCE = "DOUBLE_CHANCE",
HT_FT = "HT_FT",
PLAYER_SCORE = "PLAYER_SCORE",
PLAYER_YELLOW_CARD = "PLAYER_YELLOW_CARD",
PLAYER_RED_CARD = "PLAYER_RED_CARD",
RED_CARD_MATCH = "RED_CARD_MATCH",
PENALTY_MATCH = "PENALTY_MATCH",
PLAYER_SCORE_FIRST_GOAL = "PLAYER_SCORE_FIRST_GOAL",
CORNERS_MATCH = "CORNERS_MATCH",
CORRECT_SCORE = "CORRECT_SCORE",
CORRECT_SCORE_HT = "CORRECT_SCORE_HT",
CORRECT_SCORE_ADVANCED = "CORRECT_SCORE_ADVANCED",
PLAYER_SCORE_HATTRICK = "PLAYER_SCORE_HATTRICK",
PLAYER_SCORE_TWICE = "PLAYER_SCORE_TWICE",
}
class TiebreakerModel {
goldenGoal: number = null;
}
Filters for predictions
Used as a type of argument filters
for all user related operations.
class PredictionsFilters {
limit: number = null;
startAfter: string = null;
status: StatusEnum[] = null;
type: TypeGames = null;
}
enum StatusEnum {
ACTIVE = "ACTIVE",
WON = "WON",
LOST = "LOST",
PARTIALLY_WON = "PARTIALLY_WON",
CANCELED = "CANCELED"
}
type TypeGames = "TOP_X" | "MATCH_QUIZ" | "SINGLE";
Configuration model
This model is used for showing the predictor configuration.
class PredictorConfigModel {
enabled: boolean = false;
fullCoverageCompetitions: string[] = null;
markets: MarketsConfigModel = null;
}
class MarketsConfigModel {
main: string[] = null;
all: string[] = null;
}
Top X models
Configuration model
This model is used for showing the top x configuration for client.
class TopXConfigModel {
enabled: boolean = false;
minFixtures: number = null;
maxFixtures: number = null
competitionsWhitelist: string[] = null;
}
List of games
The response model you receive when you fetch list of Top X games.
class GamesListModel {
id: string = null;
title: string = null;
description: string = null;
type: string = null;
status: string = null;
predictionsCutoff: string = null;
scheduleOpenAt: string = null;
fixtures: FixturesGamesModel[] = [];
participantsCount: number = 0;
related: RelatedEntity[] = null;
excludedProfileIds: string[] = null;
rules: string = null;
flags: string[] = null;
images: ImagesModel = null;
createdAt: string = null;
updatedAt: string = null;
}
class RelatedEntity {
entityId: string = null;
entityType: string = null;
}
class ImagesModel {
main: string = null;
cover: string = null;
mobile: string = null;
}
class FixturesGamesModel {
matchId: string = null;
matchType: string = null;
market: MarketEnum = null; // See Predictor models for details
matchModel: MatchBasicModel = null; // See Football models for details
matchStatus: MatchStatus = new MatchStatus();
}
class MatchStatus {
type: string = null;
subType: string = null;
}
Game
The response model you receive when you fetch Top X game by ID.
class GameByIdModel {
id: string = null;
title: string = null;
description: string = null;
type: string = null;
status: string = null;
predictionsCutoff: string = null;
scheduleOpenAt: string = null;
fixtures: FixturesGamesModel[] = [];
participantsCount: number = 0;
related: RelatedEntity[] = null;
excludedProfileIds: string[] = null;
rules: string = null;
flags: string[] = null;
images: ImagesModel = null;
adContent: string = null;
labels: Record<string, string> = null;
customFields: Record<string, string> = null;
createdAt: string = null;
updatedAt: string = null;
}
class RelatedEntity {
entityId: string = null;
entityType: string = null;
}
class ImagesModel {
main: string = null;
cover: string = null;
mobile: string = null;
}
class FixturesGamesModel {
matchId: string = null;
matchType: string = null;
market: MarketEnum = null; // See Predictor models for details
matchModel: MatchBasicModel = null; // See Football models for details
matchStatus: MatchStatus = new MatchStatus();
}
class MatchStatus {
type: string = null;
subType: string = null;
}
Results for specific game model
When calling getGameResults(gameId)
or getCurrentGameResult(gameId)
method the following model will be returned:
class GameModel {
userId: string = null;
points: number = null;
results: GameResultsModel[] = [];
tiebreaker: TiebreakerModel = null;
}
class GameResultsModel {
matchId: string = null;
matchModel: MatchBasicModel = null; // See Football models for details
outcome: string = null;
}
class TiebreakerModel {
goldenGoal: number = null;
}
Own or user game editions
When calling getMyGameEditions()
or getUserGameEditions(userId)
method the following model will be returned:
class GamesTopXListModel {
id: string = null;
title: string = null;
description: string = null;
type: string = null;
status: string = null;
outcome: string = null;
predictionsCutoff: string = null;
scheduleOpenAt: string = null;
fixtures: FixturesTopXModel[] = [];
tiebreaker: TimeTiebreaker = new TimeTiebreaker();
predictionId: string = null;
participantsCount: number = 0;
related: RelatedGame[] = null;
excludedProfileIds: string[] = null;
rules: string = null;
flags: string[] = null;
points: number = null;
images: ImagesModel = null;
predictionTiebreaker: TiebreakerModel = new TiebreakerModel();
points: number = null;
createdAt: string = null;
updatedAt: string = null;
predictionsMadeAt: string = null;
}
class RelatedGame {
entityId: string = null;
entityType: string = null;
}
class FixturesTopXModel {
matchId: string = null;
matchType: string = null;
market: MarketEnum = MarketEnum.CORRECT_SCORE;
matchModel: MatchBasicModel = null; // See Football models for details
prediction: PredictionTopXModel = new PredictionTopXModel();
matchStatus: MatchStatus = new MatchStatus();
}
class MatchStatus {
type: string = null;
subType: string = null;
}
class PredictionTopXModel {
value: string = null;
result: ResultModel = null;
}
class ResultModel {
settledAt: string = null;
resettledAt: string = null;
status: string = null;
outcome: OutcomeEnum = null;
points: number = 0;
}
class MatchStatus {
type: string = null;
subType: string = null;
}
class TimeTiebreaker {
timeTiebreaker: boolean = false;
}
class TiebreakerModel {
goldenGoal: number = 0;
}
enum OutcomeEnum {
CORRECT = "CORRECT",
INCORRECT = "INCORRECT",
PARTIALLY_CORRECT = "PARTIALLY_CORRECT",
NOT_VERIFIED = "NOT_VERIFIED"
}
Correct results for specific game
class GameMarketsResults {
gameId: string = null;
results: MarketsResults[] = null;
tieBreakers: TieBreakersType = null;
}
type MarketsResults = {
matchId: string;
market: MarketEnum;
result: string | string[] | boolean;
matchModel: MatchBasicModel;
matchStatus: MatchStatus;
playerModels?: PlayerBasicModel[];
};
type TieBreakersType = {
goldenGoals: GoldenGoalsType[];
};
type GoldenGoalsType = {
minute: number;
matchId: string;
matchModel: MatchBasicModel;
playerId: string;
playerModel: PlayerBasicModel;
goalType: string;
};
Filters for games
Used as a type of argument filters
for most of Top X and Match Quiz methods.
class GamesFilters {
limit: number = null;
startAfter: string = null;
status: GameStatusEnum = null;
type: TypeGames = null;
gameIds: string[] = null;
}
enum GameStatusEnum {
OPEN = "OPEN",
LIVE = "LIVE",
PENDING = "PENDING",
CANCELED = "CANCELED",
CLOSED = "CLOSED",
SETTLED = "SETTLED"
}
Match Quiz models
Configuration model
This model is used for showing the match quiz configuration for client.
class MatchQuizConfigModel {
enabled: boolean = false;
defaultMarkets: string[] = null;
competitionsWhitelist: string[] = null;
}
List of games
The response model you receive when you fetch list of Match Quiz games.
Game
The response model you receive when you fetch Match Quiz game by ID.
Own or user game editions
When calling getMyGameEditions()
or getUserGameEditions(userId)
method the following model will be returned:
class GamesMatchQuizListModel {
id: string = null;
title: string = null;
description: string = null;
type: string = null;
status: string = null;
outcome: string = null;
predictionsCutoff: string = null;
scheduleOpenAt: string = null;
fixtures: FixturesMatchQuizModel[] = [];
tiebreaker: TimeTiebreaker = new TimeTiebreaker();
predictionId: string = null;
participantsCount: number = 0;
related: RelatedGame[] = null;
excludedProfileIds: string[] = null;
rules: string = null;
flags: string[] = null;
points: number = 0;
images: ImagesModel = null;
createdAt: string = null;
updatedAt: string = null;
predictionsMadeAt: string = null;
}
class RelatedGame {
entityId: string = null;
entityType: string = null;
}
class FixturesMatchQuizModel {
matchId: string = null;
matchType: string = null;
market: MarketEnum = null; // See Predictor models for details
matchModel: MatchBasicModel = null; // See Football models for details
prediction: PredictionMatchQuizModel = new PredictionMatchQuizModel();
matchStatus: MatchStatus = new MatchStatus();
}
class MatchStatus {
type: string = null;
subType: string = null;
}
class PredictionMatchQuizModel {
value: any = null;
target?: number = null;
playerId?: string = null;
playerModel?: PlayerBasicModel = null; // See Football models for details
result: ResultModel = null;
}
class ResultModel {
settledAt: string = null;
resettledAt: string = null;
status: string = null;
outcome: OutcomeEnum = null;
points: number = 0;
}
enum OutcomeEnum {
CORRECT = "CORRECT",
INCORRECT = "INCORRECT",
PARTIALLY_CORRECT = "PARTIALLY_CORRECT",
NOT_VERIFIED = "NOT_VERIFIED"
}
All other models for Match Quiz are the same as Top X models
Loyalty models
Meta
Meta key for paginated responses in Loyalty namespace is different than other namespaces.
Meta for Loyalty namespace example:
class LoyaltyMeta {
rankType: string = null;
fromDate: string = null;
toDate: string = null;
pagination: PaginationFootballProperties = new PaginationFootballProperties();
}
class PaginationFootballProperties {
currentPage: number = null;
itemsPerPage: number = null;
totalItems: number = null;
numberOfPages: number = null;
}
Configuration model
This model is used for showing the clients configuration.
class ClientFeaturesModel {
enabled: boolean = false;
conditions: {list: string[]} = { list: null };
actions: ActionsModel = new ActionsModel();
rewards: RewardsModel = new RewardsModel();
}
class ActionsModel {
value: ActionValueModel = new ActionValueModel()
}
class ActionValueModel {
id: string;
weight: number;
multiplier: number;
conditions: string[];
}
class RewardsModel {
points: PointsModel = null;
tiers: TiersModel[] = null;
badges: BadgesModel = null;
}
class PointsModel {
general: Points[] = null;
comments: any[] = null
predictor: PointsValueModel[] = null
activity: PointsValueModel[] = null;
topX: PointsValueModel[] = null;
matchQuiz: PointsValueModel[] = null;
}
class PointsValueModel {
id: string;
points: number;
multiplier: number;
conditions: string[];
}
class Points {
id: string = null;
points: number = null;
}
class TiersModel {
enabled: boolean = false;
id: string = null;
label: string = null;
points: number = null;
}
class BadgesModel {
general: any[] = [];
predictor: BadgesValue[] = [];
topX: BadgesValue[] = [];
matchQuiz: BadgesValue[] = [];
}
class BadgesValue {
id: string = null;
enabled: boolean = false;
label: string = null;
assets: BadgeAssets = null;
requirements: RequirementModel = new RequirementModel();
}
interface BadgeAssets {
mainImageUrl: string;
}
class RequirementModel {
points: number = 0;
entityId: string = null;
entityType: string = null;
gameParticipationCount: number = null;
predictionsMade: number = null;
correctPredictions: number = null;
}
Leaderboard model
Leaderboard can be for a specific template or game.
class LeaderboardModel {
position: number = null;
profileId: string = null;
profileModel: ProfileModel = null;
points: number = null;
predictionsMade: number = null;
}
Templates model
Template can be for game, match, competitions, teams and etc. It is returned when list of templates are received.
class TemplateModel {
id: string = null;
name: string = null;
description: string = null;
type: string = null;
fromDate: string = null;
toDate: string = null;
markets: string[] = [];
teamIds: string[] = [];
matchIds: string[] = [];
gameIds: string[] = [];
gameTypes: string[] = [];
competitionIds: string[] = [];
rules: string = null;
flags: string[] = null;
images: ImagesModel = null;
related: RelatedEntity[] = null;
createdAt: string = null;
updatedAt: string = null;
}
class RelatedEntity {
entityId: string = null;
entityType: string = null;
}
class ImagesModel {
main: string = null;
cover: string = null;
mobile: string = null;
}
Template By ID model
Template can be for game, match, competitions, teams and etc. It is returned when specific template is called by ID.
class TemplateByIdModel {
id: string = null;
name: string = null;
description: string = null;
type: string = null;
fromDate: string = null;
toDate: string = null;
markets: string[] = [];
teamIds: string[] = [];
matchIds: string[] = [];
gameIds: string[] = [];
gameTypes: string[] = [];
competitionIds: string[] = [];
rules: string = null;
flags: string[] = null;
images: ImagesModel = null;
related: RelatedEntity[] = null;
labels: Record<string, string> = null;
customFields: Record<string, string> = null;
createdAt: string = null;
updatedAt: string = null;
}
class RelatedEntity {
entityId: string = null;
entityType: string = null;
}
class ImagesModel {
main: string = null;
cover: string = null;
mobile: string = null;
}
Filters for loyalty operations
Used as a type of argument filters
for getLeaderboard()
and getLeaderboardForGame()
methods.
class LoyaltyFilters {
limit: number = null;
page: number = null;
}
class HighestSuccessRateFilters {
market?: string;
fromDate?: string;
toDate?: string;
usersCount?: number;
minimumPredictions?: number;
}
Activity models
Meta
Same Meta model as Football.
Activity response
class ActivityResponseBody {
id: string = null;
profileId: string = null;
property: string = null;
value: string = null;
action: string = null;
context: ContextModel = new ContextModel();
points: number = 0;
}
class ContextModel {
content?: ContentModel = new ContentModel();
tags: TagsModel[] = [];
campaign?: CampaignModel = new CampaignModel();
}
class ContentModel {
type: string = null;
id: string = null;
label: string = null;
}
class TagsModel {
id: string = null;
source: string = null;
type: string = null;
}
class CampaignModel {
id: string = null;
label: string = null;
}
Filters for Activity operations
Used as a type of filters
for profile activities
class ActivityFilters {
action: ActionsEnum = null;
page: number = null;
limit: number = null;
}
enum ActionsEnum {
LIKE = "like",
DISLIKE = "dislike",
PAGE_VIEW = "page_view",
CONTENT_CONSUMED = "content_consumed",
SHARE = "share",
COMMENT = "comment",
CLICK_AD = "click_ad",
CONVERSION = "conversion",
PREDICTION_MADE = "prediction_made",
CONVERT = "convert",
MANAGE_INTERESTS = "manage_interests",
GAME_PARTICIPATION = "game_participation",
ARTICLE_CONSUMED = "article_consumed",
VIDEO_CONSUMED = "video_consumed",
SHORT_VIDEO_CONSUMED = "short_video_consumed",
LONG_VIDEO_CONSUMED = "long_video_consumed",
AUDIO_CONSUMED = "audio_consumed",
GALLERY_CONSUMED = "gallery_consumed",
IMAGE_CONSUMED = "image_consumed",
POLL_PARTICIPATION = "poll_participation"
}
enum UserActionsEnum {
LIKE = "like",
DISLIKE = "dislike",
SHARE = "share",
COMMENT = "comment",
PREDICTION_MADE = "prediction_made"
}
Filters for Rankings operations
Used as a type of filters
for profile rankings
class RankingsFilters {
limit?: number = null;
page?: number = null;
sortOrder?: SortOrder = null;
type?: RankingsType = null;
leaderboardIds?: string[] = null;
}
type SortOrder = "asc" | "desc";
type RankingsType = "game" | "template";
Entities
Entities follows model
class EntitiesFollows {
count: number = 0;
breakdown: EntitiesFollowsBreakdown[] = [];
}
interface EntitiesFollowsBreakdown {
id: string;
model: CompetitionBasicModel | TeamBasicModel | PlayerBasicModel;
count: number;
}
Filters for Entity follows
Used as a type of filters
for entity follows
class EntitiesFollowsFilters {
footballCompetitions?: string[];
footballTeams?: string[];
footballPlayers?: string[];
}
Updated about 1 month ago