Jump to content

Data API/Types

From Bconomy Wiki
Revision as of 12:20, 2 November 2026 by TheCarriedOne (talk | contribs) (Publish from docs/data-api.md)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Data API

Common types

[edit | edit source]

These types appear across multiple endpoint responses.

interface User {
  id: number                   // BcID
  name: string
  registrationDate: string     // ISO 8601
  rank: number                 // current position in the rank lineup (1–60)
  tier: number
  bc: number                   // balance
  sp: number                   // store points
  kr: number                   // karma
  chips: number                // Fun House chips
  buddyId: number | null
  factionId: number | null
  factionTag: string | null
  factionJoinDate: string      // ISO 8601
  factionDepositWeekly: number
  factionDepositTotal: number
  questLevel: number
  questLevelClaimed: number
  dailyClaimStreak: number
  petsBredDaily: number
  lastCaptchaDate: string      // ISO 8601
  farmPlots: Array<{
    level: number
    status: { isPlanted: false } | { isPlanted: true; itemId: number; plantedTime: number }
    boost: { multiplier: number; endTime: number }
    isExtra: boolean
  }>
  generators: Array<{ level: number; isExtra: boolean }>
  quests: Array<{ itemId: number; amountRequired: number; amountFulfilled: number }>
  cooldowns: {
    fish: number; hunt: number; explore: number; mine: number; work: number
    daily: number; water: number; claimGenerators: number; setBuddy: number
    buddyBossAttack: number; resetPerks: number; eternalsnowflakeUse: number
  }  // values are Unix ms expiry timestamps (0 = no cooldown)
  effects: Record<string, { endTime: number; modifier: object }>
  upgrades: {
    fish: number; fishExtra: number; hunt: number; huntExtra: number
    explore: number; exploreExtra: number; mine: number; mineExtra: number
    petsStable: number; petsStableExtra: number
  }
  augments: Array<{ lootAction: LootAction; itemId: number; expiry: number }>
  equippedFlatInventory: Inventory
  perks: Partial<Record<PrestigePerkId, number>>
  pinnedItemIds: number[]
  pinnedPetIds: number[]
  autosellLimits: Record<string, number>
  itemReserveAmounts: Record<string, number>
  settings: {
    profileShowStatId: StatKey | null
    title: { type: "trophy"; trophyId: TrophyId } | { type: "specificRank"; rankNum: number } | null
    syncDiscordName: boolean
    publicDiscordProfile: boolean
    petsBulkFeedFoundItemsFirst: boolean
    petsBulkFeedCravingsOnly: boolean
    aggregateBulkOutput: boolean
  }
  custom: {
    profileHideAvatar: boolean
    profileHideTitleName: boolean
    profileUseChatEmblemEmoji: boolean
    profileBackground: string | null
    chatEmblemEmoji: string | null
    chatUsernameColor: string | null
    chatUsernameStyle: string | null
    chatMessageBackgroundColor: string | null
  }
  blockedBcIds: number[]
  banExpiryDate: string        // ISO 8601
  premiumExpiryDate: string | null  // ISO 8601
}
interface Pet {
  id: number
  ownerBcId: number | null     // null for wild pets
  hatchDate: string            // ISO 8601
  name: string
  tier: number
  xp: number
  species: PetSpecies
  generation: number
  parentAId: number | null
  parentBId: number | null
  timesBred: number
  lastBred: string             // ISO 8601
  heldItemId: number | null
  unsyncedEnergy: number
  adventureType: "fish" | "hunt" | "explore" | "mine" | null
  adventureBoost: { multiplier: number; endTime: number } | null
  lastAdventureSync: string    // ISO 8601
  lifetimeItemsFound: number
  craving: { itemId: number; amount: number }
  skin: PetSkin | null
  aura: PetAura | null
}
interface Egg {
  id: number
  ownerBcId: number | null
  parentAId: number
  parentBId: number
  parentAHeldItemId: number | null
  parentBHeldItemId: number | null
}

Faction

[edit | edit source]
interface Faction {
  id: number
  tag: string | null
  name: string
  ownerBcId: number
  rankOverrides: Record<string, number>
  isRecruiting: boolean
  isOpenRecruitment: boolean  // Immediate joining while recruiting and below capacity
  about: string | null
  motd: string | null
  unsyncedFp: number
  lastFpSync: string           // ISO 8601
  boostSteps: {
    fish:    { lastChange: number; amount: number }
    hunt:    { lastChange: number; amount: number }
    explore: { lastChange: number; amount: number }
    mine:    { lastChange: number; amount: number }
  }
  halls: number
  fpDepositedMonthly: number
  fpDepositedTotal: number
  customizationSettings: {
    emblemEmoji: string | null
    tagColor: string | null
    nameColor: string | null
    nameStyle: string | null
  }
  ownerPremiumExpiryDate: string | null  // ISO 8601
  memberCount: number
  pendingRequests: number
}

Inventory

[edit | edit source]

A JSON object where each key is an item's idName string (e.g. "rocks", "lunarShard") and each value is the owned quantity. Only items with a non-zero quantity are present.

