smiley.1438:

What the title says. (may someone sticky it, thanks)

I just stumbled across a minor error:

several item names contain double spaces like: https://api.guildwars2.com/v1/item_details.json?item_id=1794&lang=fr
It’s nothing that hurts, but still an error.

Some other items have HTML-like markup in their descriptions like https://api.guildwars2.com/v1/item_details.json?item_id=29175
Any strip_tags function should remove it, but it doesn’t look good or may break code if it’s not removed.

Cliff Spradlin.3512:

several item names contain double spaces like: https://api.guildwars2.com/v1/item_details.json?item_id=1794&lang=fr

I don’t see any double spaces in this example. If any exist, it’s likely an issue in the original item data too.

Some other items have HTML-like markup in their descriptions like https://api.guildwars2.com/v1/item_details.json?item_id=29175
Any strip_tags function should remove it, but it doesn’t look good or may break code if it’s not removed.

That’s intentional, though it should probably be better documented in the future since it’s a completely custom markup. If your goal is to re-create an item’s information box to look like it does in the game, you’ll need those tags to show the right color or style for the text.

smiley.1438:

several item names contain double spaces like: https://api.guildwars2.com/v1/item_details.json?item_id=1794&lang=fr

I don’t see any double spaces in this example. If any exist, it’s likely an issue in the original item data too.

I’ve seen a lot of double spaces especially in spanish and french translations – the original response to the above request looks like this, take a look on Manteau de voleur solide de l’aigle:

{"item_id":"1794","name":"Manteau de voleur solide  de l'aigle","description":"","type":"Armor","level":"60","rarity":"Rare","vendor_value":"234","game_types":["Activity",
"Dungeon",
"Pve",
"Wvw"],"flags":[],"restrictions":[],"armor":{"type":"Coat","weight_class":"Medium","defense":"202","infusion_slots":[],"infix_upgrade":{"buff":"","attributes":[{"attribute":"Power","modifier":"58"},
{"attribute":"Precision","modifier":"41"}]},"suffix_item_id":"24722"}}

€: it seems that most of the items with a suffix are affected (~4.5k) – there is a double space before the suffix. Oh, and there is one german item with a double space: https://api.guildwars2.com/v1/item_details.json?item_id=20286&lang=de

Some other items have HTML-like markup in their descriptions like https://api.guildwars2.com/v1/item_details.json?item_id=29175
Any strip_tags function should remove it, but it doesn’t look good or may break code if it’s not removed.

That’s intentional, though it should probably be better documented in the future since it’s a completely custom markup. If your goal is to re-create an item’s information box to look like it does in the game, you’ll need those tags to show the right color or style for the text.

I thought that this is intentional, a documentation of that would be nice

Xenoker.1297:

Id like to point out there seems to be an as-of-yet undocumented 6th state for events: “Invalid”
Example:

{"world_id":1017,"map_id":51,"event_id":"4F125457-A110-4860-8D76-E4AE678C3023","state":"Invalid"}
Which is: “Escort the supplies to Siegemaster Denbi.” in Straits of Devastation.
Which seems to be the status most of the time unless the event is actually active.

smiley.1438:

…and there we’ve killed the API

Page not found

Host
pubstats-live.ncplatform.net
URL
/v1/item_details.json?item_id=23250
Remote Address
84.162.253.193:15725
SpawnSrv/301.3051201 Instance/0.391033534

LadyRhonwyn.2501:

…and there we’ve killed the API

Page not found

Host
pubstats-live.ncplatform.net
URL
/v1/item_details.json?item_id=23250
Remote Address
84.162.253.193:15725
SpawnSrv/301.3051201 Instance/0.391033534

Not only that one, I was working on events and suddenly got 404 errors on my console

Cliff Spradlin.3512:

Sorry – server deployment went bad. Should be fixed now.

smiley.1438:

Thanks for the quick response!

Terrasque.8735:

thumbs up

anything interesting deployed? Also, can you give some info about the API’s request load? Q/s and server load?

poke.3712:

Hmm, ever since the Claw of Jormag event finished on Elona Reach, the API is stuck on the event being “active” although it should be “success” instead. Is there some problem with the event?

poke.3712:

Same problem today with the Shatterer on Elona Reach.

BruderTack.8429:

I may be wrong, but there are inconsistencies in boss event states, right? When a boss is killed, some events got the state ‘Success’, others ‘Warmup’.
It would be great, if all events would have the same state ‘chain’ like ‘Warmup’ → (‘Preperation’) → ‘Active’ → ‘Success’ (or ‘Fail’). And then ‘Warmup’ → … again.

Ruhrpottpatriot.7293:

There is a reason why some events don’t have a success state (e.g. dragons). If you search in this forum section you’ll find a reasonable explanation from the developers about it.

smiley.1438:

While updating my local items database i’ve found 5 IDs (43245-43249) which were added today and return a “reply not message” error. What does that mean?

https://api.guildwars2.com/v1/item_details.json?item_id=43249

Cliff Spradlin.3512:

While updating my local items database i’ve found 5 IDs (43245-43249) which were added today and return a “reply not message” error. What does that mean?

https://api.guildwars2.com/v1/item_details.json?item_id=43249

It means that a backend server wasn’t properly deployed as part of the update this morning. The issue has been resolved and the example item link now works for me.

Thanks for the report!

smiley.1438:

Thanks for the quick fix!

kaspi.7164:

Do you by any chance have a list of errors + their codes? Would be nice to be able to write error handlers around errors that we haven’t seen so far. To get ready for when something new goes wrong.

smiley.1438:

I just found this one:

https://api.guildwars2.com/v1/recipe_details.json?recipe_id=2968 (Beetletun Omelette)

Disciplines: armorsmith and chef. Is this intended or a bug?

Yamagawa.5941:

I think I’ve run across that omlette more than once, even the wiki acknowledges this bug. If its intended, I’d love to see the storyline that explains it…

ElGreenGo.6734:

wvw/matches.json is currently broken.

It is returning an empty array:

{
  "wvw_matches": []
}

ElGreenGo.6734:

Apparently WvW is down for some reason, which I am assuming is the reason the API is returning no matches.

Kodthr.7103:

I just began few cool things whith the new API (map) and I noticed something. In map_floor.json, some sectors are repeated more than once. For example :


{"sector_id":143,"name":"Nemeton Grove","level":17,"coord":[9030.92,
15731.8]}]}

is repeated twice, with these coords and one more time with almost the same coords :


{"sector_id":143,"name":"Nemeton Grove","level":17,"coord":[9030.01,
15733.7]}]}

P.S. : Thank you so much for the tiles

Dr Ishmael.9685:

The repeated sectors are for personal story maps. Nemeton Grove, specifically, is also within “A Different Dream” and “Shadow of the Tree”, besides where it normally appears within Brisban Wildlands.

zeeZ.5713:

World Map Tile Service: Server sends Content-Type: image/png header, but serves JPEG images (not that it matters)

Cliff Spradlin.3512:

The repeated sectors are for personal story maps. Nemeton Grove, specifically, is also within “A Different Dream” and “Shadow of the Tree”, besides where it normally appears within Brisban Wildlands.

Right. The technical relationship between continents, floors, regions, maps, and sectors is a little bit complex. Each child object could technically be referenced by multiple parent objects. This gives map designers a lot of flexibility, especially when designing unusual maps.

We enforce some practical rules in our map content. For example, floors are only allowed to exist on one continent.

smiley.1438:

Did we already kill the maps API? O.o

{
	error: 42,
	product: 0,
	module: 9001,
	line: 4119,
	text: "Srv2Route, transaction timeout {#17108}, {P+/Content/GetMapFloor+STS/1.0}"
}

Cliff Spradlin.3512:

Did we already kill the maps API? O.o

{
	error: 42,
	product: 0,
	module: 9001,
	line: 4119,
	text: "Srv2Route, transaction timeout {#17108}, {P+/Content/GetMapFloor+STS/1.0}"
}

No, sorry, there was a configuration error on our server. It should be fixed now.

smiley.1438:

Yep, thanks!

Another thing:

the map floor API returns just 1 sector element per map for some maps eg: id 26: Dredgehaunt Cliffs – i believe this is not intended or is this an instace map (apparently not)?

https://api.guildwars2.com/v1/map_floor.json?continent_id=1&floor=1

Falgar Usher of Woe.5194:

