EVE Structure API is inconsistent and is missing structure type

/universe/structures/{structure_id}/
will return something like:

{
	"name": "V-3YG7 VI - The Capital",
	"owner_id": 109299958,
	"solar_system_id": 30000142
}

almost all other endpoints will return its ID, like
/universe/systems/{system_id}/
has system_id
and
/universe/regions/{region_id}/
has region_id, etc

1) structure_id is missing

Many people making EVE resource websites will want to display a structure icon next to the structure.
(square for NPC station, square with stick for astrohut, square with 2 sticks for raitaru, etc)
This is not possible without knowing the structure type.
This will go very well with the upcoming image server update, which we all have been wanting for quite some time.

2) structure_type is missing

would add “feedback” tag if maximum was 5 tags instead of 3.
would add “inconsistency” tag if it existed and maximum was 5 tags instead of 3.

also, it appears
/universe/structures/
only returns a list of citadels instead of a list of structures including npc stations.

my guess is that people are expected to know about
/universe/stations/{station_id}/
and have to use that as well, which is quite inconvenient because it appears
/universe/stations/
does not actually exist.

3) /universe/stations/ does not exist

additionally, things like location_id specified in results from things like
/markets/structures/{structure_id}/
don’t actually specify if it is a “structure” or “station” and since there is no real ESI documentation there is no way to know which to use.

if this is true, it may make a lot of sense to document that somewhere.
4) it may also make a lot of sense to add another field such as “isNPCstation” or similarly named.

the citadel IDs being returned are similar to 1028540268160.
the swagger API lists most ID inputs as int32, and https://esi.evetech.net/ui/ will return errors if you attempt to query citadel information in most places:
“error”: “failed to coerce value ‘1028540268160’ into type integer (format: int32), ‘station_id’ is required”
(additional note: personally not a fan of the new /ui/, and now we cant use /latest/ anymore to bypass it)

5) if your API is going to send int64 results, you should not be using int32 inputs

the response from
/universe/stations/{station_id}/
includes services, which is useful.

unfortunately, the response from
/universe/structures/{structure_id}/
does not.

6) it sure would be handy to be able to see structure services

I’ll go ahead and address some of your concerns:

This is expected. The other endpoints you mentioned are actually the ones more likely to change. It’s a design decision to remove unnecessary data, since you already have it from the request url.

See this and this.

That would be type_id from /universe/structures/{structure_id}/.

NPC stations are available in the SDE.

See this feature request.

At this point ALL stations are NPC. All player owned ones are now “structures”.

Player structure IDS are Int64, NPC stations are Int32. So of course you can’t lookup a station using a structure ID. You should be using /universe/structures/{structure_id}/ for structure information not /universe/stations/{station_id}/.

This is available in /corporations/{corporation_id}/structures/.

See this feature request.

1 Like

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.