govkit 0.7.2 → 0.7.3
Sign up to get free protection for your applications and to get access to all the features.
- data/.travis.yml +2 -0
- data/Gemfile +11 -5
- data/README.md +1 -1
- data/Rakefile +29 -13
- data/VERSION +1 -1
- data/govkit.gemspec +25 -36
- data/lib/gov_kit.rb +16 -5
- data/lib/gov_kit/configuration.rb +5 -5
- data/lib/gov_kit/follow_the_money.rb +5 -2
- data/lib/gov_kit/open_congress.rb +3 -11
- data/lib/gov_kit/open_congress/bill.rb +32 -29
- data/lib/gov_kit/open_congress/person.rb +21 -20
- data/lib/gov_kit/open_states.rb +10 -15
- data/lib/gov_kit/railtie.rb +0 -2
- data/lib/gov_kit/resource.rb +0 -1
- data/lib/gov_kit/transparency_data.rb +1 -1
- data/lib/gov_kit/vote_smart.rb +81 -6
- data/{init.rb → rails/init.rb} +0 -0
- data/spec/fixtures/open_states/401.response +9 -9
- data/spec/fixtures/open_states/404.response +9 -9
- data/spec/fixtures/open_states/bill.response +9 -240
- data/spec/fixtures/open_states/bill_find.response +9 -0
- data/spec/fixtures/open_states/bill_query.response +9 -1990
- data/spec/fixtures/open_states/committee_find.response +9 -53
- data/spec/fixtures/open_states/committee_query.response +9 -190
- data/spec/fixtures/open_states/legislator_find.response +9 -0
- data/spec/fixtures/open_states/legislator_query.response +9 -144
- data/spec/fixtures/open_states/state.response +9 -60
- data/spec/follow_the_money_spec.rb +20 -16
- data/spec/open_congress_spec.rb +23 -35
- data/spec/open_states_spec.rb +63 -78
- data/spec/search_engines_spec.rb +10 -13
- data/spec/spec_helper.rb +16 -8
- data/spec/transparency_data_spec.rb +19 -35
- metadata +140 -145
- data/spec/fixtures/open_states/410.response +0 -6
- data/spec/fixtures/open_states/legislator.response +0 -34
data/lib/gov_kit/open_states.rb
CHANGED
@@ -3,11 +3,6 @@ module GovKit
|
|
3
3
|
# Parent class for OpenStates resources
|
4
4
|
# See http://openstates.sunlightlabs.com/api/
|
5
5
|
class OpenStatesResource < Resource
|
6
|
-
|
7
|
-
# Uses default_params from the HTTParty gem.
|
8
|
-
# See HTTParty::ClassMethods:
|
9
|
-
# http://rubydoc.info/gems/httparty/0.7.4/HTTParty/ClassMethods#default_params-instance_method
|
10
|
-
default_params :output => 'json', :apikey => GovKit::configuration.sunlight_apikey
|
11
6
|
base_uri GovKit::configuration.openstates_base_url
|
12
7
|
|
13
8
|
# Do a GET query, with optional parameters.
|
@@ -18,13 +13,14 @@ module GovKit
|
|
18
13
|
# So, if a query result is a resource not found error,
|
19
14
|
# we return an empty set.
|
20
15
|
def self.get_uri(uri, options={})
|
16
|
+
options[:query] ||= {}
|
17
|
+
options[:query][:apikey] = GovKit::configuration.sunlight_apikey
|
18
|
+
|
21
19
|
begin
|
22
|
-
|
23
|
-
result = parse(response)
|
20
|
+
parse(get(URI.encode(uri), options))
|
24
21
|
rescue ResourceNotFound
|
25
|
-
|
22
|
+
[]
|
26
23
|
end
|
27
|
-
result
|
28
24
|
end
|
29
25
|
|
30
26
|
end
|
@@ -49,6 +45,8 @@ module GovKit
|
|
49
45
|
# http://openstates.sunlightlabs.com/api/metadata/,
|
50
46
|
#
|
51
47
|
class State < OpenStatesResource
|
48
|
+
format :json
|
49
|
+
|
52
50
|
def self.find_by_abbreviation(abbreviation)
|
53
51
|
get_uri("/metadata/#{abbreviation}/")
|
54
52
|
end
|
@@ -62,10 +60,7 @@ module GovKit
|
|
62
60
|
class Bill < OpenStatesResource
|
63
61
|
# http://openstates.sunlightlabs.com/api/v1/bills/ca/20092010/AB 667/
|
64
62
|
def self.find(state_abbrev, session, bill_id, chamber = '')
|
65
|
-
|
66
|
-
escaped_session = session.gsub(/ /, '%20')
|
67
|
-
|
68
|
-
get_uri("/bills/#{state_abbrev.downcase}/#{escaped_session}/#{chamber.blank? ? '' : chamber + '/'}#{escaped_bill_id}/")
|
63
|
+
get_uri("/bills/#{state_abbrev.downcase}/#{session}/#{chamber.blank? ? '' : chamber + '/'}#{bill_id}/")
|
69
64
|
end
|
70
65
|
|
71
66
|
def self.search(query, options = {})
|
@@ -74,8 +69,8 @@ module GovKit
|
|
74
69
|
end
|
75
70
|
|
76
71
|
def self.latest(updated_since, ops = {})
|
77
|
-
|
78
|
-
|
72
|
+
result = get_uri('/bills/', :query => {:updated_since => updated_since.to_s}.merge(ops))
|
73
|
+
return Array(result)
|
79
74
|
end
|
80
75
|
end
|
81
76
|
|
data/lib/gov_kit/railtie.rb
CHANGED
data/lib/gov_kit/resource.rb
CHANGED
@@ -19,7 +19,6 @@ module GovKit
|
|
19
19
|
# Includes {http://rdoc.info/github/jnunemaker/httparty/master/HTTParty/ClassMethods HTTParty}, which provides convenience methods like get().
|
20
20
|
class Resource
|
21
21
|
include HTTParty
|
22
|
-
format :json
|
23
22
|
|
24
23
|
# The attributes data returned by the service.
|
25
24
|
attr_reader :attributes
|
@@ -82,7 +82,7 @@ module GovKit
|
|
82
82
|
#
|
83
83
|
# Example query:
|
84
84
|
# entities = GovKit::TransparencyData::Entity.search('nancy+pelosi')
|
85
|
-
def self.search(search_string
|
85
|
+
def self.search(search_string)
|
86
86
|
search_for("/entities.json", { :search => search_string } )
|
87
87
|
end
|
88
88
|
end
|
data/lib/gov_kit/vote_smart.rb
CHANGED
@@ -5,6 +5,66 @@ module GovKit
|
|
5
5
|
end
|
6
6
|
|
7
7
|
module VoteSmart
|
8
|
+
class State < VoteSmartResource
|
9
|
+
def self.find_all
|
10
|
+
response = get("/State.getStateIDs")
|
11
|
+
parse(response['stateList']['list']['state'])
|
12
|
+
end
|
13
|
+
|
14
|
+
def self.find_counties(stateId)
|
15
|
+
response = get("/Local.getCounties", :query => {"stateId" => stateId})
|
16
|
+
return [] if !response['counties']
|
17
|
+
|
18
|
+
if response['counties']['county'].instance_of?(Array)
|
19
|
+
parse(response['counties']['county'])
|
20
|
+
else
|
21
|
+
[ parse(response['counties']['county']) ]
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.find_cities(stateId)
|
26
|
+
response = get("/Local.getCities", :query => {"stateId" => stateId})
|
27
|
+
return [] if !response['cities']
|
28
|
+
|
29
|
+
if response['cities']['city'].instance_of?(Array)
|
30
|
+
parse(response['cities']['city'])
|
31
|
+
else
|
32
|
+
[ parse(response['cities']['city']) ]
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
class Official < VoteSmartResource
|
38
|
+
def self.find_all(stateOrLocalId)
|
39
|
+
if stateOrLocalId.match(/[A-Za-z]/) # We're looking for state officals
|
40
|
+
response = get("/Officials.getStatewide", :query => {"stateId" => stateOrLocalId})
|
41
|
+
else # We're looking for local officials
|
42
|
+
response = get("/Local.getOfficials", :query => {"localId" => stateOrLocalId})
|
43
|
+
end
|
44
|
+
|
45
|
+
return [] if !response['candidateList']
|
46
|
+
|
47
|
+
if response['candidateList']['candidate'].instance_of?(Array)
|
48
|
+
parse(response['candidateList']['candidate'])
|
49
|
+
else
|
50
|
+
[ parse(response['candidateList']['candidate']) ]
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def self.find_by_office_state(officeId, stateId = 'NA')
|
55
|
+
response = get("/Officials.getByOfficeState", :query => { "officeId" => officeId,
|
56
|
+
"stateId" => stateId })
|
57
|
+
|
58
|
+
return [] if !response['candidateList']
|
59
|
+
|
60
|
+
if response['candidateList']['candidate'].instance_of?(Array)
|
61
|
+
parse(response['candidateList']['candidate'])
|
62
|
+
else
|
63
|
+
[ parse(response['candidateList']['candidate']) ]
|
64
|
+
end
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
8
68
|
class Address < VoteSmartResource
|
9
69
|
def self.find(candidate_id)
|
10
70
|
response = get("/Address.getOffice", :query => {"candidateId" => candidate_id})
|
@@ -15,24 +75,39 @@ module GovKit
|
|
15
75
|
class WebAddress < VoteSmartResource
|
16
76
|
def self.find(candidate_id)
|
17
77
|
response = get("/Address.getOfficeWebAddress", :query => {"candidateId" => candidate_id})
|
18
|
-
|
78
|
+
|
79
|
+
return [] if !response['webaddress']
|
80
|
+
|
81
|
+
if response['webaddress']['address'].instance_of?(Array)
|
82
|
+
parse(response['webaddress']['address'])
|
83
|
+
else
|
84
|
+
[ parse(response['webaddress']['address']) ]
|
85
|
+
end
|
19
86
|
end
|
20
87
|
end
|
21
88
|
|
22
89
|
class Bio < VoteSmartResource
|
23
|
-
def self.find(candidate_id)
|
90
|
+
def self.find(candidate_id, include_office = false)
|
24
91
|
response = get("/CandidateBio.getBio", :query => {"candidateId" => candidate_id})
|
25
92
|
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
93
|
+
return false if response.blank? || response['error']
|
94
|
+
|
95
|
+
# Previous versions ommitted "office" data from response.
|
96
|
+
# include_office is optional so to not break backwards compatibility.
|
97
|
+
if include_office
|
98
|
+
parse(response['bio'])
|
99
|
+
else
|
100
|
+
parse(response['bio']['candidate'])
|
101
|
+
end
|
30
102
|
end
|
31
103
|
end
|
32
104
|
|
33
105
|
class Category < VoteSmartResource
|
34
106
|
def self.list(state_id)
|
35
107
|
response = get("/Rating.getCategories", :query => {"stateId" => state_id})
|
108
|
+
|
109
|
+
raise(ResourceNotFound, response['error']['errorMessage']) if response['error']
|
110
|
+
|
36
111
|
parse(response['categories']['category'])
|
37
112
|
end
|
38
113
|
end
|
data/{init.rb → rails/init.rb}
RENAMED
File without changes
|
@@ -1,10 +1,10 @@
|
|
1
|
-
HTTP/1.1 401 UNAUTHORIZED
|
2
|
-
Server: nginx/
|
3
|
-
Date:
|
4
|
-
Content-Type: text/html; charset=utf-8
|
5
|
-
Transfer-Encoding: chunked
|
6
|
-
Connection:
|
7
|
-
Vary: Authorization
|
8
|
-
|
1
|
+
HTTP/1.1 401 UNAUTHORIZED
|
2
|
+
Server: nginx/1.2.1
|
3
|
+
Date: Fri, 16 Nov 2012 23:40:31 GMT
|
4
|
+
Content-Type: text/html; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Vary: Authorization
|
8
|
+
|
9
9
|
Authorization Required:
|
10
|
-
obtain a key at http://services.sunlightlabs.com/accounts/register/
|
10
|
+
obtain a key at http://services.sunlightlabs.com/accounts/register/
|
@@ -1,9 +1,9 @@
|
|
1
|
-
HTTP/1.1
|
2
|
-
Server: nginx/
|
3
|
-
Date:
|
4
|
-
Content-Type:
|
5
|
-
Transfer-Encoding: chunked
|
6
|
-
Connection:
|
7
|
-
|
8
|
-
|
9
|
-
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/1.2.1
|
3
|
+
Date: Fri, 16 Nov 2012 23:40:35 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Vary: Authorization
|
8
|
+
|
9
|
+
[]
|
@@ -1,240 +1,9 @@
|
|
1
|
-
HTTP/1.1 200 OK
|
2
|
-
Server: nginx/
|
3
|
-
Date:
|
4
|
-
Content-Type: application/json; charset=utf-8
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
"votes": [
|
10
|
-
{
|
11
|
-
"other_count": 6,
|
12
|
-
"sources": [],
|
13
|
-
"yes_count": 34,
|
14
|
-
"updated_at": "2010-03-27 21:30:38",
|
15
|
-
"motion": "Special Consent #12 AB667 Block By Alquist",
|
16
|
-
"chamber": "upper",
|
17
|
-
"passed": true,
|
18
|
-
"date": "2009-07-09 05:50:00",
|
19
|
-
"vote_id": 13695,
|
20
|
-
"no_count": 0
|
21
|
-
},
|
22
|
-
{
|
23
|
-
"other_count": 3,
|
24
|
-
"sources": [],
|
25
|
-
"yes_count": 77,
|
26
|
-
"updated_at": "2010-03-27 21:30:38",
|
27
|
-
"motion": "AB 667 BLOCK Consent Calendar Second Day Regular Session",
|
28
|
-
"chamber": "lower",
|
29
|
-
"passed": true,
|
30
|
-
"date": "2009-05-21 08:07:00",
|
31
|
-
"vote_id": 13694,
|
32
|
-
"no_count": 0
|
33
|
-
},
|
34
|
-
{
|
35
|
-
"other_count": 3,
|
36
|
-
"sources": [],
|
37
|
-
"yes_count": 10,
|
38
|
-
"updated_at": "2010-03-27 21:30:38",
|
39
|
-
"motion": "Do pass and be re-referred to the Committee on Appropriations.",
|
40
|
-
"chamber": "lower",
|
41
|
-
"passed": true,
|
42
|
-
"date": "2009-04-13 20:00:00",
|
43
|
-
"vote_id": 13693,
|
44
|
-
"no_count": 0
|
45
|
-
},
|
46
|
-
{
|
47
|
-
"other_count": 0,
|
48
|
-
"sources": [],
|
49
|
-
"yes_count": 7,
|
50
|
-
"updated_at": "2010-03-27 21:30:38",
|
51
|
-
"motion": "Do pass, to Consent Calendar.",
|
52
|
-
"chamber": "lower",
|
53
|
-
"passed": true,
|
54
|
-
"date": "2009-05-12 20:00:00",
|
55
|
-
"vote_id": 13692,
|
56
|
-
"no_count": 0
|
57
|
-
},
|
58
|
-
{
|
59
|
-
"other_count": 0,
|
60
|
-
"sources": [],
|
61
|
-
"yes_count": 7,
|
62
|
-
"updated_at": "2010-03-27 21:30:38",
|
63
|
-
"motion": "Do pass, but re-refer to the Committee on Appropriations.",
|
64
|
-
"chamber": "upper",
|
65
|
-
"passed": true,
|
66
|
-
"date": "2009-04-27 20:00:00",
|
67
|
-
"vote_id": 13691,
|
68
|
-
"no_count": 4
|
69
|
-
},
|
70
|
-
{
|
71
|
-
"other_count": 0,
|
72
|
-
"sources": [],
|
73
|
-
"yes_count": 5,
|
74
|
-
"updated_at": "2010-03-27 21:30:37",
|
75
|
-
"motion": "Do pass, but re-refer to the Committee on Appropriations.",
|
76
|
-
"chamber": "upper",
|
77
|
-
"passed": true,
|
78
|
-
"date": "2009-06-21 20:00:00",
|
79
|
-
"vote_id": 13690,
|
80
|
-
"no_count": 2
|
81
|
-
}
|
82
|
-
],
|
83
|
-
"last_action": "2009-08-05 20:00:00",
|
84
|
-
"first_action": "2009-02-24 19:00:00",
|
85
|
-
"title": "An act to amend Section 1750.1 of the Business and Professions Code, and to amend Section 104830 of, and to add Section 104762 to, the Health and Safety Code, relating to oral health.",
|
86
|
-
"updated_at": "2010-03-27 21:30:38",
|
87
|
-
"actions": [
|
88
|
-
{
|
89
|
-
"date": "2009-08-05 20:00:00",
|
90
|
-
"action": "Chaptered by Secretary of State - Chapter 119, Statutes of 2009.",
|
91
|
-
"updated_at": "2010-03-27 21:30:37",
|
92
|
-
"actor": "Secretary of State"
|
93
|
-
},
|
94
|
-
{
|
95
|
-
"date": "2009-08-04 20:00:00",
|
96
|
-
"action": "Approved by the Governor.",
|
97
|
-
"updated_at": "2010-03-27 21:30:37",
|
98
|
-
"actor": "Governor"
|
99
|
-
},
|
100
|
-
{
|
101
|
-
"date": "2009-07-29 20:00:00",
|
102
|
-
"action": "Enrolled and to the Governor at 2:30 p.m.",
|
103
|
-
"updated_at": "2010-03-27 21:30:37",
|
104
|
-
"actor": "Governor"
|
105
|
-
},
|
106
|
-
{
|
107
|
-
"date": "2009-07-08 20:00:00",
|
108
|
-
"action": "In Assembly. To enrollment.",
|
109
|
-
"updated_at": "2010-03-27 21:30:37",
|
110
|
-
"actor": "Assembly (E&E Enrollment)"
|
111
|
-
},
|
112
|
-
{
|
113
|
-
"date": "2009-07-08 20:00:00",
|
114
|
-
"action": "Read third time, passed, and to Assembly. (Ayes 34. Noes 0. Page 1667.)",
|
115
|
-
"updated_at": "2010-03-27 21:30:37",
|
116
|
-
"actor": "Senate (Desk)"
|
117
|
-
},
|
118
|
-
{
|
119
|
-
"date": "2009-07-01 20:00:00",
|
120
|
-
"action": "Ordered to Special Consent Calendar.",
|
121
|
-
"updated_at": "2010-03-27 21:30:37",
|
122
|
-
"actor": "Senate (Floor Special Consent)"
|
123
|
-
},
|
124
|
-
{
|
125
|
-
"date": "2009-06-29 20:00:00",
|
126
|
-
"action": "Read second time. To third reading.",
|
127
|
-
"updated_at": "2010-03-27 21:30:37",
|
128
|
-
"actor": "Senate (Floor Third Reading)"
|
129
|
-
},
|
130
|
-
{
|
131
|
-
"date": "2009-06-28 20:00:00",
|
132
|
-
"action": "From committee: Be placed on second reading file pursuant to Senate Rule 28.8.",
|
133
|
-
"updated_at": "2010-03-27 21:30:37",
|
134
|
-
"actor": "Senate (Floor Second Reading)"
|
135
|
-
},
|
136
|
-
{
|
137
|
-
"date": "2009-06-21 20:00:00",
|
138
|
-
"action": "From committee: Do pass, and re-refer to Com. on APPR. Re-referred. (Ayes 10. Noes 0.) (June 22).",
|
139
|
-
"updated_at": "2010-03-27 21:30:37",
|
140
|
-
"actor": "Senate (Committee)"
|
141
|
-
},
|
142
|
-
{
|
143
|
-
"date": "2009-06-03 20:00:00",
|
144
|
-
"action": "Referred to Com. on B., P. & E.D.",
|
145
|
-
"updated_at": "2010-03-27 21:30:37",
|
146
|
-
"actor": "Senate (Committee CS42)"
|
147
|
-
},
|
148
|
-
{
|
149
|
-
"date": "2009-05-20 20:00:00",
|
150
|
-
"action": "Read third time, passed, and to Senate. (Ayes 77. Noes 0. Page 1628.)",
|
151
|
-
"updated_at": "2010-03-27 21:30:37",
|
152
|
-
"actor": "Assembly (E&E Engrossing)"
|
153
|
-
},
|
154
|
-
{
|
155
|
-
"date": "2009-05-20 20:00:00",
|
156
|
-
"action": "In Senate. Read first time. To Com. on RLS. for assignment.",
|
157
|
-
"updated_at": "2010-03-27 21:30:37",
|
158
|
-
"actor": "Senate (Rules)"
|
159
|
-
},
|
160
|
-
{
|
161
|
-
"date": "2009-05-17 20:00:00",
|
162
|
-
"action": "Read second time. To Consent Calendar.",
|
163
|
-
"updated_at": "2010-03-27 21:30:37",
|
164
|
-
"actor": "Assembly (Floor Consent)"
|
165
|
-
},
|
166
|
-
{
|
167
|
-
"date": "2009-05-13 20:00:00",
|
168
|
-
"action": "From committee: Do pass. To Consent Calendar. (May 13).",
|
169
|
-
"updated_at": "2010-03-27 21:30:37",
|
170
|
-
"actor": "Assembly (Floor Second Reading)"
|
171
|
-
},
|
172
|
-
{
|
173
|
-
"date": "2009-05-04 20:00:00",
|
174
|
-
"action": "Re-referred to Com. on APPR.",
|
175
|
-
"updated_at": "2010-03-27 21:30:37",
|
176
|
-
"actor": "Assembly (Committee CX25)"
|
177
|
-
},
|
178
|
-
{
|
179
|
-
"date": "2009-05-03 20:00:00",
|
180
|
-
"action": "From committee chair, with author's amendments: Amend, and re-refer to Com. on APPR. Read second time and amended.",
|
181
|
-
"updated_at": "2010-03-27 21:30:37",
|
182
|
-
"actor": "Assembly (E&E Engrossing)"
|
183
|
-
},
|
184
|
-
{
|
185
|
-
"date": "2009-04-28 20:00:00",
|
186
|
-
"action": "From committee: Do pass, and re-refer to Com. on APPR. with recommendation: To Consent Calendar. Re-referred. (Ayes 10. Noes 0.) (April 28).",
|
187
|
-
"updated_at": "2010-03-27 21:30:37",
|
188
|
-
"actor": "Assembly (Committee)"
|
189
|
-
},
|
190
|
-
{
|
191
|
-
"date": "2009-04-14 20:00:00",
|
192
|
-
"action": "From committee: Do pass, and re-refer to Com. on B. & P. with recommendation: To Consent Calendar. Re-referred. (Ayes 19. Noes 0.) (April 14).",
|
193
|
-
"updated_at": "2010-03-27 21:30:37",
|
194
|
-
"actor": "Assembly (Committee)"
|
195
|
-
},
|
196
|
-
{
|
197
|
-
"date": "2009-04-12 20:00:00",
|
198
|
-
"action": "Re-referred to Com. on HEALTH.",
|
199
|
-
"updated_at": "2010-03-27 21:30:37",
|
200
|
-
"actor": "Assembly (Committee CX08)"
|
201
|
-
},
|
202
|
-
{
|
203
|
-
"date": "2009-04-01 20:00:00",
|
204
|
-
"action": "From committee chair, with author's amendments: Amend, and re-refer to Com. on HEALTH. Read second time and amended.",
|
205
|
-
"updated_at": "2010-03-27 21:30:37",
|
206
|
-
"actor": "Assembly (E&E Engrossing)"
|
207
|
-
},
|
208
|
-
{
|
209
|
-
"date": "2009-03-22 20:00:00",
|
210
|
-
"action": "Referred to Com. on HEALTH.",
|
211
|
-
"updated_at": "2010-03-27 21:30:37",
|
212
|
-
"actor": "Assembly (Committee CX08)"
|
213
|
-
},
|
214
|
-
{
|
215
|
-
"date": "2009-02-25 19:00:00",
|
216
|
-
"action": "From printer. May be heard in committee March 28.",
|
217
|
-
"updated_at": "2010-03-27 21:30:37",
|
218
|
-
"actor": "Assembly (Desk)"
|
219
|
-
},
|
220
|
-
{
|
221
|
-
"date": "2009-02-24 19:00:00",
|
222
|
-
"action": "Read first time. To print.",
|
223
|
-
"updated_at": "2010-03-27 21:30:37",
|
224
|
-
"actor": "Assembly (Desk)"
|
225
|
-
}
|
226
|
-
],
|
227
|
-
"sponsors": [
|
228
|
-
{
|
229
|
-
"leg_id": 2504,
|
230
|
-
"type": "LEAD_AUTHOR",
|
231
|
-
"full_name": "Block, Marty"
|
232
|
-
}
|
233
|
-
],
|
234
|
-
"chamber": "lower",
|
235
|
-
"state": "ca",
|
236
|
-
"session": "20092010",
|
237
|
-
"sources": [],
|
238
|
-
"versions": [],
|
239
|
-
"bill_id": "AB667"
|
240
|
-
}
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx/1.2.1
|
3
|
+
Date: Fri, 16 Nov 2012 23:40:31 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
Vary: Authorization
|
8
|
+
|
9
|
+
{"+short_title": "Topical fluoride application.", "updated_at": "2012-04-06 17:17:37", "actions": [{"date": "2009-02-25 00:00:00", "action": "Read first time. To print.", "type": ["bill:introduced", "bill:reading:1"], "actor": "lower (Desk)"}, {"date": "2009-02-26 00:00:00", "action": "From printer. May be heard in committee March 28.", "type": ["other"], "actor": "lower (Desk)"}, {"date": "2009-03-23 00:00:00", "action": "Referred to Com. on HEALTH.", "type": ["committee:referred"], "actor": "lower (Committee CX08)"}, {"date": "2009-04-02 00:00:00", "action": "From committee chair, with author's amendments: Amend, and re-refer to Com. on HEALTH. Read second time and amended.", "type": ["bill:reading:2"], "actor": "lower (E&E Engrossing)"}, {"date": "2009-04-13 00:00:00", "action": "Re-referred to Com. on HEALTH.", "type": ["committee:referred"], "actor": "lower (Committee CX08)"}, {"date": "2009-04-15 00:00:00", "action": "From committee: Do pass, and re-refer to Com. on B. & P. with recommendation: To Consent Calendar. Re-referred. (Ayes 19. Noes 0.) (April 14).", "type": ["other"], "actor": "lower (Committee)"}, {"date": "2009-04-29 00:00:00", "action": "From committee: Do pass, and re-refer to Com. on APPR. with recommendation: To Consent Calendar. Re-referred. (Ayes 10. Noes 0.) (April 28).", "type": ["other"], "actor": "lower (Committee)"}, {"date": "2009-05-04 00:00:00", "action": "From committee chair, with author's amendments: Amend, and re-refer to Com. on APPR. Read second time and amended.", "type": ["bill:reading:2"], "actor": "lower (E&E Engrossing)"}, {"date": "2009-05-05 00:00:00", "action": "Re-referred to Com. on APPR.", "type": ["committee:referred"], "actor": "lower (Committee CX25)"}, {"date": "2009-05-14 00:00:00", "action": "From committee: Do pass. To Consent Calendar. (May 13).", "type": ["other"], "actor": "lower"}, {"date": "2009-05-18 00:00:00", "action": "Read second time. To Consent Calendar.", "type": ["bill:reading:2"], "actor": "lower"}, {"date": "2009-05-21 00:00:00", "action": "Read third time, passed, and to Senate. (Ayes 77. Noes 0. Page 1628.)", "type": ["other"], "actor": "lower (E&E Engrossing)"}, {"date": "2009-05-21 00:00:00", "action": "In Senate. Read first time. To Com. on RLS. for assignment.", "type": ["bill:reading:1", "committee:referred"], "actor": "upper (Rules)"}, {"date": "2009-06-04 00:00:00", "action": "Referred to Com. on B., P. & E.D.", "type": ["committee:referred"], "actor": "upper (Committee CS42)"}, {"date": "2009-06-22 00:00:00", "action": "From committee: Do pass, and re-refer to Com. on APPR. Re-referred. (Ayes 10. Noes 0.) (June 22).", "type": ["other"], "actor": "upper (Committee)"}, {"date": "2009-06-29 00:00:00", "action": "From committee: Be placed on second reading file pursuant to Senate Rule 28.8.", "type": ["other"], "actor": "upper"}, {"date": "2009-06-30 00:00:00", "action": "Read second time. To third reading.", "type": ["bill:reading:2"], "actor": "upper"}, {"date": "2009-07-02 00:00:00", "action": "Ordered to Special Consent Calendar.", "type": ["other"], "actor": "upper"}, {"date": "2009-07-09 00:00:00", "action": "Read third time, passed, and to Assembly. (Ayes 34. Noes 0. Page 1667.)", "type": ["other"], "actor": "upper (Desk)"}, {"date": "2009-07-09 00:00:00", "action": "In Assembly. To enrollment.", "type": ["other"], "actor": "lower (E&E Enrollment)"}, {"date": "2009-07-30 00:00:00", "action": "Enrolled and to the Governor at 2:30 p.m.", "type": ["other"], "actor": "executive"}, {"date": "2009-08-05 00:00:00", "action": "Approved by the Governor.", "type": ["other"], "actor": "executive"}, {"date": "2009-08-06 00:00:00", "action": "Chaptered by Secretary of State - Chapter 119, Statutes of 2009.", "type": ["other"], "actor": "Secretary of State"}], "sources": [{"url": "http://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=200920100AB667"}], "session": "20092010", "id": "CAB00004148", "votes": [{"+threshold": "1/2", "sources": [], "session": "20092010", "committee": "Health", "id": "CAV00009225", "other_count": 0, "committee_id": null, "state": "ca", "passed": true, "type": "other", "no_count": 0, "yes_votes": [{"leg_id": "CAL000119", "name": "Adams"}, {"leg_id": "CAL000104", "name": "Ammiano"}, {"leg_id": "CAL000067", "name": "Audra Strickland"}, {"leg_id": "CAL000044", "name": "Block"}, {"leg_id": "CAL000080", "name": "Bonnie Lowenthal"}, {"leg_id": "CAL000061", "name": "Carter"}, {"leg_id": "CAL000108", "name": "Conway"}, {"leg_id": "CAL000056", "name": "De La Torre"}, {"leg_id": "CAL000057", "name": "De Leon"}, {"leg_id": "CAL000041", "name": "Emmerson"}, {"leg_id": "CAL000082", "name": "Fletcher"}, {"leg_id": "CAL000102", "name": "Gaines"}, {"leg_id": "CAL000112", "name": "Hall"}, {"leg_id": "CAL000117", "name": "Hayashi"}, {"leg_id": "CAL000049", "name": "Hernandez"}, {"leg_id": "CAL000083", "name": "Hill"}, {"leg_id": "CAL000076", "name": "Jones"}, {"leg_id": "CAL000060", "name": "Nava"}, {"leg_id": "CAL000097", "name": "Salas"}], "date": "2009-04-14 07:00:00", "no_votes": [], "other_votes": [], "yes_count": 19, "motion": "Do pass and be re-referred to the Committee on Business and Professions to Consent Calendar.", "chamber": "lower", "vote_id": "CAV00009225", "bill_id": "CAB00004148"}, {"+threshold": "1/2", "sources": [], "session": "20092010", "committee": "Business, Professions and Consumer Protection ", "id": "CAV00009226", "other_count": 1, "committee_id": null, "state": "ca", "passed": true, "type": "other", "no_count": 0, "yes_votes": [{"leg_id": "CAL000108", "name": "Conway"}, {"leg_id": "CAL000041", "name": "Emmerson"}, {"leg_id": "CAL000050", "name": "Eng"}, {"leg_id": "CAL000117", "name": "Hayashi"}, {"leg_id": "CAL000049", "name": "Hernandez"}, {"leg_id": "CAL000089", "name": "John A. Perez"}, {"leg_id": "CAL000060", "name": "Nava"}, {"leg_id": "CAL000053", "name": "Niello"}, {"leg_id": "CAL000079", "name": "Ruskin"}, {"leg_id": "CAL000074", "name": "Smyth"}], "date": "2009-04-28 07:00:00", "no_votes": [], "other_votes": [{"leg_id": "CAL000040", "name": "Price"}], "yes_count": 10, "motion": "Do pass and re-refer to Committee on Appropriations with recommendation: To Consent Calendar.", "chamber": "lower", "vote_id": "CAV00009226", "bill_id": "CAB00004148"}, {"+threshold": "1/2", "sources": [], "session": "20092010", "committee": "Appropriations", "id": "CAV00009227", "other_count": 0, "committee_id": null, "state": "ca", "passed": true, "type": "other", "no_count": 0, "yes_votes": [{"leg_id": "CAL000104", "name": "Ammiano"}, {"leg_id": "CAL000067", "name": "Audra Strickland"}, {"leg_id": null, "name": "Charles Calderon"}, {"leg_id": "CAL000090", "name": "Davis"}, {"leg_id": "CAL000057", "name": "De Leon"}, {"leg_id": "CAL000122", "name": "Duvall"}, {"leg_id": "CAL000112", "name": "Hall"}, {"leg_id": "CAL000045", "name": "Harkey"}, {"leg_id": "CAL000089", "name": "John A. Perez"}, {"leg_id": "CAL000100", "name": "Krekorian"}, {"leg_id": "CAL000095", "name": "Miller"}, {"leg_id": "CAL000103", "name": "Nielsen"}, {"leg_id": "CAL000040", "name": "Price"}, {"leg_id": "CAL000058", "name": "Skinner"}, {"leg_id": "CAL000052", "name": "Solorio"}, {"leg_id": "CAL000048", "name": "Torlakson"}], "date": "2009-05-13 07:00:00", "no_votes": [], "other_votes": [], "yes_count": 16, "motion": "Do pass, to Consent Calendar.", "chamber": "lower", "vote_id": "CAV00009227", "bill_id": "CAB00004148"}, {"other_count": 3, "+threshold": "1/2", "other_votes": [{"leg_id": "CAL000121", "name": "Fuentes"}, {"leg_id": "CAL000060", "name": "Nava"}, {"leg_id": "CAL000115", "name": "Saldana"}], "yes_count": 77, "yes_votes": [{"leg_id": "CAL000119", "name": "Adams"}, {"leg_id": "CAL000104", "name": "Ammiano"}, {"leg_id": "CAL000116", "name": "Anderson"}, {"leg_id": "CAL000086", "name": "Arambula"}, {"leg_id": "CAL000067", "name": "Audra Strickland"}, {"leg_id": "CAL000068", "name": "Bass"}, {"leg_id": "CAL000051", "name": "Beall"}, {"leg_id": "CAL000106", "name": "Bill Berryhill"}, {"leg_id": "CAL000118", "name": "Blakeslee"}, {"leg_id": "CAL000044", "name": "Block"}, {"leg_id": "CAL000088", "name": "Blumenfield"}, {"leg_id": "CAL000080", "name": "Bonnie Lowenthal"}, {"leg_id": "CAL000109", "name": "Brownley"}, {"leg_id": "CAL000059", "name": "Buchanan"}, {"leg_id": "CAL000066", "name": "Caballero"}, {"leg_id": "CAL000061", "name": "Carter"}, {"leg_id": null, "name": "Charles Calderon"}, {"leg_id": "CAL000101", "name": "Chesbro"}, {"leg_id": "CAL000108", "name": "Conway"}, {"leg_id": "CAL000114", "name": "Cook"}, {"leg_id": "CAL000054", "name": "Coto"}, {"leg_id": "CAL000090", "name": "Davis"}, {"leg_id": "CAL000056", "name": "De La Torre"}, {"leg_id": "CAL000057", "name": "De Leon"}, {"leg_id": "CAL000047", "name": "DeVore"}, {"leg_id": "CAL000122", "name": "Duvall"}, {"leg_id": "CAL000041", "name": "Emmerson"}, {"leg_id": "CAL000050", "name": "Eng"}, {"leg_id": "CAL000077", "name": "Evans"}, {"leg_id": "CAL000110", "name": "Feuer"}, {"leg_id": "CAL000082", "name": "Fletcher"}, {"leg_id": "CAL000084", "name": "Fong"}, {"leg_id": "CAL000087", "name": "Fuller"}, {"leg_id": "CAL000073", "name": "Furutani"}, {"leg_id": "CAL000102", "name": "Gaines"}, {"leg_id": "CAL000062", "name": "Galgiani"}, {"leg_id": "CAL000069", "name": "Garrick"}, {"leg_id": "CAL000064", "name": "Gilmore"}, {"leg_id": "CAL000092", "name": "Hagman"}, {"leg_id": "CAL000112", "name": "Hall"}, {"leg_id": "CAL000045", "name": "Harkey"}, {"leg_id": "CAL000117", "name": "Hayashi"}, {"leg_id": "CAL000049", "name": "Hernandez"}, {"leg_id": "CAL000083", "name": "Hill"}, {"leg_id": "CAL000063", "name": "Huber"}, {"leg_id": "CAL000043", "name": "Huffman"}, {"leg_id": "CAL000093", "name": "Jeffries"}, {"leg_id": "CAL000089", "name": "John A. Perez"}, {"leg_id": "CAL000076", "name": "Jones"}, {"leg_id": "CAL000065", "name": "Knight"}, {"leg_id": "CAL000100", "name": "Krekorian"}, {"leg_id": "CAL000072", "name": "Lieu"}, {"leg_id": "CAL000042", "name": "Logue"}, {"leg_id": "CAL000070", "name": "Ma"}, {"leg_id": "CAL000091", "name": "Mendoza"}, {"leg_id": "CAL000095", "name": "Miller"}, {"leg_id": "CAL000107", "name": "Monning"}, {"leg_id": "CAL000081", "name": "Nestande"}, {"leg_id": "CAL000053", "name": "Niello"}, {"leg_id": "CAL000103", "name": "Nielsen"}, {"leg_id": "CAL000071", "name": "Portantino"}, {"leg_id": "CAL000040", "name": "Price"}, {"leg_id": "CAL000079", "name": "Ruskin"}, {"leg_id": "CAL000097", "name": "Salas"}, {"leg_id": "CAL000094", "name": "Silva"}, {"leg_id": "CAL000058", "name": "Skinner"}, {"leg_id": "CAL000074", "name": "Smyth"}, {"leg_id": "CAL000052", "name": "Solorio"}, {"leg_id": "CAL000105", "name": "Swanson"}, {"leg_id": "CAL000085", "name": "Tom Berryhill"}, {"leg_id": "CAL000048", "name": "Torlakson"}, {"leg_id": "CAL000113", "name": "Torres"}, {"leg_id": "CAL000078", "name": "Torrico"}, {"leg_id": "CAL000120", "name": "Tran"}, {"leg_id": "CAL000098", "name": "V. Manuel Perez"}, {"leg_id": "CAL000075", "name": "Villines"}, {"leg_id": "CAL000099", "name": "Yamada"}], "id": "CAV00009228", "motion": "Consent Calendar Second Day ", "chamber": "lower", "state": "ca", "session": "20092010", "sources": [], "passed": true, "date": "2009-05-21 19:07:00", "vote_id": "CAV00009228", "type": "other", "no_count": 0, "bill_id": "CAB00004148", "no_votes": []}, {"+threshold": "1/2", "sources": [], "session": "20092010", "committee": "Business, Professions and Economic Development", "id": "CAV00009229", "other_count": 0, "committee_id": null, "state": "ca", "passed": true, "type": "other", "no_count": 0, "yes_votes": [{"leg_id": "CAL000004", "name": "Aanestad"}, {"leg_id": "CAL000010", "name": "Corbett"}, {"leg_id": "CAL000037", "name": "Correa"}, {"leg_id": "CAL000033", "name": "Florez"}, {"leg_id": null, "name": "Negrete McLeod"}, {"leg_id": "CAL000021", "name": "Oropeza"}, {"leg_id": "CAL000019", "name": "Romero"}, {"leg_id": "CAL000025", "name": "Walters"}, {"leg_id": "CAL000028", "name": "Wyland"}, {"leg_id": "CAL000008", "name": "Yee"}], "date": "2009-06-22 07:00:00", "no_votes": [], "other_votes": [], "yes_count": 10, "motion": "Do pass, but re-refer to the Committee on Appropriations.", "chamber": "upper", "vote_id": "CAV00009229", "bill_id": "CAB00004148"}, {"other_count": 6, "+threshold": "1/2", "other_votes": [{"leg_id": "CAL000014", "name": "Ashburn"}, {"leg_id": "CAL000036", "name": "Calderon"}, {"leg_id": "CAL000010", "name": "Corbett"}, {"leg_id": "CAL000026", "name": "Harman"}, {"leg_id": "CAL000021", "name": "Oropeza"}, {"leg_id": "CAL000005", "name": "Wolk"}], "yes_count": 34, "yes_votes": [{"leg_id": "CAL000004", "name": "Aanestad"}, {"leg_id": "CAL000039", "name": "Alquist"}, {"leg_id": "CAL000029", "name": "Benoit"}, {"leg_id": "CAL000017", "name": "Cedillo"}, {"leg_id": "CAL000011", "name": "Cogdill"}, {"leg_id": "CAL000037", "name": "Correa"}, {"leg_id": "CAL000001", "name": "Cox"}, {"leg_id": "CAL000007", "name": "DeSaulnier"}, {"leg_id": "CAL000032", "name": "Denham"}, {"leg_id": "CAL000038", "name": "Ducheny"}, {"leg_id": "CAL000023", "name": "Dutton"}, {"leg_id": "CAL000033", "name": "Florez"}, {"leg_id": "CAL000009", "name": "Hancock"}, {"leg_id": "CAL000027", "name": "Hollingsworth"}, {"leg_id": "CAL000022", "name": "Huff"}, {"leg_id": "CAL000030", "name": "Kehoe"}, {"leg_id": "CAL000003", "name": "Leno"}, {"leg_id": "CAL000016", "name": "Liu"}, {"leg_id": "CAL000080", "name": "Lowenthal"}, {"leg_id": "CAL000012", "name": "Maldonado"}, {"leg_id": null, "name": "Negrete McLeod"}, {"leg_id": "CAL000034", "name": "Padilla"}, {"leg_id": "CAL000018", "name": "Pavley"}, {"leg_id": "CAL000040", "name": "Price"}, {"leg_id": "CAL000019", "name": "Romero"}, {"leg_id": "CAL000013", "name": "Runner"}, {"leg_id": "CAL000031", "name": "Simitian"}, {"leg_id": "CAL000006", "name": "Steinberg"}, {"leg_id": "CAL000015", "name": "Strickland"}, {"leg_id": "CAL000025", "name": "Walters"}, {"leg_id": "CAL000002", "name": "Wiggins"}, {"leg_id": "CAL000035", "name": "Wright"}, {"leg_id": "CAL000028", "name": "Wyland"}, {"leg_id": "CAL000008", "name": "Yee"}], "id": "CAV00009230", "motion": "Special Consent #12 AB667 Block By Alquist", "chamber": "upper", "state": "ca", "session": "20092010", "sources": [], "passed": true, "date": "2009-07-09 16:50:00", "vote_id": "CAV00009230", "type": "other", "no_count": 0, "bill_id": "CAB00004148", "no_votes": []}], "documents": [], "title": "An act to amend Section 1750.1 of the Business and Professions Code, and to amend Section 104830 of, and to add Section 104762 to, the Health and Safety Code, relating to oral health.", "scraped_subjects": ["Topical fluoride application."], "state": "ca", "subjects": [], "chamber": "lower", "type": ["bill", "fiscal committee"], "sponsors": [{"leg_id": "CAL000044", "type": "primary", "name": "Block"}], "action_dates": {"passed_upper": null, "passed_lower": null, "last": "2009-08-06 00:00:00", "signed": null, "first": "2009-02-25 00:00:00"}, "versions": [{"url": "http://leginfo.legislature.ca.gov/faces/billNavClient.xhtml?bill_id=200920100AB667", "mimetype": "text/html", "+mimetype": "text/html", "doc_id": "CAD00040031", "name": "AB667"}], "country": "us", "created_at": "2010-07-09 17:28:10", "level": "state", "alternate_titles": ["An act to amend Section 104830 of, and to add Section 104762 to, the Health and Safety Code, relating to oral health."], "bill_id": "AB 667"}
|