Architecture · ops.tradeit.gg
Full catalog of scheduled jobs running on the production tradeit-backend EC2 host. All HTTP cron jobs hit http://localhost:3000/api/v2/cron/... (or /api/v2/giveaway/cron/...) — the tradeit-backend container on port 3000. Every job is monitored via Cronitor (unique ID per job). Snapshot: 2026-05-12.
This catalog is the operational source of truth for pricing/inventory cadence, payment cleanup intervals, and revert/refund timing. When wiki pages or docs cite an interval (e.g., "the pricing cycle is X minutes"), this is the authoritative reference.
| Cadence | Job class | Examples |
|---|---|---|
| every 1 min | hot-path cleanup + monitoring | cleanReservedItems, checkLastFinishedTrade, clearBadSales, updateHaloOrder |
| every 2 min | pricing pull | syncItemPrices |
| every 3 min | inventory/bot value + bad purchase | cleanBadPurchase, checkInventoryValue, checkBotValue |
| every 4 min | halo/uuskins orders | updateHaloOrder?deliveryType=1, updateUuskinOrder |
| every 5 min | giveaway + redis trim + statement check | chooseWinners, trimOutValueInHourRedisKey, checkMaxPrepareStatement |
| every 10 min | full pricing/inventory cycle + SEO | syncNewPriceItemFromPricingDb (4,14,24,34,44,54), updateTradeLockCount (7,17,27,37,47,57), updateReserveAndSaleCount (same offset), tradeSurge, getSeoPageContentURIs |
| every 20 min | payment cleanup | cleanBadNowpaymentPayment |
| hourly @ :05 | giveaway scheduler | scheduleGiveaways |
| every 3h @ :05 | trending tags | generateTrendingTags |
| every 8h @ :05 | refunds | refundBlockIds |
| daily 00:00 | maintenance + Doppler fix | maintenance.sh, fixStuckDopplerPrices |
| daily 01:00 | analytics rollups | runTradeitAnalytics.sh, runMonthlyAnalytics.sh, 730/market (insights item trends), 730/market-trends |
| daily 04:00 / 04:02 | backend daily restart | docker stop / docker start tradeit-backend |
| daily 07:xx | morning batches | inventoryDailyTracking, cleanupContainer, update-bots-levels, generateListingHack, sendBotCheckRevertTrade, flipRevertLogs |
| daily 08:xx | revert handling | checkRevertTrade, instantSellCheck, handleReservedItemsRefund |
| daily 20:00 | financial | addInvestInterest |
| weekly Sun 00:35 | pro-player content | updateProPlayersItems |
This page resolves the contradiction previously flagged between legacy memory (~10 min) and Wiki.js (~6 min). The crontab is authoritative: the cycle is 10 minutes.
syncItemPrices — every 2 min (pulls latest from pricing DB into Redis/backend cache)syncNewPriceItemFromPricingDb — every 10 min on offset 4,14,24,34,44,54 (edge updates from pricing DB)updateTradeLockCount + updateReserveAndSaleCount — every 10 min on offset 7,17,27,37,47,57Each job's Cronitor ID is the public correlation key. Sorted by cadence frequency:
| Job | Cronitor ID | Endpoint / Script |
|---|---|---|
cleanReservedItems | fUH0Le | POST /api/v2/cron/cleanReservedItems |
checkLastFinishedTrade | 80MptK | GET /api/v2/cron/checkLastFinishedTrade |
clearBadSales | HARpqp | GET /api/v2/cron/clearBadSales |
updateHaloOrder | I9uIrf | GET /api/v2/cron/updateHaloOrder |
syncItemPrices | 89VImU | GET /api/v2/cron/syncItemPrices |
cleanBadPurchase | Wa9Cds | POST /api/v2/cron/cleanBadPurchase |
checkInventoryValue | rq5Cqr | GET /api/v2/cron/checkInventoryValue |
checkBotValue | T6zGIl | GET /api/v2/cron/checkBotValue |
updateHaloOrder?deliveryType=1 | XE60aB | GET (manual halo) |
updateUuskinOrder | xjeGOx | GET /api/v2/cron/updateUuskinOrder |
chooseWinners | FCRIVS | POST /api/v2/giveaway/cron/chooseWinners |
trimOutValueInHourRedisKey | Og7p2F | GET /api/v2/cron/trimOutValueInHourRedisKey |
checkMaxPrepareStatement | jXN0K8 | POST /api/v2/giveaway/cron/checkMaxPrepareStatement |
syncNewPriceItemFromPricingDb | 7o9phZ | GET (every 10 min, offset 4) |
updateTradeLockCount | agXI8P | GET (every 10 min, offset 7) |
updateReserveAndSaleCount | xlcIqs | GET (every 10 min, offset 7) |
tradeSurge | aGgCrR | GET /api/v2/cron/tradeSurge |
getSeoPageContentURIs | L3oCM3 | GET /api/v2/cron/getSeoPageContentURIs |
cleanBadNowpaymentPayment | cmLITW | GET (every 20 min) |
scheduleGiveaways | bM3Ipl | GET (hourly :05) |
generateTrendingTags | PcQGC1 | GET (every 3h :05) |
refundBlockIds | 4MhCBa | POST (every 8h :05) |
maintenance.sh | UihGGD | shell script (daily 00:00) |
fixStuckDopplerPrices | HJSIpa | POST (daily 00:00) |
runTradeitAnalytics.sh | PKK0BW | shell (daily 01:00) |
runMonthlyAnalytics.sh | NXapVF | shell (daily 01:00) |
730/market (insights item trends) | RnnISy | POST (daily 01:00) |
730/market-trends | 1Tp0AL | GET (daily 01:00) |
| backend daily stop | LYVCOO | docker stop (04:00) |
| backend daily start | FTCCLw | docker start (04:02) |
inventoryDailyTracking | HHQ0VM | GET (07:30) |
cleanupContainer | 7lzCHu | GET (07:30) |
update-bots-levels | KBY0Lu | GET (07:01) |
generateListingHack | SHC0b0 | GET (07:00) |
sendBotCheckRevertTrade | c8FCAn | GET (07:04) |
flipRevertLogs?mode=execute | aYRp89 | GET (07:10) |
checkRevertTrade | jGG0yt | GET (08:04) |
instantSellCheck | 6KUI4G | GET (08:04) |
handleReservedItemsRefund | jDVCli | GET (08:14) |
addInvestInterest | yEVCBi | GET (20:00) |
updateProPlayersItems | uSMGYG | POST (Sun 00:35) |
# 0 9 * * * cronitor exec 3Q4IWE /api/v2/cron/checkRevertIssue
Commented out in the live crontab — likely deprecated or moved.
ops.tradeit.gg — Internal Engineering Docs