Skip to content

V3 Roadmap #30

@gadhagod

Description

@gadhagod

The new version of the Hyrule Compendium API will serve data on more than just the compendium entries. It will contain the following categories of data:

The goal is to make this API more than just the compendium; it should be able to give data on all (or many) aspects of the game, not just the in-game items.

Recipes

Recipes will be divided based on their base ingredient (e.g seafood). Multi-dimensional arrays will be used to represent possible ingredients to tackle the problem of substitutable ingredients.

Possible example recipe response:

{
  "name": "meat and rice bowl",
  "image": "https://botw-compendium.herokuapp.com/api/v3/recipes/recipe/meat-and-rice-bowl",
  "category": "meat",
  "hearts_recovered": 4.0, // hearts recovered from consumption
  "ingredients": [["raw meat", "raw bird drumstick"], ["rock salt"], ["hylian rice"]] // array of arrays, each inner array represents possible ingredients
  "effect": "attack", // enhancing effect of dish (empty if none)
  "duration": 60, // duration of effect in seconds (0 if no effect)
}

Map

Data on each region, including encompassed shrines and settlements, will be provided.

  • Breath of the Wild regions
  • Tears of the Kingdom regions

Compendium

  • The compendium entries will have a field dlc that specifies if it is a master-mode exclusive. The /master_mode endpoint will remain to avoid ID conflicts.
  • The food and non_food keys in the creatures category response will be removed. Each creature entry will have a boolean property edible instead.
  • /all(endpoint to get all entries) will not have keys for each category.
  • attack and defense keys of items of the equipment category will be nested in the properties key like so:
{
  // ...
  "properties": {
    "attack": 14,
     "defense": 0
  }

Code Changes

These changes will not affect the usage of the API. It will improve performance and clean up code.

  • Separate branches for API versions
  • Use Flask blueprints instead of Flask().add_url_rule
  • Improve queries to reduce API latency
    • Instead of executing multiple queries, using UNION is a better solution
  • Create staging app to test changes

Additional Tasks

  • Documentation

Feel free to chime in on this thread.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions