Data API/Profile
user/profile
[edit | edit source]Returns a single user's full public profile, enriched with inventory, faction, linked Discord info (if public), and BCS roles. Leaderboard positions are fetched separately via user/lbPositions (they are slow to compute and loaded lazily by the client).
Request
{ "type": "user/profile", "id": 1 }
Response — User extended with:
{
// All User fields, plus:
bcsRoles: Array<"moderator" | "developer" | "inactiveModerator">
inventory: Inventory
faction?: Faction // present only if user is in a faction
displayStatValue?: number // value of the stat shown under Triumphs
presence?: { status: "online" | "idle" | "offline"; lastSeenAt?: Date | null }
discordOnline: boolean // linked account is in the latest Discord snapshot and publicDiscordProfile is enabled
discordId?: string | null // only present if user has set publicDiscordProfile
discordUsername?: string | null
discordAvatarHash?: string | null
}
The profile badge prioritizes game Online, then Idle, then Discord, then Offline. Discord requires a matching linked account in the latest server presence snapshot and the profile's Show Discord Profile setting. Cached Discord presence does not expire; a later profile response updates discordOnline. The last-activity tooltip continues to describe game activity.
user/get
[edit | edit source]Returns the core User object.
Request
{ "type": "user/get", "id": 1 }
Response — User
user/lbPositions
[edit | edit source]Returns a user's leaderboard positions, scoped to that profile's own type (main / ironman / hardcore rank among their own kind only). Split out from user/profile because computing it warms many leaderboard boards and is slow; the client fetches it lazily when the profile modal opens.
Request
{ "type": "user/lbPositions", "id": 1 }
Response
{
lbPositions: Record<string, number> // e.g. { "rank": 14, "questLevel": 2 }
}
user/inventory
[edit | edit source]Returns the inventory of a user. Keys are item idName strings; values are positive integer quantities. Only items owned in non-zero amounts are included.
Request
{ "type": "user/inventory", "id": 1 }
Response — Inventory
{ "rocks": 500, "wood": 120 }
stats/user
[edit | edit source]Returns all tracked lifetime and periodic statistics for a user.
Request
{ "type": "stats/user", "id": 1 }
Response — UserStats
stats/trophies
[edit | edit source]Returns the trophy record for a user.
Request
{ "type": "stats/trophies", "id": 1 }
Response — UserTrophies
user/otherProfiles
[edit | edit source]Returns public summary information for other profiles belonging to the same account as the requested profile.
Request
{ "type": "user/otherProfiles", "id": 1 }
| Field | Type | Required | Notes |
|---|---|---|---|
id
|
positive integer | yes | User BcID |
Response
interface OtherProfilesResponse {
profiles: Array<{
bcId: number
type: "main" | "ironman" | "hardcore"
trophyCount: number
titleEmoji: string
factionTag: string | null
title: string
name: string
}>
}
stats/userWindowed
[edit | edit source]Returns time-windowed statistics for a user across multiple aggregation buckets.
Request
{ "type": "stats/userWindowed", "bcId": 1 }
| Field | Type | Required | Notes |
|---|---|---|---|
bcId
|
positive integer | yes | User BcID |
Response
type UserWindowedStats = Record<string, {
today: number
thisWeek: number
thisMonth: number
lastDay: number
lastWeek: number
lastMonth: number
total: number
}>
stats/burnOdds
[edit | edit source]Returns daily and weekly first-draw Burn odds for a user in their profile mode, using all eligible positive burns, with no leaderboard page cutoff.
Request
{ "type": "stats/burnOdds", "bcId": 1 }
Response
interface BurnDrawResponse {
daily: BurnDrawStanding
weekly: BurnDrawStanding
}
interface BurnDrawStanding {
burned: number
rank: number | null // null for a user without an eligible positive burn
chance: number // 0–1; sqrt(user burn) / sum(sqrt(eligible burns))
participants: number
}
Banned users are excluded. The two windows use the same database snapshot. These are first-draw odds, not the chance of winning at least one prize. Weekly Genesis Egg and Forbidden Modifier draws use different winners when at least two users qualify; other draws allow repeat wins. Odds change as players burn.
Generated from the Bconomy source documentation. Edits made on the wiki are overwritten on the next publish; ask the developers to change the source.