Another minor error:
{"item_id":“19633”,“name”:“Vial of Qucksilver”…..
Should be Quicksilver, not Qucksilver.

zeeZ.5713:

I did some running: http://i.imgur.com/Opb0pTQ.jpg

The y coordinates for Caledon Forest don’t line up for some reason.

Yamiga.7863:

I am currently working with the map API (which is great btw), trying to display a map with the differents points of interest from maps_floor.json . I currently stick to continent=1 & fllor=1, but I noticed what I believe to be some inconsistencies/bugs

  • Mt Maelstrom and Sparkfly Fen are contained in region 8 “Steamspur Mountains” although they should imho be in region 5 “Tarnished Coast” with other maguuma maps
  • Shouldnt the region “Tarnished Coast” be named “Maguuma Jungle” to be consistent with the ingame names?
  • Haratis Hinterland, Bloodtide Coast and Blazeridge Steppes contain no landmarks, except for the ones of instancied areas (nothing if region 8 is skipped)

Dr Ishmael.9685:

  • Haratis Hinterland, Bloodtide Coast and Blazeridge Steppes contain no landmarks, except for the ones of instancied areas (nothing if region 8 is skipped)

If you open the API in your browser and search, you’ll see that those zones have 2 entries – the first one has all landmarks, while the second one only has 1 landmark. Both of them have the same key (since that’s the map_id), so when it goes through a JSON parser, the second one overwrites the first one and you only see 1 landmark.

I already noted that bug here:

https://forum-en.guildwars2.com/forum/community/api/API-Bug-map-floor-multiple-entries-per-map/first#post2265573

Yamagawa.5941:

Sounds like I might want to tweak my parser, just to be sufficiently paranoid.

smiley.1438:

I just found that “map_waypoint_hover” is declarated twice in https://api.guildwars2.com/v1/files.json

poke.3712:

I just found that “map_waypoint_hover” is declarated twice in https://api.guildwars2.com/v1/files.json

Odd. That definitely wasn’t the case an hour ago… o.O

smiley.1438:

Funny, now it’s gone O.o

€: no, it isn’t – the JSONView plugin in chrome just drops it.

view-source:https://api.guildwars2.com/v1/build.json

{"map_complete": {
	"file_id": 528724,
	"signature": "5A4E663071250EC72668C09E3C082E595A380BF7"
}, "map_dungeon": {
	"file_id": 102478,
	"signature": "943538394A94A491C8632FBEF6203C2013443555"
}, "map_heart_empty": {
	"file_id": 102440,
	"signature": "09ACBA53B7412CC3C76E7FEF39929843C20CB0E4"
}, "map_heart_full": {
	"file_id": 102439,
	"signature": "B3DEEC72BBEF0C6FC6FEF835A0E275FCB1151BB7"
}, "map_node_harvesting": {
	"file_id": 157332,
	"signature": "995534EBE5D26804AE605E205E50539821C0CBCB"
}, "map_node_logging": {
	"file_id": 157333,
	"signature": "FC01BB452D5327A0E5B2E4A3F5EFDF03F8264A7B"
}, "map_node_mining": {
	"file_id": 157334,
	"signature": "A89EB66C39C7C006A4A6CBEDA28061F16847E9BC"
}, "map_poi": {
	"file_id": 97461,
	"signature": "25B230711176AB5728E86F5FC5F0BFAE48B32F6E"
}, "map_special_event": {
	"file_id": 502087,
	"signature": "1273C427032320DDDB63062C140E72DCB0D9B411"
}, "map_story": {
	"file_id": 102369,
	"signature": "540BA9BB6662A5154BD13306A1AEAD6219F95361"
}, "map_waypoint": {
	"file_id": 157353,
	"signature": "32633AF8ADEA696A1EF56D3AE32D617B10D3AC57"
}, "map_waypoint_contested": {
	"file_id": 102349,
	"signature": "5EF051273B40CFAC4AEA6C1F1D0DA612C1B0776C"
}, "map_waypoint_hover": {
	"file_id": 157354,
	"signature": "95CE3F6B0502232AD90034E4B7CE6E5B0FD3CC5F"
}, "map_waypoint_hover": {
	"file_id": 157354,
	"signature": "95CE3F6B0502232AD90034E4B7CE6E5B0FD3CC5F"
}}

zeeZ.5713:

There’s no vista icon in files.json. Maybe that one rogue map_waypoint_hover assassinated it and took its place.

E: Also no skill challenges.

poke.3712:

Okay, I just realized that my JSON prettifier removes duplicate properties, so I’m not too sure anymore if it really wasn’t there before last night xD

smiley.1438:

There’s no vista icon in files.json. Maybe that one rogue map_waypoint_hover assassinated it and took its place.

E: Also no skill challenges.

Indeed! Should we call Mulder and Scully? (sorry watched too much X-Files yesterday XD)

smiley.1438:

One more wrong named item which has also no name in spanish:

https://api.guildwars2.com/v1/item_details.json?item_id=39925
https://api.guildwars2.com/v1/item_details.json?item_id=39925&lang=es

Unindal.9102:

https://api.guildwars2.com/v1/item_details.json?item_id=37134

This is returning “infusion_upgrade_flags”:[“Defense”,“Utility”] when I am pretty sure it should be only Defense.

Cosmic.6047:

Is there any utf-8 encoding done for guild names ?

smiley.1438:

HTTP/1.1 200 OK
Cache-Control: no-cache
Content-Length: 255
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
Date: Fri, 13 Sep 2013 19:14:20 GMT

Apparently yes.

Cosmic.6047:

Yes smiley I seen this , it just doesn’t appear if you look as the resulting name if they have some unicode characters in it. But maybe I’m mistaken.

poke.3712:

Do you have an example? I don’t know any guild with non-ASCII characters, so I have nothing to test this on

Dr Ishmael.9685:

Yes, the entire API uses UTF-8 encoding. Here’s one:

https://api.guildwars2.com/v1/guild_details.json?guild_id=09AE9272-0B2B-4CCA-938F-EDBB9CF7030F

If I save the page to a text file, then open it with Word, it auto-detects that it’s UTF-8 encoded. If I try to force it into the Windows (Default) encoding, it looks like this:

Les Nounours Enneigés

But in UTF-8, the double-byte e-with-acute displays correctly:

Les Nounours Enneigés

You can also see it on some items, like Mjölnir and Éibhear Finn and Carrot Soufflé. Or just use any non-English language.

smiley.1438:

Oh and also things like these: https://api.guildwars2.com/v1/item_details.json?item_id=45525&lang=fr

Do you see the space between “Recette” and the colon? This is actually no space (chr 32) but some multibyte thing (nbsp) where i had to use some nasty code like

str_replace(chr(194).chr(160),'',$data['name_fr'])
to get rid of it to create correct interwiki links for it.

Array
(
    [0] => 82 R
    [1] => 101 e
    [2] => 99 c
    [3] => 101 e
    [4] => 116 t
    [5] => 116 t
    [6] => 101 e
    [7] => 194  (c2)
    [8] => 160  (a0)
    [9] => 58 :
    [10] => 32  

€: took me a while to find out that it’s an UTF-8 encoded nbsp (U+00A0 , hex: c2 a0)

Cosmic.6047:

I was expecting something like this \u00ae or & #174; for none ASCII characters.
But if it works like it should then everything is peachy

Dr Ishmael.9685:

That’s not how text encoding works – those are only representations of encodings. \u0000 is only used in prose to represent a Unicode codepoint, I believe. &#00 ; is the HTML entity notation for an ASCII character – the number is the decimal representation of the character’s ASCII codepoint, i.e. &#38 ; = &amp ; = &.

poke.3712:

Exactly, \u00ae would be an escape sequence that is used within string sequences where either unicode characters are not acceptable (some language have such a restriction) or where you simply cannot type the character. The string will however actually contain a 0x00AE character at that point (depending on the language); and not the escape sequence.

As Ish already explained, &something; are SGML or XML entities—most notably known from HTML—that are used to again escape a character sequence where typing the character itself would be hard or where the document encoding cannot encode the character in question (while the target encoding does support it). In times of utf-8 being the standard encoding, this is usually not necessary though, so the only commonly used entities are &quot; for ", &lt; for < and &gt; for > which all encode special characters that are part of the syntax.

Eli The Yahoo.9782:

Events get stuck on Active

Hi, I’m calling the events API (“https://api.guildwars2.com/v1/events.json?…”)
and pretty often events that has been completed are not reset to “warmup”,“fail”,“success” or anything else, they remain active.
from my experience it happens specifically with bosses.

at first i though this was a caching issue but even when i deleted the browser cache and added a random parameter the statuses remain active.

Thanks

smiley.1438:

It seems a lot of Items were readded to the items pool after the recent changes on magic find, for example:

https://api.guildwars2.com/v1/item_details.json?item_id=28586
is now:
https://api.guildwars2.com/v1/item_details.json?item_id=47087

Is it for sure that the infix_upgrade is missing for all the “old” items, so that we can 100% tell which are the “new” ones? Or would it be possible to add something like a “deprecated” flag if not? Otherwise it would sooner or later mess up the IDs which are added to the wiki articles, i guess.

ElGreenGo.6734:

The new WvW Bloodlust objectives are not localized in objective_names.json

https://api.guildwars2.com/v1/wvw/objective_names.json?lang=es

Reports item 76 as “((Temple of Lost Prayers))” instead of “Templo de las Pelgarias”. It is not translated in any of the three non-English languages.

smiley.1438:

For the current naming convention in objective_names.json they should be all named “ruin”. See also:
https://forum-en.guildwars2.com/forum/community/api/WvW-objective-names/first#post2068553

(I’d like to update my Gist with the JSON which contains all names and translations, but GitHub currently thinks that i’m not a human and hid my profile from the public… -.-) €: it’s available again: https://gist.github.com/codemasher/bac2b4f87e7af128087e

While i’m at it: https://api.guildwars2.com/v1/maps.json?map_id=922 (Labyrinthine Cliffs) is missing in maps.json and map_floor.json while still 9 events are listed for this map_id.

Narax.7605:

The new ruin objectives do not update to the “neutral” status, they always keep the color of the owner before going neutral. The way it’s now it is rather useless.

Furthermore it would be nice to get information who has which Bloodlust buff, because it’s almost impossible to safely recognize who gained the buff with the data we have.

poebel.4780:

Currently known missing/wrong items (as of 2013-11-04)

Recipe unlock items and other items sold by karma vendors
Too many to list them all (i.e. “in Bulk” items)

Salvage kits
Fine Salvage Kit
Journeyman’s Salvage Kit
Master’s Salvage Kit

Other items
Philosopher’s Stone
Siege Masters Guide
Eldritch Scroll
Stein of Highlander Beer
Icy Runestone
Mad King Chest (old one from 2012, the new one from 2013 is in the API)
Gift of Maw of the Deep

Moto’s weapon designs from september SAB update

Gemstore PvP skins

PvE cultural armor

Listed IDs without any details
43948
43949
(Both should be “Bag of Coins”)

Items with wrong names
((Clerics Chainmail Helm)) ID: 39925
((Knights Acolyte Cowl)) ID: 40914
((Knights Apprentice Gloves)) ID: 40922
((Knights Chainmail Armor)) ID: 40978

Fixed items
Mini Infinirarium (not longer missing from API)
Vial of Qucksilver -> is now “Vial of Quicksilver”

DarkSpirit.7046:

Consolidating my bug reports from other threads:

The item id 43948 is returned by items.json but querying for it in https://api.guildwars2.com/v1/item_details.json?item_id=43948 returns an error.
Similarly for item id 43949.

DarkSpirit.7046:

I can’t find common “in Bulk” items like “Sour Cream in Bulk” in the items.json.
https://api.guildwars2.com/v1/item_details.json?item_id=12764

I don’t see any of the “in Bulk” items in the items DB.

smiley.1438:

A lot (or possibly all?) items from Karma vendors seem to be missing. Also Mystic Forge recipes…

LordBanon.6803:

Looks like https://api.guildwars2.com/v1/items.json is returning 2 item IDs that are returning invalid item_id when used with https://api.guildwars2.com/v1/item_details.json?item_id=

43948
43949

Dr Ishmael.9685:

LordBanon, look 3 and 4 posts above yours.

Cosmic.6047:

The composition of the WvW scores seem to be skewed towards EB with close to 90%
of a team score coming from EB. Is this just temporary and has something to do with this weeks downtime and a score adjustment ?

smiley.1438:

One more wrong named item which has also no name in spanish:

https://api.guildwars2.com/v1/item_details.json?item_id=39925 ((Clerics Chainmail Helm))
https://api.guildwars2.com/v1/item_details.json?item_id=39925&lang=es

One more item which is incorrectly named in the same way:

https://api.guildwars2.com/v1/item_details.json?item_id=40978 ((Knights Chainmail Armor))

Felicja.6891:

I am not sure if this is the intended behaviour, but the events.json, event_details.json and event_status all have different count of unique event_ids.

At least as of last 24 hours (could be longer) I see that:
- events.json has 3109 unique eventIDs for a given world_id…tested with 1017, 1014,1009
- event_names.json has 3114 unique eventIDs
- event_details.json returns 3202 unique eventIDs

From what I can gather, the extra data in event_details.json that are not in events.json were events like “Defeat the Aetherblade Captain”.

Some of the extra event_ids:

“FD66B2CD-EF72-4B9A-BDBC-A5D1DB1E3E02”
“FD20EBD4-kitten-46F9-8CF6-AABBCB31B8C4”
“FC54F1E7-3CAE-4C0C-A4B7-23DC04754ED9”
“F9FA3ED2-9558-4696-A544-C158A823643E”
“F8D554C5-1CD1-4F05-8CE5-D0EC43FEBF02”
“F8D47A94-1058-4122-8842-4953176CC47D”
“F64ABC5A-886E-4F89-B2C3-C419917DD88D”
“F3E682A0-9AD9-4CD7-A60E-BCE42B84CA38”
“F3A31B78-D858-4C09-BAF5-E166C6EC6427”
“EEC08296-FDE9-4077-8E37-5981AEF0C8C7”
“EAC0D784-7C4B-4EF2-BC15-9F7A31E517B9”
“E726E373-98FA-4577-9CA5-A0BAB2CE5ED3”

Should the API not return all of the same event_ids in each of the above JSON?

Thanks for your advice.

Stefan Larimore.6872:

Hi Felicja,

The events.json and event_names.json are flushed on each new release, and get populated as events happen in real time. While the event_details.json enumerates all events ever seen. Some of your cited events such as the “Defeat the Aetherblade Captain” may no longer be happening in newer releases, which is why then don’t get populated in the events.json.

Felicja.6891:

Hi Stefan,

thank you very much for your thorough explanation:)

Felicja

Hi Felicja,

The events.json and event_names.json are flushed on each new release, and get populated as events happen in real time. While the event_details.json enumerates all events ever seen. Some of your cited events such as the “Defeat the Aetherblade Captain” may no longer be happening in newer releases, which is why then don’t get populated in the events.json.

albus.4273:

https://api.guildwars2.com/v1/map_floor.json?continent_id=1&floor=1&lang=en
Contains multiple entries for Bloodtide Coast, Harathi Hinterlands, Blazeridge Steppes, Lornar’s Pass, and Dredgehaunt Cliffs. The parsed return data then has little or no poi items in “points_of_interest”.

poebel.4780:

Just some more items with wrong names:
((Knights Acolyte Cowl)) ID: 40914
((Knights Apprentice Gloves)) ID: 40922

Danaan Kijen.5842:

All API calls (which include map-data) are broken for about 8hrs now:
For example maps.json returns:
{"error":10, “product”: 71, “module”: 2,“line”: 196, “text”: null}

Dr Ishmael.9685:

Items, recipes, and events are also broken, only returning a small set of results.

Hayner Jetik.2186:

Items & recipes APIs are still broken…

https://api.guildwars2.com/v1/items.json
Returns only a few items

https://api.guildwars2.com/v1/recipes.json
Returns only a few recipes

https://api.guildwars2.com/v1/item_details.json?item_id=19721
Returns {"error":10,product,module,line,“text”:“invalid item_id”}

https://api.guildwars2.com/v1/recipe_details.json?recipe_id=1275
Returns {"error":10,product,module,line,“text”:“invalid recipe_id”}

Stefan Larimore.6872:

Things should be coming back to normal. Thanks for the notice.

LadyRhonwyn.2501:

How long should this take, because it’s still not working correctly… After clearing my database, I noticed I’m still missing items (and it happens to be the legendary and its gift, on which I’m working atm!)

smiley.1438:

Seems like the items must be discovered once more. There are currently 23553 of 30145 discovered items in items.json and 6617 of 7736 recipes in recipes.json.

Weir.5691:

Not sure if this is the correct place to post this but it appears that Versatile Simple Infusion isn’t in the API.
gw2spidy.com has as the correct item ID in the URL. So the ID of the mentioned infusion should be 37138 but returns as invalid item.

LadyRhonwyn.2501:

There are more items missing from the api. Try to find any Icy Lodestones for instance. And most items that can be bought using karma (the same goes for recipes).

Dr Ishmael.9685:

And most items that can be bought using karma (the same goes for recipes).

Those have always been missing, due to how the game reports “discovered” items – karma vendors aren’t in the loop for some reason.

smiley.1438:

And most items that can be bought using karma (the same goes for recipes).

Those have always been missing, due to how the game reports “discovered” items – karma vendors aren’t in the loop for some reason.

Since the latest reset there are several karma items (like the bulk cooking ingredients) listed, anyway, still waiting for MF recipes…

LadyRhonwyn.2501:

Some weird stuff:
https://api.guildwars2.com/v1/item_details.json?item_id=49295
(Recipe: Endless Toy Ventari Tonic)
Unlocks recipe:
https://api.guildwars2.com/v1/recipe_details.json?recipe_id=7005
(Type: Inscription, ItemId: 38433)
https://api.guildwars2.com/v1/item_details.json?item_id=38433
Which is a Giver’s Darksteel-Imbued Inscription….

Stefan Larimore.6872:

I finally fixed the problem with the missing items, recipes, events from the previous reset we had about a month ago. I was hoping they would get re-discovered, but as people noticed this wasn’t happening in a timely fashion. It wasn’t a trivial thing to re-seed this, but it is done now. Let me know if you are still noticing anything missing. Thank you.

smiley.1438:

Hey Stefan,

thanks for the heads-up. I ran the script again which checked for missing items (http://gw2.chillerlan.net/missing_items.html) and it seems they’re all back again. Thanks!

Oh, while i’m at it: there are still several items with a name like ((ITEM_NAME))
http://gw2wbot.darthmaim.de/itemlist.php?name=((

Stefan Larimore.6872:

Hi Smiley,

Thanks for the report. We are looking the problem with the ((parenthesis-named)) items.

Kegsay.7068:

Just a quick fix I hope for this one. Someone touched on this previously:
The API at https://api.guildwars2.com/v1/files.json has no entries for:
- Vista (seen)
- Vista (not seen)
- Skill Challenge (complete)
- Skill Challenge (not complete)
And whilst I’m at it, these are also not available but still noteworthy:
- Merchant (coins icon)
- Trading post
- Bank
- Repair NPC
- Weapons dealer
- Armor dealer
- Commander
- Party member dot (the blue dot)
- All the crafting icons
- Asura Gates
- Event type icons (e.g. the icon for ‘NPC wants you to bring them stuff’)

I think that is mostly it. It would be great if someone could just toss these in the JSON.

Stefan Larimore.6872:

Hi Smiley,

It turns out those items were “in-development” items that either were rejected or supposed to be replaced with other items. We are not sure exactly how they got “discovered”. In the meantime I’ve removed them from the API. If they show up again, we’ll have to track down how they are getting discovered.

As for the additional files.json entries: I’ll try to get what I can included as soon as possible and will reply when updated.

smiley.1438:

Hey Stefan,

thanks for the update. My guess is that those items haven’t been discovered but were added with some content updates. (e.g. the Mr Funkel minipet – i don’t think it had to be discovered – also it had a correct name before – we track item renaming → http://gw2wbot.darthmaim.de/rss/renamedItems/ )

Kegsay.7068:

“As for the additional files.json entries: I’ll try to get what I can included as soon as possible and will reply when updated.”

Thank you!

Archomeda.6472:

I have a small note regarding to your RSS feed. My browser is not recognizing the feed when opening it (Firefox). The problem seems to be the Content-Type header your server sends. Try changing it from “application/json” to “application/rss+xml”.
On the other hand, although I’m not sure in which cases it can be useful, you did a good job there!

darthmaim.6017:

I have a small note regarding to your RSS feed. My browser is not recognizing the feed when opening it (Firefox). The problem seems to be the Content-Type header your server sends. Try changing it from “application/json” to “application/rss+xml”.
On the other hand, although I’m not sure in which cases it can be useful, you did a good job there!

fixed

Archomeda.6472:

I have also something small to report, while iterating over the maps.json entries, it occured to me that the Borderlands do not have their colors listed (map ids 94, 95 and 96). While the english ones have the name " Borderlands" (note the extra space), the spanish are worse: "Tierras fronterizas de ". Now I’m not spanish, but I think “de” can be read as something like “of”. So there’s definitely missing something here :p.

fixed

Nice , now I can actually read what it says :P.

smiley.1438:

I have also something small to report, while iterating over the maps.json entries, it occured to me that the Borderlands do not have their colors listed (map ids 94, 95 and 96). While the english ones have the name " Borderlands" (note the extra space), the spanish are worse: "Tierras fronterizas de ". Now I’m not spanish, but I think “de” can be read as something like “of”. So there’s definitely missing something here :p.

Thats not a bug. These names are just pre- and suffixes (depending on the language) for the current map name so that you just need to add the worldname to it.

e.g. my homeworld is “Ring of Fire”, so it would end up in “Ring of Fire Borderlands” – in spanish it would be “Anillo de Fuego” for the world, and the map would be named “Tierras fronterizas de Anillo de Fuego”

Archomeda.6472:

I have also something small to report, while iterating over the maps.json entries, it occured to me that the Borderlands do not have their colors listed (map ids 94, 95 and 96). While the english ones have the name " Borderlands" (note the extra space), the spanish are worse: "Tierras fronterizas de ". Now I’m not spanish, but I think “de” can be read as something like “of”. So there’s definitely missing something here :p.

Thats not a bug. These names are just pre- and suffixes (depending on the language) for the current map name so that you just need to add the worldname to it.

e.g. my homeworld is “Ring of Fire”, so it would end up in “Ring of Fire Borderlands” – in spanish it would be “Anillo de Fuego” for the world, and the map would be named “Tierras fronterizas de Anillo de Fuego”

Oh wow, that’s on purpose then? Bit weird to do it this way though in my opinion. Oh well, thanks for clarifying it.

But wait, how do you explain the french one then: “Territoires frontaliers ( )”? That’s neither a prefix nor suffix.

smiley.1438:

The french one seems indeed a bit weird – at least inconsistent to the others. So in french would be possibly “Cercle de feu” → “Territoires frontaliers (Cercle de feu)”. Since these names apparently are taken directly from the game (including bugs) i guess theres some string replacement done here. Further explaination by a dev would be appreciated

smiley.1438:

2 new items, 2 new errors:

https://api.guildwars2.com/v1/item_details.json?item_id=49846
https://api.guildwars2.com/v1/item_details.json?item_id=49861

€: nevermind, errors are gone since the update came in.

Ike None.5039:

I found this:
https://api.guildwars2.com/v1/item_details.json?item_id=43948
error:10
product:71
module:2
line:135
text:null

Arthur.7249:

Same kind of error with :
https://api.guildwars2.com/v1/item_details.json?item_id=43949

{"error":10,"product":71,"module":2,"line":135,"text":null}

smiley.1438:

Oh, these 2 were broken for ages – i wonder how they got in again after the items API was truncated…

Stefan Larimore.6872:

The french one seems indeed a bit weird – at least inconsistent to the others. So in french would be possibly “Cercle de feu” -> “Territoires frontaliers (Cercle de feu)”. Since these names apparently are taken directly from the game (including bugs) i guess theres some string replacement done here. Further explaination by a dev would be appreciated

I investigate this a bit. It turns out as you suspected there is some concatenation at play here, as dictated by some special markup and is different for each language translation. As in:

  • EN: %str2% Borderlands
  • FR: Territoires frontaliers (%str2% )
  • ES: Tierras fronterizas de[pl:""] %str2%
  • DE: %str1% Grenzlande

Unfortunately, what we render in the API is after the concatenation markup is trimmed out (and presumably replaced with an empty string). I did a brief investigation on how I might be able to render the name with markup, but it will require more work than I can afford right now. I’ll keep this noted as a bug.

thank you!

smiley.1438:

Stefan,

thanks for the clarification. So it turns out, the spanish names are even trickier than the others because of the “plural identifier” – i guess there’s an “s” being added like “de” -> “des”. So would it be possible to ignore the spanish grammar for a while and just replace the map name with a placeholder instead of an empty string so that we could simply use functions like sprintf()? Like so:

{
	"de": "%s Grenzlande",
	"en": "%s Borderlands",
	"es": "Tierras fronterizas de %s",
	"fr": "Territoires frontaliers (%s)"
}

If you could provide us a list of the “plural named” maps, you could even use numbered placeholders then:

{
	"de": "%1$s Grenzlande",
	"en": "%1$s Borderlands",
	"es": "Tierras fronterizas de%2$s %1$s",
	"fr": "Territoires frontaliers (%1$s)"
}

smiley.1438:

https://api.guildwars2.com/v1/item_details.json?item_id=63853

{
    error: 10,
    product: 71,
    module: 2,
    line: 135,
    text: null
}

€: nevermind, it ran in with today’s update. I just wonder how these item IDs pop up about 24h before the actual update…

smiley.1438:

https://api.guildwars2.com/v1/guild_details.json?guild_id=A2B136C5-B919-408F-8E47-5EDCD175D663

{
    error: 3019,
    product: 1008,
    module: 1,
    line: 561,
    text: null
}

slayerthewarlord.4852:

The map names API is bugged. It is only returning 10 map names:
[{"id":“15”,“name”:"Queensdale"},
{"id":“24”,“name”:“Gendarran Fields”},
{"id":“28”,“name”:“Wayfarer Foothills”},
{"id":“30”,“name”:“Frostgorge Sound”},
{"id":“73”,“name”:“Bloodtide Coast”},
{"id":“62”,“name”:“Cursed Shore”},
{"id":“53”,“name”:“Sparkfly Fen”},
{"id":“34”,“name”:“Caledon Forest”},
{"id":“19”,“name”:“Plains of Ashford”},
{"id":“943”,“name”:“Tower of Nightmares”}]
I am using the map names in my Windows application to filter events by map and this bug is making my app pretty much useless right now.
Until this gets fixed can someone provide the whole list of maps and map ID so I can hard-code them in my app ?
Thanks!

darthmaim.6017:

Here: https://github.com/codemasher/gw2api-tools/blob/master/json/gw2_maps.json

StevenL.3761:

https://api.guildwars2.com/v1/skin_details.json?skin_id=2388

{"error":10,"product":71,"module":2,"line":314,"text":null}

source of skin_id: https://api.guildwars2.com/v1/item_details.json?item_id=23009

Dr Ishmael.9685:

There are quite a few skin IDs listed on items that aren’t in the skins API. They also don’t appear in the wardrobe.

Alcarin.9024:

In item_detail.json, there are a lot of upgrade_components with:
“upgrade_component”:{"type":“Default”,
Jewels (gemstone are type “gem”), Infusions, PvP Rune and PvP Sigils, are all type “Default”.
Is this an error? If not, is possible to better differentiate upgrade components?

Alcarin.9024:

I have found that the following image are 16×16 instead of 32×32 like the others:
item_id:24695 Major Rune of the Flock
https://render.guildwars2.com/file/2BA523C17A3BE0D6D2EC773361746A6FE3282E23/222500.png
https://render.guildwars2.com/file/2BA523C17A3BE0D6D2EC773361746A6FE3282E23/222500.jpg
item_id:24766 Minor Rune of Dwayna
https://render.guildwars2.com/file/BC7E4DD2B7717AD7054CAFE103C7BEAC55C8142B/222502.png
https://render.guildwars2.com/file/BC7E4DD2B7717AD7054CAFE103C7BEAC55C8142B/222502.jpg

Savato.9182:

The World API appears to be returning empty arrays for all supported languages, and looks like it might have been doing that for the last few days.

Example: https://api.guildwars2.com/v1/world_names.json?lang=en

sebrandon.2835:

The World API appears to be returning empty arrays for all supported languages, and looks like it might have been doing that for the last few days.

Example: https://api.guildwars2.com/v1/world_names.json?lang=en

Any word on this??? My application has been hurting for days….

Tanis.5134:

The World API appears to be returning empty arrays for all supported languages, and looks like it might have been doing that for the last few days.

Example: https://api.guildwars2.com/v1/world_names.json?lang=en

Any word on this??? My application has been hurting for days….

Stefan posted that they are aware of the issue and working on it here: https://forum-en.guildwars2.com/forum/community/api/Looks-like-some-of-the-API-is-broken/first#post3999815

StevenL.3761:

The event APIs seem to be missing entries for the Triple Trouble wurm events. Bug?

Killer Rhino.6794:

The APIs are missing OAuth support.

The Cloud Prince.5396:

The World API appears to be returning empty arrays for all supported languages, and looks like it might have been doing that for the last few days.

Example: https://api.guildwars2.com/v1/world_names.json?lang=en

It’s been over a week since this API first went down. Any word on it???

smiley.1438:

Right here: https://forum-en.guildwars2.com/forum/community/api/Looks-like-some-of-the-API-is-broken/3999815 – no ETA but fixes provided.

Killer Rhino.6794:

The APIs are missing OAuth support.

StevenL.3761:

Recipe 9642 (link)

This recipe does not specify a single crafting discipline. Also, its output item ID (66200) does not exist in the item details API.

Further research indicates that this recipe produces an “Unidentified Orange Dye”.
Chat link codes:

  • [&CqolAAA=]
  • [&AgGYAgEA]

If this recipe clearly exists in the game, why does the API behave like this?

Kriton.1947:

The same goes for recipe 9638

Virtim.9467:

As I posted in separate thread. Affected recipes are 9637 – 9660

Leylin.3901:

Missing skin with id=1053. Related item is “item_id=39532”

https://api.guildwars2.com/v1/skin_details.json?skin_id=1053
returns:
{"error": 10, “product” : 71, “module”: 2, “line”: 314, “text”: null}

Edit:
Like Dr Ishmael said, there are a lot more skins missing. So far I have a list of 100 skin_ids that don’t have a json-string for the details:

3689 3265 3245 3244 3242 3241 3192 3190 3188 3187 3186 2809 2775 2743 2434 2399 2398 2396 2395 2392 2391 2389 2388 2387 2385 2384 2339 2329 2327 2326 2325 2318 2009 1763 1570 1249 1248 1247 1233 1218 1217 1215 1214 1213 1212 1211 1194 1193 1183 1182 1181 1180 1179 1178 1177 1176 1175 1174 1173 1171 1168 1167 1166 1165 1164 1161 1159 1158 1150 1149 1148 1147 1142 1133 1118 1117 1115 1114 1112 1110 1109 1108 1088 1083 1080 1078 1076 1073 1070 1068 1067 1065 1063 1061 1059 1058 1056 1055 1054 1053

Killer Rhino.6794:

The APIs are missing OAuth support.

smiley.1438:

The APIs are missing OAuth support.

Will be done before Half Life 3 comes out!

BTT: http://api.guildwars2.com/v1/guild_details.json?guild_id=4FB641DA-71BB-E311-8D3D-AC162DC0A8ED

{
  error: 3019,
  product: 1004,
  module: 2,
  line: 2646,
  text: null
}

This guild id pops up frequently in current wvw matches.

StevenL.3761:

Bugs in /v2

  • duplicate identifiers in bulk requests are allowed
    * /v2/quaggans?ids=404,404,404,404,…
  • As a result, X-Result-Count can be greater than X-Result-Total
    * ids=404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,aloha,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404,404
    * X-Result-Count:36
    * X-Result-Total:35

smiley.1438:

Bugs in /v2

  • duplicate identifiers in bulk requests are allowed
    * /v2/quaggans?ids=404,404,404,404,…

I wouldn’t consider this as a bug, not even an error. For example imagine some SQL:

SELECT * FROM table WHERE id IN(404,404,404,404)

This is totally valid and would return exactly one line.

StevenL.3761:

It’s a bug because it is (indirectly) violating a design constraint. The constraint would be:
X-Result-Count <= X-Result-Total

I suppose they could just decide to increase the Total by 1 for each duplicate identifier, but I’d rather get an error.

… is totally valid and would return exactly one line.

That’s not what is happening though. The output contains duplicate objects.

smiley.1438:

Look again at what i’ve quoted.

I don’t agree that passing duplicate identifiers is a bug. (in fact: it’s compensating bad programming on the client side)
I agree that the output is bugged.

However, it’s still too early to report/discuss v2 bugs. The v2 API is still in the works and not officially released yet.

StevenL.3761:

You suggest that I should be allowed to request ?ids=404,404,404 but get only a single response object even though my program is expecting three objects? Nope, nope, nope, so much nope.

smiley.1438:

You suggest that I should be allowed to request ?ids=404,404,404 but get only a single response object even though my program is expecting three objects? Nope, nope, nope, so much nope.

So does SQL. If you really think the API should act in a way YOUR program expects it to work, you’re wrong.

So tell me why:

  • should the API return an error
  • should it return the SAME object more than once

when you sent duplicate identifiers? How would your program handle the result of a SQL “…WHERE … IN(…) …”?

StevenL.3761:

If you really think the API should act in a way YOUR program expects it to work, you’re wrong.

Exactly my point… it should crash with an error.



{"text":"request contains duplicate identifiers."}

My program doesn’t expect the API to return an error, because I’m not violating any protocols. But instead of leaving my program in an invalid state ( count < expected ), I now have an error code that I can use to throw an exception.

smiley.1438:

Honestly, i don’t care how YOUR program works. If it’s unable to handle the response to what it asked for, you should rewrite it. Keep that SQL in mind, this is actually what to expect as response when duplicate identifiers are sent.

StevenL.3761:

We’ve already established that they are not using that particular SQL construct. Otherwise we wouldn’t be getting duplicate objects in the response content.

smiley.1438:

We’ve already established that they are not using that particular SQL construct. Otherwise we wouldn’t be getting duplicate objects in the response content.

And we agreed that the output is incorrect. This doesn’t invalidate my previous point:

Keep that SQL in mind, this is actually what to expect as response when duplicate identifiers are sent.

SELECT * FROM table WHERE id IN(404,404,404,404)

This is totally valid and would return exactly one line.

StevenL.3761:

The output is incorrect, but returning output other than what is requested is also incorrect. I don’t expect a fish when I ask for a basket of eggs.

You’re right about it being a client side error. You’re wrong about allowing the client to continue when it does that.

smiley.1438:

So you really expect the API to do something like that:

foreach($identifiers as $identifier){
  SELECT * FROM table WHERE id = $identifier
}

A programmer who writes API backend code like that should be hung by the balls.

StevenL.3761:

I don’t know if that’s how they implemented it, but at least that’s how it behaves right now. So I’m using that as the specification.

They may have written it like this:


SELECT * FROM quaggans WHERE ID = "404"
UNION ALL
SELECT * FROM quaggans WHERE ID = "404"
UNION ALL
SELECT * FROM quaggans WHERE ID = "404"
UNION ALL
...

Lone Wolf.4129:

I think it’s a bug you’re talking about unreleased (if it ever gonna be) API’s

As far as we know the quagans where perhaps still disabled and they just forget to lock them up again.

smiley.1438:

Processing and returning the same result more than once is just stupid. Assigning the result rows to the requested identifiers can be easily handled on the client side.

The output is incorrect, but returning output other than what is requested is also incorrect. I don’t expect a fish when I ask for a basket of eggs.

You get what you’ve asked for. You wanted $identifier X, you get the data for it. Once. Even if you send it a thousand times, the data will still stay the same.

As far as we know the quagans where perhaps still disabled and they just forget to lock them up again.

Who is “we” and where do you know from?

Lone Wolf.4129:

https://api.guildwars2.com/v2

this page will show that all the v2 api’s are disabled but not the quagans.

i even wrote a little app thats running to tell me when its finaly freaking active.
but i gave up since we never get an actuall update anywhere.

just now and then i check up on this part of the forum but i realy dont know why i still bother.

StevenL.3761:

As far as we know the quagans where perhaps still disabled and they just forget to lock them up again.

Well, no. The /v2 page that was posted on twitter didn’t even have an entry for /v2/quaggans. They added quaggans to the list a couple of weeks later, unlocked, presumably to help you and me get acquainted with the new syntax. I don’t know why they never made a public announcement, but that could mean anything (including nothing).

StevenL.3761:

You get what you’ve asked for. You wanted $identifier X, you get the data for it. Once. Even if you send it a thousand times, the data will still stay the same.

I didn’t mean it like that. We’re starting to mix up different ideas.

How it is right now

  • I ask for 40 yellow easter eggs
  • I receive 40 yellow easter eggs
  • The receipt says that 35 eggs are in stock
  • The receipt says that I received 40 of 35 eggs

How you say it should be

  • I ask for 40 yellow easter eggs
  • I receive 1 yellow easter egg
  • The receipt says that 35 eggs are in stock
  • The receipt says I received 1 of 35 eggs

How it should be

  • I ask for 40 yellow eggs
  • The cashier explains to me that there is only 1 yellow egg

smiley.1438:

You get what you’ve asked for. You wanted $identifier X, you get the data for it. Once. Even if you send it a thousand times, the data will still stay the same.

I didn’t mean it like that. We’re starting to mix up different ideas.

How it is right now

  • I ask for 40 yellow easter eggs
  • I receive 40 yellow easter eggs
  • The receipt says that 35 eggs are in stock
  • The receipt says that I received 40 of 35 eggs

How you say it should be

  • I ask for 40 yellow easter eggs
  • I receive 1 yellow easter egg
  • The receipt says that 35 eggs are in stock
  • The receipt says I received 1 of 35 eggs

How it should be

  • I ask for 40 yellow eggs
  • The cashier explains to me that there is only 1 yellow egg

Seriously? You compare data to physical eggs? You should better work in a supermarket when you think that way.

You asked for 40x the same string of text. You get it once instead because i don’t want to write it down 40 times as it would be a waste of my resources, but you are free to copy it as many times you want.

StevenL.3761:

Dude, why are you so mean? My analogy is not about comparing data to physical objects. It is about comparing public services to public services.

You don’t even realize that what you’re doing is almost exactly what I want the API to do.


HTTP Error 400 Bad request
{
    "text" : "You asked for 40x the same string of text. You *can* get it once instead if you simplify your request."
}

Forcing me to try again instead of giving me something I’m not asking.

smiley.1438:

Dude, why are you so mean? My analogy is not about comparing data to physical objects. It is about comparing public services to public services.

Even comparing apples to tomatoes would make more sense.


HTTP Error 400 Bad request
{
    "text" : "You asked for 40x the same string of text. You *can* get it once instead if you simplify your request."
}

Forcing me to try again instead of giving me something I’m not asking.

Why would you force someone to change the request even if you could deliver what has been requested?

Anyway, off-topic, request for split into a new topic if there’s still reason to discuss.

StevenL.3761:

Even comparing apples to tomatoes would make more sense.

As you wish
http://www.diffchecker.com/c8dpl9j2

Why would you force someone to change the request even if you could deliver what has been requested?

For the purpose of only ever returning exactly what has been requested. That, or an error. Do you really have no clue why that might be important?

smiley.1438:

Do you really have no clue why that might be important?

It isn’t. You make it up.

You get it once instead because i don’t want to write it down 40 times as it would be a waste of my resources, but you are free to copy it as many times you want.

StevenL.3761:

I swear I’m not making this up.

Assuming that you have an error handler that sits somewhere between the code that makes the request and the code that handles the response. This error handler is the same for all services, because the error response is the same for all services. It doesn’t matter which service gives you the finger, because your error handler has got your back.

On the other hand, things gets complicated a lot faster if you have to verify that the response is what you’d expect for each and every request that you make. It is not unlikely that you’d end up writing custom code for each endpoint.

Furthermore, if you know that you will only get what you asked for, you can make other assumptions about your code such as how big an array has to be to fit all elements inside. I know that this doesn’t apply to PHP, but it does in C# and other languages.

StevenL.3761:

You can do this:

You get it once

Or you can do this:

i don’t want to write it down 40 times

But you cannot combine these two statements in a single response object.

smiley.1438:

Ok, programming 101:

You have a list of numbers which you want to send to an API and get the corresponding data for each of them. The API accepts duplicates of the numbers for convinience but returns just one result for each unique. Now back in your program you loop through your list of numbers and assign the data you recieved to each of them. This is possible. In (nearly) any language. Profit.

StevenL.3761:

Custom code alert.

I can do the same thing through reflection if the response did have the duplicate entries. But the duplicates break the X-Result headers, so we can’t have duplicates. So we can’t have reflection. Unless we get errors.

The API accepts duplicates of the numbers for convinience

That’s funny, I find it very *in*convenient.

smiley.1438:

(in fact: it’s compensating bad programming on the client side)

StevenL.3761:

It’s not bad code that lets me send duplicate identifiers.
It is the absence of code that guards against it that lets me send duplicate identifiers.

In which universe do you only have to check preconditions on the client side but not on the server side?

smiley.1438:

In which universe do you only have to check preconditions on the client side but not on the server side?

In one where redundant data is uncool.

StevenL.3761:

Okay so this one. Cool. Now let’s update the API so that it throws a non-redundant redundancy error.

smiley.1438:

You are asking 40 times for the SAME egg which remains 1. I’m out.

StevenL.3761:

Don’t go yet, I have more riddles for you to solve!

Have a stab at this one:
/v2/eggs?ids=yellow,yellow,green,yellow,red,blue,yellow,yellow

What is the output? You have 5 minutes to solve this quiz.

Alcarin.9024:

My 2 cents regarding cloned Quaggans:
API should not waste resource printing duplicate items (Quaggans are 35, but what happen when you have to search in 36000 items?). I think that it should check for duplicate, if duplicates are found it should throw an error with a 302 HTTP redirect to the list of same objects without duplicates.
In this way error is thrown, and is also very easy to correct the wrong request (that is very helpful if list are hand-written).
It is also a solution accessible, and easly applicable, by (I think) all endpoints.

StevenL.3761:

I like that idea. There’s also HTTP 303 “See Other”. It is similar to HTTP 302, but with a subtle difference that makes it more suitable:

A 303 response to a GET request indicates that the origin server does
not have a representation of the target resource that can be
transferred by the server over HTTP. However, the Location field
value refers to a resource that is descriptive of the target
resource, such that making a retrieval request on that other resource
might result in a representation that is useful to recipients without
implying that it represents the original target resource
.

Source: https://tools.ietf.org/html/rfc7231#section-6.4.4

darthmaim.6017:

https://api.guildwars2.com/v2/commerce/listings doesnt send X-Result-Count and X-Result-Total headers like the quaggan API

StevenL.3761:

Interesting. Could that be intended? The actual count depends on how players interact with the game, so I wouldn’t be surprised.

darthmaim.6017:

I don’t think its intended, when accessing https://api.guildwars2.com/v2/commerce/listings?page=1000 (page out of range), it tells you how many pages there are, so the information is definitely there.

StevenL.3761:

/v2/commerce/listings returns literal “null” strings when a bulk request specifies non-existent or account-bound item identifiers.

https://api.guildwars2.com/v2/commerce/listings?ids=-2,-3,6,24

You might have to refresh the page a couple of times to see it.

I tried two different serialization engines, and both fail to correctly recognize these values as null.

Pat Cavit.9234:

/v2/commerce/listings returns literal “null” strings when a bulk request specifies non-existent or account-bound item identifiers.

https://api.guildwars2.com/v2/commerce/listings?ids=-2,-3,6,24

You might have to refresh the page a couple of times to see it.

I tried two different serialization engines, and both fail to correctly recognize these values as null.

We’re taking a look at this and have a plan for how to fix. That’s a fun one, good catch!

smiley.1438:

Might turn this one in over here: https://forum-en.guildwars2.com/forum/community/api/Match-details-giving-incorrect-results/4436632

StevenL.3761:

Are there any plans to fix the unlock type for outfits?

https://api.guildwars2.com/v2/items?ids=64756,64754,65198,65201,65194,65195,65196,66279,66658,67040

StevenL.3761:

/v2/commerce/listings returns literal “null” strings when a bulk request specifies non-existent or account-bound item identifiers.

https://api.guildwars2.com/v2/commerce/listings?ids=-2,-3,6,24

You might have to refresh the page a couple of times to see it.

I tried two different serialization engines, and both fail to correctly recognize these values as null.

We’re taking a look at this and have a plan for how to fix. That’s a fun one, good catch!

It’s better now, but there are still some inconsistencies that make my code crash.

Right now, the listings service returns garbage values instead of an error for some identifiers:

OK: https://api.guildwars2.com/v2/commerce/listings/0
Not OK: https://api.guildwars2.com/v2/commerce/listings/1

Same story for the prices service.

OK: https://api.guildwars2.com/v2/commerce/prices/0
Not OK: https://api.guildwars2.com/v2/commerce/prices/1

Pat Cavit.9234:

/v2/commerce/listings returns literal “null” strings when a bulk request specifies non-existent or account-bound item identifiers.

https://api.guildwars2.com/v2/commerce/listings?ids=-2,-3,6,24

You might have to refresh the page a couple of times to see it.

I tried two different serialization engines, and both fail to correctly recognize these values as null.

We’re taking a look at this and have a plan for how to fix. That’s a fun one, good catch!

It’s better now, but there are still some inconsistencies that make my code crash.

Right now, the listings service returns garbage values instead of an error for some identifiers:

OK: https://api.guildwars2.com/v2/commerce/listings/0
Not OK: https://api.guildwars2.com/v2/commerce/listings/1

Same story for the prices service.

OK: https://api.guildwars2.com/v2/commerce/prices/0
Not OK: https://api.guildwars2.com/v2/commerce/prices/1

We can look at standardizing those some, but both are correctly returning a 400 bad request. It gets exciting since the API is a layer on top of many backend services and those don’t all agree on how to respond to things.

That said, you should always determine if the request was an error by inspecting the HTTP status code & not the contents of the response.

StevenL.3761:

I can’t check on my phone, but I don’t believe that ID 1 returns an error code. Just HTTP 200 and a garbage value.

Pat Cavit.9234:

I can’t check on my phone, but I don’t believe that ID 1 returns an error code. Just HTTP 200 and a garbage value.

Clearly still too early, my brain flipped your “OK” and “Not OK” values. Sorry!

StevenL.3761:

I’m not sure if this is even worth looking at, but there’s still that bug where IIS crashes with a text/html response when the parameter list gets too big. Probably because IIS/ARR and the private API do not agree on the maximum URL length.

Example: http://pastebin.com/nXSR8kSb

Alcarin.9024:

I’m not sure if this is even worth looking at, but there’s still that bug where IIS crashes with a text/html response when the parameter list gets too big. Probably because IIS/ARR and the private API do not agree on the maximum URL length.

Example: http://pastebin.com/nXSR8kSb

The only problem I see in that request is that the server reply with a 404 error instead of 414 error. The URL is 2215 character long, it should be less than 2000, and the request is to have 550 items where you should only request 200. I think that you cannot have a json reply in this case, because in my opinion your request is stopped and rejected by IIS, it never reach API level. I don’t know IIS, but this response is seems to me like error page configured in apache, in this case when apache read the request, it reject it and reply with its default error page (in this case reply with a 404 error, but it should reply with 414 error) that it’s a plain html file similar to all error page saw in GW2 web services. Probably they never thought that they need a 414 page error (for a normal web service like website or forum is really uncommon to have url length problem) and didn’t created that page error, so the server reply with a default 4xx error.

Pat Cavit.9234:

I’m not sure if this is even worth looking at, but there’s still that bug where IIS crashes with a text/html response when the parameter list gets too big. Probably because IIS/ARR and the private API do not agree on the maximum URL length.

Example: http://pastebin.com/nXSR8kSb

Garbage in, garbage out!

Not a lot we can easily do about that right now.

StevenL.3761:

I think this behavior is caused by a setting in the Request Filtering module (http://www.iis.net/configreference/system.webserver/security/requestfiltering). The article perfectly matches the behavior that I’m seeing.

When request filtering blocks an HTTP request, IIS 7 will return an HTTP 404 error to the client and log the HTTP status with a unique substatus that identifies the reason that the request was denied.

So, to disable the filter:

  • Open IIS Manager and connect to the gateway server that routes the requests
  • Click the root node of the server in the “Connections” panel
  • Double click “Request filtering” in the “Features View” panel
  • Click “Edit Feature Settings…” in the “Actions” panel
  • Change the maximum URL and query string length to 4294967295 (max), or something more sensible than 2048/4096

Pat Cavit.9234:

I think this behavior is caused by a setting in the Request Filtering module (http://www.iis.net/configreference/system.webserver/security/requestfiltering). The article perfectly matches the behavior that I’m seeing.

When request filtering blocks an HTTP request, IIS 7 will return an HTTP 404 error to the client and log the HTTP status with a unique substatus that identifies the reason that the request was denied.

So, to disable the filter:

  • Open IIS Manager and connect to the gateway server that routes the requests
  • Click the root node of the server in the “Connections” panel
  • Double click “Request filtering” in the “Features View” panel
  • Click “Edit Feature Settings…” in the “Actions” panel
  • Change the maximum URL and query string length to 4294967295 (max), or something more sensible than 2048/4096

The defaults are sensible and we aren’t going to change them for now. Don’t request 500 IDs at once, especially since the max we’ll return to you is 200.

StevenL.3761:

I can stop a user from passing more than 200 identifiers, but I can’t stop a user from passing 200 times the maximum value for a 32 bit integer (2147483647). The precision here is 10, so that alone adds up to 2000 characters. That’s still less than 2048, but then you’re forgetting about the delimiters.

wwwes.1398:

If you’re passing a user through to the API, it’s generally considered your responsibility to either guide them through it or stop it from sending stuff you know won’t work and will cause technical problems. Which means either you count up the commas and validate or you just strip off whatever gets passed through after the last comma from your server request when the query string hits the limit.

Just my own opinion on the matter. It definitely should be adjusted to show the correct error at some point, but in terms of the actual effect , it’s pretty negligable. You know you can only get 200 items back, so you should write to that reality anyway.

StevenL.3761:

Having client side validation is good. Only having client side validation is bad. Our library comes with options to disable parameter validation in release mode (to save some CPU cycles), so there will still be times when a user passes some ridiculous value that doesn’t work, but doesn’t actually violate the protocol.

Alcarin.9024:

Having client side validation is good. Only having client side validation is bad. Our library comes with options to disable parameter validation in release mode (to save some CPU cycles), so there will still be times when a user passes some ridiculous value that doesn’t work, but doesn’t actually violate the protocol.

It’s sound simple to me, when you have a not HTTP 200 response from the server trow an exception to the user and force a client side validation. You should simply stop when you don’t get an 200 response from the server. 414 error instead of 404 it’s a semanthic problem, you should everytime stop when not receiving an HTTP 200 reply from the server, regardless of the exactly error you get.

StevenL.3761:

Guys, the problem was never the status code. The problem is the text/html content-type along with the HTML body.


if (!response.StatusCode.IsSuccessStatusCode())
{
	if (response.ContentType.StartsWith("application/json"))
	{
		// Throw an exception with a meaningful error description
	}
	else
	{
		// Crash with a meaningless error description, because the content-type is not JSON
	}
}

Alcarin.9024:

You cannot have a json response from the API if the API cannot read your request. Your request is stopped by ISS, API never know that you made a request.
If you get a 4xx error, you have to understand why your request is wrong, not why you dont receive an extensive response from the server that explain why your request is wrong.

In this case your request have 2 errors, url is longer than maximum allowed, and you are requesting more than double (550) of max number of items requestable in a single request (200).
Here the problem is in your request, not in the reply from the server, you should be sure to not do such type of request, because you know that those requests are not allowed.

Check if the response code is between 399 and 500, if yes your request should be cleaned.

StevenL.3761:

Let’s break this down into manageable chunks.

You cannot have a json response from the API if the API cannot read your request. Your request is stopped by ISS, API never know that you made a request.

This behavior is caused by a security feature that can be disabled. I’m not trying to steal your data, so why this has to be enabled is beyond me.

If you get a 4xx error, you have to understand why your request is wrong, not why you dont receive an extensive response from the server that explain why your request is wrong.

The request isn’t necessarily wrong. Look at /v1/world_names.json. It returns a 4xx code even though the request is perfectly fine.

In this case your request have 2 errors, url is longer than maximum allowed, and you are requesting more than double (550) of max number of items requestable in a single request (200).

Really think about why we should get a proper error response for 201 IDs, but not for 550 IDs. What is the difference? I’d be glad to hear it.

Here the problem is in your request, not in the reply from the server, you should be sure to not do such type of request, because you know that those requests are not allowed.

You have to draw a line somewhere between what is and isn’t violating the interface. Sending more than 200 IDs is disabled for many good reasons, but it is nevertheless a syntactically and semantically well-formed request. Responding with text/html when the protocol is to respond with application/json however is a clear violation.

Alcarin.9024:

We are really going OT…

You cannot have a json response from the API if the API cannot read your request. Your request is stopped by ISS, API never know that you made a request.

This behavior is caused by a security feature that can be disabled. I’m not trying to steal your data, so why this has to be enabled is beyond me.

I manage a server and I’ll never disable this feature:
1) URLs long than 2000 characters are useless, you are doing something wrong if you need them (in example you should use POST instead of GET request).
2) It’s a security feature, I don’t work in server security (I only try to secure my server), but if someone think that this is a security feature there should be good reasons. I can speculate that GET headers requests are stored in ram until they are completly received (POST should be directly writed to disk I think). When a GET request exceed a certain amount of data, the server stop to accept the request and reply with an error. The client may continue to send the request, but the server drop any further data coming from that request. Disabling such a feature will force the server to wait (and load in ram) the entire request before thinking of a reply. What will happen if you send 2000 simultaneously request each with 200000000 characters with this security feature disabled? The server start to load each request in ram, and wait until each request is completly received, server will start to have ram problem very soon, will start to use swap, will slow down, and will crash if such type of request continue to come. The results are that it’s not necessary a lot of bandwidth to crash a server, it’s only needed that you send multiple request at the same time. So disabling this feature will let GW2 API server be very vulnerable to DOS attacks, that in this case may cause a server crash, not only a service interruption.

It’s never a good idea to disable a security feature, expecially if it is enabled by default.

If you get a 4xx error, you have to understand why your request is wrong, not why you dont receive an extensive response from the server that explain why your request is wrong.

The request isn’t necessarily wrong. Look at /v1/world_names.json. It returns a 4xx code even though the request is perfectly fine.

World name is disabled. It’s the API level that reply with a 404 error, not IIS, it’s a lot different.
Anyway, 404 is a wrong error in this case, maybe 403 is better, but it’s still a semantics problem. The really important thing is that there is a problem with your request, in this case you should not request for world_names.json, because it is disabled.

In this case your request have 2 errors, url is longer than maximum allowed, and you are requesting more than double (550) of max number of items requestable in a single request (200).

Really think about why we should get a proper error response for 201 IDs, but not for 550 IDs. What is the difference? I’d be glad to hear it.

Because they are two really different problem.
With 201 items you will not get a reply from the Database, because it will require too much time and database resource (developer decided that 201 items request are not acceptable).
With 550 item, it’s not a problem that you are requesting 550 items, the problem is that your request URL is too long, your request is not acceptable from the IIS server because may be a security issue (I guess that may overcharge server ram), you will not get a reply from the API (that could reply in JSON that 550 items are too much). The request is stopped by IIS, API never know that you made such request. How could API reply if it doesn’t know that you ever made a request?

I hope that this little schema will let you understand, normaly request come from the top, go until bottom and then come back to the top.


    Client
         |
        IIS      2215 URL length request stop here, don't  go down
         |
      API      201 items request stop here, don't go down
         |
 DataBase  less than 201 items request come here and go back to top
 

API talk with json, IIS talk with predefined error file (in this case we don’t have a 414 error file, so we get a 404 instead)

Alcarin.9024:

Here the problem is in your request, not in the reply from the server, you should be sure to not do such type of request, because you know that those requests are not allowed.

You have to draw a line somewhere between what is and isn’t violating the interface. Sending more than 200 IDs is disabled for many good reasons, but it is nevertheless a syntactically and semantically well-formed request. Responding with text/html when the protocol is to respond with application/json however is a clear violation.

API request will get a JSON reply as much as your request reach the API, to let your request reach the API you MUST do request with less than 2000 characters. As much as you request less than 500 items be assured that you will receive a JSON error, if you exceed 500 items you cannot get a JSON reply.
So the limit to get a JSON reply, is something near 500 items, try with 500 items and you get a JSON reply, try with more than about 2000 characters and you will get a standar erro page.

I understand that those thing are not easy to understand, but your request (have always JSON reply) is not really applicable. I hope now you understand why.

StevenL.3761:

The one thing nobody has addressed so far is the 10 digit precision problem.

I can devise a request that passes validation for every rule in place right now:

  • No more than 200 identifiers
  • All identifiers are numeric, 32 bit integers
  • No two identifiers are the same

…yet my request will result in a crash.

http://pastebin.com/Pipvc4VS

I understand perfectly well why this is happening. You need to understand why this shouldn’t be happening. Not unless you introduce another validation rule that invalidates my request regardless of the maximum allowed query string. But what sort of rule would that be?

Keep in mind that they have to be API-level validation rules. That means forget that the query string even existed before it reached the API. So no checking for length.

Alcarin.9024:

Ok, so the problem is that you cannot verify your url once it is generated (this is another problem, that have nothing to do with API programming!).
In that case you could simply check if items ids are numeric, 32 bit integers, and less than 100000 (max known id is 67359, you will get a too long url with more than 500 items with 5 character each).
I don’t know what programming language you are using, but you could get the integer part of id mod 100000 and you get a “valid” id, or at last you cannot generate an url longer than allowed in that way.

StevenL.3761:

It’s just weird having to write workarounds for limitations that exist only at the transport level. Validation should only occur at the API level. And for that purpose, it shouldn’t matter if the request is encoded as a query string, or flown into the office on a piece of paper by a carrier pidgeon.

darthmaim.6017:

You could just split the request of too many items up into multiple requests and join them into one collection before returning them to the user.
But the RFC 2616 (3.2.1) says “The HTTP protocol does not place any a priori limit on the length of a URI. Servers MUST be able to handle the URI of any resource they serve, and SHOULD be able to handle URIs of unbounded length if they provide GET-based forms that could generate such URIs.” So the API really should be able to handle a request of 200 32bit Integers, so 2000 + the length of the endpoint url.

StevenL.3761:

The maximum length of a valid query string is exactly 2207 bytes.

  • 2000 bytes for the total length of all IDs combined
  • 199 bytes for the delimiters
  • 8 bytes for the optional “&lang=xx” parameter

Valid in the sense that it satisfies all preconditions. Not valid in the sense that any of the IDs actually exist. So the filter should be adjusted from 2048 to 2207. The power of RFC 2616 compels you!

Alcarin.9024:

If I drink 1,5l of milk each day, I have to buy 2 bottle of 1l of milk, maybe I’m wrong, but I’m not used to complain that the milk producer must produce 1,5l bottle.
If you ask to item api about an item, you will get that item info, if you send junk to item api you will get an error, if you send junk to item api server, you get an http error.
It is your responsability to send a correct and understandable request to the api, you cannot complain with developers because you are not able/don’t want to clean your request.
This is what we have, and I really hope that developers don’t waste their time creating single error for every junk request they get, I hope that they spent their time developing new features instead.

200 items with id of 32 bit it’s not a valid request, items id are at maximum 17 bit long, not 32, you must provide a list of 17 bits ids, not 32 bits id.
Items api is able to reply at a list of 200 items id (17 bits each), there is no point in adjusting allowed url length server side.

Sanitize your requests, and you get no problem at all.

smiley.1438:

Guys, please stop derailing this thread. It has been pinned for a reason and was not meant to be a discussion thread.

(can someone please merge the discussion stuff into new topics?)

StevenL.3761:

That’s not how that works. There is no numeric data type that uses 17 bits in any programming language that I know of. The next step up from 16 bit is usually 32 bit, so you have to design for that. Furthermore, my request respects every precondition that is imposed by the API. What about my request makes it “junk”? The fact that my identifiers don’t exist? Maybe I know that, but my code doesn’t.

Light.7493:

Hi. Seems to be a bug with the mumble link coordinates in the latest patch. The x coordinates are displaced a bit to the right. Anyone notice?

Ruggs.8420:

I don’t know if this has been posted but if you are grabbing a page at a time it will break around page 195 if your page size is 200.

for example: https://api.guildwars2.com/v2/items?page=195&page_size=200

I tried dropping it to page_size 150 but it breaks later on, I’m still testing not passing in a page size which seems to be returning 50 by default.

If I were to guess what the problem is, I’d say it’s how you’re joins are working in a x to many situation or multiple x to many situation. I usually handle these by sub queries or separate queries depending on the backend API available.

Ruggs.8420:

Never mind it looks like that only occurs on the last page. I wish there was a call or a way to get the number of pages based on page size or some semblance of meta data. Right now I am actually capturing the 400 error and stopping once I receive it.

darthmaim.6017:

I wish there was a call or a way to get the number of pages based on page size or some semblance of meta data.

There is the X-Page-Total Header

Ruggs.8420:

I wish there was a call or a way to get the number of pages based on page size or some semblance of meta data.

There is the X-Page-Total Header

Wow, now I feel doubly stupid. Thanks.

peterpat.8196:

I finally fixed the problem with the missing items, recipes, events from the previous reset we had about a month ago. I was hoping they would get re-discovered, but as people noticed this wasn’t happening in a timely fashion. It wasn’t a trivial thing to re-seed this, but it is done now. Let me know if you are still noticing anything missing. Thank you.

Some items seem to be missing. For example “Hero’s Dagger”(64288), seems to be missing while “Hero’s Axe”(64287) is there.
But “Mists Stone”(67007) and “Resonating Chaos Orb”(66983) seem to be missing, too.
Additionaly “Master’s Salvage Kit”(23043) is nowhere to be found.
Did I miss something, has nobody “discovered” these items or is there some kind of error for getting the IDs (via wiki)?

PS: jsfiddle example
PPS: At least I’m not the only one missing some items

Dr Ishmael.9685:

@peterpat: There are various systems in the game that have to “report” items to the API as being “discovered.” There are still some gaps in these systems where they fail to report items correctly.

(You’d think it would be as simple as a check on the inventory: whenever an item is added to any character’s inventory, report that item to the API. But apparently it’s not that simple.)

Kishar.3762:

Is there any issue / or is there anyone meeting an issue with the property “name” from /v2/items ?
I still have one error (impossible to read property “name”) since some days and I had no problem before with my code and it is fine if I use the gw2Spidy data.

xanthic.9478:

Some items are now appearing with “/n” (newline) as part of their name. Specific examples being:
https://api.guildwars2.com/v2/items/24863?lang=de
https://api.guildwars2.com/v2/items/24864?lang=de
https://api.guildwars2.com/v2/items/24865?lang=de

Lawton Campbell.8517:

…huh, that’s super weird. I’ll see if I can fix that next week.

Tiscan.8345:

…huh, that’s super weird. I’ll see if I can fix that next week.

Just add a trim() But it looks like that it is mainly a localization error as the line break is visible in-game, too. Probably somebody pressed enter while entering the data where he wasn’t supposed to press enter

Reincarnated.1754:

What a stupid Sticky Topic.
I don’t mean the original Topic/Post is stupid, the original Topic/Post is OK.
It’s the fact you made it into a Sticky is silly.
It’s going to end up as a Topic with a thousand pages you have to search through.

I would Class API errors & bugs as a Category not a Topic

If you want all errors Topics in one place create a sub-forum.

http://en.wikipedia.org/wiki/Internet_forum
Read: Structure, Thread and Stickying

or

Tag the Title of a Topics when you create one.
i.e.
v1/item_details.json[Error]

Having each in a separate Topic enables the Topic to be close deleted or archived when it is no longer required.

Reading though pages of text to find something you may be able to help with is hard and boring. Then when you find some thing, you have to read through the rest of the pages to see if it has been sorted or not.

Mafia bedaH.3592:

hi.. i wana ask..i cant use my API to verify on TCwvw.com….since 2 weekw.. las messenger is " u got banned because use guild tag on acount name, please referify with use API" some kind like that.. but after use the API from here.. still cant log in..please help me.., iam sory if my english is not good.. thanks before,..

Lawton Campbell.8517:

What a stupid Sticky Topic.
I don’t mean the original Topic/Post is stupid, the original Topic/Post is OK.
It’s the fact you made it into a Sticky is silly.
It’s going to end up as a Topic with a thousand pages you have to search through.

Honestly, I’d prefer if people just opened issues on the Github project, but requires an external account etc. I try to copy the relevant stuff over there for more easily navigable tracking.

hi.. i wana ask..i cant use my API to verify on TCwvw.com….since 2 weekw.. las messenger is " u got banned because use guild tag on acount name, please referify with use API" some kind like that.. but after use the API from here.. still cant log in..please help me.., iam sory if my english is not good.. thanks before,..

Sounds like TCwvw.com banned you, not an API issue. You should remove the guild tag from your account name.

Dagins.5163:

This item:
https://api.guildwars2.com/v2/items/29978
Is supposed to be available on BLTC:
https://api.guildwars2.com/v2/commerce/prices
(actually, it doesn’t because it’s “SoulbindOnAcquire”)
But it returns something like this:
https://api.guildwars2.com/v2/commerce/prices/29978
And also this for listings:
https://api.guildwars2.com/v2/commerce/listings/29978

Zorm Eoj.6584:

Typo for “Jeweler” discipline in character data. “Jewler”, missing an ‘e’.

https://api.guildwars2.com/v2/characters/XXX?access_token=XXX

{"discipline" : “Jewler” , “rating” : 400 , “active” : true}

Lawton Campbell.8517:

Typo for “Jeweler” discipline in character data. “Jewler”, missing an ‘e’.

https://api.guildwars2.com/v2/characters/XXX?access_token=XXX

{"discipline" : “Jewler” , “rating” : 400 , “active” : true}

…huh. I’ll have that fixed sometime next week; that’s totally my bad.

Created a tracking issue for this.

Moturdrn.2837:

Just wondering if there’s an issue with some keys again? Got notice from a member they’d lost group access (provided by the API key.) They looked at their keys page and it was seemingly still there, so I re-added the key on my end. After re-running the check, the same message that it’s an invalid key was returned, and it’s no longer within the keys page.

Impulse.2750:

Hey guys,

I’m getting a HTTP status code 400 Bad Request (invalid key) when requesting some keys. Here is an example:

GET https://api.guildwars2.com/v2/account
Authorization: Bearer 1FB1D9DE-CA07-E946-94E1-19FCA99CBC6B12275A8E-1A70-4EF3-B93F-01F4948D5A51

— response —
400 Bad Request
Content-Length: 22
Content-Type: application/json; charset=utf-8
Server: Microsoft-IIS/7.5
Access-Control-Allow-Origin: *
X-Content-Type-Options: nosniff
Date: Fri, 21 Aug 2015 11:57:52 GMT

{"text":“invalid key”}

I have talked to that specific user and he reported that he did not delete this key but it’s not visible on his account (https://account.arena.net/applications) anymore. This issue seems to only affect a ‘few’ key/accounts.

Archomeda.6472:

Got the same issue. All but one key is not working for me anymore. The keys that are not working either get an “invalid key” or “endpoint requires authentication” response.

Lawton Campbell.8517:

Looking into it.

Pat Cavit.9234:

We’re taking a look.

Pat Cavit.9234:

A server deploy changed some behind-the-scenes behaviors which means any keys older than about mid-July are broken. Server programmer is working on a fix, but in the mean time newly-created keys should be fine.

Sorry for the hassle

Archomeda.6472:

Well, if generating new keys isn’t broken, it’s not too bad. Thanks for keeping us up-to-date!

Zorm Eoj.6584:

My key was not just broken, it was gone from the my GuildWars2.com account. Though a newer key that I had created was still in there.

Lawton Campbell.8517:

My key was not just broken, it was gone from the my GuildWars2.com account. Though a newer key that I had created was still in there.

Will have to double-check with the server team to see what effects their data migration had. My understanding was that it was going to fix old keys (e.g., replace the “offline” internal permission with the “_offline” internal permission), not wipe them.

Stefan Larimore.6872:

Old API keys should again be working. My apologies for the disruption.

Tshakaar.6429:

Many items fixed in https://api.guildwars2.com/v2/items these last days but still missing 46682, 46683,46743.
I believe it’s Crystalline Ore, Crystalline Ingot, Xunlai Electrum Ingot.

Archomeda.6472:

Hey there, I’m just here to let you know the authenticated APIs are not working properly since the new build came out:

{"text":"ErrBadData"}

Edit: Seems to be working again

Pat Cavit.9234:

Hey there, I’m just here to let you know the authenticated APIs are not working properly since the new build came out:

{"text":"ErrBadData"}

Edit: Seems to be working again

Hotfixes tend to break the APIs for a bit, we’re working on it

xanthic.9478:

Whatever these new patch items are (EG id 71225) they are not hooked up to the API.

https://api.guildwars2.com/v2/items/71225 (currently returns {"text":“no such id”} )

Side.3489:

The map details for the new borderlands map are not available through the map OR continent API.

Any Informations on that ?

LadyRhonwyn.2501:

I was updating my list of items when I came across this one:

{"name":"",“description”:“Double-click to apply to a piece of armor.”,“type”:“UpgradeComponent” … }

https://api.guildwars2.com/v2/items/63366

According to the image, it should be a superior rune of some kind… (but it has no bonusses!)

Eearslya.6309:

I was updating my list of items when I came across this one:

{"name":"",“description”:“Double-click to apply to a piece of armor.”,“type”:“UpgradeComponent” … }

https://api.guildwars2.com/v2/items/63366

According to the image, it should be a superior rune of some kind… (but it has no bonusses!)

Oddly enough, that item is actually in-game as well. And craftable too, no less!

DarkMagister.7429:

he-he, just as I come in to report that 63366, and it is already here )) And looks like has been for some time already ((

Abominable Snowman.2036:

Does anybody know what’s up with this Legendary Rifle named ‘Quip’ with id 45017?

Lawton Campbell.8517:

Does anybody know what’s up with this Legendary Rifle named ‘Quip’ with id 45017?

It’s a weapon that was wielded by Scarlet during Scarlet’s Playhouse. There’s also a hammer version.

I have no idea why it’s exposed by the API; I guess I should blacklist it.

WuslonHH.2617:

Hi,
while reading recipes and items from the API, 24 items with the following ids can not be found.

item_id: 66177, 66178, 66179, 66180, 66181, 66182, 66183, 66184, 66185, 66186, 66187, 66188, 66189, 66190, 66191, 66192, 66193, 66194, 66195, 66196, 66197, 66198, 66199, 66200

Searching in the recips, I found all items as output for the following recipes

recipe_id: 9640, 9647, 9656, 9643, 9645, 9649, 9641, 9646, 9639, 9644, 9657, 9638, 9650, 9637, 9659, 9658, 9660, 9655, 9651, 9653, 9652, 9648, 9654, 9642

All recipes has the type “Dye” and the array of disciplines is empty.
Could it be this recipes shoukd not exist?

Lawton Campbell.8517:

All recipes has the type “Dye” and the array of disciplines is empty.
Could it be this recipes shoukd not exist?

Uhh, hmm. I went ahead and whitelisted the items, but after pulling up those recipes it indeed seems they are not craftable by any disciplines. I’m not really sure why they exist (or why they’re in the API), so I’m hesitant to blacklist them outright.

I’ll think about it for a bit and then probably remove them — if they’re uncraftable it doesn’t make sense to keep them around.

Think.8042:

So, I was just looking at this wiki article on a Box of Recipes – which says there are 4 recipes that are unlocked by it.

The API on that item says it unlocks recipe 11352 which is the first from that list.

The other 3 items on the list, all say “LearnedFromItem”, but there is no match on their recipe_id on all the items in the API.

If this is a problem, and recipe sheets can now unlock multiple recipes, this would affect some more of the new precursor “bulk” recipe boxes, too.

Otherwise, what am I missing here?

Lawton Campbell.8517:

If this is a problem, and recipe sheets can now unlock multiple recipes, this would affect some more of the new precursor “bulk” recipe boxes, too.

Otherwise, what am I missing here?

Hrm, so recipe unlock items have a new field “extra recipe unlocks”. I’ll need to update /v2/items to expose that — probably won’t have a fix until the patch after next though

ReLiFeD.7418:

Just to be clear, I’m not really a dev and I’m just using Google Docs with a JSON script to get the data.

Anyways, I think I found a bug with the new guild members endpoint. According to it there’s only 93 members in our guild, while there are actually 94 people in it. I’ve also quickly found the person that was missing since it’s one of the captains.

Here I have ordered the list with all captains at the top:
http://i.imgur.com/j2pDmrj.png
There’s only three of them, while there should be four, like you can see here:
http://i.imgur.com/a32OYul.png

If you need more details about it please say so

Lawton Campbell.8517:

If you need more details about it please say so

Can you PM me the API key you’re using?

saphir.8564:

Hi,
one of my Trading Post transactions (its id: 1489725948) has item_id 69595; however https://api.guildwars2.com/v2/items/69595 says that there is not item with such id.
The same situation with: 69023 (transaction: 3355254320); 69445 (transaction: 3355006952) and 69430 (transaction: 3353027601).

Lawton Campbell.8517:

Hi,
one of my Trading Post transactions (its id: 1489725948) has item_id 69595; however https://api.guildwars2.com/v2/items/69595 says that there is not item with such id.
The same situation with: 69023 (transaction: 3355254320); 69445 (transaction: 3355006952) and 69430 (transaction: 3353027601).

Those items all have no name and the “under construction” working sign icon, so they were likely blacklisted from the API. It does look like they’re acquirable (via the jungle pvp reward track) so I’ll poke someone about that.

Thanks for the heads up.

EDIT: Turns out the issue was just on my end; went ahead and whitelisted those items. They should show up in the API at some point.

bostrees.5306:

The image returned for Unidentified Dye https://api.guildwars2.com/v2/items/20323 is a 256×256 image, as opposed to the more standard 64×64 for nearly every item I’ve pulled information on.

Lawton Campbell.8517:

The image returned for Unidentified Dye https://api.guildwars2.com/v2/items/20323 is a 256×256 image, as opposed to the more standard 64×64 for nearly every item I’ve pulled information on.

Yep, that’s just how content works. The game resizes it internally.

:/

ezd.6359:

9102,49445,68690,68708,68731,68816,68828,68831,68843,68866,68906,68921,
68928,68935,68943,68954,68964,69063,69101,69142,69169,69213,69222,69223,
69224,69228,69264,69268,69285,69287,69308,69325,69334,69338,69342,69351,
69390,69405,69413,69418,69426,69455,69492,69505,69508,69554,73390,73729,
75648,75685,75761,76465,76657,76707

^—- ids exist in https://api.guildwars2.com/v2/commerce/prices

but not here https://api.guildwars2.com/v2/items

Tiscan.8345:

IDK if these have already been reported, but a lot of the “Explorer”-Achievements return wrong (? or unexpected) data. Orr for example: https://api.guildwars2.com/v2/achievements?ids=103&lang=en

There are multiple entries in the “bits”-structure with an empty text. As far as I have seen, those do not show up in game in the achivements-tab – only in the API (5 for Orr, 9 for Ascalon, 1 for Kryta and 3 for Maguuma).

And if you take a look at https://api.guildwars2.com/v2/achievements?ids=100&lang=en you’ll see that “Dredgehaunt Cliffs: Tribulation Caverns” and “Timberline Falls: The Foundation Stones” show up twice (as do “Bloodtide Coast: Moriarity’s Hold” and “Gendarran Fields: Brigantine Isles” in the “Krytan Explorer”). This seems to be a more serious bug as those dupes show up inside the game if you look at the achivements (I have 100% map-completion and while both Tribulation Cavers show up as already discovered, only one of the Brigantine Isles entries shows up as discovered)

Lawton Campbell.8517:

IDK if these have already been reported, but a lot of the “Explorer”-Achievements return wrong (? or unexpected) data. Orr for example: https://api.guildwars2.com/v2/achievements?ids=103&lang=en

There are multiple entries in the “bits”-structure with an empty text. As far as I have seen, those do not show up in game in the achivements-tab – only in the API (5 for Orr, 9 for Ascalon, 1 for Kryta and 3 for Maguuma).

And if you take a look at https://api.guildwars2.com/v2/achievements?ids=100&lang=en you’ll see that “Dredgehaunt Cliffs: Tribulation Caverns” and “Timberline Falls: The Foundation Stones” show up twice (as do “Bloodtide Coast: Moriarity’s Hold” and “Gendarran Fields: Brigantine Isles” in the “Krytan Explorer”). This seems to be a more serious bug as those dupes show up inside the game if you look at the achivements (I have 100% map-completion and while both Tribulation Cavers show up as already discovered, only one of the Brigantine Isles entries shows up as discovered)

This is possibly just a case of content being weird — the API dumps out the data as it is. It’s a bit annoying that the API exposes achievement bits that are culled in the in-game UI, but they’re technically still there — since they’re cross-referenced by index in /v2/account/achievements removing them would be tricky (and potentially break things).

It’s important to note that for a lot of achievements you don’t need to complete all bits to be awarded the achievement — for example, Shiverpeak Explorer only requires 175 of 177 bits to be completed. The number of bits required for completion is available in the “tiers” field of /v2/achievements and/or in the “max” field of /v2/account/achievements. Thus, even though some bits are unused, you can still be awarded the achievement.

It’s definitely kind of weird, but my current opinion is that it isn’t broken, per say. I’ll poke someone about the Brigantine Isles dupe bit though — that seems like a bug.

Tiscan.8345:

This is possibly just a case of content being weird — the API dumps out the data as it is. It’s a bit annoying that the API exposes achievement bits that are culled in the in-game UI, but they’re technically still there — since they’re cross-referenced by index in /v2/account/achievements removing them would be tricky (and potentially break things).

Yeah, i guess documenting those “oddities” somewhere is the best solution and to just ignore them in apps.

Thus, even though some bits are unused, you can still be awarded the achievement.

Yeah, I know

I’ll poke someone about the Brigantine Isles dupe bit though — that seems like a bug.

That would be really nice as there are quite a few bug-reports and threads where people ask where to find the areas for those duplicate entries.

Khisanth.2948:

9102,49445,68690,68708,68731,68816,68828,68831,68843,68866,68906,68921,
68928,68935,68943,68954,68964,69063,69101,69142,69169,69213,69222,69223,
69224,69228,69264,69268,69285,69287,69308,69325,69334,69338,69342,69351,
69390,69405,69413,69418,69426,69455,69492,69505,69508,69554,73390,73729,
75648,75685,75761,76465,76657,76707

^—- ids exist in https://api.guildwars2.com/v2/commerce/prices

but not here https://api.guildwars2.com/v2/items

Just ran into these as well. They exist in my transaction history but items wasn’t returning anything.

Lawton Campbell.8517:

Just ran into these as well. They exist in my transaction history but items wasn’t returning anything.

Huh, weird, must have made a mistake when I was going through the whitelist at some point.

Went ahead and whitelisted all items in /v2/commerce/prices that weren’t already in /v2/items.

TorquedSoul.8097:

Is the WvW API misreporting Kills and deaths? I am seeing some maps reporting 0 kills and deaths at the end of the week. I am pretty sure this isn’t the case in Tier 1. The maps that are reporting deaths and kills seem to be terribly low.

I’ve attached my last pull from last weeks (2016-01-31) WvW api. BlueHome is reporting zero kills and zero deaths.

Lawton Campbell.8517:

Is the WvW API misreporting Kills and deaths? I am seeing some maps reporting 0 kills and deaths at the end of the week. I am pretty sure this isn’t the case in Tier 1. The maps that are reporting deaths and kills seem to be terribly low.

There was some really terrible code I wrote in there that was causing both the NA and EU resets to flush all the data. It only recently manifested because we fixed EU event reporting a couple of weeks back, and should be fixed with the next release. Github issue.

LadyRhonwyn.2501:

I was looking through my database and encountered this:

https://api.guildwars2.com/v2/items/30693
https://api.guildwars2.com/v2/items/45016
https://api.guildwars2.com/v2/items/45017

All three are Quip. The first is a Legendary pistol, the second is a Legendary Hammer and the third is a Legendary Rifle….

(oh, the skin for the hammer doesn’t exist)

Lawton Campbell.8517:

All three are Quip. The first is a Legendary pistol, the second is a Legendary Hammer and the third is a Legendary Rifle….

Those are some of Scarlet’s weapons, wielded during the Queen’s Jubilee. I’m not sure how they got onto the API or why they’re called Quip, but this isn’t the first time it’s come up so I’m just going to blacklist them.

:<

rlowdon.2094:

When I use the API URL of:
https://api.guildwars2.com/v2/commerce/exchange/coins?quantity=200

I get back:
{"text":"ErrUnknown"}

EDIT:
Upon further testing, I’m wondering if 200 coins is just too small of a number to be worth any gems?

Lawton Campbell.8517:

Yeah, I think that error message gets kicked back when you’d get less than 1 gem back. I’ll try to make the error message a bit better. There’s an open issue for this on github.

Aikan.5674:

There seems to be an issue with the unlocked recipes, I cannot access them anymore. I can read my bags’ content, so it’s not a scope issue.

Lawton Campbell.8517:

There seems to be an issue with the unlocked recipes, I cannot access them anymore. I can read my bags’ content, so it’s not a scope issue.

Oops, that was my fault. Refactored some code and had kitten in my test coverage so a mis-typed scope requirement went undetected (“inventory” instead of “inventories”). Will have the fix out today.

EDIT: fix is deployed.

LadyRhonwyn.2501:

Either the wallet API is wrong or the wallet in GW2 is wrong, because there’s a difference between the amount of gems I really own and the amount of gems the wallet API returns… It looks like the API never noticed I bought some gemstore items during the SAB festival…

Lawton Campbell.8517:

Either the wallet API is wrong or the wallet in GW2 is wrong, because there’s a difference between the amount of gems I really own and the amount of gems the wallet API returns… It looks like the API never noticed I bought some gemstore items during the SAB festival…

Yeah, the gem balance specifically is bugged. There’s a tracking issue on Github — waiting on a backend change to get deployed to live.

DonTry.1596:

- Since WvW paired up with other servers I get more queues in EBG, I also get more errors from game and keep kick me out of game and wait for queue again, it happen mostly to me when there’s more presure fights in one area like zerg (20+ players) vs zerg (20+ players) fights.
I hope theres’s a way to increase the capacity for people to join EBG other than normal BL and fix the errors that always happend to me.

- I also notice in some gates and walls in the keeps in normal border lands that when it upgrade to reinforce, the outer gate/wall is reinforce and the inner gate/wall is reinforce but looks like a wooden.
I hope this one be fixed too.
Thank you.

Reincarnated.1754:

API:2/wvw/objectives

coord location of “Overgrown Fane” and “Thunder Hollow” incorrect.

Screenshot

Lawton Campbell.8517:

API:2/wvw/objectives

coord location of “Overgrown Fane” and “Thunder Hollow” incorrect.

Screenshot

Thanks for the heads up, here’s a tracking issue. Probably going to require a content change, so the fix won’t be out for awhile

Anhim.3156:

I’m not sure if this belongs here, but there seems to be an issue with https://api.guildwars2.com/v2/skills/6084?lang=fr and https://api.guildwars2.com/v2/skills/6084?lang=es

Both the ‘en’ and ‘de’ versions of the skill work fine, but ‘es’ and ‘fr’ through some oddball errors.

Lawton Campbell.8517:

I’m not sure if this belongs here, but there seems to be an issue with https://api.guildwars2.com/v2/skills/6084?lang=fr and https://api.guildwars2.com/v2/skills/6084?lang=es

Both the ‘en’ and ‘de’ versions of the skill work fine, but ‘es’ and ‘fr’ through some oddball errors.

Whoops, sorry about that. Just deployed the fix.

Reincarnated.1754:

API:2/wvw/objectives

coord location of “Overgrown Fane” and “Thunder Hollow” incorrect.

Screenshot

Thanks for the heads up, here’s a tracking issue. Probably going to require a content change, so the fix won’t be out for awhile

UM?
It’s changed lol

Screenshot

Lawton Campbell.8517:

Well at least Thunder Hollow is correct now.

I’m just going to hardcode the newly incorrect ones to the right places. I’m not yet sure what’s spooked them around the map, but catching them in the act is definitely going to help narrow it down a bit.

EDIT: Change is live. Labels coordinates still are a bit off, but the objective coordinates should be correct again.

Reincarnated.1754:

Well at least Thunder Hollow is correct now.

I’m just going to hardcode the newly incorrect ones to the right places. I’m not yet sure what’s spooked them around the map, but catching them in the act is definitely going to help narrow it down a bit.

EDIT: Change is live. Labels coordinates still are a bit off, but the objective coordinates should be correct again.

Those gremlins are so elusive.
Thank you very much, It looks a lot better now
Screenshot

roj.1085:

This item shows up when I call the account inventory (shared inventory) endpoint:
https://api.guildwars2.com/v2/account/inventory?access_token=myAccessToken
This is what I get back:
[{"id":78599,"count":1,"binding":"Account"}]

However:
https://api.guildwars2.com/v2/items/78599
result:
{"text":"no such id"}

It’s the HoT Level 80 boost, which SHOULD be
https://api.guildwars2.com/v2/items/78586

So, uh. What do I do about that, aside from hard coding a catch?

Edit: spelling and also! I think we’ve found it. I currently have the item active on a warrior sitting in the Silverwastes. So that’s the version of the item that’s in use... why is THAT not in the API?

Lawton Campbell.8517:

So, uh. What do I do about that, aside from hard coding a catch?

Huh. The item id in your /v2/account/inventory is correct, and I’ve just now whitelisted it. It was a bit of a special case and — since it’s never been dropped in the world — it’s never shown up in the item whitelist queue. I’ve gone ahead and added it manually.

The other item is a container that you get after accepting the level 80 boost — not the level 80 boost itself.

I’ve got some code for the account bank and character inventories that pushes any unknown items into the queue automatically; I guess I’d forgotten to add it to the shared inventory slots. Though this is kind of a special-case, here’s a tracking issue to whitelist any future unacquirable items deposited straight into an inventory.

Veleritas.2647:

The following three items are referenced as craftable items, but have no corresponding entry in the /v2/items API endpoint:

76527
72307
70982

For the three item identifiers listed above, the endpoint at https://api.guildwars2.com/v2/items/ gives {"text":“no such id”}

However, these three items are referenced in the recipes API (/v2/recipes). Specifically, they are listed as the output_item_id for three recipes. The (recipe_id, output_item_id) mapping is given below:

(10638, 76527)
(10940, 72307)
(11695, 70982)

These seem to be some sort of guild consumables.

Veleritas.2647:

In addition, the following 7 items exist as buy listings in the trading post API (/v2/commerce/listings) but do not have corresponding item entries (/v2/items):

14907, 14913, 14915, 14918, 21651, 36666, 76527

For example, this URL (https://api.guildwars2.com/v2/commerce/listings/14907) has two buy listings, but no item entry exists (https://api.guildwars2.com/v2/items/14907).

Lawton Campbell.8517:

Eugh, the guild upgrade items are a known issue on my end — AFAIK all of the items associated with guild upgrades are purely advisory (e.g., when you craft them the item specified in the recipe doesn’t get produced — it just gets inserted into the guild’s inventory). That the recipes refer to acquirable items is an implementation detail rather than an invariant.

I’ve not a clue why those items ended up in /v2/commerce/listings without ever appearing in the whitelist queue.

In any case, thanks for the continued reports; I’ve whitelisted all of those.

Veleritas.2647:

Are items supposed to have non-empty item names? I found that the following item ids have no associated item name:

63366, 70994, 71093, 71914, 72587, 72726, 72897, 72971, 73746, 74126, 76651

Not sure how to verify if this is an error or not, since there’s no way to search for these in game..

Great API by the way!

Lawton Campbell.8517:

Hmm, those look like content bugs — those items are mostly acquirable in-game but don’t have localized names. I’ll bug someone about it and see if we can get them fixed. Thanks for the report!

Turak.3286:

when i am usesing something like this:

https://api.guildwars2.com/v2/commerce/prices?ids=12497,12493,12541,12270,38216,12167,12501,12260

i am often getting wrong values at buy quantity and buy unit_price.
By wrong value, i mean 0… And the more IDs i use, the more wrong values i get, of course.
That happens since, lets say, 24 hours and i dont know why.

Lawton Campbell.8517:

Huh, that’s super weird. It’s definitely a bug in one of the backend servers; I’ll notify the people involved and see if we can get it fixed.

(EDIT: I think there are just no buy orders for that item — so the backend server is doing the correct thing and those 0’s are totally legit).

Turak.3286:

But at the time, were i posted this, i checked ingame and there WERE buy orders.
My theorie is, that it had something to do with the release of the patch, because it started 20 hours before the release of the big one and now its working again. And i checked my whole program but changed nothing.

My theorie is, that something overstressed that servers, so that an unfished object was send, but thats only my theorie.

i can confirm that its working now. and i will be here, IF it happens again

THANKS for checking!

(edit: I was thinking about it and i didn t mention the following:
Lets say, i checked 160 items, then maybe 50-60 of them had wrong values.
Those items with the wrong values at buy quantity and buy unit_price and ONLY there, as far as i saw, were fluctuating…so:
one time the values are wrong…a few sec later, they were right again…but then again wrong…but mostly wrong(checked in browser and my program = same result).
items with low mount of buy orders like 10 to 20 are mosty show the right value. It looks to me like the algorithem wich counts the number of buy orders and adds them to another, isnt getting done, till the object is send.
My theorie, thats how it looks to me.)

Turak.3286:

It is happening again. I made a sceenshot from my browser at 8:44 (UTC +1:00).

(EDIT: These are wrong values, there ARE buyorders ingame)
(Second EDIT: its getting better…from 3300 checked IDs only 5 to 40 are showing wrong values)

Lawton Campbell.8517:

Hmm. I’ll continue investigating; I’m pretty sure that this isn’t an API issue at least — the backend servers that handle the trading post were responding with that exact data. My suspicion is that there’s a cache coherency bug somewhere in the trading post servers that causes them to occasionally return erroneous data to both the game and the API.

potatofarms.9241:

I started having an issue with incorrect coord locations for the tile service for the WvW Continent (id: 2) about 2 days ago for a website I’m in the works of making. I figured that it was a self-created bug since I had done a bit of work on it the day before.

Upon further investigation, it appears to happen to the JS fiddle example on the wiki as well:

http://jsfiddle.net/CRRGC/1092/

Notice that the points of interest are positioned correctly, but it looks like the map its self has zoomed in.

The issue appears to have come and gone over the past 2 days, with it being fixed for a few hours then incorrect again a few hours later. It also appears to be different at varying zoom-levels.

Has something changed?

Thanks,
- Aqueducts

darthmaim.6017:

Max zoom of the WvW map is now 6 (instead of 7). It’s best not hardcoding this (like in the example) but use the values returned from https://api.guildwars2.com/v2/continents/2.

potatofarms.9241:

Max zoom of the WvW map is now 6 (instead of 7). It’s best not hardcoding this (like in the example) but use the values returned from https://api.guildwars2.com/v2/continents/2.

Thanks for this!

Turak.3286:

As soon as the update was announced(you know, update will be coming within 2 hours), i am getting tonns of wrong values again.

(Edit: Values are now back to normal)

Markus.6492:

Hello,
Unfortunately the API seems to be switched off completely.
Calling https://api.guildwars2.com/v2 brings only a {"error": “not found”}.

I hope this is only a temporary problem.

greeting

Markus

Reincarnated.1754:

I’m not getting Tile Service when in Sanctum Sprint.
I don’t know if it’s the Tiles missing or the API is corrupt?
Map 919 floor 34.

darthmaim.6017:

@Markus: The game servers were offline because of the rollback (more info), and the API had to be taken down too.

@Reincarnated: Lawton will look at this once he is back from his vacation.

Pat Cavit.9234:

Sorry about the delay on the tiles. The process for updating them is complicated and Lawton’s the only one w/ his machine correctly configured to update them atm.

Impulse.2750:

Hi,

the current matchups are not reflected by the corresponding endpoints.

https://api.guildwars2.com/v2/wvw/matches/2-3


"all_worlds": {
	"red": [
		2006,
		2003
	],
	"blue": [
		2005,
		2013
	],
	"green": [
		2301
	]
},

“all_worlds” is still showing last week’s matchups. Can you please update?

/cheerz

Pat Cavit.9234:

Sorry, I didn’t get the memo that the world linking was updating. EU updated (I needed to update NA slightly before reset as well, sorry)

Impulse.2750:

Thank you, good Sir!

MrHappyFace.3841:

Hi,
I am currently experiencing another issue concerning this request :
https://api.guildwars2.com/v2/commerce/listings/70459
It returns an error.
But since this item is Soulbound on acquire, it shouldn’t be appearing on this list, should it ?(irrelevant)
But when i consult :
https://api.guildwars2.com/v2/commerce/prices/70459
I can see that there’s buyer.
Thanks in advance,
MrHappyFace

Loex.5104:

Hi @ all,

i want to report a Bug within the specializations API + the image renderer.

Some specialization backgrounds are a little out of shape.
For example https://render.guildwars2.com/file/B969F9B27EE82CBF0E4651FD0F760F702CB5FCED/1012101.png

you can see that there’s a large area of nothingness above and on the right side of the image itself. Same here – https://render.guildwars2.com/file/6FCF0E0E0C0E539290A8245F0DA49D0556D71E62/1012110.png

This wouldn’t be a huge problem if the images would habe the same areas of nothingness around them, but for example https://render.guildwars2.com/file/992D53319C5FCD4AE841C592DC2AE91D5906AECF/1012057.png is totally different – so a code based image cutting on my side is not really an option

could you maybe fix the images to get rid of all the empty space around them?

darthmaim.6017:

It’s still the same area that needs to be cropped, in your example the image just expands a little into the otherwise black/transparent part, but thats not visible ingame. The game internally renders them by upscaling the image to 1024×256px (if they are not already), then cropping it to the lower-left 647×136px.

Reincarnated.1754:

API Files.

Have some files gone walkabout?

http://timscloud.comuf.com/GW2/Icons/API1_Files.html

Loex.5104:

API Files.

Have some files gone walkabout?

http://timscloud.comuf.com/GW2/Icons/API1_Files.html

Noticed the same since yesterday evening (here in UTC +1) – Item Icons & stuff are also broken but seem to come back step by step.

Edit: did a little debug-run and saw the foowing result:
Request failed with code: 500
java.io.IOException: Request failed with code: 500

Pretty strange, the images are loadable with my webBrowser but my Client(okhttp3) gets an Error 500

Why can my browser display the images but okhttp quits its service on the same URL cal?

Lawton Campbell.8517:

Why can my browser display the images but okhttp quits its service on the same URL cal?

Caches.

render.guildwars2.com is currently broken ;__;

EDIT: I think I fixed it.

Veleritas.2647:

Hi Lawton,

Do you know which items have the ids of: 14918, 79430, 79491, 79521, 79571? They are listed on the commerce/listings endpoint but do not exist in the items endpoint.

Thanks!

Lawton Campbell.8517:

Do you know which items have the ids of: 14918, 79430, 79491, 79521, 79571? They are listed on the commerce/listings endpoint but do not exist in the items endpoint.

Mostly guild hall decorations, looks like.

I’ve gone ahead and whitelisted them; they should appear in /v2/items shortly.

Veleritas.2647:

There are 20 items which are craftable (appear in the /recipes output_item_id field) but which have item identifiers which do not exist in the /items endpoint. The full list of these items and which recipes they come from are included in the attached TSV file.

Lawton, would you prefer additional bug reports to be posted here, posted as a separate thread, or should we skip this forum and directly create a Github issue (https://github.com/arenanet/api-cdi/issues)?

Lawton Campbell.8517:

Whitelisted all of those items. No idea why they weren’t in the queue.

Lawton, would you prefer additional bug reports to be posted here, posted as a separate thread, or should we skip this forum and directly create a Github issue (https://github.com/arenanet/api-cdi/issues)?

It doesn’t matter too much for me — for whitelist issues it’s usually only a few minutes to fix, so I can just fix them as they come up. For anything larger, I’ll create a github issue one way or another so that I don’t totally forget about it.

Do whatever’s easiest for you. If you do open github issues, open separate issues for each batch of ids so I can close ‘em out and keep track of which I’ve done though.

Veleritas.2647:

Ok, I guess I’ll just continue to post here then.

The following 26 recipe identifiers (from /recipes) have empty disciplines information (they can be crafted but there is no information about which profession can craft this item):

{8677,
9295,
9637,
9638,
9639,
9640,
9641,
9642,
9643,
9644,
9645,
9646,
9647,
9648,
9649,
9650,
9651,
9652,
9653,
9654,
9655,
9656,
9657,
9658,
9659,
9660}

Lawton Campbell.8517:

Hmm, not actually a bug. Those recipes aren’t craftable by any disciplines.

I’ve gone ahead and un-whitelisted them; they might show back up since they’re technically auto-learned (e.g. every account should have them unlocked).

kazerniel.6391:

I brought this up for the GW2Efficiency developer, but according to him it’s an error with the official API:

The dyes’ lightness value seems bugged, and not actually reflecting the lightness of the colours. It results in bugs like this ordering. I checked the numbers in Photoshop, and the colours indeed aren’t ordered correctly by either the lightness or the brightness values.

BoyC.2653:

There’s a small copy-paste issue in the WvW objectives endpoint:
https://api.guildwars2.com/v2/wvw/objectives?ids=38-22,38-15
The 3D coordinates for Langor Gulch are exactly the same as the ones for Bravost Escarpment, they seem to have been copypasted from Bravost.

Lawton Campbell.8517:

Opened an issue for the WvW objectives overlapping.

BLOODAXED.2073:

Doing a bulk search, such as https://api.guildwars2.com/v2/items/?ids=12345,12346,12347,12348,12349 returns “301 Moved Permanently” and then redirects to https://api.guildwars2.com/v2/items/

Lawton Campbell.8517:

Doing a bulk search, such as https://api.guildwars2.com/v2/items/?ids=12345,12346,12347,12348,12349 returns “301 Moved Permanently” and then redirects to https://api.guildwars2.com/v2/items/

You’ve got a stray “/” before the “?”. Use this URL instead: https://api.guildwars2.com/v2/items?ids=12345,12346,12347,12348,12349

Aearon.5691:

Some new achievements are not returned from the API. For example, I have this achievement: https://api.guildwars2.com/v2/achievements?ids=3843

I noticed this issue here: https://metagamerscore.com/forum_topics/5086

Lawton Campbell.8517:

Some new achievements are not returned from the API. For example, I have this achievement: https://api.guildwars2.com/v2/achievements?ids=3843

I noticed this issue here: https://metagamerscore.com/forum_topics/5086

That achievement doesn’t have any data (name/description/etc), nor does it award any AP. It’s probably just a content artifact. There isn’t currently a way to blacklist achievements on the API, but if I had time I’d blacklist it so it’s not being returned from that endpoint.