Discussion External API Requirements Thread

Status
Thread Closed: Not open for further replies.
I think a lot of posters have already covered most everything I could think of, so I'd just like to add my support primarily for marketing/trade and system data, but also as much data of every kind as possible. When it comes to raw data, more is better :D

Wishlist:
  • Market commodity data (buy/sell/supply/demand) on a per-station basis - limited to only the stations I have visited recently, if necessary, though I see how this information could be pooled through community efforts
  • Station/planet/system data (allegiances/governments/economies/system factions and their current status)
  • Ship/outfitting data (ship types/prices/hardpoints/internal/module types/data/availability)
  • System traffic data (like in the newsfeed)
  • Bounty data (like in newsfeed, but maybe also some kind of most wanted list?)
  • Pilot data (allegiances/standings on per-system basis and global/ranks/military ranks/finances/query other pilots)

As for the uses of the data, I am interested in developing my own data analysis tools, primarily for friends, but also for the broader community if they proved to be useful. I've already been using Google Spreadsheets to compile, filter, and prioritise market data, as well as catalog some cartography data too. I see the potential for some very sweet, functional apps/web apps developed by the community off the back of it, be it market trending, stock tickers, galactic control maps, cartography stats, and so forth. Not knowing the full extent of Frontier's plans for the future of ED, it's possible that some of this will be catered for directly anyway in due course?

(Next part in spoiler tags in case it is considered discussing merits)
Whether or not you choose to provide the data to players in a convenient form such as an API, they will always have ways of gathering, pooling, and processing the data -- be it through OCR, or manually typing figures into a spreadsheet. That's part of human nature. The downside of this is that it takes players out from the game and forces them into technical or otherwise tedious workflows, just so they can maximise their time and efficiency when they do play, breaking the immersion and losing valuable play time. If the functionality isn't incorporated directly into the game, then making it as easy as possible for community developers and, by proxy, players seems like the next best thing. Less hoop jumping, more playing!

I think the best companies out there are the ones who open up with and embrace the community spirit of collaboration and external development :)
 
I would like to see:

- The galaxy map available, perhaps silently rendered on the client playing ED at the time, plus ability to set routes and see data
- This would let me multitask (say, plotting route while FSD charging or waiting for the painfully slow hangar lifts!)
- Views of each screen (such as the scanner, left/right panels)
- A second screen for combat
- The ability to display trade data (not just in the API but in-game) from systems visited in the last 24 hours
- I wouldn't mind request limiting to prevent trading websites giving unfair advantages
- Ship status
- Hull, shields...
- Weapons systems
- Extra buttons for combat, but I know this could be slightly too beneficial
* Comms *
* So I can respond while controlling my ship!

Of course, I would appreciate a simple login system too, but my main idea:

The option to render things properly as they appear in-game, to provide a seamless UI experience, such as:
- Ship stats
- Info panels
...

I really like some of the ideas here.
 
I already wrote my own little application and deployed it for free public use (see my signature). For me it is important before talking about API to clarify things about assets/entities existing in Elite: Dangerous. Until now there is no documentation how things are related to each other. All have to be find out by trial and error. My app is using a MySQL database, so I have to use some underlying database definition scheme. And it is a pain in the ass having to change it later because you found out thing are not the way they looked like in the beginning. Some examples:

1. How are allegiances, starsystems, minor factions, starports, econmies etc. etc. related to each other. Which is basic data and which is inherited data (i.e. must be treated as foreign data in underlying databases). I know by trial and error now that system economies are derived (somehow) as the sum of economies of the starports in that starsystem. System allegiance is directly derived from the allegiance of the ruling minor faction and so on. This should be documented in some way, so people who write apps don't have to waste time by trial and error approaches.
2. Document how assets/entities are defined in the way that it becomes clear, how many values an entity represent (for example in the beginning I thought minor faction state can handle just one state, but now I see it can handle several at the same time, like "boom" and "expansion critical"). Other example: right now I assume every starsystem harbours 0, 1 or 2 economies. But i can't be sure about it. Perhaps later I find a starsystem with 3 or more different economies and have to change my database and app code again.
3. There needs to be documented somehow which values are unique and which not, for example starsystem names are unique while starport names are not(!). This means I have to change my database definiton scheme because I found out about it "too late" by trial and error.
4. Also I miss a documentation which entities are constant and which can be altered as the galaxy progresses. Star types probably don't change, but can starport types change, once the stations are created? How about minor faction's allegiances? etc.
5. It would be nice to document the value range of entities, i. e. what economy types are possible etc. But that's a minor issue for me, as i usually define range tables, where the commander can define the range itself by adding/modifiying/deleting records to it.
6. FD statements about future extensions, for example about starsystem coordinates. They are ingame already, but will they be made accessible or not in future. If not I have to implement my own trilateration code, if ingame coordinates are made accessible in near future I can skip this trilateration feature, because it would become redundant.

