# Govkit
Govkit is a Ruby gem that provides simple access to US open government APIs around the web, including:
* [OpenCongress](http://www.opencongress.org/api), which has an API for federal bills, votes, people, and news and blog coverage
* [The Open States project](http://fiftystates-dev.sunlightlabs.com/), which has a RESTful API for accessing data about state legislators, bills, votes, etc.
* [Project Vote Smart](http://www.votesmart.org/services_api.php), which has an API with congressional addresses, etc.
* [Follow The Money](http://www.followthemoney.org/), whose API reveals campaign contribution data for state officials.
* [TransparencyData API](http://transparencydata.com/api) (campaign contributions only)
# Installation
From gemcutter:
gem install govkit
# Setup
Add govkit to your environment.rb or Gemfile
Run rails generate govkit
(Rails 3.x) or script/generate govkit
(Rails 2.x) to copy a config file into config/initializers/govkit.rb
. You will need to add your API keys to this config file.
# Usage Examples
>> GovKit::OpenStates::State.find_by_abbreviation('CA')
>> GovKit::VoteSmart::Address.find(votesmart_candidate_id)
>> GovKit::OpenCongress::Bill.find(:number => 5479, :type => 'h', :congress => '111')
Objects returned from GovKit will have attributes for each field coming back from the API:
>> x = GovKit::OpenStates::State.find_by_abbreviation('CA')
=> #"Assemblymember", "lower_chamber_name"=>"Assembly", "upper_chamber_title"=>"Senator", "terms"=>[#> x.name
=> "California"
GovKit will raise GovKit::ResourceNotFound if a requested item isn't available.
# Testing & Debugging
For debugging purposes, there's a raw_response reader provided for each object, which typically returns an HTTParty::Response object. To see the body of the HTTP response, you might look here:
(continuing the example from above)
>> x.raw_response.response.body
=> "{\n \"lower_chamber_title\": \"Assemblymember\", \n \"lower_chamber_name\": \"Assembly\", \n ....
# Bugs? Questions?
Please join the [Govkit Google Group](http://groups.google.com/group/govkit), especially if you'd like to talk about a new feature and get announcements.
[Report a bug](https://participatorypolitics.lighthouseapp.com/projects/51485-govkit) on our Lighthouse page.
Govkit's main repo is on Github: [http://github.com/opengovernment/govkit](http://github.com/opengovernment/govkit), where your contributions, forks, and feedback are greatly welcomed.
# Dear Canadians
For Canadian open government data, our friends up north have created a [govkit-ca](https://github.com/jpmckinney/govkit-ca) gem that lives in the GovKit::CA namespace and should interoperate just fine with this gem.
# A GovKit for your country?
Let us know if you'd like to build a govkit for your region! We'd love to link to you. Your gem should be called, for example, govkit-uk (ISO 3166 country code), and your methods should live in the GovKit::GB namespace (for example).
Copyright (c) 2010 Participatory Politics Foundation, released under the MIT license