Skip to content

API Reference

Grudge Studio edited this page Mar 7, 2026 · 1 revision

API Reference

Complete reference for all ObjectStore endpoints.

Base URL: https://molochdagod.github.io/ObjectStore

All endpoints return JSON. No authentication required. CORS enabled.


Static Data Endpoints

These are served directly from GitHub Pages as static JSON files.

Core Game Data

Endpoint Description
GET /api/v1/weapons.json All weapons (17 categories × 6 items × 8 tiers = 816)
GET /api/v1/armor.json Armor sets (11 slots × 4 types)
GET /api/v1/materials.json Crafting materials (98 items: ore, wood, cloth, leather, gems, essence)
GET /api/v1/consumables.json Potions, food, engineer items (132 items)
GET /api/v1/skills.json Weapon skill trees (47 skills)
GET /api/v1/weaponSkills.json Extended weapon skill data with detailed trees

Character & World Data

Endpoint Description
GET /api/v1/races.json 6 playable races with bonuses, lore, faction affiliations
GET /api/v1/classes.json 4 classes with abilities, weapon/armor restrictions, signature moves
GET /api/v1/factions.json 3 factions (Crusade, Legion, Fabled) with race mappings
GET /api/v1/attributes.json 8 attributes (STR, INT, VIT, DEX, END, WIS, AGI, TAC) with stat formulas
GET /api/v1/professions.json 5 harvesting professions with advancement trees

Combat & Enemies

Endpoint Description
GET /api/v1/bosses.json Boss encounter definitions
GET /api/v1/enemies.json Enemy NPC data
GET /api/v1/factionUnits.json Faction-specific AI unit data
GET /api/v1/abilityEffects.json Ability and combat effects

Visual & Technical

Endpoint Description
GET /api/v1/sprites.json Sprite icon catalog (4,000+ entries)
GET /api/v1/spriteMaps.json Sprite sheet mappings
GET /api/v1/effectSprites.json VFX and effect sprite data
GET /api/v1/animations.json Animation definitions
GET /api/v1/asset-registry.json Full asset registry with UUIDs

Engine & Rendering

Endpoint Description
GET /api/v1/rendering.json Rendering configuration
GET /api/v1/terrain.json Terrain definitions
GET /api/v1/tileMaps.json Tile map data
GET /api/v1/controllers.json Controller input mappings
GET /api/v1/ecs.json Entity-Component-System definitions
GET /api/v1/nodeUpgrades.json Node upgrade paths

AI & Integration

Endpoint Description
GET /api/v1/ai.json AI agent configuration

Response Schemas

Weapons (/api/v1/weapons.json)

{
  "version": "1.0.0",
  "total": 816,
  "tiers": 8,
  "categories": {
    "swords": {
      "iconBase": "Sword",
      "iconMax": 40,
      "items": [
        {
          "id": "bloodfeud-blade",
          "name": "Bloodfeud Blade",
          "primaryStat": "damage",
          "secondaryStat": "lifesteal",
          "emoji": "⚔️",
          "grudgeType": "item"
        }
      ]
    },
    "axes": { ... },
    "hammers": { ... },
    "daggers": { ... },
    "spears": { ... },
    "bows": { ... },
    "crossbows": { ... },
    "guns": { ... },
    "staffs": { ... },
    "wands": { ... },
    "maces": { ... },
    "shields": { ... },
    "tomes": { ... },
    "2h-swords": { ... },
    "2h-axes": { ... },
    "2h-hammers": { ... },
    "off-hand-relics": { ... }
  }
}

17 weapon categories: swords, axes, hammers, daggers, spears, bows, crossbows, guns, staffs, wands, maces, shields, tomes, 2h-swords, 2h-axes, 2h-hammers, off-hand-relics.

Each weapon has 6 named items. Each item exists in 8 tiers (T1–T8). Total: 17 × 6 × 8 = 816 weapons.

Materials (/api/v1/materials.json)

