Catalogs
Read-only access to the static JSON tables shipped inside the binary. External tooling can pull the same data the bot uses to make decisions — block names, recipes, item descriptions, quest definitions, pack rolls, achievement defs.
| Method | Path | Returns |
|---|---|---|
GET | /api/catalog/block_types | block_types.json — {id: "Name"} |
GET | /api/catalog/block_flags | block_flags.json — flag bits per block |
GET | /api/catalog/items | item_database.json (alias item_database) |
GET | /api/catalog/packs | pack_pool.json (alias pack_pool) |
GET | /api/catalog/quests | quest_definitions.json (alias quest_definitions) |
GET | /api/catalog/quest_pool | quest_pool.json |
GET | /api/catalog/achievements | achievement_definitions.json (alias achievement_definitions) |
curl -s http://localhost:8090/api/catalog/items \
-H 'authorization: Bearer <token>' | jq '.WeaponPickaxeBasic'
Each response is the JSON file verbatim — clients filter / index client-side. The bundles update with each release; pin against a specific binary if you need a stable snapshot.
Common shapes
block_types
{ "0": "Air", "8": "Dirt", "12": "Rock", "1041": "WeaponPickaxeBasic", ... }
items
{
"WeaponPickaxeBasic": {
"name": "WeaponPickaxeBasic",
"blockType": 1041,
"tier": "0",
"hits_required": 1000,
"level_req": null,
"description": "Just a basic pickaxe."
},
...
}
packs
{
"LureBooster": {
"name": "Lure Booster",
"byteCoinsPrice": "100",
"rolls": [...]
},
...
}
Errors
| Status | Body | Cause |
|---|---|---|
404 | {"error":"unknown catalog: <name>"} | Path didn't match any of the listed names. |
500 | {"error":"parse <file>.json: ..."} | Shouldn't happen — bundled JSON is validated at compile time. |