{ "rocks": 500, "wood": 120, "lunarShard": 3 }

LeaderboardPage<T>

[edit | edit source]

Returned by all paginated leaderboard endpoints.

interface LeaderboardPage<T> {
  data: T[]
  total: number         // total entries across all pages
  pageSize: number
  lastUpdated: number   // Unix ms timestamp of last cache refresh
  ownEntry?: (T & { rank: number }) | null  // requesting user's entry; omitted for some lb types
}

LeaderboardUser

[edit | edit source]

The entry type T for user leaderboards.

interface LeaderboardUser {
  id: number           // BcID
  name: string
  custom: User["custom"]
  premiumExpiryDate: string | null
  lbValue: number      // primary sort value (may exceed Number.MAX_SAFE_INTEGER)
  secondaryLbValue?: number
}

GameLogResponse

[edit | edit source]

Returned by all log endpoints.

interface GameLogResponse {
  entries: GameLog[]
  refs: {
    profiles: Record<number, User>    // keyed by BcID
    factions: Record<number, Faction> // keyed by faction ID
    pets: Record<number, Pet>         // keyed by pet ID
  }
  total: number
  pageSize: number
  page: number
}

GameLog

[edit | edit source]
interface GameLog {
  id: number
  date: string                // ISO 8601
  senderBcId: number | null
  recipientBcId: number | null
  factionId: number | null
  itemId: number | null
  type: GameLogType
  data: {
    amount?: number
    ballPitType?: "black" | "purple" | "blue" | "orange" | "yellow" | "green"
    listingPrice?: number
    newFactionRank?: number
    action?: "fish" | "hunt" | "explore" | "mine" | "work"
    petId?: number
    eggId?: number
    special?: Special
  }
}

MarketListing

[edit | edit source]
interface MarketListing {
  id: number
  bcId: number       // seller BcID
  itemId: number
  price: number
  amount: number
}

MarketActivityEntry

[edit | edit source]
interface MarketActivityEntry {
  itemId: number
  itemName: string
  itemEmoji: string
  type: "buy" | "list" | "delist"
  actorBcId: number
  actorName: string | null
  amount: number
  price: number
  date: string       // ISO 8601
}

MarketPreviewItem

[edit | edit source]
interface MarketPreviewItem {
  price?: number      // current lowest listing price; absent if no active listings
  delta: {
    day: number | null    // % change vs 24 h ago; null if no data
    week: number | null
    month: number | null
  }
}

MarketPriceSnapshot

[edit | edit source]
interface MarketPriceSnapshot {
  id: number
  snapshotTime: string   // ISO 8601
  itemId: number
  lowestPrice: number | null
}

MarketVolumeSnapshot

[edit | edit source]
interface MarketVolumeSnapshot {
  id: number
  granularity: "hour" | "day" | "month"
  windowStart: string    // ISO 8601
  windowEnd: string      // ISO 8601
  itemId: number
  unitsSold: number      // may exceed MAX_SAFE_INTEGER for high-volume items
  totalRevenue: number   // may exceed MAX_SAFE_INTEGER
  transactionCount: number
}

FactionJoinRequest

[edit | edit source]
interface FactionJoinRequest {
  id: number
  bcId: number
  factionId: number
  reason: string | null
  date: string           // ISO 8601
}

UserStats

[edit | edit source]
interface UserStats {
  bcId: number
  incomeDaily: number;         incomeWeekly: number;          incomeTotal: number
  timesFished: number;         timesHunted: number;           timesExplored: number
  timesMined: number;          timesWorked: number
  itemsFound: number;          rareItemsFound: number
  itemsCrafted: number;        itemsHarvested: number;        timesWatered: number
  bcEarnedFromGens: number
  petItemsFound: number;       petItemsFed: number;           petsBred: number
  questsCompleted: number;     fpContributed: number
  timesPlayedCoinflip: number
  netCoinflipProfitDaily: number; netCoinflipProfitWeekly: number; netCoinflipProfitTotal: number
  bcBurnedDaily: number;       bcBurnedWeekly: number;        bcBurnedTotal: number
  bossDamage: number           // may exceed MAX_SAFE_INTEGER
  marketListingsSold: number
  marketListingsRevenue: number // may exceed MAX_SAFE_INTEGER
  netBallPitProfit: number
  museumCollectiblesFound: number
  globalBoostsUsed: number;    worthGivenAway: number
}

UserTrophies

[edit | edit source]
interface UserTrophies {
  bcId: number
  trophyRecord: Partial<Record<TrophyId, { count: number; timeFirstAchieved: number }>>
}

Enumerations

[edit | edit source]

PetSpecies

[edit | edit source]

Base: poodle, dog, bat, mustang, pig, eagle, otter, tiger, peacock, donkey, gorilla, ox, junglefowl, crocodile, goose, rat, seal, whale, rabbit, dove, kangaroo, snake, turtle, snail, dolphin, lizard, scorpion, owl, cockroach

