These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

EVE API and Public CREST discussion

First post First post First post
Author
Louis Vitton
Viziam
Amarr Empire
#721 - 2015-03-26 00:31:40 UTC  |  Edited by: Louis Vitton
I seem to be getting some errors when requesting the eve api (xml).

I get an error saying that the XML is malformed for the following calls:


Thu, 26 Mar 2015 00:00:47 +0000 [GET] 0.3318s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:00:53 +0000 [GET] 0.3165s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:00:58 +0000 [GET] 0.3051s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:00:58 +0000 [GET] 0.2929s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:01:04 +0000 [GET] 0.2996s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:01:09 +0000 [GET] 0.3085s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:20 +0000 [GET] 0.3530s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:26 +0000 [GET] 0.3152s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:31 +0000 [GET] 0.3100s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:39 +0000 [GET] 0.3272s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:45 +0000 [GET] 0.3226s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:06:50 +0000 [GET] 0.2940s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:26 +0000 [GET] 0.3377s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:31 +0000 [GET] 0.3098s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:37 +0000 [GET] 0.3094s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:47 +0000 [GET] 0.3118s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:52 +0000 [GET] 0.3198s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:11:58 +0000 [GET] 0.3023s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:16:13 +0000 [GET] 0.3400s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:16:18 +0000 [GET] 0.3317s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:16:23 +0000 [GET] 0.3013s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=98300731 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:16:31 +0000 [GET] 0.3172s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
Thu, 26 Mar 2015 00:16:36 +0000 [GET] 0.3113s https://api.eveonline.com/corp/CorporationSheet.xml.aspx?corporationID=487711934 "0: String could not be parsed as XML"
He dares
School of Applied Knowledge
Caldari State
#722 - 2015-04-05 09:49:46 UTC
A crest endpoint containing all the solar systems and their names would be really useful as currently their is no way to get the solar system without knowing what region and constellation it is in or recursively searching through all the regions and constellations until you find it
Polarina
EVE University
Ivy League
#723 - 2015-04-05 17:01:52 UTC
He dares wrote:
A crest endpoint containing all the solar systems and their names would be really useful as currently their is no way to get the solar system without knowing what region and constellation it is in or recursively searching through all the regions and constellations until you find it

You can get this data easily from the Static Data Export. Is there any particular reason you're unable to use it?

Where are my clothes?

He dares
School of Applied Knowledge
Caldari State
#724 - 2015-04-05 19:57:17 UTC
Polarina wrote:
He dares wrote:
A crest endpoint containing all the solar systems and their names would be really useful as currently their is no way to get the solar system without knowing what region and constellation it is in or recursively searching through all the regions and constellations until you find it

You can get this data easily from the Static Data Export. Is there any particular reason you're unable to use it?


Im aware of that but i thought part of the point of crest was to remove allot of the need for stuff like that. Also crest does already have the solar systems in it just not in an easily accessible way unless you know what region+ constellation you need.
Max Kolonko
Caldari Provisions
Caldari State
#725 - 2015-04-05 22:39:08 UTC
He dares wrote:
Polarina wrote:
He dares wrote:
A crest endpoint containing all the solar systems and their names would be really useful as currently their is no way to get the solar system without knowing what region and constellation it is in or recursively searching through all the regions and constellations until you find it

You can get this data easily from the Static Data Export. Is there any particular reason you're unable to use it?


Im aware of that but i thought part of the point of crest was to remove allot of the need for stuff like that. Also crest does already have the solar systems in it just not in an easily accessible way unless you know what region+ constellation you need.


True, and it would be great if we can get this type of short-hand endpoints. You can always get ALL SYSTEMS (regions -> conselations -> system) and check for version periodically (You can store result in local database/file) and update when needed. Its relatively quick to go trough all of systems.
BlckKnght
Tribal Mist
#726 - 2015-04-17 11:14:05 UTC  |  Edited by: BlckKnght
Bug: The "char/SkillQueue.xml.aspx" and "char/SkillInTraining.xml.aspx" APIs both report incorrect "startSP" values some of the time.

Description: When this is happening, the "startSP" values for some or all of the skills in the queue will be exactly equal to the "endSP" values (that is, it looks like the skill is 100% trained to the next level already).

