About the feeds

Available Feeds
The following feeds are available:

How do I Get the Data?
First, register for an account by visiting http://datafeeds.networkrail.co.uk. You will receive a confirmation email. Follow the instructions to log in and change your password. When your account is active, you can connect to the service. Your account may be in one of three states - the system will send you an email when your account is activated and able to access feeds.

Once you have logged in to the system, the My Feeds tab lists all of the data feeds available. You must select the topics that you wish to access. This can be done by highlighting them in the Available column and clicking the right arrow icon to move them to the Selected column. Once you have selected your chosen feeds, click the Update Subscription button. You will then be able to access those feeds.

Accessing the data feeds
Real-time feeds are accessed through the STOMP protocol from the Network Rail ActiveMQ message server. A STOMP client subscribes to a topic (a specific data feed) and is then sent messages within that topic. You will need a STOMP client (available in most languages - a list is available here) or an OpenWire client. Messages are queued and sent to any connected subscribers.

Real-time feeds can be made durable, so messages are not lost if a client experiences a brief disconnection. See the page on durable subscriptions and the code examples below for more information.

The static feeds are available via authenticated HTTP GET requests.

Good Practice
Please bear in mind the following points when you use the service - they're here to make sure everyone gets a good service:


 * Sign up with one account - it gives an accurate reflection of how many people are actually using the service.
 * Connect to the service once - you can receive multiple feeds in a single connection. If you need to access the data more than once, you can do so - but be sensible!
 * Don't leave a failed client running - if you can connect but get an authentication or authorization error - stop your client - don't leave it continually trying.
 * Make sure your client handles failures - if your client fails to connect or is disconnected, use an exponential backoff and wait 1s, 2s, 4s, 8s, 16s etc. before trying to reconnect. Service problems sometimes occur, and if everyone tries to reconnect every second, the service will not recover quickly.
 * Use a durable subscriber - if you want data to be queued in case you disconnect, request a durable subscription when you connect.
 * Use Stomp heartbeats to detect network problems that may otherwise leave your client hanging with no data

Examples
Code examples for various languages are available from the Example Code page.

The advanced usage page contains examples of some advanced applications for the data feeds, including bridging the ActiveMQ feeds to your own messaging server.

Support
If you are having problems with the feeds:


 * First, read this wiki - there's a lot of material here that will help you
 * Check the FAQ to see if you have a common issue
 * If you want to discuss your problem with other people working with the service, the openraildata-talk group on Google Groups will be useful
 * Finally, if you're still having a problem, email [mailto:nrod.support@rockshore.net nrod.support@rockshore.net]

Background reading
It may be useful to understand the background to the sources of some of these data feeds. These links will help:


 * Integrated Passenger Information: Delivering the Rail End to End Journey, Stage 3 - Technical Annex

Releases
For further information on the content of releases please see the release notes.