{"openapi":"3.1.0","info":{"title":"TavernData API","description":"Unofficial fan API for Travellers Rest game data.\n\nNot affiliated with or endorsed by Isolated Games. Game data is © Isolated Games.\n\nEvery request needs an API key from your TavernData account, sent as\n`Authorization: Bearer td_live_...`. Each key may make 300 requests per minute (bursts of up to 60) and\n20 000 per day; the `RateLimit` headers say how much is left.\n\nEvery endpoint accepts `version` (a published game version, default `latest`) and `lang`\n(one of `/v1/languages`, default `en`; missing translations fall back to English and are\nlisted in `meta.lang_fallback`). Prices are in copper: 1 silver = 100 copper, 1 gold = 100 silver.\n","version":"0.1.0"},"paths":{"/v1/versions":{"get":{"tags":["versions"],"summary":"Published game versions","operationId":"list_versions","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/GameVersion"}}}}]}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}},"security":[{"HTTPBearer":[]}]}},"/v1/versions/{version}":{"get":{"tags":["versions"],"summary":"One game version","operationId":"get_version","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","title":"Version"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/GameVersion"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/versions/{version}/changes":{"get":{"tags":["versions"],"summary":"What changed between two game versions","operationId":"version_changes","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"path","required":true,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","title":"Version"}},{"name":"from","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$"},{"type":"null"}],"title":"From"}},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Type"}},{"name":"change","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":40},{"type":"null"}],"title":"Change"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/VersionChange"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/languages":{"get":{"tags":["versions"],"summary":"Languages the game is translated to","operationId":"list_languages","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Language"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/items":{"get":{"tags":["items"],"summary":"List items","operationId":"list_items","security":[{"HTTPBearer":[]}],"parameters":[{"name":"kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Kind"}},{"name":"category","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Category"}},{"name":"tag","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Tag"}},{"name":"ingredient_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Ingredient Type"}},{"name":"can_be_sold","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Sold"}},{"name":"can_be_aged","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Aged"}},{"name":"shop","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Shop"}},{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Ids"}},{"name":"include_unlisted","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Unlisted"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Sort"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Fields"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ItemSummary"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/items/{key}":{"get":{"tags":["items"],"summary":"One item by id or slug","operationId":"get_item","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"expand","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Expand"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Fields"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ItemDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/items/{key}/used-in":{"get":{"tags":["items"],"summary":"Recipes that use an item, directly or through an ingredient group","operationId":"used_in","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/UsedIn"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/items/{key}/sources":{"get":{"tags":["items"],"summary":"Where an item comes from","operationId":"sources","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Sources"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/recipes":{"get":{"tags":["recipes"],"summary":"List recipes","operationId":"list_recipes","security":[{"HTTPBearer":[]}],"parameters":[{"name":"group","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Group"}},{"name":"page_name","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Page Name"}},{"name":"unlock","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Unlock"}},{"name":"output_kind","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Output Kind"}},{"name":"crafter","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":120},{"type":"null"}],"title":"Crafter"}},{"name":"ids","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":2000},{"type":"null"}],"title":"Ids"}},{"name":"include_replaced","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Include Replaced"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Sort"}},{"name":"fields","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":300},{"type":"null"}],"title":"Fields"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RecipeSummary"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/recipes/{key}":{"get":{"tags":["recipes"],"summary":"One recipe by id or slug","operationId":"get_recipe","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/RecipeDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/recipes/{key}/tree":{"get":{"tags":["recipes"],"summary":"Ingredient tree down to raw materials","operationId":"recipe_tree","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/TreeNode"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/ingredient-groups/{key}":{"get":{"tags":["recipes"],"summary":"Members of an ingredient group such as 'any malt'","operationId":"ingredient_group","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/IngredientGroup"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/crafters":{"get":{"tags":["recipes"],"summary":"Crafting stations and the recipes they make","operationId":"list_crafters","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/CraftingStation"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/crops":{"get":{"tags":["world"],"summary":"List crops","operationId":"list_crops","security":[{"HTTPBearer":[]}],"parameters":[{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(spring|summer|autumn|winter)$"},{"type":"null"}],"title":"Season"}},{"name":"reusable","in":"query","required":false,"schema":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Reusable"}},{"name":"sort","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":60},{"type":"null"}],"title":"Sort"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Crop"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/crops/{key}":{"get":{"tags":["world"],"summary":"One crop by id or slug","operationId":"get_crop","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Crop"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/shops":{"get":{"tags":["world"],"summary":"List shops","operationId":"list_shops","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ShopSummary"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/shops/{key}":{"get":{"tags":["world"],"summary":"One shop and its catalogue","operationId":"get_shop","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/ShopDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/npcs":{"get":{"tags":["world"],"summary":"Shopkeepers (the NPCs the game data links to shops)","operationId":"list_npcs","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Npc"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/fish":{"get":{"tags":["world"],"summary":"Fish and where to catch them","operationId":"list_fish","security":[{"HTTPBearer":[]}],"parameters":[{"name":"season","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(spring|summer|autumn|winter)$"},{"type":"null"}],"title":"Season"}},{"name":"water","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(FreshWater|SaltWater|MineWater)$"},{"type":"null"}],"title":"Water"}},{"name":"bait","in":"query","required":false,"schema":{"anyOf":[{"type":"string","pattern":"^(Meat|Larva|Worm|Seafood|Artificial)$"},{"type":"null"}],"title":"Bait"}},{"name":"rarity","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":10,"minimum":0},{"type":"null"}],"title":"Rarity"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Fish"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/search":{"get":{"tags":["search"],"summary":"Search items and recipes by name","operationId":"search","security":[{"HTTPBearer":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":2,"maxLength":64,"description":"Part of the name, in `lang` or English. Accents, case and hiragana/katakana are ignored: `agua` finds `Água`.","title":"Q"},"description":"Part of the name, in `lang` or English. Accents, case and hiragana/katakana are ignored: `agua` finds `Água`."},{"name":"type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Type"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":50,"minimum":1,"default":20,"title":"Limit"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/quests":{"get":{"tags":["progression"],"summary":"List Quests","operationId":"list_quests","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/quests/{key}":{"get":{"tags":["progression"],"summary":"Get Quest","operationId":"get_quest","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/perks":{"get":{"tags":["progression"],"summary":"List Perks","operationId":"list_perks","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/perks/{key}":{"get":{"tags":["progression"],"summary":"Get Perk","operationId":"get_perk","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/spells":{"get":{"tags":["progression"],"summary":"List Spells","operationId":"list_spells","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/spells/{key}":{"get":{"tags":["progression"],"summary":"Get Spell","operationId":"get_spell","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/talents":{"get":{"tags":["progression"],"summary":"List Talents","operationId":"list_talents","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/talents/{key}":{"get":{"tags":["progression"],"summary":"Get Talent","operationId":"get_talent","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/reputation":{"get":{"tags":["progression"],"summary":"List Reputation","operationId":"list_reputation","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/reputation/{key}":{"get":{"tags":["progression"],"summary":"Get Reputation","operationId":"get_reputation","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/missions":{"get":{"tags":["progression"],"summary":"List Missions","operationId":"list_missions","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/missions/{key}":{"get":{"tags":["progression"],"summary":"Get Mission","operationId":"get_mission","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/letters":{"get":{"tags":["progression"],"summary":"List Letters","operationId":"list_letters","security":[{"HTTPBearer":[]}],"parameters":[{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Document"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/letters/{key}":{"get":{"tags":["progression"],"summary":"Get Letter","operationId":"get_letter","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^[A-Za-z0-9][A-Za-z0-9 _.'-]*$","title":"Key"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/DocumentDetail"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/items/{key}/price":{"get":{"tags":["calculations"],"summary":"Sell price of a food or drink, computed like the game","operationId":"item_price","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"ingredients","in":"query","required":false,"schema":{"enum":["cheapest","expensive"],"type":"string","default":"cheapest","title":"Ingredients"}},{"name":"aging","in":"query","required":false,"schema":{"enum":["none","young","reserve","grand_reserve"],"type":"string","default":"none","title":"Aging"}},{"name":"quality","in":"query","required":false,"schema":{"enum":["normal","advanced","superior"],"type":"string","default":"normal","title":"Quality"}},{"name":"perks","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Comma-separated `name:percent`, e.g. `beer:10`","title":"Perks"},"description":"Comma-separated `name:percent`, e.g. `beer:10`"},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/Price"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/recipes/{key}/crafting-time":{"get":{"tags":["calculations"],"summary":"Crafting time with perks and speed bonuses","operationId":"recipe_crafting_time","security":[{"HTTPBearer":[]}],"parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","maxLength":120,"pattern":"^-?[A-Za-z0-9][A-Za-z0-9-]*$","title":"Key"}},{"name":"perks","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"description":"Comma-separated `name:percent`, e.g. `beer:10`","title":"Perks"},"description":"Comma-separated `name:percent`, e.g. `beer:10`"},{"name":"speed_bonus","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":0,"description":"Room and enchantment time reduction in %; the game caps it at 50","default":0,"title":"Speed Bonus"},"description":"Room and enchantment time reduction in %; the game caps it at 50"},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"$ref":"#/components/schemas/CraftingTime"}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/rankings/products":{"get":{"tags":["calculations"],"summary":"Products ranked by the game's sell value","operationId":"product_ranking","security":[{"HTTPBearer":[]}],"parameters":[{"name":"ingredients","in":"query","required":false,"schema":{"enum":["cheapest","expensive"],"type":"string","default":"cheapest","title":"Ingredients"}},{"name":"aging","in":"query","required":false,"schema":{"enum":["none","young","reserve","grand_reserve"],"type":"string","default":"none","title":"Aging"}},{"name":"quality","in":"query","required":false,"schema":{"enum":["normal","advanced","superior"],"type":"string","default":"normal","title":"Quality"}},{"name":"by","in":"query","required":false,"schema":{"enum":["per_serving","per_batch","per_hour"],"type":"string","default":"per_serving","title":"By"}},{"name":"food_type","in":"query","required":false,"schema":{"anyOf":[{"enum":["food","drink"],"type":"string"},{"type":"null"}],"title":"Food Type"}},{"name":"ingredient_type","in":"query","required":false,"schema":{"anyOf":[{"type":"string","maxLength":48},{"type":"null"}],"title":"Ingredient Type"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^(latest|v\\d+(\\.\\d+){1,4})$","default":"latest","title":"Version"}},{"name":"lang","in":"query","required":false,"schema":{"type":"string","maxLength":16,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z]{2,4})?$","default":"en","title":"Lang"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","maximum":100,"minimum":1,"default":50,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","maximum":10000,"minimum":0,"default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/Envelope"},{"type":"object","required":["data"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RankedProduct"}}}}]}}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"401":{"description":"No API key, or an invalid or revoked one.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"403":{"description":"The key, the account or the address is suspended.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate limit reached; wait `Retry-After` seconds.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/v1/icons/{item_id}.png":{"get":{"tags":["icons"],"summary":"Sprite of an item (PNG, pixel art at its original size)","operationId":"get_icon","parameters":[{"name":"item_id","in":"path","required":true,"schema":{"type":"integer","maximum":2147483647,"minimum":-2147483648,"title":"Item Id"}},{"name":"version","in":"query","required":false,"schema":{"type":"string","default":"latest","title":"Version"}}],"responses":{"200":{"description":"The sprite.","content":{"image/png":{}}},"422":{"description":"An invalid parameter (`/errors/validation`).","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No such id, slug or game version.","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"AgingHours":{"additionalProperties":false,"properties":{"young_h":{"title":"Young H","type":"number"},"reserve_h":{"title":"Reserve H","type":"number"},"grand_reserve_h":{"title":"Grand Reserve H","type":"number"}},"required":["young_h","reserve_h","grand_reserve_h"],"title":"AgingHours","type":"object"},"Crafter":{"additionalProperties":false,"properties":{"id":{"description":"Negative ids are ingredient groups such as 'any malt'.","title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"quality":{"title":"Quality","type":"integer"},"minutes":{"title":"Minutes","type":"integer"}},"required":["id","slug","name","url","icon_url","quality","minutes"],"title":"Crafter","type":"object"},"CraftingStation":{"additionalProperties":false,"properties":{"id":{"description":"Negative ids are ingredient groups such as 'any malt'.","title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"quality":{"title":"Quality","type":"integer"},"recipes":{"title":"Recipes","type":"integer"}},"required":["id","slug","name","url","icon_url","quality","recipes"],"title":"CraftingStation","type":"object"},"CraftingTime":{"additionalProperties":false,"properties":{"recipe":{"$ref":"#/components/schemas/TreeRecipe"},"base_minutes":{"title":"Base Minutes","type":"integer"},"perk":{"anyOf":[{"$ref":"#/components/schemas/TimePerk"},{"type":"null"}]},"after_perk_minutes":{"title":"After Perk Minutes","type":"integer"},"final_minutes":{"title":"Final Minutes","type":"integer"},"real_time_seconds":{"description":"One game minute lasts one real second.","title":"Real Time Seconds","type":"integer"},"crafters":{"items":{"$ref":"#/components/schemas/Crafter"},"title":"Crafters","type":"array"},"aging_by_barrel_level":{"anyOf":[{"additionalProperties":{"$ref":"#/components/schemas/AgingHours"},"type":"object"},{"type":"null"}],"title":"Aging By Barrel Level"}},"required":["recipe","base_minutes","perk","after_perk_minutes","final_minutes","real_time_seconds","crafters","aging_by_barrel_level"],"title":"CraftingTime","type":"object"},"Crop":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"seed":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"harvest":{"items":{"$ref":"#/components/schemas/Harvest"},"title":"Harvest","type":"array"},"days_to_grow":{"title":"Days To Grow","type":"integer"},"reusable":{"title":"Reusable","type":"boolean"},"regrow_days":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Regrow Days"},"seasons":{"title":"Seasons","type":"string"},"best_seasons":{"title":"Best Seasons","type":"string"},"best_season_amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Best Season Amount"},"requires_magic_fertilizer":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Requires Magic Fertilizer"},"url":{"title":"Url","type":"string"}},"required":["id","slug","name","seed","harvest","days_to_grow","reusable","regrow_days","seasons","best_seasons","best_season_amount","requires_magic_fertilizer","url"],"title":"Crop","type":"object"},"CropRole":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"role":{"enum":["seed","harvest"],"title":"Role","type":"string"},"url":{"title":"Url","type":"string"}},"required":["id","slug","role","url"],"title":"CropRole","type":"object"},"Document":{"additionalProperties":false,"properties":{"key":{"title":"Key","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"title":"Url","type":"string"}},"required":["key","name","url"],"title":"Document","type":"object"},"DocumentDetail":{"additionalProperties":false,"properties":{"key":{"title":"Key","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"title":"Url","type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"data":{"additionalProperties":true,"description":"The game's raw record.","title":"Data","type":"object"}},"required":["key","name","url","description","data"],"title":"DocumentDetail","type":"object"},"Fish":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"fish_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fish Type"},"seasons":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Seasons"},"water":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Water"},"bait":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Bait"},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Method"},"difficulty":{"title":"Difficulty","type":"integer"},"rarity":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Rarity"},"mine_biome":{"anyOf":[{"type":"integer"},{"type":"null"}],"description":"Mine biome index for `MineWater` fish, -1 for the others.","title":"Mine Biome"},"base_value":{"$ref":"#/components/schemas/Money"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"}},"required":["id","slug","name","fish_type","seasons","water","bait","method","difficulty","rarity","mine_biome","base_value","url","icon_url"],"title":"Fish","type":"object"},"GameVersion":{"additionalProperties":false,"properties":{"version":{"title":"Version","type":"string"},"build_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Build Id"},"is_latest":{"title":"Is Latest","type":"boolean"},"published_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Published At"},"counts":{"additionalProperties":{"type":"integer"},"title":"Counts","type":"object"},"url":{"title":"Url","type":"string"}},"required":["version","build_id","is_latest","published_at","counts","url"],"title":"GameVersion","type":"object"},"GroupMember":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"mod":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"base_value":{"anyOf":[{"$ref":"#/components/schemas/Money"},{"type":"null"}]}},"required":["item","mod","base_value"],"title":"GroupMember","type":"object"},"Harvest":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"amount":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Amount"}},"required":["item","amount"],"title":"Harvest","type":"object"},"Ingredient":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"amount":{"title":"Amount","type":"integer"},"mod":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"description":"What the item must be made from, e.g. the grain of a malt."}},"required":["item","amount","mod"],"title":"Ingredient","type":"object"},"IngredientGroup":{"additionalProperties":false,"properties":{"group":{"$ref":"#/components/schemas/ItemRef"},"ingredient_types":{"items":{"type":"string"},"title":"Ingredient Types","type":"array"},"derived_from_types":{"description":"True when the game accepts any item of the types.","title":"Derived From Types","type":"boolean"},"members":{"items":{"$ref":"#/components/schemas/GroupMember"},"title":"Members","type":"array"},"cheapest":{"anyOf":[{"$ref":"#/components/schemas/GroupMember"},{"type":"null"}]},"most_expensive":{"anyOf":[{"$ref":"#/components/schemas/GroupMember"},{"type":"null"}]}},"required":["group","ingredient_types","derived_from_types","members","cheapest","most_expensive"],"title":"IngredientGroup","type":"object"},"ItemDetail":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"kind":{"title":"Kind","type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"items":{"type":"string"},"title":"Tags","type":"array"},"ingredient_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ingredient Type"},"food_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Food Type"},"can_be_sold":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Sold"},"can_be_aged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Aged"},"listed":{"description":"False for items the game never shows the player.","title":"Listed","type":"boolean"},"buy":{"anyOf":[{"$ref":"#/components/schemas/Money"},{"type":"null"}]},"base_value":{"$ref":"#/components/schemas/Money"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"contains_alcohol":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Contains Alcohol"},"price_per_serving":{"anyOf":[{"$ref":"#/components/schemas/ServingPrices"},{"type":"null"}],"description":"The game's own price, for food and drink."},"recipe":{"anyOf":[{"$ref":"#/components/schemas/RecipeDetail"},{"$ref":"#/components/schemas/RecipeRef"},{"type":"null"}],"description":"The full recipe with `expand=recipe`.","title":"Recipe"},"sold_by":{"items":{"$ref":"#/components/schemas/ShopListing"},"title":"Sold By","type":"array"},"member_of":{"description":"Ingredient groups that accept this item.","items":{"$ref":"#/components/schemas/ItemRef"},"title":"Member Of","type":"array"},"prices":{"anyOf":[{"items":{"$ref":"#/components/schemas/PricePoint"},"type":"array"},{"type":"null"}],"default":null,"description":"With `expand=prices`.","title":"Prices"}},"required":["id","slug","name","kind","category","tags","ingredient_type","food_type","can_be_sold","can_be_aged","listed","buy","base_value","url","icon_url","description","contains_alcohol","price_per_serving","recipe","sold_by","member_of"],"title":"ItemDetail","type":"object"},"ItemRef":{"additionalProperties":false,"properties":{"id":{"description":"Negative ids are ingredient groups such as 'any malt'.","title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"}},"required":["id","slug","name","url","icon_url"],"title":"ItemRef","type":"object"},"ItemSummary":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"kind":{"title":"Kind","type":"string"},"category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Category"},"tags":{"items":{"type":"string"},"title":"Tags","type":"array"},"ingredient_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ingredient Type"},"food_type":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Food Type"},"can_be_sold":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Sold"},"can_be_aged":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Can Be Aged"},"listed":{"description":"False for items the game never shows the player.","title":"Listed","type":"boolean"},"buy":{"anyOf":[{"$ref":"#/components/schemas/Money"},{"type":"null"}]},"base_value":{"$ref":"#/components/schemas/Money"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon Url"}},"required":["id","slug","name","kind","category","tags","ingredient_type","food_type","can_be_sold","can_be_aged","listed","buy","base_value","url","icon_url"],"title":"ItemSummary","type":"object"},"Language":{"additionalProperties":false,"properties":{"code":{"title":"Code","type":"string"},"name":{"title":"Name","type":"string"},"terms":{"title":"Terms","type":"integer"},"coverage":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Coverage"}},"required":["code","name","terms","coverage"],"title":"Language","type":"object"},"Link":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"url":{"title":"Url","type":"string"}},"required":["id","slug","url"],"title":"Link","type":"object"},"Money":{"additionalProperties":false,"properties":{"copper":{"title":"Copper","type":"integer"},"display":{"examples":["5s 76c"],"title":"Display","type":"string"}},"required":["copper","display"],"title":"Money","type":"object"},"Npc":{"additionalProperties":false,"properties":{"slug":{"title":"Slug","type":"string"},"name":{"title":"Name","type":"string"},"shop":{"$ref":"#/components/schemas/Link"}},"required":["slug","name","shop"],"title":"Npc","type":"object"},"Playable":{"additionalProperties":false,"properties":{"per_serving":{"$ref":"#/components/schemas/Money"},"differs":{"title":"Differs","type":"boolean"}},"required":["per_serving","differs"],"title":"Playable","type":"object"},"Price":{"additionalProperties":false,"properties":{"item":{"$ref":"#/components/schemas/ItemRef"},"recipe":{"anyOf":[{"$ref":"#/components/schemas/RecipeRef"},{"type":"null"}]},"method":{"enum":["recipe","legacy","raw"],"title":"Method","type":"string"},"per_serving":{"$ref":"#/components/schemas/Money"},"steps":{"items":{"$ref":"#/components/schemas/PriceStep"},"title":"Steps","type":"array"},"ingredients":{"items":{"$ref":"#/components/schemas/PriceLine"},"title":"Ingredients","type":"array"},"playable":{"$ref":"#/components/schemas/Playable","description":"The lowest price a player can reach while following the recipe."},"verified_by_game":{"anyOf":[{"type":"boolean"},{"type":"null"}],"description":"Null with perks: the game computed no such case.","title":"Verified By Game"},"inputs":{"$ref":"#/components/schemas/PriceInputs"}},"required":["item","recipe","method","per_serving","steps","ingredients","playable","verified_by_game","inputs"],"title":"Price","type":"object"},"PriceInputs":{"additionalProperties":false,"properties":{"ingredients":{"enum":["cheapest","expensive"],"title":"Ingredients","type":"string"},"aging":{"enum":["none","young","reserve","grand_reserve"],"title":"Aging","type":"string"},"quality":{"enum":["normal","advanced","superior"],"title":"Quality","type":"string"},"perks":{"additionalProperties":{"type":"integer"},"title":"Perks","type":"object"}},"required":["ingredients","aging","quality","perks"],"title":"PriceInputs","type":"object"},"PriceLine":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"group":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"amount":{"title":"Amount","type":"integer"},"value":{"$ref":"#/components/schemas/Money"}},"required":["item","group","amount","value"],"title":"PriceLine","type":"object"},"PricePoint":{"additionalProperties":false,"properties":{"mode":{"enum":["cheapest","expensive"],"title":"Mode","type":"string"},"aging":{"description":"1 none, 2 young, 3 reserve, 4 grand reserve.","title":"Aging","type":"integer"},"quality":{"description":"0 normal, 1 advanced, 2 superior.","title":"Quality","type":"integer"},"price":{"$ref":"#/components/schemas/Money"}},"required":["mode","aging","quality","price"],"title":"PricePoint","type":"object"},"PriceStep":{"additionalProperties":false,"properties":{"step":{"enum":["base","aging","quality"],"title":"Step","type":"string"},"copper":{"title":"Copper","type":"integer"},"label":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Label"},"add_copper":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"title":"Add Copper"},"multiplier":{"anyOf":[{"type":"number"},{"type":"null"}],"default":null,"title":"Multiplier"}},"required":["step","copper"],"title":"PriceStep","type":"object"},"RankedProduct":{"additionalProperties":false,"properties":{"rank":{"title":"Rank","type":"integer"},"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"recipe":{"$ref":"#/components/schemas/Link"},"servings":{"title":"Servings","type":"integer"},"minutes":{"title":"Minutes","type":"integer"},"per_serving":{"$ref":"#/components/schemas/Money"},"per_batch":{"$ref":"#/components/schemas/Money"},"per_hour":{"anyOf":[{"$ref":"#/components/schemas/Money"},{"type":"null"}]},"playable_per_serving":{"$ref":"#/components/schemas/Money"}},"required":["rank","item","recipe","servings","minutes","per_serving","per_batch","per_hour","playable_per_serving"],"title":"RankedProduct","type":"object"},"RecipeDetail":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"output":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"output_amount":{"title":"Output Amount","type":"integer"},"labor":{"$ref":"#/components/schemas/Money"},"fuel":{"title":"Fuel","type":"integer"},"time_minutes":{"title":"Time Minutes","type":"integer"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page"},"unlock":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unlock"},"current":{"title":"Current","type":"boolean"},"url":{"title":"Url","type":"string"},"ingredients":{"items":{"$ref":"#/components/schemas/Ingredient"},"title":"Ingredients","type":"array"},"crafters":{"items":{"$ref":"#/components/schemas/Crafter"},"title":"Crafters","type":"array"},"reputation_required":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reputation Required"},"recipe_fragments":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Recipe Fragments"},"arcane_reputation_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Arcane Reputation Required"},"sorcery_level_required":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Sorcery Level Required"},"cannot_repeat_ingredients":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Cannot Repeat Ingredients"}},"required":["id","slug","name","output","output_amount","labor","fuel","time_minutes","group","page","unlock","current","url","ingredients","crafters","reputation_required","recipe_fragments","arcane_reputation_required","sorcery_level_required","cannot_repeat_ingredients"],"title":"RecipeDetail","type":"object"},"RecipeRef":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"current":{"description":"False for recipes the game replaced with a newer one.","title":"Current","type":"boolean"},"url":{"title":"Url","type":"string"}},"required":["id","slug","current","url"],"title":"RecipeRef","type":"object"},"RecipeSummary":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"output":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"output_amount":{"title":"Output Amount","type":"integer"},"labor":{"$ref":"#/components/schemas/Money"},"fuel":{"title":"Fuel","type":"integer"},"time_minutes":{"title":"Time Minutes","type":"integer"},"group":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Group"},"page":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Page"},"unlock":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Unlock"},"current":{"title":"Current","type":"boolean"},"url":{"title":"Url","type":"string"}},"required":["id","slug","name","output","output_amount","labor","fuel","time_minutes","group","page","unlock","current","url"],"title":"RecipeSummary","type":"object"},"SearchResult":{"additionalProperties":false,"properties":{"type":{"enum":["item","recipe"],"title":"Type","type":"string"},"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"kind":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Items only.","title":"Kind"},"url":{"title":"Url","type":"string"},"icon_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"The item's sprite, or the recipe output's.","title":"Icon Url"}},"required":["type","id","slug","name","url"],"title":"SearchResult","type":"object"},"ServingPrices":{"additionalProperties":false,"properties":{"cheapest":{"$ref":"#/components/schemas/Money"},"expensive":{"$ref":"#/components/schemas/Money"}},"required":["cheapest","expensive"],"title":"ServingPrices","type":"object"},"ShopDetail":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"shopkeeper":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopkeeper"},"shop_type":{"title":"Shop Type","type":"string"},"arcane":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Arcane"},"random_stock":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Random Stock"},"restock_days":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Restock Days"},"uses_recipe_fragments":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Uses Recipe Fragments"},"url":{"title":"Url","type":"string"},"items":{"items":{"$ref":"#/components/schemas/StockEntry"},"title":"Items","type":"array"}},"required":["id","slug","shopkeeper","shop_type","arcane","random_stock","restock_days","uses_recipe_fragments","url","items"],"title":"ShopDetail","type":"object"},"ShopListing":{"additionalProperties":false,"properties":{"shop":{"$ref":"#/components/schemas/ShopRef"},"always_in_stock":{"title":"Always In Stock","type":"boolean"},"weight":{"title":"Weight","type":"number"}},"required":["shop","always_in_stock","weight"],"title":"ShopListing","type":"object"},"ShopRef":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"shop_type":{"title":"Shop Type","type":"string"},"url":{"title":"Url","type":"string"}},"required":["id","slug","shop_type","url"],"title":"ShopRef","type":"object"},"ShopSummary":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"shopkeeper":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Shopkeeper"},"shop_type":{"title":"Shop Type","type":"string"},"arcane":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Arcane"},"random_stock":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Random Stock"},"restock_days":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Restock Days"},"uses_recipe_fragments":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Uses Recipe Fragments"},"url":{"title":"Url","type":"string"}},"required":["id","slug","shopkeeper","shop_type","arcane","random_stock","restock_days","uses_recipe_fragments","url"],"title":"ShopSummary","type":"object"},"Sources":{"additionalProperties":false,"properties":{"item":{"$ref":"#/components/schemas/ItemRef"},"recipes":{"items":{"$ref":"#/components/schemas/Link"},"title":"Recipes","type":"array"},"shops":{"items":{"$ref":"#/components/schemas/ShopListing"},"title":"Shops","type":"array"},"crops":{"items":{"$ref":"#/components/schemas/CropRole"},"title":"Crops","type":"array"},"fish":{"title":"Fish","type":"boolean"}},"required":["item","recipes","shops","crops","fish"],"title":"Sources","type":"object"},"StockEntry":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"price":{"$ref":"#/components/schemas/Money"},"always_in_stock":{"title":"Always In Stock","type":"boolean"},"unlimited":{"title":"Unlimited","type":"boolean"},"weight":{"title":"Weight","type":"number"},"amount":{"anyOf":[{"items":{"type":"integer"},"maxItems":2,"minItems":2,"type":"array"},{"type":"null"}],"description":"[min, max] for limited stock.","title":"Amount"}},"required":["item","price","always_in_stock","unlimited","weight","amount"],"title":"StockEntry","type":"object"},"TimePerk":{"additionalProperties":false,"properties":{"name":{"title":"Name","type":"string"},"id":{"title":"Id","type":"integer"},"value":{"title":"Value","type":"integer"}},"required":["name","id","value"],"title":"TimePerk","type":"object"},"TreeEntry":{"additionalProperties":false,"properties":{"amount":{"title":"Amount","type":"integer"},"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"default":null},"mod":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"default":null},"group":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"default":null},"options":{"anyOf":[{"items":{"$ref":"#/components/schemas/TreeOption"},"type":"array"},{"type":"null"}],"default":null,"description":"For a group; empty means any item of its types","title":"Options"},"members_url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Members Url"},"children":{"anyOf":[{"items":{"$ref":"#/components/schemas/TreeNode"},"type":"array"},{"type":"null"}],"default":null,"description":"The recipes that make this ingredient.","title":"Children"}},"required":["amount"],"title":"TreeEntry","type":"object"},"TreeNode":{"additionalProperties":false,"properties":{"recipe":{"$ref":"#/components/schemas/TreeRecipe"},"output_amount":{"title":"Output Amount","type":"integer"},"labor":{"$ref":"#/components/schemas/Money"},"fuel":{"title":"Fuel","type":"integer"},"time_minutes":{"title":"Time Minutes","type":"integer"},"ingredients":{"items":{"$ref":"#/components/schemas/TreeEntry"},"title":"Ingredients","type":"array"},"output":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"default":null,"description":"On the root only."},"crafters":{"anyOf":[{"items":{"$ref":"#/components/schemas/Crafter"},"type":"array"},{"type":"null"}],"default":null,"description":"On the root only.","title":"Crafters"}},"required":["recipe","output_amount","labor","fuel","time_minutes","ingredients"],"title":"TreeNode","type":"object"},"TreeOption":{"additionalProperties":false,"properties":{"item":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"mod":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]}},"required":["item","mod"],"title":"TreeOption","type":"object"},"TreeRecipe":{"additionalProperties":false,"properties":{"id":{"title":"Id","type":"integer"},"slug":{"title":"Slug","type":"string"},"url":{"title":"Url","type":"string"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"title":"Name"}},"required":["id","slug","url"],"title":"TreeRecipe","type":"object"},"UsedIn":{"additionalProperties":false,"properties":{"recipe":{"$ref":"#/components/schemas/Link"},"output":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}]},"via_group":{"anyOf":[{"$ref":"#/components/schemas/ItemRef"},{"type":"null"}],"description":"The ingredient group through which the item is used."},"amount":{"title":"Amount","type":"integer"}},"required":["recipe","output","via_group","amount"],"title":"UsedIn","type":"object"},"VersionChange":{"additionalProperties":false,"properties":{"type":{"enum":["item","recipe","crop","shop","entity"],"title":"Type","type":"string"},"key":{"title":"Key","type":"string"},"slug":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Slug"},"change":{"enum":["added","removed","modified"],"title":"Change","type":"string"},"from":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"From"},"patch":{"anyOf":[{"items":{},"type":"array"},{"type":"null"}],"description":"JSON Patch (RFC 6902) of the raw game data, for `modified`.","title":"Patch"}},"required":["type","key","slug","change","from","patch"],"title":"VersionChange","type":"object"},"Problem":{"type":"object","description":"RFC 9457 Problem Details. Branch on `status` and `type`, not on the texts.","required":["type","title","status","detail","instance"],"properties":{"type":{"type":"string","examples":["/errors/not-found"]},"title":{"type":"string"},"status":{"type":"integer"},"detail":{"type":"string"},"instance":{"type":"string"},"errors":{"type":"array","description":"Every invalid parameter, on `/errors/validation`.","items":{"type":"object","properties":{"param":{"type":"string"},"message":{"type":"string"}}}},"trace_id":{"type":"string","description":"On `/errors/internal`: quote it when reporting."}}},"Envelope":{"type":"object","required":["data","meta"],"properties":{"data":{"description":"The resource, or a list of them."},"meta":{"type":"object","required":["game_version","build_id","lang","lang_fallback"],"properties":{"game_version":{"type":"string","examples":["v0.7.6.12.0"]},"build_id":{"type":["integer","null"]},"lang":{"type":"string","examples":["en"]},"lang_fallback":{"type":"array","items":{"type":"string"},"description":"Translation keys that were missing in `lang` and came in English."}}},"pagination":{"type":"object","description":"On lists only.","properties":{"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"next":{"type":["string","null"]},"prev":{"type":["string","null"]}}},"links":{"type":"object","properties":{"self":{"type":"string"}}}}}},"securitySchemes":{"HTTPBearer":{"type":"http","description":"An API key from your TavernData account.","scheme":"bearer"}}}}