It doesn't always affect all of the queued skills, some may still show correct "startSP" values. Injected skills that have not yet been trained at all, for example, seem to always have "startSP" correctly showing 0. Sometimes all of the other skills will have wrong "startSP" values and other times there will be a mix of correct and incorrect values.

Even when "starSP" is wrong, the "startTime and "endTime" values in the API result appear to be correct for all of the skills (or at least, they're plausible, I've not actually checked that they match up with the in game info).

This issue seems to be triggered by pausing and restarting the skill queue (as is required when using a jump clone). There may be other triggers for the issue, but using jump clones seems to be the most common way I trigger it. I suppose it might also be related to having a different set of learning implants (since that also happens when I use my jump clones).

The API values remain messed up for a while, but tend to fix themselves at some point. I don't honesty know why or how it gets fixed (maybe when I next add or remove something from the queue, or when a certain skill finishes training?).

This issue is not new, as googling for it turns up this post in the EVEMon thread from more than a year ago (several other users report having the issue happen to them as well, later in the thread). It may be related to an even older issue from 2009, though that one seems to have had the "startSP" values showing the previous level's "endSP" value (e.g. the value before the current training started), not the current "endSP" value. That would actually be the correct result for most of the skills I see bugged now.

I too find it quite frustrating when EveMon flips out and stops telling me how far along my skill trainings are, but it's just passing along the buggy data it gets from the API. I hope the CCP devs will be able to spend a little bit of time to make this API work correctly all of the time. Planning and monitoring of skill training is such a core use of the API, it is a shame for it to be buggy.

Here's a slightly trimmed XML response I get for one of my characters right now. I'd be quite happy to submit any more information, including an API key or whatever else is necessary to help the devs reproduce and fix this issue.

Quote:

<?xml version="1.0" encoding="UTF-8" ?>
<eveapi version="2">
<currentTime>2015-04-17 19:41:52</currentTime>
<result>
<rowset name="skillqueue" key="queuePosition" columns="queuePosition,typeID,level,startSP,endSP,startTime,endTime">
<row queuePosition="0" typeID="3424" level="5" startSP="512000" endSP="512000" startTime="2015-04-17 02:17:03" endTime="2015-04-23 23:34:28" />
<row queuePosition="1" typeID="21603" level="3" startSP="40000" endSP="40000" startTime="2015-04-23 23:34:28" endTime="2015-04-24 12:29:14" />
<row queuePosition="2" typeID="21603" level="4" startSP="226275" endSP="226275" startTime="2015-04-24 12:29:14" endTime="2015-04-27 13:32:11" />
<row queuePosition="3" typeID="21603" level="5" startSP="1280000" endSP="1280000" startTime="2015-04-27 13:32:11" endTime="2015-05-14 18:45:43" />
<row queuePosition="4" typeID="3429" level="5" startSP="256000" endSP="256000" startTime="2015-05-14 18:45:43" endTime="2015-05-18 05:24:25" />
<row queuePosition="5" typeID="26253" level="4" startSP="135765" endSP="135765" startTime="2015-05-18 05:24:25" endTime="2015-05-19 08:16:45" />
<row queuePosition="6" typeID="28164" level="5" startSP="768000" endSP="768000" startTime="2015-05-19 08:16:45" endTime="2015-05-29 16:12:52" />
<row queuePosition="7" typeID="30540" level="1" startSP="0" endSP="250" startTime="2015-05-29 16:12:52" endTime="2015-05-29 16:18:45" />
<row queuePosition="8" typeID="30540" level="2" startSP="1415" endSP="1415" startTime="2015-05-29 16:18:45" endTime="2015-05-29 16:46:09" />
<row queuePosition="9" typeID="30540" level="3" startSP="8000" endSP="8000" startTime="2015-05-29 16:46:09" endTime="2015-05-29 19:21:06" />
</rowset>
</result>
<cachedUntil>2015-04-17 20:38:37</cachedUntil>
</eveapi>