Only after that all is done I would be interested in an API (to a limited extend). For me that API should be just there to take away the monoton tasks of transfering the data from the game to the app's database (for example trading data). But imo the API should only provide information which the commander would get ingame anyway. I am not a fan of crowdsourced trading data and the like, as collecting data by travelling yourself to different systems is essential part of the game. It's much like in online poker apps are allowed on most poker sites which tracks your own hand histories only. Everything beyond this should not be allowed. You cannot really prohibit it (because it cannot be controlled efficiently anyway). But at least it should not be enforced.
 
Last edited:
It would be nice if an API could be used to reconstruct any form of out-of-the-game map that could somehow be layered with for example:
- Number of [online] players in each system
- Number of jumps between systems
- Number of killed cmdr's / AI's in each system
- Fuel usage in system
etc.

You have to think carefully, since it's probably a lot of data. Perhaps quantify in areas of the galaxy instead of individual systems?

The above data would be great, apart from what everyone else stated above :)
 
API Request

For Voice Attack like programs and VR devices like Oculus I need some API
1. We need some ship status:
  • State of Cargo Scoop, Landing Gear, Silen Running, Ship Lights, Hardpoints, Flight Assist, Mass Lock - On/Off, Deployed/Retracted, 0/1. It will be usefull for settings up led lights color on Saitek X52 switches and other indications of current ship state.
  • Current System/Station Name as String, For using with some of search sites and software.
2. And some more ship controls feedback:
  • When trying to turn on or deploy Cargo Scoop, Landing Gear, Silen Running, Ship Lights, Hardpoints or Flight Assist we can get a responce based on avaibility or success status of command with some extra information e.g. Deploy Landing Gear - responce 0 if OK, 1 if mass locked, 2 if on station, 3 if in hypercruise etc.
  • Using Shield Cell banks, Chaff Launcher using weapons - inform with feedback if no ammo
3. Ships panels controlling:
  • Hotkeys for Launch, Enter Hangar, Return To Surface, Starport Services, Navigation/Transactions/Contacts/Sub-targets/Cargo Tab, Status/Modules/Fire Groups/Cargo/Functions.
  • Starport Services
    • Home Menu Open
      • Refuel
      • Refuel All
      • Repair All
      • Reload All
    • Munitions Menu open with response if not avaible
    • Repairs Menu open with response if not avaible
      • Repair All Ship Integrity
    • Bulleting Board Menu open with response if not avaible
    • Contacts Menu open with response if not avaible
    • Outfitting Menu open with response if not avaible
    • Shypyard Menu open with response if not avaible
    • Commodites Market Menu open with response if not avaible
    • Universal Cartographics Menu open with response if not avaible
      • Sell all exploration data
  • Contacts Tab: Request Docking with response(Access Granted, Access Denide Come Closer etc)
  • Sub-Targets Tab: Select Subsystems Commands like Select FSD, Select Power Plant, etc
  • Functions Tab: Faction Selection(Select Empire, Select Federation etc), Rotation Correction, Turret Weapon Mode and other functions will be useful
4. Maps and Navigation
  • Open System Map hotkey
  • Gamaxy Map
    • Select Info/Navigation/View/Options Tab
    • View Tab
      • Set Map Mode Realistic/Map
      • Show By Population/Allegiance/Goverment/Economy/Cartographics Shop/Trade Data Shop
      • Show By Size Population Low/Mid/High etc
      • Show Trade Routes For <commodite name>
    • Options Tab
      • Show/Hide Grid Command
      • Show/Hide Navigation Markers Command
      • Show/Hide Star Names Command
      • Show/Hide Nebula Names Command
      • Show/Hide Region Names Command
      • Show/Hide Constellations Command
  • System Map need some hotkeys to navigate
 
The client end is the least of the problem: ED is really pretty light on CPU. I suggest you actually establish that there is a performance issue before you start optimising for it.

A binary format is a bad idea unless there is some particularly good reason for it. I don't see any reason for it here. See http://www.faqs.org/docs/artu/ch05s01.html for a short discussion on why binary formats are unwise.

Time and place. A REST API for system and station info is fine.

