Skip to main content

Overview

Stiletto provides several JSON data files containing structured information about Last Oasis game content. These files are publicly accessible and can be used by developers for community tools, calculators, Discord bots, and other projects.
All JSON files are hosted on GitHub and updated regularly to reflect the latest game data. They are minified for optimal performance.

Available Data Files

Items Database

File: items_min.json URL: https://github.com/dm94/stiletto-web/blob/master/public/json/items_min.json Description: Complete database of all items in Last Oasis including recipes, crafting stations, costs, and item properties. Data Structure:
[
  {
    "name": "Battle Axe",
    "category": "Weapon",
    "crafting": [
      {
        "ingredients": [
          { "name": "Wood", "count": 15 },
          { "name": "Iron Ingot", "count": 8 }
        ],
        "station": "Advanced Crafting Bench",
        "time": 120
      }
    ],
    "stackSize": 1,
    "weight": 5.2,
    "durability": 450,
    "trade_price": 150
  }
]
Key Fields:
  • name: Item name (string)
  • category: Item classification (string)
  • crafting: Array of crafting recipes
    • ingredients: Materials required with counts
    • station: Required crafting station
    • time: Crafting time in seconds
  • cost: Learning cost for schematics
    • name: Currency/tablet type
    • count: Amount required
  • parent: Parent technology in tech tree
  • stackSize: Max stack size
  • weight: Item weight
  • durability: Item durability
  • trade_price: NPC trade value in flots

Maps Database

File: maps.min.json URL: https://github.com/dm94/stiletto-web/blob/master/public/json/maps.min.json Description: List of all Last Oasis maps with types and images. Data Structure:
[
  {
    "idMap": 1,
    "name": "Canyon",
    "type": "Medium",
    "image": "https://static.deeme.dev/maps/Canyon.jpg"
  },
  {
    "idMap": 3,
    "name": "SleepingGiants",
    "type": "Hard",
    "image": "https://static.deeme.dev/maps/SleepingGiants.jpg"
  }
]
Key Fields:
  • idMap: Unique map identifier (number)
  • name: Map name (string)
  • type: Difficulty tier (Easy, Medium, Hard, Event)
  • image: URL to map preview image
Map Types:
  • Easy: Beginner-friendly zones
  • Medium: Intermediate difficulty
  • Hard: Challenging areas with better resources
  • Event: Special event-specific maps

Colors Database

File: colors.min.json URL: https://github.com/dm94/stiletto-web/blob/master/public/json/colors.min.json Description: All dyeing colors and their crafting recipes. Data Structure:
[
  {
    "color": "Fossil Grey",
    "ingredients": [
      { "count": 1, "name": "Pearl" },
      { "count": 5, "name": "Ash" }
    ]
  },
  {
    "color": "Salmon Orange",
    "ingredients": [
      { "count": 2, "name": "Lava Poppy" },
      { "count": 5, "name": "Corn" }
    ]
  }
]
Key Fields:
  • color: Color name (string)
  • ingredients: Required materials array
    • name: Material name
    • count: Quantity needed

Markers Database

File: markers.min.json URL: https://github.com/dm94/stiletto-web/blob/master/public/json/markers.min.json Description: All valid markers for the interactive map feature. Data Structure:
[
  { "name": "Aloe Vera" },
  { "name": "Iron Ore" },
  { "name": "Base" },
  { "name": "Enemy Base" },
  { "name": "Friend Base" },
  { "name": "Rupu Camp" },
  { "name": "Trade Station" }
]
Marker Categories:
  • Resources: Natural resources (Aloe Vera, Iron Ore, Stone, etc.)
  • Bases: Player structures (Base, Enemy Base, Friend Base)
  • Points of Interest: Rupu Camps, Trade Stations, Proxies
  • Special: Loot locations, events, traders

Creatures Database

File: creatures_min.json URL: https://github.com/dm94/stiletto-web/blob/master/public/json/creatures_min.json Description: All creatures, enemies, and NPCs in the game. Data Structure:
[
  {
    "name": "Rupu Berserker",
    "category": "Rupu"
  },
  {
    "name": "War Okkam",
    "category": "Okkam"
  },
  {
    "name": "Treasure Chest T3",
    "category": "Container",
    "tier": "T3"
  }
]
Key Fields:
  • name: Creature/entity name (string)
  • category: Classification (Rupu, Nurr, Papak, Container, Structure, etc.)
  • tier: Difficulty tier (T1-T4) where applicable