Only the currently untrained skill at "queuePosition" 7 has the right "startSP" value. It might be relevant that the skill at position 5 is partially trained, according to the queue when looked at in the game (I have it about a third done).
Polarina
EVE University
Ivy League
#727 - 2015-04-17 16:42:38 UTC
BlckKnght wrote:
I don't seem to be able to include an example of the buggy XML data in this post (even in code tags), but I'd be quite happy to submit any information necessary to help the devs reproduce and fix this issue.

You can include XML by appending [i][/i] after each less than symbol. Unfortunately, this workaround does not work when used within a [code] tag.

<[i][/i]stuff />


"The API" wrote:
<?xml version='1.0' encoding='UTF-8'?>
<eveapi version="2">
<currentTime>2015-04-17 16:29:16</currentTime>
<error code="106">Must provide userID or keyID parameter for authentication.</error>
<cachedUntil>2015-04-18 04:29:16</cachedUntil>
</eveapi>

Where are my clothes?

BlckKnght
Tribal Mist
#728 - 2015-04-17 20:00:06 UTC
Polarina wrote:

You can include XML by appending [i][/i] after each less than symbol. Unfortunately, this workaround does not work when used within a [code] tag.

Thanks for this info. I've edited my post above to include some example XML data from the API that's almost all bugged.
Pete Butcher
The Scope
Gallente Federation
#729 - 2015-04-19 10:58:12 UTC
Max Kolonko wrote:
True, and it would be great if we can get this type of short-hand endpoints. You can always get ALL SYSTEMS (regions -> conselations -> system) and check for version periodically (You can store result in local database/file) and update when needed. Its relatively quick to go trough all of systems.


I initially didn't want to post this publicly, as some people might take the "don't hurt my child" approach and become defensive of their work, instead of rationally looking at it, but here goes.