For streaming live market data as it happens ... not so much.
 
I don't care for apps, IOS or Android(where is the promised app that was released on IOS but not on android?), No phones allowed on the bridge of my ships! You'll be launched out of my torpedo tubes!

I care about better Voice Attack integration, you guys need to get the game to feedback info, like what page your looking at and being able to select certain pages (contacts page as an example) so VA can get better direct control of those things. This would expand gameplay with VA even more then it already is. So get some people working on that and not apps as I want my game on the screen in front of me and not on a device that technically doesn't exists anymore in ED time :p

So please, look at PC tools integration and not cheap phone apps. Thank you! Love the game :)
 
Already been said a few dozen times but i will say it again just to add weight to the final output:
commodities trade data for visited systems/stations would be awesome
(Problem it would solve: Means I can pretend like my million dollar space ship has come equipped with a spread sheet to i can record trade prices at the stations i visit without having to use a pad and pen :)
 
Hello.


I play using an Oculus DK2, have ordered a throttle and joystick and am considering building myself a chair that would pitch and roll with the game.


This is still just an idea but I have the time and skills to make this (I think). The chair movement would copy the movement of the ship image in the holographic HUD in-game (were the shield and hull strength is displayed).


So, I think I need ..... or what I would like, if possible please, would be:


Pitch and Roll (of the ship, not joystick angles please)
Yaw and Heave, though I probably wont use these in the beginning but, maybe in the future.
Thrust (again, not joystick position but the acceleration and deceleration of the ship please) and again, I probably wont use these at the start but in the future maybe.
Weapon impact and intensity.
Crash/contact with station or another ship impact and intensity.


Also, you have made an awesome game, one of my favourite things to do is sit in an asteroid field, turn off flight assist, give it a nudge and tumble, it looks gorgeous.
Its a bit disappointing when I take the Oculus off, back in the real world.


Cheers very much
 
Pitch and Roll (of the ship, not joystick angles please)
Yaw and Heave, though I probably wont use these in the beginning but, maybe in the future.
Thrust (again, not joystick position but the acceleration and deceleration of the ship please) and again, I probably wont use these at the start but in the future maybe.


Cheers very much

Been thinking about this a bit, and there have been a few discussions around the office.

Pitch/Roll - Taking this value from the ship display on the HUD (Shield and Hull %). The zero point is fine because when you release the joystick the ship always returns to the same pitch and roll, so we could take that as zeropitch and zeroroll. Then for roll, +90 ( 90 degrees roll starboard ), -90 (90 degrees roll port ), and for pitch +90 (90 degree pitch up ) and -90 ( 90 degree pitch down ) and every degree in between.

Yaw can be done the same as pitch and roll, zeroyaw for the center point, +90 to starboard and -90 to port and every degree in between.

Heave ................... erm .......

Thrust, this could just be a current speed out, then I can write something to sample the speed over time to calculate acceleration ......... or you could do that and give me the acceleration/deceleration in m/s squared

Cheers very much
 
This is great. Gathering requirements first before starting, and even halting development of the companion apps while a lot of people are waiting for it (including me) is a brave, but a very good step.

Disclaimer: The following stuff is markdown formatted. So if you want a good lineout and structure of this, copy&paste to the markdown editor of your choice :)

I have a 'Commanders Social Network' in my mind. A bit like 'Spacebook': A way to see what you and your friends have been up to recently.

The vision is a timeline with all your events, and you see it updated with all new in game events since you last logged in every time you visit it.

You would be able to define public timelines that can be seen by your friends or publicly. Either by selecting single events that should be published / shared (i.e. a very high trade profit or a special kill), or by a ruleset (i.e. automatically share all changes I do to my ship to my Techie-friends and all systems I enter to my Roady-friends).

A first step to that would be your own commanders log. Also see the DDF discussions on the log book for what information should be available here, but mainly this would consist of a read-only API for the following data:

# API scope

When talking about an API, I am talking about a RESTful web service layer, accessible under a publicly available URI, hosted by FD alongside the game servers.

## Read only API