Additional Data Files

Tech Tree Database File: tech_min.json Contains technology tree items with dependencies and costs. Perks Database File: perks_min.json Player perks and abilities with descriptions and effects.

Using the Data Files

Direct Access

You can access the raw JSON files directly from GitHub:
curl https://raw.githubusercontent.com/dm94/stiletto-web/master/public/json/items_min.json

JavaScript/TypeScript Example

// Fetch items data
const response = await fetch(
  'https://raw.githubusercontent.com/dm94/stiletto-web/master/public/json/items_min.json'
);
const items = await response.json();

// Find a specific item
const battleAxe = items.find(
  (item) => item.name === 'Battle Axe'
);

console.log(battleAxe.crafting[0].ingredients);

Python Example

import requests
import json

# Load items database
url = 'https://raw.githubusercontent.com/dm94/stiletto-web/master/public/json/items_min.json'
response = requests.get(url)
items = response.json()

# Filter items by category
weapons = [item for item in items if item.get('category') == 'Weapon']

print(f"Found {len(weapons)} weapons")

Discord Bot Example

const axios = require('axios');

class LastOasisData {
  constructor() {
    this.itemsCache = null;
    this.cacheTime = null;
  }

  async getItems() {
    // Cache for 1 hour
    if (this.itemsCache && Date.now() - this.cacheTime < 3600000) {
      return this.itemsCache;
    }

    const response = await axios.get(
      'https://raw.githubusercontent.com/dm94/stiletto-web/master/public/json/items_min.json'
    );
    
    this.itemsCache = response.data;
    this.cacheTime = Date.now();
    return this.itemsCache;
  }

  async searchItem(itemName) {
    const items = await this.getItems();
    return items.find(
      item => item.name.toLowerCase() === itemName.toLowerCase()
    );
  }
}

// Usage in Discord command
client.on('messageCreate', async (message) => {
  if (message.content.startsWith('!item ')) {
    const itemName = message.content.slice(6);
    const data = new LastOasisData();
    const item = await data.searchItem(itemName);
    
    if (item) {
      message.reply(`Found: ${item.name} (${item.category})`);
    }
  }
});

Best Practices

Cache the Data

Don’t fetch JSON files on every request. Cache them locally and refresh periodically.

Handle Errors

Implement error handling for network failures and missing data.

Use Compression

The files are already minified, but consider gzip compression for large-scale usage.

Respect Rate Limits

If using GitHub raw URLs, be mindful of rate limits. Consider hosting your own copy.

Update Frequency

JSON files are typically updated within 24-48 hours after game patches. Check the repository for commit history.
To check the last update time:
// The wiki page displays the last update date
const lastUpdate = await getWikiLastUpdate();
console.log('Last data update:', new Date(lastUpdate).toLocaleDateString());
See src/pages/Wiki.tsx:130-131

Data Format Notes

Minified vs. Pretty

All files use .min.json extension and are minified (no whitespace). If you need human-readable format:
const data = await fetch(url).then(r => r.json());
console.log(JSON.stringify(data, null, 2)); // Pretty print

Localization

Item and creature names in the JSON files are in English. Stiletto uses i18next for translations:
import { useTranslation } from 'react-i18next';
const { t } = useTranslation();

// Translate item name
const translatedName = t(item.name, { ns: 'items' });

// Translate creature name  
const translatedCreature = t(creature.name, { ns: 'creatures' });

Community Projects

These JSON files are used by various community projects:
  • Discord Bots: Item lookup and crafting calculators
  • Mobile Apps: Offline item databases
  • Web Tools: Third-party calculators and planners
  • Data Analysis: Game balance research and statistics
If you build something using these data files, consider contributing back! Share your project on the Discord community.

Contributing Data

If you find errors or missing information:
  1. Report Issues: Open a GitHub issue with details
  2. Submit Pull Requests: Fix data directly in the JSON files
  3. Community Discussion: Discuss changes in Discord
See the Contributing Guide for more information.

API Integration

For programmatic access beyond static JSON files, see:

Build docs developers (and LLMs) love