cta-api v0.0.4
cta-api-node
Thin node wrapper for the Chicago Transit Authority API written in Node.js
Notes
I am new to node. My concentration was making this an extremely thin wrapper using only node core modules. As such, you will find no non-core dependencies. I also felt that testing would be over kill.
Responses are in XML. Take this up with Rahm.
Lots of juicy info for Chicago's developers here:
http://www.transitchicago.com/developers/
Complete list of 'L' Stops:
https://data.cityofchicago.org/Transportation/CTA-System-Information-List-of-L-Stops/8pix-ypme
Usage
Get the api keys from Chicago Trainsit above
$ export CTA_TRAIN_API_KEY=hunter2
$ export CTA_BUS_API_KEY=azureDiamond
$ node my_awesome.js
// my_awesome.js
var ctaNode = require("cta-api");
var trainApiKey = process.env.CTA_TRAIN_API_KEY
, busApiKey = process.env.CTA_BUS_API_KEY;
ctaNode
.train
.arrivals
.get({ mapid: 40360, max: 1, key: trainApiKey },
function(data) { console.log("Data: " + data); },
function(e) { console.log("Error: " + e.message); });
Trains
Official Train Tracker API:
http://www.transitchicago.com/developers/ttdocs/default.aspx
Locations
Parameters
Name | Value | Description |
---|---|---|
mapid | Numeric station identifier (required if stpid not specified) | A single five-digit code to tell the server which station you’d like to receive predictions for. See appendix for information about valid station codes. |
stpid | Numeric stop identifier (required if mapid not specified) | A single five-digit code to tell the server which specific stop (in this context, specific platform or platform side within a larger station) you’d like to receive predictions for. See appendix for information about valid stop codes. |
max | Maximum results (optional) | The maximum number you’d like to receive (if not specified, all available results for the requested stop or station will be returned) |
rt | Route code (optional) | Allows you to specify a single route for which you’d like results (if not specified, all available results for the requested stop or station will be returned) |
key | Alphanumeric API key (required) | Your unique API key, assigned to you after agreeing to DLA and requesting a key be generated for you. |
var callback = function(data) { console.log("" + data); }
var errorCb = function(e) { console.log(e.message); }
ctaNode.train.arrivals.get({ mapid: 40360, max: 1, key: trainApiKey }, callback, errorCb)
Follow That Train
Parameters
Name | Value | Description |
---|---|---|
runnumber | Train Run Number (required) | Allows you to specify a single run number for a train for which you’d like a series of upcoming arrival estimations. |
key | Alphanumeric API key (required) | Your unique API key, assigned to you after agreeing to DLA and requesting a key be generated for you. |
var callback = function(data) { console.log("" + data); }
var errorCb = function(e) { console.log(e.message); }
ctaNode.train.followThisTrain.get({ runnumber: 909, key: trainApiKey }, callback, errorCb)
Locations
Parameters
Name | Value | Description |
---|---|---|
rt | Train route(s) (required) | Allows you to specify one or more routes for which you’d like train location information. |
key | Alphanumeric API key (required) | Your unique API key, assigned to you after agreeing to DLA and requesting a key be generated for you. |
var callback = function(data) { console.log("" + data); }
var errorCb = function(e) { console.log(e.message); }
ctaNode.train.locations.get({ rt: 'red', key: trainApiKey }, callback, errorCb)
Buses
Official Bus Tracker API:
http://www.transitchicago.com/assets/1/developer_center/BusTime_Developer_API_Guide.pdf
Time
Name | Value | Description |
---|---|---|
Key | string (required) | 25-digit Bus Tracker API access key. |
ctaNode.bus.time.get({ key: busApiKey }, callback, errorCb);
Vehicles
Name | Value | Description |
---|---|---|
Key | string (required) | 25-digit Bus Tracker API access key. |
Vid | comma-delimited list of vehicle IDs (not available with rt parameter) | Set of one or more vehicle IDs whose location should be returned. For example: 509,392,201,4367 will return information for four vehicles (if available). A maximum of 10 identifiers can be specified. |
Rt | comma-delimited list of route designators (not available with vid parameter) | Set of one or more route designators for which matching vehicles should be returned. For example: X3,4,20 will return information for all vehicles currently running those three routes (if available). A maximum of 10 identifiers can be specified. |
ctaNode.bus.vehicles.get({ key: busApiKey, vid: [509,392] }, callback, errorCb);
ctaNode.bus.vehicles.get({ key: busApiKey, rt: [80] }, callback, errorCb);
Routes
Name | Value | Description |
---|---|---|
Key | string (required) | 25-digit Bus Tracker API access key. |
ctaNode.bus.routes.get({ key: busApiKey }, callback, errorCb);
Route Directions
Name | Value | Description |
---|---|---|
Key | string (required) | 25-digit Bus Tracker API access key. |
Rt | Single route designator (required) | Alphanumeric designator of a route (ex. “20” or “X20”) for which a list of available directions is to be returned. |
ctaNode.bus.routes.get({ key: busApiKey }, callback, errorCb);
Name | Value | Description |
---|---|---|
key | string (required) | 25-digit Bus Tracker API access key. |
rt | Single route designator (required) | Alphanumeric designator of the route (ex. “20” or “X20”) for which a list of available stops is to be returned. |
ctaNode.bus.directions.get({ key: busApiKey, rt: 80 }, callback, errorCb);
Stops
Name | Value | Description |
---|---|---|
key | string (required) | 25-digit Bus Tracker API access key. |
rt | Single route designator (required) | Alphanumeric designator of the route (ex. “20” or “X20”) for which a list of available stops is to be returned. |
dir | Single route direction (required) | Direction of the route (ex. “East Bound”) for which a list of available stops is to be returned. |
ctaNode.bus.stops.get({ key: busApiKey, rt: 80, dir: "Westbound" }, callback, errorCb);
Patterns
Name | Value | Description |
---|---|---|
key | string (required) | 25-digit Bus Tracker API access key. |
pid | comma-delimited list of pattern IDs (not available with rt parameter) | Set of one or more pattern IDs whose points should be returned. For example: 56,436,1221 will return points from three (3) patterns. A maximum of 10 identifiers can be specified. |
rt | Single route designator (required) | Alphanumeric designator of the route (ex. “20” or “X20”) for which a list of available stops is to be returned. |
ctaNode.bus.patterns.get({ key: busApiKey, rt: 80, vid: 909, top: 5 }, callback, errorCb);
Predictions
Name | Value | Description |
---|---|---|
key | string (required) | 25-digit Bus Tracker API access key. |
stpid | comma-delimited list of stop IDs (not available with vid parameter) | Set of one or more stop IDs whose predictions are to be returned. For example: 5029,1392,2019,4367 will return predictions for the four stops. A maximum of 10 identifiers can be specified. |
rt | comma-delimited list of route designators (optional, available with stpid parameter) | Set of one or more route designators for which matching predictions are to be returned. |
vid | comma-delimited list of vehicle IDs (not available with stpid parameter) | Set of one or more vehicle IDs whose predictions should be returned. For example: 509,392,201,4367 will return predictions for four vehicles. A maximum of 10 identifiers can be specified. |
top | number (optional) | Maximum number of predictions to be returned. |
ctaNode.bus.predictions.get({ key: busApiKey, rt: 20, stpid: 456 }, callback, errorCb);
Service Bulletins
Name | Value | Description |
---|---|---|
key | string (required) | 25-digit Bus Tracker API access key. |
rt | comma-delimited list of route designators (optional, available with stpid parameter) | Set of one or more route designators for which matching predictions are to be returned. |
rtdir | Single route direction (optional) | Direction of travel of the route specified in the rt parameter. The rt parameter is required when using the rtdir parameter. |
stpid | comma-delimited list of stop IDs (not available with vid parameter) | Set of one or more stop IDs whose predictions are to be returned. For example: 5029,1392,2019,4367 will return predictions for the four stops. A maximum of 10 identifiers can be specified. |
ctaNode.bus.bulletins.get({ key: busApiKey, rt: 20, stpid: 456 }, callback, errorCb);
Alerts
Gives you information on stop/station outages and signifant alerts.
No options.
There appears to be HTML in some of the alerts. Take it up with Rahm.
var callback = function(data) { console.log("" + data); }
var errorCb = function(e) { console.log(e.message); }
ctaNode.customerAlerts.routeStatus.get({}, callback, errorCb);
ctaNode.customerAlerts.detailedAlerts.get({}, callback, errorCb);
Contribute
Fork, code, pull request