* Flight history
* Systems with arrival / leave timestamps when available
* Stations with dock / undock timestamps when available
* Trade history
* how much of what did I buy where and when for what price
* how much of what did I sell where and when for what price
* What cargo did I scoop up when
* What cargo did I jettison when
* Mission history
* Count of abandoned missions (statistics)
* Completed missions in detail: What mission, accepted where and when, completed where and when, credits gained
* Ship data
* When gained a new ship, info on when and with what iniitial equipment
* what component was upgraded on what ship when and where for what price (ideally list both the old and the new component, to avoid searching for the full history to determine the old one)
* Repairs done: when, what components, how much credits, or "All, x credits"
* Fuel bought
* When implemented in game: Ship name.
* Fight history
* NPC kills with name and timestamp and bounty if a voucher was gained
* PC kills with name and timestamp and bounty if a voucher was gained
* Damaged components (when, what state, can be logged once after a full fight, like 'left fight with x percent hull, x percent life support' etc.).
* info when and where a voucher was reclaimed and of course the value
* if possible statistics per fight on shots fired, shots hit for hit/miss ratio, missiles used
* Exploring history
* Objects scanned, and when (listed as unexplored)
* Detaild info gained on what object and when (after scanning and unexplored object)
* Selling of exploration data, when, of what system, how much credits gained
* Commander data
* Commanders Name
* Current position (system / station)
* Current credits
* Rankings
* Fighting rank gained, when
* Trading rank gained, when
* Explorer rank gained, when
* Standings with factions
* Rep gained / lost, cause, timestamp

### Nice to have:

* Ship image API (for showing the sip of a user):
Retrieve an image of your current ship, with current paintjob and decals, maybe even in the hangar. There should be two options, as the user likes:
* normal view
* with extended hardpoints where you can see the weapons

## Read / Write API

A second step for a Commanders social network would be access to friend list. This time a fully working read *and write* API would be nice for this. I followed this thread and a write API is currently not something hogh on the prio list. I understand that this has security implications. However, there already is some sort of web application write access to the game in place, as the store somehow 'writes' purchased ship skins into the game.

Operations that should be available:

* Listing current ingame friends
* Accepting friend requests
* Sending friend requests
* Managing groups
* Managing blocked players

In short: Everything that is currently possible in game for Friendlist management.


## Technical ideas
What could be done would be like this:

In his account, a Commander can generate an API Key for read access to his data, and optionally another API key for write access. He then could enter this API key into a third party app (i.e. the Commanders Social Network), so that the application is able to access the information.

Alternatively application authorization measures (like applications requesting access to dropbox or twitter) could also be implemented. This way the user can see all applications that have access to his data in his account and also disable them there as need be.

On any suspicious action, the access key could be temporarily disabled and the player could be notified. He has the ability to invalidate his keys or granting of permissions at any time.

For the idea of a social network, every single event or factum exposed through the API should be identified by a unique ID. This way single events can be identified and requested, without the need to duplicate the storage of the events. So the application would only be required to store the IDs of the event when such an event should be shared with others, instead of making a full copy of the event store from the game.

# Requirements for the API:

The API needs to

* support filtering by properties
* support searching in properties
* suppport sorting
* support pageing (in filtered, sorted lists)
* answer requests fast (i.e. < 400ms)
* set valid cache headers (so that an external system could access it through an http reverse proxy (Squid, varnish) to reduce load
* limit requests, to prevent abusive behaviour (while in fact I expect this social network to create pretty much load, especially when not duplicating the event store)
 
API suggestions

For me, the two things I'd like to see most:

1. Map data
Detailed information about the systems in some volume of surrounding space. Whether that's within a certain number of light years of the central system, or maybe a maximum number of jumps ?
Distances between stars, economy & government types, planets, what kind of ports, etc. etc. all the good stuff already discussed in previous posts.
The miner in me would want enough information to be able to, say, find the nearest class III gas giant, and see what type and quality of rings it had, what the traffic through that system was like and so on. I like the idea of finding a gold-mine (quite literally) that no-one else has exploited :)

2. Live market data
Live market data for local star systems, again within either a given distance or number of jumps.
To enable me, in conjunction with 1 above, to quickly find even half-way decent commodity trade routes.

I don't see either of these as game-breaking, cheaty or whatever - all they'd do is save time. I can do all of the above if I fly around for a few (tens?) of hours, but I'd rather spend my in-game time more profitably and hence enjoyably :)
 
Only external API that im interested in is for simvibe, so I can have proper tactile feedback through my transducers instead of just using the game sounds.
 
hi there,

an external API would be a very useful feature, as at the moment im having to rely on manual updates. Whilst I do appreciate everyone's effort, an API would make it a lot easier for everyone.

Myself id at-least like to do two things with an API;