Supporter: dragon, phoenix, visitor, invader, sauropod, tyrannosaurus, jack, ghost, snowman

PetSkin

[edit | edit source]

Base: alpha, beta, gamma, delta, epsilon, zeta, eta

Unique: sunkissed, grayscale, whiteout

PetAura

[edit | edit source]

green, purple, orange, cyan, red, pink, blue, yellow, black

LootAction

[edit | edit source]

fish, hunt, explore, mine

GameLogType

[edit | edit source]

itemFind, ballPitWin, marketItemTransaction, tradeItemTransaction, tradeBcTransaction, factionJoin, factionCreate, factionDelete, factionDemote, factionPromote, factionTransfer, factionVaultDeposit, factionVaultUpgrade, factionKick, factionLeave, factionIncreaseBoost, factionDecreaseBoost, lbReceiveItemReward, lbReceiveSpecialReward, bossReceiveItemReward, bossReceiveSpecialReward, eggCreate, eggAbandon, eggTransfer, eggLocate, eggHatch, petTransfer, petRelease, specialUse, specialFind, giveawayItemTransfer, supportGrantItem, marketListingCreated, marketListingDelisted

UserLeaderboardType

[edit | edit source]
lbType Description Required extra field
wallet Richest by BC balance —
inventoryWorth Richest by inventory value —
rank Highest rank —
questLevel Highest quest level —
streak Longest daily claim streak —
stat Any tracked statistic stat (a key of UserStats, excluding bcId)
item Most of a specific item itemId
trophy Most of a specific trophy trophyId

StatKey (for lbType: "stat")

[edit | edit source]

Any key of UserStats except bcId: incomeDaily, incomeWeekly, incomeTotal, timesFished, timesHunted, timesExplored, timesMined, timesWorked, itemsFound, rareItemsFound, itemsCrafted, itemsHarvested, timesWatered, bcEarnedFromGens, petItemsFound, petItemsFed, petsBred, questsCompleted, fpContributed, timesPlayedCoinflip, netCoinflipProfitDaily, netCoinflipProfitWeekly, netCoinflipProfitTotal, bcBurnedDaily, bcBurnedWeekly, bcBurnedTotal, bossDamage, marketListingsSold, marketListingsRevenue, netBallPitProfit, museumCollectiblesFound, globalBoostsUsed, worthGivenAway

TrophyId

[edit | edit source]

bossKillingBlow, topDayIncome, topWeekIncome, topDayBurn, topWeekBurn, topDayBet, topWeekBet, topDayFunhouse, topWeekFunhouse, bottomDayFunhouse, bottomWeekFunhouse, dust, findSpecial, donor, lotwin, wewert, based, composer, bcbeta, summer2022Event, winter2024Lv125, winter2024Lv250, winter2024Lv375, winter2024Lv500, spring2025Lv250, spring2025Lv500, spring2025Lv750, spring2025Lv1000, topSeasonQuestLevel, top10SeasonQuestLevel, bconomySmp2025, summer2025Lv125, summer2025Lv250, summer2025Lv500, summer2025Lv1000, wewertTwo, fall2025Lv100, fall2025Lv250, fall2025Lv500, fall2025Lv1000, fall2025Lv2500, fall2025Lv5000, winter2025Lv100, winter2025Lv250, winter2025Lv500, winter2025Lv1000, winter2025Lv2500, winter2025Lv5000, dolphinCollector, otterCollector, gooseCollector, sealCollector, whaleCollector, turtleCollector, eagleCollector, tigerCollector, gorillaCollector, crocodileCollector, snakeCollector, poodleCollector, dogCollector, mustangCollector, pigCollector, peacockCollector, donkeyCollector, oxCollector, junglefowlCollector, rabbitCollector, doveCollector, kangarooCollector, batCollector, ratCollector, snailCollector, lizardCollector, dragonCollector, phoenixCollector, visitorCollector, invaderCollector, scorpionCollector, sauropodCollector, tyrannosaurusCollector, jackCollector, ghostCollector, owlCollector, snowmanCollector, cockroachCollector, eggstravagant

PrestigePerkId

[edit | edit source]

raiseBurnItemReturn, raiseWorkBonusChance, lowerRankCost, lowerTierCost, raiseRareItemMultiplier, raiseCoinflipLimit, raisePetMaxTier, lowerWaterFarmCooldown, raiseMaxSameItemPlanted, raisePetSpace, lowerBuddySwapCooldown, raiseEquipSlots, raiseGeneratorIdleTime, raiseFarmCropsDieTime, raisePetCravingXpMultiplier, raiseChanceToIgnoreCooldownForAction, raisePetFeedAdditionalItemOutput, raiseFarmHarvestAdditionalItemOutput, lowerPetBreedCooldown, raisePetEnergyCapacity, lowerPetBreedCost, raiseToolAugmentationSlots, raiseFarmWaterByproducts, raiseMarketAccessLevel, raiseMaxDailyReward, reduceMarketTransactionFee

Generated from the Bconomy source documentation. Edits made on the wiki are overwritten on the next publish; ask the developers to change the source.