Retention, Security, Grouping, and Presets
Retention, Security, Grouping, and Presets
Section titled “Retention, Security, Grouping, and Presets”These files control how Bazaar stores history, flags suspicious activity, groups listings for analytics, seeds browse presets, and optionally enforces minimum prices.
retention.conf
Section titled “retention.conf”Tiered snapshots for the stats engine.
| Field | Default | Meaning |
|---|---|---|
hotTierSnapshotIntervalMinutes | 5 | How often Bazaar records a recent price point. |
hotTierRetentionHours | 24 | How long the hot tier keeps dense snapshots. |
warmTierSnapshotIntervalMinutes | 60 | How often Bazaar writes warm-tier rollups. |
warmTierRetentionDays | 30 | How long the warm tier stays around. |
coldTierRetentionDays | -1 | -1 means keep cold-tier data forever. |
compactionHour | 4 | Server-local hour when Bazaar prefers to run heavier cleanup work. |
security.conf
Section titled “security.conf”| Field | Default | Meaning |
|---|---|---|
washTradeThreshold | 5 | Flag a repeated back-and-forth trading pattern after this many trades. |
washTradeAutoSuspend | false | Auto-suspend flagged entities once the threshold is crossed. |
priceAnomalyStdDevThreshold | 3.0 | Higher values mean fewer anomaly alerts. |
reconciliationIntervalHours | 6 | How often Bazaar runs reconciliation checks. |
adminAlertEnabled | true | Surface security alerts to admins. |
grouping.conf
Section titled “grouping.conf”Grouping controls how Bazaar decides which listings belong in the same analytics bucket.
Pokemon grouping
Section titled “Pokemon grouping”| Key | Default | Meaning |
|---|---|---|
pokemonGrouping.significantAttributes | ["nature", "ability", "shiny"] | Coarse market bucket used for broad aggregation. |
pokemonGrouping.fineAttributes | ["nature", "ability", "shiny", "iv_bracket"] | Narrower grouping used when Bazaar needs more precision. |
pokemonGrouping.ivBrackets | 6IV, 5IV, 4IV, Low | Named IV-total buckets used by iv_bracket. |
pokemonGrouping.legendaryOverride.significantAttributes | ["nature", "shiny"] | Coarser grouping for low-supply legendary markets. |
pokemonGrouping.legendaryOverride.fineAttributes | ["nature", "shiny", "iv_bracket", "ability"] | More detailed legendary grouping when Bazaar needs it. |
Item grouping
Section titled “Item grouping”| Key | Default | Meaning |
|---|---|---|
itemGrouping.defaultSignificantAttributes | ["enchantments_key"] | Broad default grouping for most items. |
itemGrouping.defaultFineAttributes | ["enchantments_key", "durability_tier"] | Adds a durability bucket for finer-grained histories. |
itemGrouping.overrides | {} | Per-item grouping overrides for special cases. |
presets.conf
Section titled “presets.conf”This file is empty by default on purpose.
Bazaar now ships its default GTS presets in code. Leave presets.conf empty if you want those built-ins. Only create gtsPresets or ahPresets blocks when you want to replace the defaults entirely.
# Leave empty to keep Bazaar's built-in presets.## gtsPresets = []# ahPresets = []price-control.conf
Section titled “price-control.conf”Optional minimum-price enforcement for both Pokemon and item listings. It is disabled by default.
enabled = true
propertyBasedMinimumPricing = { "hiddenability=yes" = 5000.0 "label=legendary" = 75000.0}
itemBasedMinimumPricing = [ { description = "Master Balls" minPrice = 5000.0 filter { mode = "whitelist" rules = [ { type = "id", value = "cobblemon:master_ball" } ] } }]Rules are evaluated by maximum price floor, not by first match. If several rules match a listing, Bazaar enforces the highest minimum.
For item rules, Bazaar reuses the same filter structure as channels.conf:
type = "id"supports exact IDs and*wildcards.type = "tag"matches tags such as#minecraft:logs.type = "component"compares stringified data component values throughcomponent,value, andmatch.