Currently CREST follows an interface design pattern called HATEOAS. I dare say the person who chose this didn't really understand what it's about. It's not about having the flexibility to change endpoints without recompiling the client. It's about designing a discovery-centric interface. Clients who wish to discover what resources are available and what actions can be taken on them, should use this approach. But it has a downside - if a client is usecase-centric, as most of EVE 3rd party apps, a discovery-centric interface is a wrong tool for the job. In this case, the client already knows what resources are out there (eg. from SDE or XML API) and knows what actions can be taken (eg. "if I see a tradeable item, I know I can query it's market orders" or "if I know a region exists, I know I can query it's solar systems"). For such clients, the API should be designed around those use cases. It should allow clients to quickly and efficiently execute given tasks. Of course, there are discovery-centric apps out there. An example might be eve-central (note: I don't really know how they implemented it, I just give an example how it could be implemented). It doesn't require specific knowledge of a specific resource or action. It can walk the tree, discover regions, discover items and discover market orders dynamically. But if your application wishes to do X on Y, HATEOAS is not the way to go.

To solve this problem, people from the enterprise world with real experience in designing interfaces, came up with versioned WADL interface definitions. It allows server to maintain flexibility and is usecase-centric. It also doesn't couple clients with specific interfaces, as all is dynamically defined. It seems this is the right tool for EVE 3rd party apps. Why wasn't it implemented? I don't know. I can only speculate, someone read about HATEOAS, became fascinated and didn't really consider the implications.

Given how much displeasure is with current CREST implementation, I propose making a parallel versioned WADL interface, so the majority of 3rd party apps can do their jobs without battling bad interface design. After all, APIs are for programmers and clients made by them. They should take into consideration real world use cases, not some theoretical gibberish which doesn't apply at all. In short - give us the tool we actually need, not the tool you envisioned.

Also, since current CREST is a second approach, I suspect: http://en.wikipedia.org/wiki/The_Mythical_Man-Month#The_second-system_effect
Don't walk this path, please.

http://evernus.com - the ultimate multiplatform EVE trade tool + nullsec Alliance Market tool

Xatinni
Republic Military School
Minmatar Republic
#730 - 2015-04-30 16:48:57 UTC  |  Edited by: Xatinni
Are the PI endpoints updating correctly, have queried char/PlanetaryPins for a particular Char/Planet a few times over the last 24 hrs and Storage facility/Launch pad storage content are not being reflected/updated correctly

e.g. just viewed in-game and ran query
Lava Storage Facility currently shows in-game
Heavy Metals 32242units
Non-CS Crystals 28847units

but API call for the same Planet only contains a single Lava Storage Facility Pin entry with no content

pinID="1017983213366" typeID="2558" typeName="Lava Storage Facility" schematicID="0" lastLaunchTime="0001-01-01 00:00:00" cycleTime="0" quantityPerCycle="0" installTime="0001-01-01 00:00:00" expiryTime="0001-01-01 00:00:00" contentTypeID="0" contentTypeName="" contentQuantity="0" longitude="-5.35745290249" latitude="0.804586255394"

and
Same Planet - Launchpad in-game
Consumer Electronics 2030Units, but API shows 1405Units

pinID="1017983213367" typeID="2555" typeName="Lava Launchpad" schematicID="0" lastLaunchTime="0001-01-01 00:00:00" cycleTime="0" quantityPerCycle="0" installTime="0001-01-01 00:00:00" expiryTime="0001-01-01 00:00:00" contentTypeID="9836" contentTypeName="Consumer Electronics" contentQuantity="1405" longitude="-5.35231085139" latitude="0.781565901368"

Have screenshots and saved API queries results if a support ticket is required

Have doubled checked CharacterID and planetID to ensure Im comparing Visual in-game and API call correctly
Plaid Rabbit
Enlightened Industries
Goonswarm Federation
#731 - 2015-05-13 02:12:35 UTC  |  Edited by: Plaid Rabbit
Idea: Expose more type data in http://public-crest.eveonline.com/types/34/
As the APIs get better, I need the SDE less... but I still need it for type data though, and that updates most every patch. Please include both the packaged and unpackaged volume in the types api. (edit: throw the mass in, and anything else useful from invTypes)

Idea: Make it easier to call the market API for multiple items.
Description: Right now, you have to call the market API per item type, plus once for buy orders, once for sell orders. I'd like to be able to call it in bulk. It'd be a lot less painful on your severs and mine if I could issue one request to dump the entire region, then to issue ~9000 separate HTTP requests to do the same work (which is what I'm doing currently). Or you can implement some kind of paging, so I can page through the market 100+ items at a time. Anything other then me writing code that sits at the request/sec cap to get the status of the market.
Phil Miller
Deep Core Mining Inc.
Caldari State
#732 - 2015-05-13 02:29:45 UTC
Plaid Rabbit wrote:
Idea: Expose more type data in http://public-crest.eveonline.com/types/34/
As the APIs get better, I need the SDE less... but I still need it for type data though, and that updates most every patch. Please include both the packaged and unpackaged volume in the types api. (edit: throw the mass in, and anything else useful from invTypes)

Idea: Make it easier to call the market API for multiple items.
Description: Right now, you have to call the market API per item type, plus once for buy orders, once for sell orders. I'd like to be able to call it in bulk. It'd be a lot less painful on your severs and mine if I could issue one request to dump the entire region, then to issue ~9000 separate HTTP requests to do the same work (which is what I'm doing currently). Or you can implement some kind of paging, so I can page through the market 100+ items at a time. Anything other then me writing code that sits at the request/sec cap to get the status of the market.


Both of these would be great, especially the second one. Updating a whole bunch of items across a couple regions is a rather intense process right now.
Gyala Frey
Center for Advanced Studies
Gallente Federation
#733 - 2015-05-16 01:46:22 UTC
Is there a means of determining the end date of multiple character training slots that have been enabled?

I've crawled through what I believe to be the relevant sections of the API and don't see a node with that information.

I did find where I can check if each character has an active training queue, but nothing that indicates when it ends.
CCP FoxFour
C C P
C C P Alliance
#734 - 2015-05-16 12:26:39 UTC
Gyala Frey wrote:
Is there a means of determining the end date of multiple character training slots that have been enabled?

I've crawled through what I believe to be the relevant sections of the API and don't see a node with that information.

I did find where I can check if each character has an active training queue, but nothing that indicates when it ends.


Google: site:https://developers.eveonline.com/ multi character

Result: https://developers.eveonline.com/blog/article/jump-clones-implants-skills-and-more

:)

@CCP_FoxFour // Technical Designer // Team Tech Co

Third-party developer? Check out the official developers site for dev blogs, resources, and more.

Gyala Frey
Center for Advanced Studies
Gallente Federation
#735 - 2015-05-16 15:44:07 UTC
CCP FoxFour wrote:
Gyala Frey wrote:
Is there a means of determining the end date of multiple character training slots that have been enabled?

I've crawled through what I believe to be the relevant sections of the API and don't see a node with that information.

I did find where I can check if each character has an active training queue, but nothing that indicates when it ends.


Google: site:https://developers.eveonline.com/ multi character

Result: https://developers.eveonline.com/blog/article/jump-clones-implants-skills-and-more

:)



Thank you so much for the response. It turns out the eZet.EveLib API is bugged for this feature. I got the source and fixed it once I had the Xml reference I needed. Now I can get the data I was looking for!
CCP FoxFour
C C P
C C P Alliance
#736 - 2015-05-18 09:41:39 UTC
Gyala Frey wrote:
CCP FoxFour wrote:
Gyala Frey wrote:
Is there a means of determining the end date of multiple character training slots that have been enabled?

I've crawled through what I believe to be the relevant sections of the API and don't see a node with that information.

I did find where I can check if each character has an active training queue, but nothing that indicates when it ends.


Google: site:https://developers.eveonline.com/ multi character

Result: https://developers.eveonline.com/blog/article/jump-clones-implants-skills-and-more

:)



