เอกสารนี้อธิบายสิ่งที่คุณจำเป็นต้องทราบในการใช้ Google Civic Information API คุณสามารถดู ที่คำถามที่พบบ่อยเกี่ยวกับ Ciivic Info API ที่มีข้อมูลพื้นฐานบางอย่างเกี่ยวกับ API รวมถึงคำถามที่พบบ่อยจากฟอรัมผู้ใช้ของเรา นอกจากนี้ คุณสามารถดูตัวอย่าง 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 จะปรากฏขึ้น
![](https://cloud.google.com/speech/docs/common/images/api-key-add-restriction.png?authuser=8&hl=th)
ประเภทข้อจำกัดที่เลือกจะขึ้นอยู่กับความต้องการของแอปพลิเคชัน ดังนี้
- เว็บแอปพลิเคชันมีการโต้ตอบโดยตรงกับ API (กล่าวคือ ไม่ใช่ผ่าน แบ็กเอนด์หรือมิดเดิลแวร์) ควรเพิ่มข้อจำกัดผู้อ้างอิง HTTP อย่างไรก็ตาม โปรดทราบว่าแอปพลิเคชันดังกล่าวจะแสดงคีย์ API ของตนแบบสาธารณะ ต้องการใช้แผนการตรวจสอบสิทธิ์บัญชีบริการแทน
- แอปพลิเคชันแบ็กเอนด์ที่ไม่รองรับบัญชีบริการ (เช่น อุปกรณ์แบบฝังที่ไม่มีภาษาที่รองรับใน ไลบรารีของไคลเอ็นต์) ควรเพิ่มข้อจำกัดที่อยู่ IP เพื่อป้องกัน เทียบกับการใช้งานของไคลเอ็นต์ในที่อยู่ IP ที่ต่างกัน
- แอปพลิเคชัน Android ควรเพิ่มข้อจำกัดแอป Android และเพิ่มข้อจำกัด ชื่อแพ็กเกจและลายนิ้วมือสำหรับลงนามในใบรับรอง SHA-1
- แอปพลิเคชัน iOS ควรเพิ่มข้อจำกัดแอป iOS และเพิ่มแพ็กเกจ iOS ทั้งหมด เพื่อจำกัดการเรียก API ใน Bundle ของ iOS เหล่านี้
สำหรับการทดสอบ คุณอาจไม่ต้องการระบุข้อจำกัดใดๆ เลย อย่างไรก็ตาม ขอแนะนำให้คุณเพิ่มการจำกัดให้แก่คีย์นี้หรือลบครั้งเดียว คุณทำให้แอปพลิเคชันของคุณใช้งานได้จริง
ตัวอย่างElectionQuery
ต่อไปนี้เป็นตัวอย่าง (โดยใช้ API เวอร์ชัน "v2") ของการเรียกฟิลด์ API electionQuery เพื่อรับรายการรหัสการเลือกตั้งที่ถูกต้อง จากนั้นใช้ voterInfoQuery API ที่มี ที่อยู่จดทะเบียนของผู้มีสิทธิเลือกตั้งเพื่อขอข้อมูล การเลือกตั้งที่เลือกไว้
ใช้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" } ] }
ผู้โหวตข้อมูลการค้นหาโดยใช้ curl
ใช้ curl
เพื่อส่งข้อมูลผู้มีสิทธิเลือกตั้ง
คำขอสำหรับทดสอบ 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"
HotrInfoQuery โดยใช้ไลบรารีของไคลเอ็นต์ 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>
การตอบกลับจากผู้มีสิทธิ์โหวต:
{ "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" } ] } ] }