{
 "openapi": "3.1.0",
 "info": {
  "title": "tibo.dog Wiki data API",
  "version": "1.0.0",
  "description": "Read-only JSON of tibo.dog game data extracted from build boot-CPW8VVmR.js (researched 2026-11-05). Static files, no authentication. Versioning: paths are prefixed /api/v1/; breaking changes ship under a new prefix and v1 stays available for at least 90 days with a Deprecation header. Errors are JSON objects with error.code, error.message and error.hint.",
  "contact": {
   "name": "tibo.dog Wiki",
   "url": "https://tibodog-wiki.vercel.app/contact",
   "email": "me@pcstyle.dev"
  }
 },
 "servers": [
  {
   "url": "https://tibodog-wiki.vercel.app"
  }
 ],
 "paths": {
  "/api/v1/index.json": {
   "get": {
    "operationId": "listEndpoints",
    "summary": "List all data endpoints",
    "description": "Returns build metadata, the versioning policy and the list of JSON endpoints.",
    "responses": {
     "200": {
      "description": "Endpoint list",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Endpoint index",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "versioning": {
           "type": "string",
           "description": "Versioning policy"
          },
          "endpoints": {
           "type": "array",
           "items": {
            "type": "object",
            "description": "Endpoint",
            "properties": {
             "path": {
              "type": "string",
              "description": "Path"
             },
             "description": {
              "type": "string",
              "description": "What it returns"
             }
            },
            "required": [
             "path"
            ],
            "additionalProperties": true
           }
          },
          "docs": {
           "type": "string",
           "description": "Docs URL"
          },
          "openapi": {
           "type": "string",
           "description": "OpenAPI URL"
          }
         },
         "required": [
          "meta",
          "endpoints"
         ],
         "additionalProperties": true
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/live-build": {
   "get": {
    "operationId": "checkLiveBuild",
    "summary": "Compare the live game with the wiki",
    "description": "Loads https://tibo.dog/ at request time, reads the entry script name it serves and compares it with the build this wiki documents. Not cached.",
    "responses": {
     "200": {
      "description": "Comparison",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Live build check",
         "properties": {
          "status": {
           "type": "string",
           "enum": [
            "up-to-date",
            "game-updated",
            "wiki-ahead"
           ],
           "description": "up-to-date: the live game serves the documented build. game-updated: tibo.dog serves a build the wiki has not documented. wiki-ahead: tibo.dog serves an older build the wiki already moved past."
          },
          "message": {
           "type": "string",
           "description": "Plain-English result"
          },
          "checkedAt": {
           "type": "string",
           "description": "ISO time of the check"
          },
          "live": {
           "type": "object",
           "description": "Build served by tibo.dog: main, version (if known)",
           "additionalProperties": true
          },
          "documented": {
           "type": "object",
           "description": "Build this wiki documents: version, main, commit, synced",
           "additionalProperties": true
          }
         },
         "required": [
          "status",
          "live",
          "documented",
          "checkedAt"
         ],
         "additionalProperties": true
        }
       }
      }
     },
     "502": {
      "description": "tibo.dog could not be reached or parsed",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/weapons.json": {
   "get": {
    "operationId": "getWeapons",
    "summary": "Get weapons data",
    "description": "Returns the raw tibo.dog weapons definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "weapons data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of weapons",
           "items": {
            "type": "object",
            "description": "A weapon definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Weapon id, e.g. peeler"
             },
             "tier": {
              "type": "string",
              "enum": [
               "base",
               "evolved",
               "union"
              ],
              "description": "Weapon tier"
             },
             "on": {
              "type": "string",
              "description": "Trigger; \"dash\" for dash weapons"
             },
             "base": {
              "type": "object",
              "description": "Raw level-1 stats: damage, cooldown, amount, area, speed, duration, pierce, knockback, interval",
              "additionalProperties": true
             },
             "levels": {
              "type": "array",
              "description": "Per-level stat deltas for levels 2..8",
              "items": {
               "type": "object",
               "description": "Stat deltas",
               "additionalProperties": true
              }
             },
             "weight": {
              "type": "number",
              "description": "Offer weight"
             },
             "behavior": {
              "type": "object",
              "description": "Attack behaviour parameters; kind names the attack type",
              "additionalProperties": true
             },
             "from": {
              "description": "Source weapon id(s) for evolutions and unions",
              "oneOf": [
               {
                "type": "string"
               },
               {
                "type": "array",
                "items": {
                 "type": "string"
                }
               }
              ]
             },
             "catalyst": {
              "type": "string",
              "description": "Catalyst passive or item id"
             }
            },
            "required": [
             "id",
             "tier",
             "base",
             "behavior"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/passives.json": {
   "get": {
    "operationId": "getPassives",
    "summary": "Get passives data",
    "description": "Returns the raw tibo.dog passives definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "passives data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of passives",
           "items": {
            "type": "object",
            "description": "A passive definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Passive id"
             },
             "stat": {
              "type": "string",
              "description": "Stat key raised"
             },
             "perLevel": {
              "description": "Increase per level, or cumulative values by level",
              "oneOf": [
               {
                "type": "number"
               },
               {
                "type": "array",
                "items": {
                 "type": "number"
                }
               }
              ]
             },
             "maxLevel": {
              "type": "number",
              "description": "Maximum level"
             },
             "weight": {
              "type": "number",
              "description": "Offer weight"
             }
            },
            "required": [
             "id",
             "stat",
             "perLevel",
             "maxLevel"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/items.json": {
   "get": {
    "operationId": "getItems",
    "summary": "Get items data",
    "description": "Returns the raw tibo.dog items definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "items data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of items",
           "items": {
            "type": "object",
            "description": "An item definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Item id"
             },
             "tier": {
              "type": "string",
              "description": "base or evolved"
             },
             "rarity": {
              "type": "integer",
              "minimum": 0,
              "maximum": 4,
              "description": "0 Common .. 4 Legendary"
             },
             "mods": {
              "type": "object",
              "description": "Stat changes",
              "additionalProperties": true
             },
             "effect": {
              "type": "object",
              "description": "Triggered effect; kind is onHit, onKill or onHurt",
              "additionalProperties": true
             },
             "maxStacks": {
              "type": "number",
              "description": "Stack limit"
             },
             "from": {
              "type": "string",
              "description": "Source item for evolved items"
             },
             "catalyst": {
              "type": "string",
              "description": "Catalyst passive for evolved items"
             }
            },
            "required": [
             "id",
             "tier",
             "rarity",
             "mods"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/enemies.json": {
   "get": {
    "operationId": "getEnemies",
    "summary": "Get enemies data",
    "description": "Returns the raw tibo.dog enemies definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "enemies data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of enemies",
           "items": {
            "type": "object",
            "description": "An enemy definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Enemy id"
             },
             "behavior": {
              "type": "object",
              "description": "Movement/attack behaviour",
              "additionalProperties": true
             },
             "hp": {
              "type": "number",
              "description": "Base HP"
             },
             "speed": {
              "type": "number",
              "description": "Speed"
             },
             "damage": {
              "type": "number",
              "description": "Contact damage"
             },
             "radius": {
              "type": "number",
              "description": "Body radius"
             },
             "xp": {
              "type": "number",
              "description": "XP value"
             },
             "goldChance": {
              "type": "number",
              "description": "Chance to drop gold"
             },
             "mass": {
              "type": "number",
              "description": "Mass"
             }
            },
            "required": [
             "id",
             "hp",
             "damage"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/bosses.json": {
   "get": {
    "operationId": "getBosses",
    "summary": "Get bosses data",
    "description": "Returns the raw tibo.dog bosses definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "bosses data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of bosses",
           "items": {
            "type": "object",
            "description": "A boss definition, in boss order",
            "properties": {
             "id": {
              "type": "string",
              "description": "Boss id"
             },
             "hp": {
              "type": "number",
              "description": "Base HP"
             },
             "speed": {
              "type": "number",
              "description": "Speed"
             },
             "damage": {
              "type": "number",
              "description": "Contact damage"
             },
             "attack": {
              "type": "object",
              "description": "Main attack",
              "additionalProperties": true
             },
             "attackEvery": {
              "type": "number",
              "description": "Seconds between main attacks"
             },
             "telegraph": {
              "type": "number",
              "description": "Telegraph seconds"
             },
             "patternEvery": {
              "type": "number",
              "description": "Seconds between bullet patterns"
             },
             "patterns": {
              "type": "array",
              "items": {
               "type": "object",
               "description": "Bullet pattern",
               "additionalProperties": true
              },
              "description": "Bullet patterns"
             },
             "xp": {
              "type": "number",
              "description": "XP value"
             }
            },
            "required": [
             "id",
             "hp",
             "attack",
             "patterns"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/biomes.json": {
   "get": {
    "operationId": "getBiomes",
    "summary": "Get biomes data",
    "description": "Returns the raw tibo.dog biomes definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "biomes data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of biomes",
           "items": {
            "type": "object",
            "description": "A biome definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Biome id"
             },
             "placement": {
              "type": "object",
              "description": "Climate or landmark placement",
              "additionalProperties": true
             },
             "enemies": {
              "type": "array",
              "description": "Five enemy tiers",
              "items": {
               "type": "array",
               "items": {
                "type": "string"
               }
              }
             },
             "hazard": {
              "description": "Ground hazard or null",
              "oneOf": [
               {
                "type": "object",
                "description": "Hazard",
                "additionalProperties": true
               },
               {
                "type": "null"
               }
              ]
             },
             "goldMult": {
              "type": "number",
              "description": "Gold multiplier"
             },
             "xpMult": {
              "type": "number",
              "description": "XP multiplier"
             },
             "poiWeights": {
              "type": "object",
              "description": "Point-of-interest weights",
              "additionalProperties": true
             }
            },
            "required": [
             "id",
             "placement",
             "enemies"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/events.json": {
   "get": {
    "operationId": "getEvents",
    "summary": "Get events data",
    "description": "Returns the raw tibo.dog events definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "events data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of events",
           "items": {
            "type": "object",
            "description": "A world event",
            "properties": {
             "id": {
              "type": "string",
              "description": "Event id"
             },
             "effect": {
              "type": "object",
              "description": "Event effect; kind is wall, swarm, lootRunner or goldRush",
              "additionalProperties": true
             }
            },
            "required": [
             "id",
             "effect"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/dogs.json": {
   "get": {
    "operationId": "getDogs",
    "summary": "Get dogs data",
    "description": "Returns the raw tibo.dog dogs definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "dogs data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of dogs",
           "items": {
            "type": "object",
            "description": "A dog definition",
            "properties": {
             "id": {
              "type": "string",
              "description": "Dog id"
             },
             "ability": {
              "type": "object",
              "description": "Ability parameters",
              "additionalProperties": true
             },
             "aura": {
              "type": "object",
              "description": "Aura stat bonuses",
              "additionalProperties": true
             },
             "levelUps": {
              "type": "array",
              "items": {
               "type": "object",
               "description": "Training multipliers",
               "additionalProperties": true
              },
              "description": "Training level multipliers"
             },
             "weight": {
              "type": "number",
              "description": "Spawn weight"
             },
             "legendary": {
              "type": "boolean",
              "description": "Legendary dog"
             }
            },
            "required": [
             "id",
             "ability",
             "aura"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/pois.json": {
   "get": {
    "operationId": "getPois",
    "summary": "Get pois data",
    "description": "Returns the raw tibo.dog pois definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "pois data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of pois",
           "items": {
            "type": "object",
            "description": "A point-of-interest kind",
            "properties": {
             "kind": {
              "type": "string",
              "description": "POI kind"
             },
             "radius": {
              "type": "number",
              "description": "Radius"
             }
            },
            "required": [
             "kind"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/grok-bots.json": {
   "get": {
    "operationId": "getGrokBots",
    "summary": "Get grok-bots data",
    "description": "Returns the raw tibo.dog grok-bots definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "grok-bots data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "array",
           "description": "Array of grok-bots",
           "items": {
            "type": "object",
            "description": "A Grok Bot helper",
            "properties": {
             "id": {
              "type": "string",
              "description": "Bot id"
             },
             "help": {
              "type": "object",
              "description": "Help effect",
              "additionalProperties": true
             },
             "weight": {
              "type": "number",
              "description": "Spawn weight"
             }
            },
            "required": [
             "id",
             "help"
            ],
            "additionalProperties": true
           }
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/recipes.json": {
   "get": {
    "operationId": "getRecipes",
    "summary": "Get recipes data",
    "description": "Returns the raw tibo.dog recipes definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "recipes data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "object",
           "description": "Recipe tables",
           "properties": {
            "evolutions": {
             "type": "array",
             "items": {
              "type": "object",
              "description": "Evolution",
              "properties": {
               "id": {
                "type": "string",
                "description": "Result weapon"
               },
               "from": {
                "type": "string",
                "description": "Base weapon"
               },
               "catalyst": {
                "type": "string",
                "description": "Catalyst"
               }
              },
              "required": [
               "id",
               "from",
               "catalyst"
              ],
              "additionalProperties": true
             }
            },
            "unions": {
             "type": "array",
             "items": {
              "type": "object",
              "description": "Union",
              "properties": {
               "id": {
                "type": "string",
                "description": "Result weapon"
               },
               "from": {
                "type": "array",
                "items": {
                 "type": "string"
                }
               }
              },
              "required": [
               "id",
               "from"
              ],
              "additionalProperties": true
             }
            },
            "itemEvolutions": {
             "type": "array",
             "items": {
              "type": "object",
              "description": "Item evolution",
              "properties": {
               "id": {
                "type": "string",
                "description": "Result item"
               },
               "from": {
                "type": "string",
                "description": "Base item"
               },
               "catalyst": {
                "type": "string",
                "description": "Catalyst passive"
               }
              },
              "required": [
               "id",
               "from",
               "catalyst"
              ],
              "additionalProperties": true
             }
            }
           },
           "required": [
            "evolutions",
            "unions",
            "itemEvolutions"
           ],
           "additionalProperties": true
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/config.json": {
   "get": {
    "operationId": "getConfig",
    "summary": "Get config data",
    "description": "Returns the raw tibo.dog config definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "config data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "object",
           "description": "config object",
           "additionalProperties": true
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/difficulty.json": {
   "get": {
    "operationId": "getDifficulty",
    "summary": "Get difficulty data",
    "description": "Returns the raw tibo.dog difficulty definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "difficulty data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "object",
           "description": "difficulty object",
           "additionalProperties": true
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  },
  "/api/v1/text.json": {
   "get": {
    "operationId": "getText",
    "summary": "Get text data",
    "description": "Returns the raw tibo.dog text definitions wrapped as {meta, data}. Values are the game's internal numbers.",
    "responses": {
     "200": {
      "description": "text data",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "description": "Response envelope",
         "properties": {
          "meta": {
           "$ref": "#/components/schemas/Meta"
          },
          "data": {
           "type": "object",
           "description": "text object",
           "additionalProperties": true
          }
         },
         "required": [
          "meta",
          "data"
         ]
        }
       }
      }
     },
     "4XX": {
      "description": "Client error, e.g. unknown endpoint (404)",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     },
     "5XX": {
      "description": "Server error",
      "content": {
       "application/json": {
        "schema": {
         "$ref": "#/components/schemas/Error"
        }
       }
      }
     }
    }
   }
  }
 },
 "components": {
  "schemas": {
   "Meta": {
    "type": "object",
    "description": "Build and source metadata",
    "properties": {
     "apiVersion": {
      "type": "string",
      "description": "API version, v1"
     },
     "build": {
      "type": "object",
      "description": "Game build file names and research date",
      "additionalProperties": true
     },
     "source": {
      "type": "string",
      "description": "Game URL"
     },
     "license": {
      "type": "string",
      "description": "Usage note"
     }
    },
    "required": [
     "apiVersion",
     "build",
     "source"
    ],
    "additionalProperties": true
   },
   "Error": {
    "type": "object",
    "description": "Error response",
    "properties": {
     "error": {
      "type": "object",
      "description": "Error details",
      "properties": {
       "code": {
        "type": "string",
        "description": "Machine-readable error code, e.g. not_found"
       },
       "message": {
        "type": "string",
        "description": "Human-readable message"
       },
       "hint": {
        "type": "string",
        "description": "How to resolve the error"
       },
       "status": {
        "type": "integer",
        "description": "HTTP status"
       }
      },
      "required": [
       "code",
       "message"
      ],
      "additionalProperties": true
     }
    },
    "required": [
     "error"
    ],
    "additionalProperties": true
   }
  }
 }
}