1, A player query; so I can get details of what ship they have, they wealth, etc. I could then make some kind-of leader-board, or work out where people are in the universe (I could probably do much more with that kind-of data),
2, System query; which would return the contents of a system, x,y,z (of system and objects), and the prices on each station. With this information my trade-helper could use much more up-to date information (which hopefully will help traders), I already do CSV importing, so adding JSON via remote server wouldnt be a problem.

There is a lot of scope with an API, and im sure there are some really good examples what can be done with it. However even a basic API would be better than nothing. Although how much data Frontier is willing to part with is another question. I personally think third party tools can only help both game and player. It would be good if sites would be allowed to work with Frontier to develop the API.

At the moment I have my own database for the data, I would personally like to use an API to update it.
 
Last edited:

Slopey

Volunteer Moderator
Only external API that im interested in is for simvibe, so I can have proper tactile feedback through my transducers instead of just using the game sounds.

But SimVibe only works off the audio feed, so what sort of API are you looking for because SimVibe doesn't support any really. It's just a glorified way of transmitting bass to multiple transducers from the audio. Doesn't use an actual API afaik.
 
Quick question - are we talking about a server API or a client API? The desirables and scope will be different, with a client API potentially providing access to instant-update user state data (ie what's currently in-frame for the user, distances to nearby objects, information about what screen the user is viewing, user input device state, currently selected target etc. while a server API may provide trade, galaxy map, faction data etc.

A lot of what I would like to see in a server API has been mentioned already in this thread, but on the client side I would like to see the ability to hook into the comms interface - to be able to make a fully featured second-screen chat UI with separate windows for each friend, a list of all ships in the current system I can communicate with, ability to click a ship to open a comms channel, and future features (when they are implemented in-game) to communicate with my wing and broadcast to nearby ships. It would also occasionally be useful to access a subset of the functionality when not in-game (e.g. To msg a friend via a web interface), which brings in a mixture of server and client API functionality.

Sorry if these ideas have already been covered in the thread - I have to admit I've only skim read through.
 
But SimVibe only works off the audio feed, so what sort of API are you looking for because SimVibe doesn't support any really. It's just a glorified way of transmitting bass to multiple transducers from the audio. Doesn't use an actual API afaik.

Actually Simvibe grabs in game telemetry (ffb telemetry normally) to provide proper physics based feedback. It specifically doesn't work off the audio feed, hence its popularity in the sim racing scene.
It also allows you to fully customise every part of the tactile feedback being provided to the transducers so you can completely remove certain effects or tone them down/up, since everyone has different rigs and setups.
What Elite needs to do however, is have ffb/physics telemetry that can be hooked in to by/passed on to a third party program, as that is how simvibe works.
I have used it for over two year with racing sims, using 2 tranducers, a home av amp and my racing rig, and I can honestly say that feedback provided through simvibe is unmeasurably better than just plugging in to the games sound and "simulating feedback" (like how buttkickers work normally, without simvibe).
 

Slopey

Volunteer Moderator
Actually Simvibe grabs in game telemetry (ffb telemetry normally) to provide proper physics based feedback. It specifically doesn't work off the audio feed, hence its popularity in the sim racing scene.
It also allows you to fully customise every part of the tactile feedback being provided to the transducers so you can completely remove certain effects or tone them down/up, since everyone has different rigs and setups.
What Elite needs to do however, is have ffb/physics telemetry that can be hooked in to by/passed on to a third party program, as that is how simvibe works.
I have used it for over two year with racing sims, using 2 tranducers, a home av amp and my racing rig, and I can honestly say that feedback provided through simvibe is unmeasurably better than just plugging in to the games sound and "simulating feedback" (like how buttkickers work normally, without simvibe).

Interesting. I had a look at their site, and there's an interface box between the audio out and the transducers - does it encode it somehow? Or does it connect via USB or something? I could only find the audio box version online. I've been considering a butt-kicker anyway, but simvibe looks like a better solution (provided I have somewhere to mount it).

(sorry about the off topic).
 
I haven't read all the posts, so forgive if this is already mentioned. Also, I am not developing this app, but think it would be awesome for API info to be available for more map functionality as mentioned in the DDA.

There is a lot of social potential to the galaxy map + pictures + news + pilot logs.

API data containing full galaxy map and also available pilot log data and news feeds with system tag.

Create Heat Maps of player activity, discoveries, and even pin pictures of systems in the external app.

News items linked to map so we can move around and easily see visual cues and information on where the news events are happening. Players can post pics of their battle with the Federal Cap Ship during Onionhead crisis for instance.


I dream of Google Map functionality for the Elite universe.
 
Status
Thread Closed: Not open for further replies.
Back
Top Bottom