使用 API

本文档介绍了使用 Google Civic Information API 时需要了解的内容。您可以参阅这篇 Civic Info API 常见问题解答,其中包含有关该 API 的一些基本信息,以及用户论坛中的常见问题解答。 此外,您还可以参阅下面的两个示例,第一个示例展示了如何在选举期间查询选民信息,第二个示例展示了如何查询当选代表

向 Google 标识您的应用

您的应用需要在每次发送请求到 Google Civic Information API,方法是为每个请求添加 API 密钥 请求。

获取和使用 API 密钥

要获取 API 密钥,请执行以下操作:

  1. 打开 API 控制台中的“凭据”页面
  2. 此 API 支持两种类型的凭据。 创建适合您的项目的凭据:
    • 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 密钥尚不存在,请在 GCP 控制台中创建 API 密钥,方法是:点击创建凭据 > API 密钥。您可以先对密钥设定相关限制,然后再在生产环境中使用密钥,方法是:点击限制密钥,然后选择其中一项限制

为保障 API 密钥的安全,请遵循以安全的方式使用 API 密钥的最佳做法

在您获得 API 密钥后,您的应用便可在所有请求网址后附加查询参数 key=yourAPIKey

API 密钥可以安全地嵌入网址中;不需要进行任何编码。

API 密钥限制

默认情况下,您的 API 密钥不受限制,如果任何人都可以 读取该键(例如,如果放置在浏览器中)或访问 密钥所在的设备我们建议您对以下内容设置限制: 此 API 密钥,以防止未经授权的使用。

如需添加限制,请在已创建的 API 密钥中点击限制密钥 对话框。系统随即会显示 API 密钥配置面板:

您选择的限制类型取决于您的应用需求:

  • 直接与 API 交互(即不通过任何后端或中间件)的 Web 应用应添加 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 针对 VIP 测试选举 ID 2000 和地址为 340 Main St, Venice, CA 90291 的选民发送 voterInfoQuery 请求。您可以参阅 voterInfoQuery 响应

