User:ThePointless/APIMap
This is an attempt at mapping out the GW2 API, primarily for my own benefit - I need to wrap my head around it and this is the best way I know how. However, this may benefit others. This is incomplete. Some data may be missing, and it would be appreciated if those blanks were filled in. I've tried to make it understandable in text form with indents
Key[edit]
*str = string. All of the numerical data provided comes in the form of strings, and will need to be converted to integer before using them in any maths. Some keys used to hold a string value have a list of strings below them on this page. Only one string from that list will be used as its value.
*{dict} = dictionary. Each entry follows the { key : value } format.
*[list] = list (or array, whichever suits you better). Keys shown with multiple strings nested below may use any and all of them.
Items[edit]
items.json[edit]
{dict}
items = [list] // True integers within. May need conversion to string before using in URLs etc.
item_details.json[edit]
{dict}
item_id = str // Integer as string.
name = str
description = str
type = str
Weapon // Unique key: weapon
UpgradeComponent // Unique key: upgrade_component
Trophy // Unique key: trophy
Trinket // Unique key: trinket
Tool // Unique key: tool
MiniPet // No unique key
Gizmo // Unique key: gizmo
Gathering // Unique key: gathering
CraftingMaterial // Unique key: crafting_material
Container // Unique key: container
Consumable // Unique key: consumable
Bag // Unique key: bag
Back // Unique key: back
Armor // Unique key: armor
level = str // Integer as string.
rarity = str
Junk
Basic
Fine
Masterwork
Rare
Exotic
Ascended
Legendary
vendor_value = str // Integer as string - convert to int before doing any maths with it
game_types = [list]
Activity
Dungeon
Pve
Pvp
PvpLobby // Heart of the Mists?
Wvw
flags = [list]
NoSell // Cannot be sold at vendor
SoulbindOnAcquire // Soulbind on Acquire
AccountBound // Account Bound
NoSalvage // Cannot be Salvaged
NotUpgradeable // Cannot be Upgraded
Unique
NoMysticForge // Cannot be used in the Mystic Forge
HideSuffix // Hide the item's suffix
SoulBindOnUse // Soulbind on Use or Equip
NoUnderwater // Cannot be used underwater
restrictions = [list]
Asura
Human
Charr
Norn
Sylvari
Guardian
Warrior
// Type-unique keys
weapon = {dict}
type = str
LongBow
Pistol
Warhorn
Sword
Staff
Hammer
Trident
Scepter
Speargun
Mace
Axe
Torch
Dagger
Shield
Harpoon
Greatsword
Rifle
Focus
ShortBow
Toy
TwoHandedToy
suffix_item_id = str // Integer as string.
min_power = str // Integer as string.
max_power = str // Integer as string.
infusion_slots = [list]
item = str
(no content)
flags = [list]
Defense
Offense
Utility
infix_upgrade = {dict}
attributes = [list]
(repeatable) = {dict}
attribute = str // Attribute name.
CritDamage
ConditionDamage
Healing
Vitality
Power
Toughness
Precision
modifier = str // Integer as string.
buff = {dict}
skill_id = str // Skill ID number?
description = str // Description of skill.
defense = str // Integer as string.
damage_type = str
Physical
Fire
Ice
Lightning
upgrade_component = {dict}
type = str
Rune
Default
Sigil
Gem
suffix = str
(see “Suffixes”) // Too many suffixes to list here!
infusion_upgrade_flags = [list]
Defense
Offense
Utility
infix_upgrade = {dict}
attributes = [list]
(repeatable) = {dict}
attribute = str // Attribute name
CritDamage
ConditionDamage
Healing
Vitality
Power
Toughness
Precision
modifier = str // Integer as string.
buff = {dict}
skill_id = str // Skill ID number? Integer as string.
description = str // Description of skill.
flags = [list]
HeavyArmor
MediumArmor
LightArmor
Axe
Dagger
Focus
Greatsword
Hammer
Harpoon
LongBow
Mace
Pistol
Rifle
Scepter
Shield
ShortBow
Speargun
Staff
Sword
Torch
Trident
Trinket
Warhorn
trophy = {dict}
(no content)
trinket = {dict}
type = str
Ring
Accessory
Amulet
suffix_item_id = str
infusion_slots [list]
item = str
(no content)
flags = [list]
Defense
Offense
Utility
infix_upgrade = {dict}
attributes = [list]
(repeatable) = {dict}
attribute = str // Attribute name.
CritDamage
ConditionDamage
Healing
Vitality
Power
Toughness
Precision
modifier = str // Integer as string.
buff = {dict}
skill_id = str // Skill ID number? Integer as string.
description - str // Description of skill.
tool = {dict}
type = str
Salvage
charges = str
gizmo = {dict}
type = str
Default
RentableContractNPC
UnlimitedConsumable
gathering = {dict}
type = str
Logging
Foraging
Mining
crafting_material = {dict}?
(no content)
container = {dict}
type = str
Default
GiftBox
consumable = {dict}
type = str
Unlock
AppearanceChange
ContractNpc
Food
Booze
Generic
Halloween
Immediate
Transmutation
Utility
duration_ms = str // Integer as string.
description = str
bag = {dict}
size = str // Integer as string.
no_sell_or_sort = str // Boolean/binary value as string.
back = {dict}
suffix_item_id = str // Integer as string.
infusion_slots = [list]
item = str
(no content)
flags = [list]
Defense
Offense
Utility
infix_upgrade = {dict}
attributes = [list]
(repeatable) {dict}
attribute = str // Attribute name.
CritDamage
ConditionDamage
Healing
Vitality
Power
Toughness
Precision
modifier = str // Integer as string.
buff = {dict}
skill_id = st // Skill ID number? Integer as string.
description = str // Description of skill.
armor = {dict}
weight_class = str
Medium
Light
Heavy
Clothing
type = str
Boots
Helm
Leggings
Gloves
Shoulders
Coat
HelmAquatic
suffix_item_id = str // Integer as string
infusion_slots = list
(no content)
infix_upgrade = {dict}
attributes = [list]
(repeatable) = dict
attribute = str // Attribute name.
CritDamage
ConditionDamage
Healing
Vitality
Power
Toughness
Precision
modifier = str // Integer as string.
buff = {dict}
skill_id = str // Skill ID number? Integer as string.
description = str // Description of skill.
defense = str // Integer as string.
Suffixes[edit]
of the Rata Sum of the Lich of the Eagle of Restoration of Smothering of Compassion of Lingering of Ice of the Soldier of the Berserker of Grenth of the Warrior of the Explorer of Rage of the Cleric of Venom of Ravaging of the Shaman of the Guardian of Honing of Penetration of Impact of Luck of the Traveler of Orrian of Ogre Slaying of Chilling of the Ranger of Fire of the Apothecary of Scavenging of the Hydromancer of the Monk of the Fighter of Melandru of Paralyzation of Pillaging of Strength of the Stout of the Scholar of Divinity of Earth of Speed of Elemental Slaying of Potency of Rejuvenation of Hobbling of the Rampager of Lyssa of Centar Slaying of the Mad King of the Water of the Baelfire of Sanctuary of the Valkyrie of the Noble of the Necromancer of the mesmer of Mercy of Peril of the Rabid of Air of Accuracy of Justice of Serpent Slaying of the Sentinel of Agony of Vampirism of the Pirate of the Golemancer of the Afflicted of the Krait of Smoldering of the Geomancer of the Centaur of Dreams of Doom of Battle of the Ogre of Heartiness of Life of Resilience of Vigor of Energy of the Thief of the Knight of Festering of Water of Winter of Destroyer Slayer of Karka Slaying of Carrion of the Dolyak of Dwayna of the Night of Force of Bloodlust of the Adventure of the Undead of Icebrood Slaying of the Engineer of Vitality of the Magi of the Nightmare of Leeching of Frailty of the Forge of Altruism of the Flock of Wrath of Hoelbrak of Demon Summoning of Demon Slaying of Undead Slaying of the Citadel of Might of the Grove of Balthazar of the Elementalist of Mending of Debility of Seeking of Generosity of Sorrow of Svanir of Grawl Slaying of Ghost Slaying of Infiltration of the Pack of Purity of the Wurm of Nullification of Perception of Intelligence of Precision of Corruption of Blood of Flame Legion of Stamina
Recipes[edit]
recipes.json[edit]
{dict}
recipes = [list] // True integers within. May need conversion to string before using in URLs etc.
recipe_details.json[edit]
{dict}
recipe_id = str // Integer as string
type = str
// Weaponsmith
Axe
Dagger
Hammer
Greatsword
Mace
Shield
Sword
// Huntsman
Harpoon
LongBow
Pistol
Rifle
ShortBow
Speargun
Torch
Warhorn
//Artificer
Focus
Potion
Scepter
Staff
Trident
//Chef
Dessert
Dye
Feast
IngredientCooking
Meal
Snack
Soup
Seasoning
// Jeweler
Amulet
Earring
Ring
// Armorsmith, Leatherworker, Tailor
Boots
Coat
Gloves
Helm
Insignia
Leggings
Shoulders
Bag
// Artificer, Huntsman, Weaponsmith
Inscription
// All professions (excluding Chef)
Component
Consumable
Refinement
UpgradeComponent
// ?
Bulk
"output_item_id" = str // Integer as string
"output_item_count" = str // Integer as string
"min_rating" // Integer as string
"time_to_craft_ms" // Integer as string
"ingredients" = [list]
(repeatable) = {dict}
item_id // Integer as string
count // Integer as string
Events[edit]
event_names.json[edit]
NOTE: Duplicate names may relate to similar events in different locations and do not necessarily mean an bug or error.
[list]
(repeatable) = {dict}
id = str // Event ID number. Hexadecimals.
name = str
map_names.json[edit]
[list]
(repeatable) = {dict}
id = str // Integer as string.
name = str
world_names.json[edit]
NOTE: IDs starting with 1 are NA worlds. Those starting with 2 are EU.
[list]
(repeatable) = {dict}
id = str // Integer as string.
name = str
events.json[edit]
{dict}
events = [list]
(repeatable) = {dict}
world_id = str // Integer as string.
map_id = str // Integer as string.
event_id = str // Hexadecimal.
state = str
Warmup
Active
Success
Fail
Preparation // Does this one even exist? It's been used in someone's code before.
WvW[edit]
objective_names.json[edit]
[list]
(repeatable) = {dict}
id = str // Integer as string
name = str
matches.json[edit]
NOTE: World IDs of each belligerent are returned as true integers rather than strings. Conversion may be necessary before using them to draw the corresponding world name.
{dict}
wvw_matches = [list]
(repeatable) = {dict}
wvw_match_id = str // Integers as string, format: "x-y" (First number=region?).
red_world_id = int // See world_names.json
green_world_id = int
blue_world_id = int
match_details.json[edit]
NOTE Objective IDs are returned as true integers rather than strings. Conversion may be necessary before using them to draw the corresponding objective name.
{dict}
match_id = str // Integers as string, format "x-y" (First number=region?).
scores = [list] // Explicit integers within. Red, Green, Blue?
maps = [list]
(repeatable) = {dict}
type = str
RedHome // Red Borderlands.
GreenHome // Green Borderlands.
BlueHome // Blue Borderlands.
Center // Eternal Battlegrounds.
scores = [list] // Explicit intergers within. Red, Green, Blue?
objectives = [list]
(repeatable) = {dict}
id = int
owner = str
Red
Green
Blue
owner_guild = str // Hexadecimal. Only provided if objective owned by guild.