Back to resources

Custom Table Schema

Schemas & Deep Dives Reference Updated Sep 21, 2025

Share

Plain English

No programming needed. This page lists field names used by imports/exports and by power users who maintain JSON directly.

Meaning Table (v3)

Required keys

  • id (snake_case string)
  • schemaVersion = 3
  • tableType = “meaning-table”
  • rangeStart (int), rangeEnd (int)
  • categoryId (kebab‑case string)
  • displayName (string)
  • entries (array)

Optional table fields

  • description, descriptionTranslations, displayNameTranslations
  • defaultLanguage (string, e.g., "en")
  • isBuiltIn, isUserCreated (booleans)
  • source (string), tags (array of strings)
  • tableRollOn (array of table/list targets)
  • data (object for extensions)
  • dice (legacy; ignored by current app)

Entry fields

  • range [start, end] (required)
  • result (string, required)
  • Optional: description, translations, tags, entryRollOn, disabled, data, weight (present in schema, not used by the app yet)

Validation rules

  • Entries must cover [rangeStart..rangeEnd] exactly once; no gaps/overlaps
  • Disabled entries (or entries with [0,0]) are ignored for coverage

Minimal JSON

{
  "id": "action_basics",
  "schemaVersion": 3,
  "tableType": "meaning-table",
  "rangeStart": 1,
  "rangeEnd": 10,
  "categoryId": "actions",
  "displayName": "Action Basics",
  "entries": [
    { "range": [1, 5], "result": "Common" },
    { "range": [6, 10], "result": "Uncommon" }
  ]
}

Event Focus Table (v3)

Required keys

  • id, schemaVersion = 3
  • tableType = “event-focus”
  • rangeStart, rangeEnd
  • categoryId = “event-focus”
  • displayName, entries

Optional table fields

  • displayNameTranslations, description, descriptionTranslations
  • defaultLanguage, isBuiltIn, isUserCreated, source, tags, tableRollOn, data

Entry fields

  • range [start, end], result
  • Optional: description, translations, tags, entryRollOn, action, additionalRolls, disabled, data, weight (present in schema, not used yet)

Minimal JSON

{
  "id": "event_focus_core",
  "schemaVersion": 3,
  "tableType": "event-focus",
  "rangeStart": 1,
  "rangeEnd": 100,
  "categoryId": "event-focus",
  "displayName": "Event Focus",
  "entries": [
    { "range": [1, 10], "result": "Remote Event" },
    { "range": [11, 20], "result": "NPC Action" }
  ]
}

Downloads

See the Downloads section at the bottom of this page for schema files. Templates/Samples are listed on “Getting Started with Custom Tables”.

Note: Weighted tables appear in schema for future compatibility, but the app does not use weights yet.

  • Getting started and best practices: “Getting Started with Custom Tables”, “Organizing Custom Tables”
  • File formats and Foundry mapping: “Importing & Exporting Custom Tables”

Downloads