Jump to content

Data API/Profile

From Bconomy Wiki

Data API · Types

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.