การใช้ API

เอกสารนี้จะอธิบายถึงสิ่งที่คุณจำเป็นต้องทราบในการใช้ Google Civic Information API โปรดดูคำถามที่พบบ่อยเกี่ยวกับ Civic Info API ที่มีข้อมูลพื้นฐานเกี่ยวกับ API รวมถึงคำถามที่พบบ่อยจากฟอรัมผู้ใช้ของเรา นอกจากนี้คุณจะเห็น 2 ตัวอย่างด้านล่างคือ ตัวอย่างแรกคือการมองหาข้อมูลผู้มีสิทธิ์เลือกตั้งระหว่างการเลือกตั้ง และ 2 คือการค้นหาตัวแทนที่ได้รับเลือกตั้ง

ระบุใบสมัครของคุณต่อ Google

แอปพลิเคชันของคุณต้องระบุตนเองทุกครั้งที่ส่งคำขอไปยัง Google Civic Information API ด้วยการใส่คีย์ API ไปกับคำขอแต่ละรายการ

การรับและการใช้คีย์ API

ในการรับคีย์ API ให้ทำดังนี้

  1. เปิดหน้าข้อมูลเข้าสู่ระบบในคอนโซล API
  2. 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"
    }
   ]
  }
 ]
}