<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="civicinfo_v1.html">Google Civic Information API</a> . <a href="civicinfo_v1.representatives.html">representatives</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#representativeInfoQuery">representativeInfoQuery(body, recursive=None, ocdId=None, includeOffices=None)</a></code></p>
<p class="firstline">Looks up political geography and representative information based on an address or Open Civic Data division identifier.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="representativeInfoQuery">representativeInfoQuery(body, recursive=None, ocdId=None, includeOffices=None)</code>
  <pre>Looks up political geography and representative information based on an address or Open Civic Data division identifier.

Args:
  body: object, The request body. (required)
    The object takes the form of:

{ # A request for political geography and representative information for an address.
    "address": "A String", # The address to look up. May only be specified if the field ocdId is not given in the URL.
  }

  recursive: boolean, When ocd_id is supplied, return all divisions which are hierarchically nested within the queried division. For example, if querying ocd-division/country:us/district:dc, this would also return all DC's wards and ANCs.
  ocdId: string, The division to look up. May only be specified if the address field is not given in the request body.
  includeOffices: boolean, Whether to return information about offices and officials. If false, only the top-level district information will be returned.

Returns:
  An object of the form:

    { # The result of a representative info lookup query.
    "status": "A String", # The result of the request. One of: success, noStreetSegmentFound, addressUnparseable, noAddressParameter, multipleStreetSegmentsFound, electionOver, electionUnknown, internalLookupFailure, RequestedBothAddressAndOcdId
    "divisions": { # Political geographic divisions that contain the requested address.
      "a_key": { # Describes a political geography. # The unique Open Civic Data identifier for this division.
        "scope": "A String", # The geographic scope of the division. If unspecified, the division's geography is not known. One of: national, statewide, congressional, stateUpper, stateLower, countywide, judicial, schoolBoard, cityWide, township, countyCouncil, cityCouncil, ward, special
        "officeIds": [ # List of keys in the offices object, one for each office elected from this division. Will only be present if includeOffices was true (or absent) in the request.
          "A String",
        ],
        "alsoKnownAs": [ # Any other valid OCD IDs that refer to the same division. For example, if this division's OCD ID is ocd-division/country:us/district:dc, this will contain ocd-division/country:us/state:dc.
          "A String",
        ],
        "name": "A String", # The name of the division.
      },
    },
    "kind": "civicinfo#representativeInfoResponse", # Identifies what kind of resource this is. Value: the fixed string "civicinfo#representativeInfoResponse".
    "normalizedInput": { # A simple representation of an address. # The normalized version of the requested address
      "city": "A String", # The city or town for the address.
      "zip": "A String", # The US Postal Zip Code of the address.
      "line3": "A String", # The third line of the address, if needed.
      "line2": "A String", # The second line the address, if needed.
      "line1": "A String", # The street name and number of this address.
      "locationName": "A String", # The name of the location.
      "state": "A String", # The US two letter state abbreviation of the address.
    },
    "officials": { # Officials holding the offices listed above. Will only be present if includeOffices was true in the request.
      "a_key": { # Information about a official holding an elected office. # A unique identifier for this official, within the context of this request. Identifiers are *not* long-lived: the same official may get different IDs on different requests.
        "name": "A String", # The official's name.
        "photoUrl": "A String", # A URL for a photo of the official.
        "phones": [ # The official's public contact phone numbers.
          "A String",
        ],
        "channels": [ # A list of known (social) media channels for this official.
          { # A social media or web channel for a candidate.
            "type": "A String", # The type of channel. The following is a list of types of channels, but is not exhaustive. More channel types may be added at a later time. One of: GooglePlus, YouTube, Facebook, Twitter
            "id": "A String", # The unique public identifier for the candidate's channel.
          },
        ],
        "urls": [ # The official's public website URLs.
          "A String",
        ],
        "address": [ # Addresses at which to contact the official.
          { # A simple representation of an address.
            "city": "A String", # The city or town for the address.
            "zip": "A String", # The US Postal Zip Code of the address.
            "line3": "A String", # The third line of the address, if needed.
            "line2": "A String", # The second line the address, if needed.
            "line1": "A String", # The street name and number of this address.
            "locationName": "A String", # The name of the location.
            "state": "A String", # The US two letter state abbreviation of the address.
          },
        ],
        "party": "A String", # The full name of the party the official belongs to.
        "emails": [ # The direct email addresses for the official.
          "A String",
        ],
      },
    },
    "offices": { # Elected offices referenced by the divisions listed above. Will only be present if includeOffices was true in the request.
      "a_key": { # Information about an Office held by one or more Officials. # A unique identifier for this office, within the context of this request. Identifiers are *not* long-lived: the same office may get different IDs on different requests.
        "divisionId": "A String", # The OCD ID of the division with which this office is associated.
        "sources": [ # A list of sources for this office. If multiple sources are listed, the data has been aggregated from those sources.
          { # Contains information about the data source for the element containing it.
            "official": True or False, # Whether this data comes from an official government source.
            "name": "A String", # The name of the data source.
          },
        ],
        "officialIds": [ # List of keys in the officials object of people who presently hold this office.
          "A String",
        ],
        "name": "A String", # The human-readable name of the office.
        "level": "A String", # The level of this elected office. One of: federal, state, county, city, other
      },
    },
  }</pre>
</div>

</body></html>