Loyalty Operations
Core Data Models
Badges Model (BadgesModel
)
BadgesModel
)badges.badges: [BadgeModel]? // Available badges
badges.userBadges: [String]? // User's earned badges
Badge Model (BadgeModel
)
BadgeModel
)badge.id: String // Badge identifier
badge.name: String // Badge name
badge.description: String? // Badge description
badge.asset: BadgeAsset? // Badge visual assets
badge.requirements: [BadgeConfigRequirement]? // Badge requirements
Loyalty Configuration (LoyaltyConfig
)
LoyaltyConfig
)config.actions: [LoyaltyConfigAction]? // Available loyalty actions
config.points: Points? // Points configuration
config.tiers: [Tier]? // Loyalty tiers
Loyalty Operations
Get Client Badges
do {
let badges = try await sdk.loyalty().getClientBadges(disableCache: false)
print("Available badges: \(badges.badges?.count ?? 0)")
print("User badges: \(badges.userBadges?.count ?? 0)")
} catch {
print("Error fetching badges: \(error)")
}
Get Loyalty Configuration
do {
let config = try await sdk.loyalty().getConfig(disableCache: false)
print("Loyalty config loaded with \(config.actions?.count ?? 0) actions")
} catch {
print("Error fetching loyalty config: \(error)")
}
Get Leaderboard
do {
let filters = LeaderboardFilters(
limit: 50,
page: 1
)
let leaderboard = try await sdk.loyalty().getLeaderboard(
templateId: "template123",
filters: filters,
disableCache: false
)
if let leaders = leaderboard.data {
print("Leaderboard has \(leaders.count) entries")
}
} catch {
print("Error fetching leaderboard: \(error)")
}
Get Leaderboard for Game
do {
let leaderboard = try await sdk.loyalty().getLeaderboardForGame(
gameId: "game123",
limit: 20,
page: 1,
disableCache: false
)
print("Game leaderboard: \(leaderboard.data?.count ?? 0) entries")
} catch {
print("Error fetching game leaderboard: \(error)")
}
Get Leaderboard for League
do {
let filters = LeagueLeaderboardFilters(
limit: 30,
page: 1
)
let leaderboard = try await sdk.loyalty().getLeaderboardForLeague(
leagueId: "league123",
filters: filters
)
print("League leaderboard: \(leaderboard.data?.count ?? 0) entries")
} catch {
print("Error fetching league leaderboard: \(error)")
}
Get Entities Follows
do {
let filters = EntitiesFollowsFilters(
competitions: ["fb:c:1", "fb:c:2"],
teams: ["fb:t:1", "fb:t:2"],
players: ["fb:p:123", "fb:p:456"]
)
let follows = try await sdk.loyalty().getEntitiesFollows(filters: filters, disableCache: false)
print("Entities follows loaded")
} catch {
print("Error fetching entities follows: \(error)")
}
Get Highest Success Rate
do {
let filters = HighestSuccessRateFilters(
fromDate: nil,
toDate: nil,
usersCount: 10,
minimumPredictions: 5,
market: nil
)
let successRates = try await sdk.loyalty().getHighestSuccessRate(filters: filters, disableCache: false)
if let rates = successRates.data {
print("Top success rates: \(rates.count) users")
}
} catch {
print("Error fetching highest success rate: \(error)")
}
Get Own Rankings
do {
let filters = UserRankingFilters(
rankType: RankType.points,
gameType: GameType.predictor,
typeIds: nil,
limit: 20,
page: 1,
sortOrder: SortOrder.desc
)
let rankings = try await sdk.loyalty().getOwnRankings(filters: filters, disableCache: false)
print("Own rankings: \(rankings.data?.count ?? 0)")
} catch {
print("Error fetching own rankings: \(error)")
}
Get User Rankings
do {
let filters = UserRankingFilters(
rankType: RankType.points,
gameType: GameType.predictor,
typeIds: nil,
limit: 20,
page: 1,
sortOrder: SortOrder.desc
)
let rankings = try await sdk.loyalty().getUserRankings(
userId: "user123",
filters: filters,
disableCache: false
)
print("User rankings: \(rankings.data?.count ?? 0)")
} catch {
print("Error fetching user rankings: \(error)")
}
Get Template by ID
do {
let template = try await sdk.loyalty().getTemplateById(templateId: "template123", disableCache: false)
if let templateData = template.data {
print("Template: \(templateData.name)")
}
} catch {
print("Error fetching template: \(error)")
}
Get Templates
do {
let filters = TemplateFilters(
flags: nil,
status: TemplateStatus.active,
type: TemplateType.leaderboard
)
let templates = try await sdk.loyalty().getTemplates(filters: filters, disableCache: false)
if let templateArray = templates.data {
print("Templates: \(templateArray.count)")
}
} catch {
print("Error fetching templates: \(error)")
}
Get Template Matches
do {
let matches = try await sdk.loyalty().getTemplateMatches(
templateId: "template123",
groupId: nil,
disableCache: false
)
if let matchArray = matches.data {
print("Template matches: \(matchArray.count)")
}
} catch {
print("Error fetching template matches: \(error)")
}
Get Template Winners
do {
let winners = try await sdk.loyalty().getTemplateWinners(templateId: "template123", disableCache: false)
if let winnersData = winners.data {
print("Template winners: \(winnersData.winners?.count ?? 0)")
}
} catch {
print("Error fetching template winners: \(error)")
}
Updated about 22 hours ago