Node wrapper for NYT Congress API. REST API Docs.
var Congress = require( 'nyt-congress-node' );
var client = new Congress( API_KEY );
client.billDetails({
billId: 'HR2397',
}).then( function ( res ) {
console.log( res );
});
This package works in the browser. To generate a version that will provide a Congress
browser global, go to the project root and run (assuming you have browserify
installed globally):
browserify -s Congress ./ > congress-browser.js
Fair warning: the standalone, browserified pacakage is pretty darn big.
nyt-congress-node
is a straight-forward wrapper around the New York Times Congress API. The Times' developer site has comprehensive documentation as well as example results for each query.
Internally, nyt-congress-node
uses string interpolation on the API endpoints detailed in the API documentation. For example, the bill details endpoint has a url structure as follows
http://api.nytimes.com/svc/politics/{version}/us/legislative/congress/{congress-number}/bills/{bill-id}[.response-format]?api-key={your-API-key}
A valid request needs to fill in this URL with the following parameters: version
, congress-number
, bill-id
, response-format
, and an api-key
.
Of these, only bill-id
is required. The API key must be passed to the constructor and is automatically added to every request. congress-number
defaults to 113 (the current congress), and response-format
defaults to JSON.
Each method takes a parameters object, which it "dasherizes" (turns the keys from camelCase
to dash-case
), then interpolates these values into the string.
The example at the top
var Congress = require( 'nyt-congress-node' );
var client = new Congress( 'API_KEY' );
client.billDetails({
'bill-id': 'HR2397',
}).then( function ( res ) {
console.log( res );
});
will dispatch a request to the following URL:
http://api.nytimes.com/svc/politics/v3/us/legislative/congress/113/bills/HR2397.json?api-key=API_KEY
Every method returns a promise.
Endpoint documentation: Recent bills
Parameters:
- congressNumber
- chamber
- billType
Endpoint documentation: Bills by member
Parameters:
- memberId
- billType
Endpoint documentation: Bill details
Parameters:
- congressNumber
- billId
Endpoint documentation: Bill subjects, amendments, and related bills with resource set to "subjects"
Parameters:
- congressNumber
- billId
Endpoint documentation: Bill subjects, amendments, and related bills with resource set to "amendment"
Parameters:
- congressNumber
- billId
Endpoint documentation: Bill subjects, amendments, and related bills with resource set to "related"
Parameters:
- congressNumber
- billId
Endpoint documentation: Bill cosponsors
Parameters:
- congressNumber
- billId
Endpoint documentation: Member lists
Parameters:
- congressNumber
- chamber
Endpoint documentation: Member bio and roles
Parameters:
- memberId
Endpoint documentation: New members
Parameters:
- _None_
Endpoint documentation: Current members by state/district
Parameters:
- chamber
- state
- district
Endpoint documentation: Members leaving office
Parameters:
- congressNumber
Endpoint documentation: Member vote positions
Parameters:
- memberId
Endpoint documentation: Member vote comparison
Parameters:
- memberId1
- memberId2
- congressNumber
- chamber
Endpoint documentation: Bills cosponsored by a member
Parameters:
- memberId
- cosponsorType
Endpoint documentation: Member cosponsorship comparison
Parameters:
- memberId1
- memberId2
- congressNumber
- chamber
Endpoint documentation: Member floor appearances
Parameters:
- memberId
Endpoint documentation: Nominee lists
Parameters:
- congressNumber
- nominationCategory
Endpoint documentation: Nominee details
Parameters:
- congressNumber
- nomineeId
Endpoint documentation: Nominees by state
Parameters:
- congressNumber
- state
Endpoint documentation: State party counts
Parameters:
- _NONE_
Endpoint documentation: Committees and committee members but doesn't accept a committee id
Parameters:
- congressNumber
- chamber
Endpoint documentation: Committees and committee members but requires a committee id
Parameters:
- congressNumber
- chamber
- committeeId
Endpoint documentation: Chamber schedule
Parameters:
- chamber
Endpoint documentation: Roll-call votes
Parameters:
- congressNumber
- chamber
- sessionNumber
- rollCallNumber
Endpoint documentation: Votes by type
Parameters:
- congressNumber
- chamber
- voteType
Endpoint documentation: Votes by date
Parameters:
- chamber
- year
- month
Endpoint documentation: nominationVotes
Parameters:
- congressNumber
nyt-congress-node
validates all parameters passed to methods. Generally, parameter strings are checked with contains
, alphanumeric
, numeric
, and date
. Contains checks if a value is in a pre-set list. Each parameter will also accept the camelCased version of it's key.
'bill-id': alphanumeric
'bill-type': contains // => ['introduced', 'updated', 'passed', 'major']
'chamber': contains // => ['house', 'senate']
'committee-id': alphanumeric,
'congress-number': contains // => [105, 106, 107, 108, 109, 110, 111, 112, 113]
'cosponsor-type': contains // => ['cosponsored', 'withdrawn']
'district': numeric
'end-date': date
'member-id': alphanumeric
'member-id-2': alphanumeric
'member-id-1': alphanumeric
'nomination-category': contains // => ['received', 'updated', 'confirmed', 'withdrawn']
'nominee-id': alphanumeric
'resource': contains // => ['subjects', 'amendments', 'related'] ),
'response-format': contains // => ['.json', '.xml']
'roll-call-number': numeric
'session-number': numeric
'start-date': date
'state': contains // => ['AL', 'AK', 'AZ', 'AR', 'CA', 'CO', 'CT', 'DE', 'FL', 'GA', 'HI', 'ID', 'IL', 'IN', 'IA', 'KS', 'KY', 'LA', 'ME', 'MD', 'MA', 'MI', 'MN', 'MS', 'MO', 'MT', 'NE', 'NV', 'NH', 'NJ', 'NM', 'NY', 'NC', 'ND', 'OH', 'OK', 'OR', 'PA', 'RI', 'SC', 'SD', 'TN', 'TX', 'UT', 'VT', 'VA', 'WA', 'WV', 'WI', 'WY']
'vote-type': contains // => ['missed_votes', 'party_votes', 'loneno', 'perfect'] ),
'version': // => must be v3
'year': numeric
'month': numeric