Thank you so much for the response. It turns out the eZet.EveLib API is bugged for this feature. I got the source and fixed it once I had the Xml reference I needed. Now I can get the data I was looking for!


:D Glad to hear it.

@CCP_FoxFour // Technical Designer // Team Tech Co

Third-party developer? Check out the official developers site for dev blogs, resources, and more.

Verite Rendition
F.R.E.E. Explorer
#737 - 2015-05-21 21:58:11 UTC
Hey FoxFour, did you guys make a change to the API servers on the 20th, around 14:00?

Wollari ended up having to tweak DOTLAN after he started getting SSL3_GET_RECORD:wrong version number errors. Not really a huge deal, but just checking in since nothing was announced.
CCP FoxFour
C C P
C C P Alliance
#738 - 2015-05-21 22:40:29 UTC
Verite Rendition wrote:
Hey FoxFour, did you guys make a change to the API servers on the 20th, around 14:00?

Wollari ended up having to tweak DOTLAN after he started getting SSL3_GET_RECORD:wrong version number errors. Not really a huge deal, but just checking in since nothing was announced.


Um... not that I know of... will check tomorrow when back in the office.

@CCP_FoxFour // Technical Designer // Team Tech Co

Third-party developer? Check out the official developers site for dev blogs, resources, and more.

Jack Tronic
borkedLabs
#739 - 2015-05-21 22:41:22 UTC  |  Edited by: Jack Tronic
Verite Rendition wrote:
Hey FoxFour, did you guys make a change to the API servers on the 20th, around 14:00?

Wollari ended up having to tweak DOTLAN after he started getting SSL3_GET_RECORD:wrong version number errors. Not really a huge deal, but just checking in since nothing was announced.


Speaking of SSL issues.

FoxFour, any reason why the api server only supports TLS 1.0 and nothing newer?

https://www.ssllabs.com/ssltest/analyze.html?d=api.eveonline.com

Though that seems to be something all the eveonline.com domains do.
https://www.ssllabs.com/ssltest/analyze.html?d=eveonline.com&s=87.237.39.180&latest

There's also the fact all the browsers are marking CCP's certificate as deprecated due to using SHA1 but that's not an API issue ;)
TheSmokingHertog
Julia's Interstellar Trade Emperium
#740 - 2015-05-21 22:42:21 UTC
" [EVE API] Cache time on char/CharacterSheet reduced from 6 hours to 1 "

This is still listed as defect, but was released according to the fix list.

"Dogma is kind of like quantum physics, observing the dogma state will change it." ~ CCP Prism X

"Schrödinger's Missile. I dig it." ~ Makari Aeron

-= "Brain in a Box on Singularity" - April 2015 =-