API を使用する

このドキュメントでは、Google Civic Information API を使用するために知っておくべきことについて説明します。詳しくは、 Civic Info API に関するよくある質問をご覧ください。 をご覧ください。 以下に 2 つの例を示します。 投票者情報、選挙期間中の投票者情報、 選出される代表者

Google に対してアプリケーションを識別

アプリケーションは、リクエストを送信するたびに自身を識別する必要があります。 Google Civic Information API(各 API キーに API キーを含める) リクエストできます。

API キーの取得と使用

API キーを取得するには:

  1. API コンソールで [認証情報] ページを開きます。
  2. この API では、2 種類の認証情報がサポートされています。 プロジェクトに適した認証情報を作成します。 <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 キーを作成したら、アプリケーションですべてのリクエスト URL の末尾にクエリ パラメータ key=yourAPIKey を追加できます。

API キーは、安全に URL に埋め込むことができます。エンコーディングの必要はありません。

API キーの制限

API キーはデフォルトで制限されていないため、誰でもアクセスできるようにしても安全ではありません。 このキーを読み取る(ブラウザ内に配置されている場合など)するか、 鍵が配置されているデバイスです。制限を適用することをおすすめします。 不正使用を防止できます。

制限を追加するには、[API キーを作成しました] 内の [キーを制限] をクリックします。 ダイアログ ボックスで示されます。[API キー] 構成パネルが表示されます。

選択する制限のタイプはアプリケーションのニーズによって異なります。

  • 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 による RepresentativeInfoQuery

住所の選出代表者を検索する例を次に示します。curl を使用する representativeInfoByAddress リクエストを送信し、 カンザスシティ、カンザスシティ、1263 Pacific Ave. の(テスト用)住所のリクエスト (後述の representativeInfoByAddress レスポンスを参照)。

curl "https://www.googleapis.com/civicinfo/v2/representatives?key=<YOUR_API_KEY>&address=1263%20Pacific%20Ave.%20Kansas%20City%20KS"

エラーの報告

公選された役職者の情報が不足している、または誤った情報が表示されている公務員は、任期が終了する前に退職したり、連絡先情報を変更したりすることがあります。返されるデータにまだ反映されていないこのような変更についてお知らせください。

Google は、他のユーザー、データ提供者、政府の公式データソースを通じて報告を確認します。多数のご報告をお寄せいただいている関係上、直接回答を差し上げることができない場合もあります。承認された場合、変更内容が API の結果に反映されるまでに時間がかかることがあります。

エラーを報告するには、こちらのフォームにご記入ください

employeeInfoByAddress レスポンス:

{
 "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"
    }
   ]
  }
 ]
}