本文档介绍了使用 Google Civic Information API 时需要了解的内容。您可以查看 Civic Info API 常见问题解答 ,其中包含有关该 API 的一些基本信息,以及用户论坛上的常见问题解答。 此外,您还可以查看以下两个示例,首先是查找 选民信息,第二个用于查找 民选代表。
让 Google 识别您的应用
您的应用需要在每次发送请求到 Google Civic Information API,方法是为每个请求添加 API 密钥 请求。
获取和使用 API 密钥
要获取 API 密钥,请执行以下操作:
- 打开 API 控制台中的“凭据”页面。
-
此 API 支持两种类型的凭据。
创建适合您项目的凭据:
<ph type="x-smartling-placeholder">
- </ph>
-
OAuth 2.0:当您的应用请求非公开用户数据时,该应用必须将 OAuth 2.0 令牌随请求一起发送。要获取令牌,您的应用应先发送客户端 ID(也可能需要发送客户端密钥)。您可以为网页应用、服务账号或已安装应用生成 OAuth 2.0 凭据。
注意:由于此 API 没有任何方法 可能需要 OAuth 2.0 授权 API 密钥 。但是,如果您的应用调用需要用户授权的其他 API,那么您仍然需要 OAuth 2.0 凭据。
如需了解详情,请参阅 OAuth 2.0 文档。
-
API 密钥: 未提供 OAuth 2.0 令牌的请求必须发送一个 API 键。 该密钥用于标识您的项目,并提供 API 访问权限、配额和报告。
此 API 支持多种类型的 API 密钥限制。如果您使用的 API 密钥 创建 API 密钥,请在控制台中创建 API 密钥,方法是 点击创建凭据 >API 密钥。您可以先对密钥设定限制,然后再使用 在生产环境中使用,方法是点击限制密钥,然后选择 限制。
-
为保障 API 密钥的安全,请遵循以安全的方式使用 API 密钥的最佳做法。
在您获得 API 密钥后,您的应用便可在所有请求网址后附加查询参数 key=yourAPIKey
。
API 密钥可以安全地嵌入网址中;不需要进行任何编码。
API 密钥限制
默认情况下,您的 API 密钥不受限制,如果任何人都可以 读取该键(例如,如果放置在浏览器中)或访问 密钥所在的设备我们建议您对以下内容设置限制: 此 API 密钥,以防止未经授权的使用。
如需添加限制,请在已创建的 API 密钥中点击限制密钥 对话框。系统随即会显示 API 密钥配置面板:
![](https://cloud.google.com/speech/docs/common/images/api-key-add-restriction.png?authuser=0&hl=sl)
您选择的限制类型取决于您的应用需求:
- 网络应用直接与 API 交互(即,并非通过 任何后端或中间件)都应添加 HTTP 引荐来源网址限制。 但请注意,此类应用将公开其 API 密钥; 建议您改用服务账号身份验证方案。
- 无法以其他方式支持服务账号的后端应用 (例如,在 客户端库)应添加 IP 地址限制,以保护 来自不同 IP 地址的客户端的使用量
- Android 应用应添加 Android 应用限制,并在 软件包名称和 SHA-1 签名证书指纹。
- iOS 应用应添加 iOS 应用限制,并添加任何 iOS 软件包 来限制只有这些 iOS 软件包可以调用 API。
对于测试,您可能完全不希望施加任何限制。不过, 建议您为此密钥添加限制或删除一次 可将应用部署到生产环境中
ElectionQuery 示例
以下示例(使用 API 版本“v2”)调用了 electionQuery API 来获取有效选举 ID 列表,然后使用 voterInfoQuery API,其中包含 选民登记地址获取相关信息 已选定的选举。
使用 ElectionQuery 来获取有效选举 ID 列表:
https://www.googleapis.com/civicinfo/v2/elections?key=<YOUR_API_KEY>
ElectionQuery 响应:
{ "kind": "civicinfo#electionsqueryresponse", "elections": [ { "id": "2000", "name": "VIP Test Election", "electionDay": "2013-06-06" }, { "id": "2124", "name": "Rhode Island 2012 Primary Election", "electionDay": "2012-09-11" }, { "id": "2126", "name": "Delaware 2012 Primary Election", "electionDay": "2012-09-11" } ] }
使用 curl 的 voterInfoQuery
使用 curl
发送 voterInfoQuery
申请 VIP 测试选举 ID 2000 和(测试)地址 1263 Pacific Ave. Kansas City, 的选民
KS(请参阅下面的 voterInfoQuery 响应):
curl "https://www.googleapis.com/civicinfo/v2/voterinfo?key=<YOUR_API_KEY>&address=1263%20Pacific%20Ave.%20Kansas%20City%20KS&electionId=2000"
使用适用于 JavaScript 的 Google API 客户端库的 voterInfoQuery
此示例发出了与上一个 curl 示例相同的 voterInfoQuery,但它使用 JavaScript 客户端库。 voterInfoQuery 响应与 查看 curl 示例响应。
<!doctype html> <html> <head> <script> /** * Build and execute request to look up voter info for provided address. * @param {string} address Address for which to fetch voter info. * @param {function(Object)} callback Function which takes the * response object as a parameter. */ function lookup(address, callback) { /** * Election ID for which to fetch voter info. * @type {number} */ var electionId = 2000; /** * Request object for given parameters. * @type {gapi.client.HttpRequest} */ var req = gapi.client.request({ 'path' : '/civicinfo/v2/voterinfo', 'params' : {'electionId' : electionId, 'address' : address} }); req.execute(callback); } /** * Render results in the DOM. * @param {Object} response Response object returned by the API. * @param {Object} rawResponse Raw response from the API. */ function renderResults(response, rawResponse) { var el = document.getElementById('results'); if (!response || response.error) { el.appendChild(document.createTextNode( 'Error while trying to fetch polling place')); return; } var normalizedAddress = response.normalizedInput.line1 + ' ' + response.normalizedInput.city + ', ' + response.normalizedInput.state + ' ' + response.normalizedInput.zip; if (response.pollingLocations.length > 0) { var pollingLocation = response.pollingLocations[0].address; var pollingAddress = pollingLocation.locationName + ', ' + pollingLocation.line1 + ' ' + pollingLocation.city + ', ' + pollingLocation.state + ' ' + pollingLocation.zip; var normEl = document.createElement('strong'); normEl.appendChild(document.createTextNode( 'Polling place for ' + normalizedAddress + ': ')); el.appendChild(normEl); el.appendChild(document.createTextNode(pollingAddress)); } else { el.appendChild(document.createTextNode( 'Could not find polling place for ' + normalizedAddress)); } } /** * Initialize the API client and make a request. */ function load() { gapi.client.setApiKey('YOUR API KEY GOES HERE'); lookup('1263 Pacific Ave. Kansas City KS', renderResults); } </script> <script src="https://apis.google.com/js/client.js?onload=load"></script> </head> <body> <div id="results"></div> </body> </html>
voterInfoQuery 响应:
{ "kind": "civicinfo#voterinforesponse", "status": "success", "election": { "id": "2000", "name": "VIP Test Election", "electionDay": "2013-06-06" }, "normalizedInput": { "line1": "1263 Pacific Ave", "city": "Kansas City", "state": "KS", "zip": "66102" }, "pollingLocations": [ { "address": { "locationName": "National Guard Armory", "line1": "100 S 20th St", "line2": "", "line3": "", "city": "Kansas City", "state": "KS", "zip": "66102 " }, "pollingHours": " - " } ], "contests": [ { "type": "General", "office": "Attorney" }, { "type": "General", "office": "Sheriff" }, { "type": "General", "office": "Kansas Representative 32", "district": { "name": "Kansas Representative 32", "scope": "stateLower", "id": "32" }, "sources": [ { "name": "Voting Information Project", "official": true } ] }, { "type": "General", "office": "Governor/Lt. Governor", "candidates": [ { "name": "Andrew P. Gray", "party": "Libertarian", "email": "chair@lpks.org" }, { "name": "Kenneth (ken) W. Cannon", "party": "Reform" }, { "name": "Tom Holland", "party": "Democratic", "candidateUrl": "www.tomhollandforkansas.com", "email": "info@tomhollandforkansas.com" }, { "name": "Sam Brownback", "party": "Republican", "candidateUrl": "www.brownbackforkansas.com", "email": "media@brownback.com" } ] }, { "type": "General", "office": "KCKCC Member AL Brd of Trustee" }, { "type": "General", "office": "Secretary of State", "candidates": [ { "name": "Chris Biggs", "party": "Democratic" }, { "name": "Kris Kobach", "party": "Republican" }, { "name": "Phillip Horatio Lucas", "party": "Libertarian" }, { "name": "Derek Langseth", "party": "Reform" } ] }, { "type": "General", "office": "U.S. Senate", "district": { "name": "U.S. Senate", "scope": "statewide", "id": "5" }, "candidates": [ { "name": "Lisa Johnston", "party": "Democratic", "candidateUrl": "www.lisaforkansas.com", "phone": "913-662-1457", "email": "lisa@lisaforkansas.com" }, { "name": "Jerry Moran", "party": "Republican" }, { "name": "Michael Wm. Dann", "party": "Libertarian" }, { "name": "Joseph (joe) K. Bellis", "party": "Reform" } ], "sources": [ { "name": "Voting Information Project", "official": true } ] }, { "type": "General", "office": "BD of Public Utilities 2" }, { "type": "General", "office": "Attorney General", "candidates": [ { "name": "Steve Six", "party": "Democratic" }, { "name": "Derek Schmidt", "party": "Republican" }, { "name": "Dennis Hawver", "party": "Libertarian" } ] }, { "type": "General", "office": "U.S. Representative 3" }, { "type": "General", "office": "Governor/Lt. Governor", "district": { "name": "Governor/Lt. Governor", "scope": "statewide", "id": "1" }, "candidates": [ { "name": "Andrew P. Gray", "party": "Libertarian", "email": "chair@lpks.org" }, { "name": "Kenneth (ken) W. Cannon", "party": "Reform" }, { "name": "Tom Holland", "party": "Democratic", "candidateUrl": "www.tomhollandforkansas.com", "email": "info@tomhollandforkansas.com" }, { "name": "Sam Brownback", "party": "Republican", "candidateUrl": "www.brownbackforkansas.com", "email": "media@brownback.com" } ], "sources": [ { "name": "Voting Information Project", "official": true } ] }, { "type": "General", "office": "Commissioner-At-Large 2" }, { "type": "General", "office": "Kansas Senate 6" }, { "type": "General", "office": "Clerk" }, { "type": "General", "office": "President / Vice President" }, { "type": "General", "office": "Register of Deeds" }, { "type": "General", "office": "BD of Public Utilities (AL)" }, { "type": "General", "office": "Commissioner 2" }, { "type": "General", "office": "USD 500" }, { "type": "General", "office": "State Board of Education 1" }, { "type": "General", "office": "Treasurer" } ], "state": [ { "name": "State of Kansas", "electionAdministrationBody": { "name": "Kansas", "electionOfficials": [ { "name": "Brad Bryant", "title": "Election Director", "officePhoneNumber": "785-296-4561", "emailAddress": "cclark@essvote.com" } ] }, "local_jurisdiction": { "name": "Wyandotte", "electionAdministrationBody": { "name": "Wyandotte", "electionInfoUrl": "http://www.wycokck.org/election", "electionOfficials": [ { "name": "Bruce Newby", "title": "Election Commissioner", "officePhoneNumber": "(913) 573-8500", "emailAddress": "hbbrooks@essvote.com" } ] }, "sources": [ { "name": "Voting Information Project", "official": true } ] }, "sources": [ { "name": "Voting Information Project", "official": true } ] } ] }
使用 curl 的 deckInfoQuery
以下示例展示了如何查找某个地址的民选代表。使用curl
发送 representativeInfoByAddress
请求(测试)地址 1263 Pacific Ave. Kansas City, KS
(请参阅下面的 presentativeInfoByAddress 响应):
curl "https://www.googleapis.com/civicinfo/v2/representatives?key=<YOUR_API_KEY>&address=1263%20Pacific%20Ave.%20Kansas%20City%20KS"
报告错误
您是否发现某个民选官员的信息缺失或不正确?公职人员有时会在任期结束前离职或更改其联系信息。请将尚未反映在我们返回的数据中的此类更改告知我们。
我们会通过其他用户、数据提供方或政府官方数据源确认您的报告。由于所报告问题的数量较多,我们可能无法直接回复您。如果获得批准,您所做的更改可能需要一段时间才能显示在 API 结果中。
若要报告错误,请填写此表单。
deckInfoByAddress 响应:
{ "kind": "civicinfo#representativeInfoResponse", "status": "success", "normalizedInput": { "line1": "1263 pacific ave", "city": "kansas city", "state": "KS", "zip": "66102" }, "divisions": { "ocd-division/country:us/state:ks/county:wyandotte/council_district:2": { "name": "Wyandotte County Commissioner District 2", "scope": "countyCouncil" }, "ocd-division/country:us/state:ks/cd:3": { "name": "Kansas's 3rd congressional district", "scope": "congressional", "officeIndices": [ 0 ] }, "ocd-division/country:us/state:ks/sldl:32": { "name": "Kansas House of Representatives district 32", "scope": "stateLower", "officeIndices": [ 1 ] }, "ocd-division/country:us/state:ks/place:kansas_city": { "name": "Kansas City city", "scope": "citywide", "officeIndices": [ 2, 3, 4, 5, 6, 7, 8 ] }, "ocd-division/country:us/state:ks/county:wyandotte": { "name": "Wyandotte County", "scope": "countywide" }, "ocd-division/country:us": { "name": "United States", "scope": "national", "officeIndices": [ 9, 10 ] }, "ocd-division/country:us/state:ks": { "name": "Kansas", "scope": "statewide", "officeIndices": [ 11, 12, 13, 14, 15, 16, 17 ] }, "ocd-division/country:us/state:ks/sldu:6": { "name": "Kansas State Senate district 6", "scope": "stateUpper", "officeIndices": [ 18 ] } }, "offices": [ { "name": "United States House of Representatives KS-03", "level": "federal", "officialIndices": [ 0 ] }, { "name": "KS State House District 32", "level": "state", "officialIndices": [ 1 ] }, { "name": "Sheriff", "level": "county", "officialIndices": [ 2 ] }, { "name": "District Attorney", "level": "county", "officialIndices": [ 3 ] }, { "name": "Register of Deeds", "level": "county", "officialIndices": [ 4 ] }, { "name": "Director of Revenue", "level": "county", "officialIndices": [ 5 ] }, { "name": "Unified Government Clerk", "level": "county", "officialIndices": [ 6 ] }, { "name": "Unified Government Commission, At Large, District 1", "level": "county", "officialIndices": [ 7 ] }, { "name": "Unified Government Commission, At Large, District 2", "level": "county", "officialIndices": [ 8 ] }, { "name": "President", "level": "federal", "officialIndices": [ 9 ] }, { "name": "Vice President", "level": "federal", "officialIndices": [ 10 ] }, { "name": "Governor", "level": "state", "officialIndices": [ 11 ] }, { "name": "State Treasurer", "level": "state", "officialIndices": [ 12 ] }, { "name": "Attorney General", "level": "state", "officialIndices": [ 13 ] }, { "name": "Secretary of State", "level": "state", "officialIndices": [ 14 ] }, { "name": "Lieutenant Governor", "level": "state", "officialIndices": [ 15 ] }, { "name": "United States Senate", "level": "federal", "officialIndices": [ 16, 17 ] }, { "name": "Insurance Commissioner", "level": "state", "officialIndices": [ 18 ] }, { "name": "KS State Senate District 6", "level": "state", "officialIndices": [ 19 ] } ], "officials": [ { "name": "Kevin Yoder", "address": [ { "line1": "215 Cannon HOB", "city": "washington d.c.", "state": "DC", "zip": "20515" } ], "party": "Republican", "phones": [ "(202) 225-2865" ], "urls": [ "http://yoder.house.gov/" ], "photoUrl": "http://yoder.house.gov/images/user_images/headshot.jpg", "channels": [ { "type": "Facebook", "id": "CongressmanKevinYoder" }, { "type": "Twitter", "id": "RepKevinYoder" } ] }, { "name": "Mike Peterson", "address": [ { "line1": "450 North 17th", "city": "kansas city", "state": "KS", "zip": "66102" } ], "party": "Democratic", "phones": [ "(785) 296-7371" ], "urls": [ "http://www.kslegislature.org/li/b2013_14/members/rep_peterson_michael_1/" ], "photoUrl": "http://www.kslegislature.org/li/m/images/pics/rep_peterson_michael_1.jpg", "emails": [ "michael.peterson@house.ks.gov" ] }, { "name": "Donald Ash", "address": [ { "line1": "701 Nth 7th Street Suite 20", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Democratic", "phones": [ "(913) 573-2861" ], "urls": [ "http://www.wycokck.org/DefaultDept32.aspx?id=2614" ], "emails": [ "dash@wycokck.org" ] }, { "name": "Jerome Gorman", "address": [ { "line1": "701 Nth 7th Street Suite 10", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Democratic", "phones": [ "(913) 573-2851" ], "urls": [ "http://www.wycokck.org/Internet2010DistAttyBanner.aspx?id=176&banner=6912&menu_id=946" ] }, { "name": "Nancy Burns", "address": [ { "line1": "710 n. 7th street", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Unknown", "phones": [ "(913) 573-2841" ], "urls": [ "http://www.wycokck.org/Internetdept.aspx?id=2600&menu_id=1024&banner=15284" ], "emails": [ "nburns@wycokck.org" ] }, { "name": "Debbie Pack", "address": [ { "line1": "710 n. 7th street", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Unknown", "phones": [ "(913) 573-2821" ], "urls": [ "http://www.wycokck.org/treasury/" ], "emails": [ "dpack@wycokck.org" ] }, { "name": "Bridgette D. Cobbins", "address": [ { "line1": "710 n. 7th street", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Unknown", "phones": [ "(913) 573-5260" ], "urls": [ "http://www.wycokck.org/InternetDept.aspx?id=18992&menu_id=554&terms=Bridgette%20Cobbins" ], "emails": [ "clerkwest@wycokck.org" ] }, { "name": "Vacant", "address": [ { "line1": "701 Nth 7th Street Suite 979", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Unknown", "phones": [ "(913) 573-5040" ], "urls": [ "http://www.wycokck.org/InternetDept.aspx?id=5750&menu_id=1278&banner=15284" ], "channels": [ { "type": "Facebook", "id": "cityofkck" }, { "type": "Twitter", "id": "CityofKCK" } ] }, { "name": "John Mendez", "address": [ { "line1": "701 Nth 7th Street Suite 979", "city": "kansas city", "state": "KS", "zip": "66101" } ], "party": "Unknown", "phones": [ "(913) 573-5040" ], "urls": [ "http://www.wycokck.org/Internetdept.aspx?id=5752&menu_id=1278&banner=15284" ], "emails": [ "jmendez@wycokck.org" ], "channels": [ { "type": "Facebook", "id": "cityofkck" }, { "type": "Twitter", "id": "CityofKCK" } ] }, { "name": "Barack Hussein Obama II", "address": [ { "line1": "The White House", "line2": "1600 Pennsylvania Avenue NW", "line3": "", "city": "Washington", "state": "DC", "zip": "20500" } ], "party": "Democrat", "phones": [ "(202) 456-1111", "(202) 456-1414" ], "urls": [ "http://www.whitehouse.gov/administration/president_obama/", "http://www.barackobama.com/index.php" ], "photoUrl": "http://www.whitehouse.gov/sites/default/files/imagecache/admin_official_lowres/administration-official/ao_image/president_official_portrait_hires.jpg", "channels": [ { "type": "GooglePlus", "id": "110031535020051778989" }, { "type": "Twitter", "id": "barackobama" }, { "type": "Facebook", "id": "barackobama" }, { "type": "YouTube", "id": "barackobama" } ] }, { "name": "Joseph (Joe) Robinette Biden Jr.", "address": [ { "line1": "The White House", "line2": "1600 Pennsylvania Avenue NW", "line3": "", "city": "Washington", "state": "DC", "zip": "20500" } ], "party": "Democrat", "urls": [ "http://www.whitehouse.gov/administration/vice-president-biden" ], "photoUrl": "http://www.whitehouse.gov/sites/default/files/imagecache/admin_official_lowres/administration-official/ao_image/vp_portrait.jpeg", "channels": [ { "type": "Twitter", "id": "VP" }, { "type": "Twitter", "id": "JoeBiden" }, { "type": "Facebook", "id": "joebiden" } ] }, { "name": "Sam Brownback", "address": [ { "line1": "Capitol", "line2": "300 sw 10th ave.", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-3232" ], "urls": [ "http://www.governor.ks.gov/" ], "channels": [ { "type": "Facebook", "id": "govsambrownback" }, { "type": "Twitter", "id": "govsambrownback" } ] }, { "name": "Ron Estes", "address": [ { "line1": "Kansas State Treasurer 900 SW Jackson", "line2": "Suite 201", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-3171" ], "urls": [ "http://www.kansasstatetreasurer.com/prodweb/main/index.php" ], "emails": [ "ron@treasurer.ks.gov" ], "channels": [ { "type": "Facebook", "id": "130975650300043" }, { "type": "Twitter", "id": "RonEstesKS" } ] }, { "name": "Derek Schmidt", "address": [ { "line1": "120 SW 10th Ave", "line2": "2nd Floor", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-2215" ], "urls": [ "http://ag.ks.gov/" ], "channels": [ { "type": "Twitter", "id": "KSAGOffice" } ] }, { "name": "Kris Kobach", "address": [ { "line1": "Kansas Secretary of State Memorial Hall", "line2": "1st Floor", "line3": "120 sw 10th avenue", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-4564" ], "urls": [ "http://www.kssos.org/" ], "emails": [ "kssos@sos.ks.gov" ], "channels": [ { "type": "Facebook", "id": "Kansas-Secretary-of-State" }, { "type": "Twitter", "id": "kansassos" } ] }, { "name": "Jeff Coyler", "address": [ { "line1": "State Capitol", "line2": "2nd Floor", "line3": "300 sw 10th ave.", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-2214" ], "urls": [ "https://governor.ks.gov/about-the-office/lt-govenor-jeff-colyer" ] }, { "name": "Jerry Moran", "address": [ { "line1": "361A Russell Senate Office Building", "city": "washington d.c.", "state": "DC", "zip": "20510" } ], "party": "Republican", "phones": [ "(202) 224-6521" ], "urls": [ "http://www.moran.senate.gov/public/" ], "photoUrl": "http://moran.senate.gov/public/index.cfm/files/serve?File_id=cd666b47-46e3-4a48-bcf1-ea2890f99817", "channels": [ { "type": "Facebook", "id": "jerrymoran" }, { "type": "Twitter", "id": "JerryMoran" }, { "type": "YouTube", "id": "senatorjerrymoran" } ] }, { "name": "Pat Roberts", "address": [ { "line1": "109 Hart Senate Office Building", "city": "washington d.c.", "state": "DC", "zip": "20510" } ], "party": "Republican", "phones": [ "(202) 224-4774" ], "urls": [ "http://www.roberts.senate.gov/public/" ], "photoUrl": "http://roberts.senate.gov/public/index.cfm?a=Files.Serve&File_id=b42c6b05-966e-48ea-b3ed-9e5fc4ab1a0d", "emails": [ "pat_roberts@roberts.senate.gov" ], "channels": [ { "type": "Facebook", "id": "SenPatRoberts" }, { "type": "Twitter", "id": "SenPatRoberts" }, { "type": "YouTube", "id": "SenPatRoberts" } ] }, { "name": "Sandy Praeger", "address": [ { "line1": "420 sw 9th street", "city": "topeka", "state": "KS", "zip": "66612" } ], "phones": [ "(785) 296-3071" ], "urls": [ "http://www.ksinsurance.org/" ], "emails": [ "commissioner@ksinsurance.org" ], "channels": [ { "type": "Facebook", "id": "KansasInsuranceDepartment" } ] }, { "name": "Pat Pettey", "address": [ { "line1": "Kansas State Capitol", "line2": "300 SW 10th St.", "line3": "Room 125-E", "city": "Topeka", "state": "KS", "zip": "66612-1504" }, { "line1": "5316 Lakewood Street", "line2": "", "line3": "", "city": "Kansas City", "state": "KS", "zip": "66106" } ], "party": "Democratic", "phones": [ "(785) 296-7375" ], "urls": [ "http://www.kslegislature.org/li/b2013_14/members/sen_pettey_pat_1/" ], "photoUrl": "http://www.kslegislature.org/li/m/images/pics/sen_pettey_pat_1.jpg", "emails": [ "Pat.Pettey@senate.ks.gov" ], "channels": [ { "type": "Twitter", "id": "PatHPettey" }, { "type": "Facebook", "id": "PetteyForSenate" } ] } ] }