เอกสารนี้จะอธิบายถึงสิ่งที่คุณจำเป็นต้องทราบในการใช้ Google Civic Information API โปรดดูคำถามที่พบบ่อยเกี่ยวกับ Civic Info API ที่มีข้อมูลพื้นฐานเกี่ยวกับ API รวมถึงคำถามที่พบบ่อยจากฟอรัมผู้ใช้ของเรา นอกจากนี้คุณจะเห็น 2 ตัวอย่างด้านล่างคือ ตัวอย่างแรกคือการมองหาข้อมูลผู้มีสิทธิ์เลือกตั้งระหว่างการเลือกตั้ง และ 2 คือการค้นหาตัวแทนที่ได้รับเลือกตั้ง
ระบุใบสมัครของคุณต่อ Google
แอปพลิเคชันของคุณต้องระบุตนเองทุกครั้งที่ส่งคำขอไปยัง Google Civic Information API ด้วยการใส่คีย์ API ไปกับคำขอแต่ละรายการ
การรับและการใช้คีย์ API
ในการรับคีย์ API ให้ทำดังนี้
- เปิดหน้าข้อมูลเข้าสู่ระบบในคอนโซล API
-
API นี้รองรับข้อมูลเข้าสู่ระบบ 2 ประเภท
สร้างข้อมูลเข้าสู่ระบบที่เหมาะสมกับโปรเจ็กต์ดังนี้
-
OAuth 2.0: เมื่อใดก็ตามที่แอปพลิเคชันขอข้อมูลส่วนตัวของผู้ใช้ แอปพลิเคชันจะต้องส่งโทเค็น OAuth 2.0 ไปพร้อมกับคำขอ แอปพลิเคชันจะส่งรหัสไคลเอ็นต์ก่อน และอาจรวมถึงรหัสลับไคลเอ็นต์เพื่อรับโทเค็น คุณสร้างข้อมูลเข้าสู่ระบบ 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 แล้ว แอปพลิเคชันจะเพิ่มพารามิเตอร์การค้นหา key=yourAPIKey
ต่อท้าย URL ของคำขอทั้งหมดได้
คีย์ API ปลอดภัยสำหรับการฝังใน URL โดยไม่จำเป็นต้องมีการเข้ารหัสใดๆ
ข้อจำกัดของคีย์ API
คีย์ API ของคุณจะไม่ถูกจำกัดโดยค่าเริ่มต้น ซึ่งไม่ปลอดภัยหากทุกคนจะอ่านคีย์นี้ (เช่น หากอยู่ในเบราว์เซอร์) หรือเข้าถึงอุปกรณ์ที่มีการวางคีย์ได้ เราขอแนะนำให้คุณจำกัดคีย์ API นี้เพื่อยับยั้งการใช้งานที่ไม่ได้รับอนุญาต
หากต้องการเพิ่มข้อจำกัด ให้คลิกจำกัดคีย์ภายในกล่องโต้ตอบคีย์ API ที่สร้าง แผงการกำหนดค่าคีย์ API จะปรากฏดังนี้
ประเภทข้อจำกัดที่คุณเลือกจะขึ้นอยู่กับความต้องการของแอปพลิเคชัน ดังนี้
- เว็บแอปพลิเคชันที่โต้ตอบกับ API โดยตรง (ไม่ผ่านแบ็กเอนด์หรือมิดเดิลแวร์ใดๆ) ควรเพิ่มข้อจำกัดผู้อ้างอิง HTTP อย่างไรก็ตาม โปรดทราบว่าแอปพลิเคชันดังกล่าวจะแสดงคีย์ API ต่อสาธารณะ แต่ขอแนะนำให้ใช้รูปแบบการตรวจสอบสิทธิ์บัญชีบริการแทน
- แอปพลิเคชันแบ็กเอนด์ที่ไม่รองรับบัญชีบริการ (เช่น อุปกรณ์ที่ฝังไว้ที่ไม่มีภาษาที่รองรับในไลบรารีของไคลเอ็นต์) ควรเพิ่มการจำกัดที่อยู่ IP เพื่อป้องกันการใช้งานจากไคลเอ็นต์ที่มีที่อยู่ IP ที่ต่างกัน
- แอปพลิเคชัน Android ควรเพิ่มข้อจำกัดของแอป Android และเพิ่มชื่อแพ็กเกจและลายนิ้วมือสำหรับลงนามในใบรับรอง SHA-1
- แอปพลิเคชัน iOS ควรเพิ่มข้อจำกัดของแอป iOS และเพิ่มตัวระบุชุด iOS เพื่อจำกัดการเรียก API ของชุด iOS เหล่านี้
สำหรับการทดสอบ คุณอาจไม่ต้องการตั้งข้อจำกัดใดๆ เลย อย่างไรก็ตาม ขอแนะนําให้คุณเพิ่มการจำกัดให้คีย์นี้หรือลบเมื่อทำให้แอปพลิเคชันใช้งานได้เป็นเวอร์ชันที่ใช้งานจริงแล้ว
ตัวอย่าง ElectionQuery
นี่คือตัวอย่าง (ที่ใช้ API เวอร์ชัน "v2") ของการเรียกใช้ API electionQuery เพื่อรับรายการรหัสการเลือกตั้งที่ถูกต้อง จากนั้นใช้ API voterInfoQuery กับที่อยู่ที่ลงทะเบียนของผู้มีสิทธิเลือกตั้งเพื่อรับข้อมูลสำหรับการเลือกตั้งที่เลือก
ใช้ElectionQuery เพื่อดูรายการรหัสการเลือกตั้งที่ถูกต้อง:
https://www.googleapis.com/civicinfo/v2/elections?key=<YOUR_API_KEY>
คำตอบเกี่ยวกับคำค้นหาเกี่ยวกับการเลือกตั้ง:
{ "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" } ] }
ElectionrInfoQuery โดยใช้ curl
ใช้ curl
เพื่อส่งคำขอข้อมูลผู้มีสิทธิเลือกตั้ง
สำหรับรหัสการเลือกตั้ง VIP 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"
voterInfoQuery โดยใช้ไลบรารีของไคลเอ็นต์ Google API สำหรับ JavaScript
ตัวอย่างนี้แสดงผู้โหวตInfoQuery เดียวกันกับตัวอย่าง Curl ก่อนหน้านี้ แต่ใช้ไลบรารีของไคลเอ็นต์ 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>
คำตอบผู้โหวตInfoQuery:
{ "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 } ] } ] }
agentInfoQuery ที่ใช้ Curl
ต่อไปนี้คือตัวอย่างของการค้นหาตัวแทนที่ได้รับเลือกสำหรับที่อยู่ ใช้ curl
เพื่อส่งคำขอ representativeInfoByAddress
สำหรับ (ทดสอบ) ที่อยู่ 1263 Pacific Ave. Kansas City, KS
(ดูคำตอบของrepresentativeInfoByAddress ด้านล่าง)
curl "https://www.googleapis.com/civicinfo/v2/representatives?key=<YOUR_API_KEY>&address=1263%20Pacific%20Ave.%20Kansas%20City%20KS"
การรายงานข้อผิดพลาด
คุณพบข้อมูลที่หายไปหรือไม่ถูกต้องของเจ้าหน้าที่ที่ได้รับเลือกตั้งไหม บางครั้งเจ้าหน้าที่รัฐจะลาออกจากตำแหน่งก่อนที่วาระสิ้นสุดลงหรือเปลี่ยนแปลงข้อมูลติดต่อ โปรดแจ้งให้เราทราบเกี่ยวกับการเปลี่ยนแปลงเหล่านี้แต่ยังไม่ได้แสดงในข้อมูลที่เราส่งคืน
เราจะยืนยันรายงานของคุณกับผู้ใช้คนอื่นๆ ผู้ให้บริการข้อมูล หรือแหล่งข้อมูลอย่างเป็นทางการของรัฐบาล เนื่องจากมีการรายงานเป็นจำนวนมาก เราจึงไม่สามารถตอบกลับถึงคุณโดยตรง หากได้รับอนุมัติ อาจใช้เวลาสักครู่เพื่อให้การเปลี่ยนแปลงปรากฏในผลลัพธ์ของ API
หากต้องการรายงานข้อผิดพลาด โปรดกรอกแบบฟอร์มนี้
การตอบกลับ agentInfoByAddress:
{ "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" } ] } ] }