curl "https://www.googleapis.com/civicinfo/v2/voterinfo?key=<YOUR_API_KEY>&address=340%20Main%20St.%20Venice%20CA&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": "2025-06-06",
  "ocdDivisionId": "ocd-division/country:us"
  },
  "normalizedInput": {
    "line1": "340 Main Street",
    "city": "Venice",
    "state": "CA",
    "zip": "90291"
  },
  "pollingLocations": [
    {
      "address": {
        "locationName": "WESTMINSTER AVENUE ELEMENTARY SCHOOL",
        "line1": "1010 ABBOT KINNEY BLVD",
        "city": "VENICE",
        "state": "CA",
        "zip": "90291"
      },
      "pollingHours": "",
      "latitude": 33.9919351,
      "longitude": -118.4722031,
      "startDate": "2024-03-05",
      "endDate": "2024-03-05",
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ]
    },
    {
      "address": {
        "locationName": "POP UP VOTE CENTER 5",
        "line1": "12400 IMPERIAL HWY",
        "city": "NORWALK",
        "state": "CA",
        "zip": "90650"
      },
      "latitude": 33.915989,
      "longitude": -118.0677283,
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ]
    }
  ],
  "dropOffLocations": [
    {
      "address": {
        "locationName": "FLEX VOTE CENTER 9",
        "line1": "12400 IMPERIAL HWY",
        "city": "NORWALK",
        "state": "CA",
        "zip": "90650"
      },
      "latitude": 33.915989,
      "longitude": -118.0677283,
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ]
    },
  ],
  "contests": [
    {
      "type": "General",
      "ballotTitle": "UNITED STATES REPRESENTATIVE, 36th District",
      "district": {
        "name": "36TH US CONGRESSIONAL",
        "scope": "congressional"
      },
      "numberElected": "1",
      "numberVotingFor": "1",
      "ballotPlacement": "103",
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ],
      "candidates": [
        {
          "name": "ARIANA HAKAMI",
          "party": "Party Preference: Republican"
        },
        {
          "name": "CLAIRE RAGGE ANDERSON",
          "party": "Party Preference: None"
        },
        {
          "name": "MELISSA TOOMIM",
          "party": "Party Preference: Republican"
        },
        {
          "name": "TED W. LIEU",
          "party": "Party Preference: Democratic"
        }
      ]
    },
    {
      "type": "ballot-measure",
      "ballotTitle": "LOS ANGELES CITY MUNICIPAL ELECTION - MEASURE HLA",
      "district": {
        "name": "CITY OF LOS ANGELES",
        "scope": "citywide"
      },
      "ballotPlacement": "116",
      "referendumTitle": "LOS ANGELES CITY MUNICIPAL ELECTION - MEASURE HLA",
      "referendumText": "CITY MOBILITY PLAN STREET IMPROVEMENT MEASURES. INITIATIVE ORDINANCE HLA. Shall an ordinance providing that when the City of Los Angeles makes a qualifying improvement to a City-owned street (e.g., a paving project), the City must also install certain street enhancements described in the City's Mobility Plan network of pedestrian, bicycle, transit, and vehicle routes; and requiring the City to provide publicly accessible information regarding street improvements; be adopted?",
      "referendumPassageThreshold": "MAJORITY OF VOTES CAST",
      "referendumBallotResponses": [
        "YES",
        "NO"
      ],
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ]
    },
    {
      "type": "General",
      "ballotTitle": "DISTRICT ATTORNEY",
      "district": {
        "name": "LOS ANGELES COUNTY",
        "scope": "countywide"
      },
      "numberElected": "1",
      "numberVotingFor": "1",
      "ballotPlacement": "129",
      "sources": [
        {
          "name": "Voting Information Project",
          "official": true
        }
      ],
      "candidates": [
        {
          "name": "GEORGE GASCÓN"
        },
        {
          "name": "JONATHAN HATAMI"
        },
        {
          "name": "NATHAN HOCHMAN"
        },
        {
          "name": "DEBRA ARCHULETA"
        },
        {
          "name": "JEFF CHEMERINSKY"
        },
        {
          "name": "ERIC SIDDALL"
        },
        {
          "name": "MARIA RAMIREZ"
        },
        {
          "name": "DAN KAPELOVITZ"
        },
        {
          "name": "LLOYD \"BOBCAT\" MASSON"
        },
        {
          "name": "JOHN MCKINNEY"
        },
        {
          "name": "CRAIG J. MITCHELL"
        },
        {
          "name": "DAVID S. MILTON"
        }
      ]
    }
  ],
  "state": [
    {
      "name": "California",
      "electionAdministrationBody": {
        "name": "Secretary of State",
        "electionInfoUrl": "https://www.sos.ca.gov/elections/",
        "electionRegistrationUrl": "https://registertovote.ca.gov/?t=s",
        "electionRegistrationConfirmationUrl": "https://voterstatus.sos.ca.gov",
        "absenteeVotingInfoUrl": "https://elections.cdn.sos.ca.gov/vote-by-mail/replacement-application.pdf",
        "votingLocationFinderUrl": "https://voterstatus.sos.ca.gov",
        "ballotInfoUrl": "https://www.sos.ca.gov/elections/ballot-status/wheres-my-ballot/",
        "correspondenceAddress": {
          "line1": "1500 11th Street, 5th Floor",
          "city": "Sacramento",
          "state": "California",
          "zip": "95814"
        }
      },
      "local_jurisdiction": {
        "name": "Los Angeles",
        "electionAdministrationBody": {
          "name": "Registrar-Recorder/County Clerk",
          "electionInfoUrl": "http://www.lavote.gov/",
          "electionRegistrationUrl": "http://registertovote.ca.gov/",
          "electionRegistrationConfirmationUrl": "https://lavote.gov/vrstatus/",
          "absenteeVotingInfoUrl": "",
          "ballotInfoUrl": "http://www.lavote.gov/Locator",
          "physicalAddress": {
            "locationName": "Registrar-Recorder/County Clerk",
            "line1": "12400 Imperial Highway",
            "city": "Norwalk",
            "state": "CA",
            "zip": "90650"
          }
        },
        "sources": [
          {
            "name": "Voting Information Project",
            "official": true
          }
        ]
      }
    }
  ]
}

使用 curl 执行 representativeInfoQuery

以下示例展示了如何查找某个地址的民选代表。使用curl 发送 representativeInfoByAddress 请求(测试)地址 1263 Pacific Ave. Kansas City, KS (请参阅下面的 presentativeInfoByAddress 响应):

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

报告错误

您是否发现某个民选官员的信息缺失或不正确?公职人员有时会在任期结束前离职或更改联系信息。如果您发现此类更改尚未反映在我们返回的数据中,请告诉我们。

我们会与其他用户、数据提供方或政府官方数据源确认您的举报。由于所报告问题的数量较多,我们可能无法直接回复您。如果获得批准,您所做的更改可能需要一段时间才能显示在 API 结果中。

若要报告错误,请填写此表单

representativeInfoByAddress 响应

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