{
  "categories": {
    "ore": {
      "items": [
        {
          "id": "copper-ore",
          "name": "Copper Ore",
          "tier": 1,
          "gatheredBy": "Mining",
          "emoji": "🪨"
        }
      ]
    },
    "wood": { ... },
    "cloth": { ... },
    "leather": { ... },
    "gems": { ... },
    "essence": { ... }
  }
}

6 material categories: ore, wood, cloth, leather, gems, essence.

Races (/api/v1/races.json)

{
  "races": [
    {
      "id": "human",
      "name": "Human",
      "faction": "Crusade",
      "bonuses": { ... },
      "lore": "..."
    }
  ]
}

6 races: Human, Orc, Elf, Undead, Barbarian, Dwarf.

Classes (/api/v1/classes.json)

{
  "classes": [
    {
      "id": "warrior",
      "name": "Warrior",
      "abilities": [ ... ],
      "weaponTypes": ["shields", "swords", "2h-swords", "2h-axes", "2h-hammers"],
      "armorTypes": ["metal"],
      "signatureMove": "..."
    }
  ]
}

4 classes: Warrior, Mage Priest, Worge, Ranger.

Factions (/api/v1/factions.json)

3 factions: Crusade, Legion, Fabled — each with aligned races.

Attributes (/api/v1/attributes.json)

8 attributes: STR (Strength), INT (Intelligence), VIT (Vitality), DEX (Dexterity), END (Endurance), WIS (Wisdom), AGI (Agility), TAC (Tactics).


Dynamic Server Endpoints

When running the local ObjectStore server (node server.js on port 3000):

GET /api/assets/categories

Returns a summary of all asset categories and counts.

{
  "totalCategories": 12,
  "totalAssets": 4200,
  "categories": {
    "weapons_full": { "count": 680 },
    "armor": { "count": 320 },
    "resources": { "count": 150 }
  }
}

GET /api/assets/search

Search assets by name, filename, or category.

Parameters:

Param Type Required Description
q string No* Search query (name/filename match)
category string No* Filter by category
limit number No Max results (default 50, max 200)

*At least one of q or category is required.

GET /api/assets/search?q=sword&category=weapons_full&limit=10
{
  "query": "sword",
  "category": "weapons_full",
  "count": 10,
  "results": [
    {
      "uuid": "SPRT-20260306000000-000001-517F0A6A",
      "name": "Sword_01",
      "filename": "Sword_01.png",
      "category": "weapons_full",
      "path": "icons/weapons_full/Sword_01.png",
      "url": "https://molochdagod.github.io/ObjectStore/icons/weapons_full/Sword_01.png"
    }
  ]
}

GET /api/assets/:uuid

Fetch a single asset by its GRUDGE UUID.

GET /api/assets/SPRT-20260306000000-000001-517F0A6A
{
  "uuid": "SPRT-20260306000000-000001-517F0A6A",
  "name": "Sword_01",
  "filename": "Sword_01.png",
  "category": "weapons_full",
  "path": "icons/weapons_full/Sword_01.png",
  "url": "https://molochdagod.github.io/ObjectStore/icons/weapons_full/Sword_01.png",
  "width": 128,
  "height": 128
}

Icon URLs

Sprite icons are served statically:

Type Pattern Example
Weapons /icons/weapons/{Type}_{##}.png /icons/weapons/Sword_01.png
Full-res Weapons /icons/weapons_full/{Type}_{##}.png /icons/weapons_full/Sword_01.png
Armor /icons/armor/{Slot}_{##}.png /icons/armor/Helm_01.png
Resources /icons/resources/Res_{##}.png /icons/resources/Res_01.png

Error Handling

Status Meaning
200 Success
400 Bad request (missing required params)
404 Asset/endpoint not found
503 Asset registry not loaded (server only)

All error responses follow:

{
  "error": "Description of the error"
}

CORS

All endpoints include these headers:

Access-Control-Allow-Origin: *
Access-Control-Allow-Methods: GET, OPTIONS
Access-Control-Allow-Headers: Content-Type

Next: SDK Guide — Use the SDK for search, caching, and UUID generation.

Clone this wiki locally