<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_v2.html">Google Civic Information API</a> . <a href="civicinfo_v2.representatives.html">representatives</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#representativeInfoByAddress">representativeInfoByAddress(levels=None, roles=None, address=None, includeOffices=None)</a></code></p>
<p class="firstline">Looks up political geography and representative information for a single address.</p>
<p class="toc_element">
  <code><a href="#representativeInfoByDivision">representativeInfoByDivision(ocdId, recursive=None, roles=None, levels=None)</a></code></p>
<p class="firstline">Looks up representative information for a single geographic division.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="representativeInfoByAddress">representativeInfoByAddress(levels=None, roles=None, address=None, includeOffices=None)</code>
  <pre>Looks up political geography and representative information for a single address.

Args:
  levels: string, A list of office levels to filter by. Only offices that serve at least one of these levels will be returned. Divisions that don't contain a matching office will not be returned. (repeated)
    Allowed values
      administrativeArea1 - 
      administrativeArea2 - 
      country - 
      international - 
      locality - 
      regional - 
      special - 
      subLocality1 - 
      subLocality2 - 
  roles: string, A list of office roles to filter by. Only offices fulfilling one of these roles will be returned. Divisions that don't contain a matching office will not be returned. (repeated)
    Allowed values
      deputyHeadOfGovernment - 
      executiveCouncil - 
      governmentOfficer - 
      headOfGovernment - 
      headOfState - 
      highestCourtJudge - 
      judge - 
      legislatorLowerBody - 
      legislatorUpperBody - 
      schoolBoard - 
      specialPurposeOfficer - 
  address: string, The address to look up. May only be specified if the field ocdId is not given in the URL.
  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.
    "divisions": { # Political geographic divisions that contain the requested address.
      "a_key": { # Describes a political geography. # The unique Open Civic Data identifier for this division.
        "officeIndices": [ # List of indices in the offices array, one for each office elected from this division. Will only be present if includeOffices was true (or absent) in the request.
          42,
        ],
        "alsoKnownAs": [ # Any other valid OCD IDs that refer to the same division.
            #
            # Because OCD IDs are meant to be human-readable and at least somewhat predictable, there are occasionally several identifiers for a single division. These identifiers are defined to be equivalent to one another, and one is always indicated as the primary identifier. The primary identifier will be returned in ocd_id above, and any other equivalent valid identifiers will be returned in this list.
            #
            # 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".
    "officials": [ # Officials holding the offices listed above. Will only be present if includeOffices was true in the request.
      { # Information about a person holding an elected office.
        "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.
      { # Information about an Office held by one or more Officials.
        "name": "A String", # The human-readable name of the office.
        "roles": [ # The roles which this office fulfills. Roles are not meant to be exhaustive, or to exactly specify the entire set of responsibilities of a given office, but are meant to be rough categories that are useful for general selection from or sorting of a list of offices.
          "A String",
        ],
        "officialIndices": [ # List of indices in the officials array of people who presently hold this office.
          42,
        ],
        "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.
          },
        ],
        "levels": [ # The levels of government of which this office is part. There may be more than one in cases where a jurisdiction effectively acts at two different levels of government; for example, the mayor of the District of Columbia acts at "locality" level, but also effectively at both "administrative-area-2" and "administrative-area-1".
          "A String",
        ],
        "divisionId": "A String", # The OCD ID of the division with which this office is associated.
      },
    ],
    "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.
    },
  }</pre>
</div>

<div class="method">
    <code class="details" id="representativeInfoByDivision">representativeInfoByDivision(ocdId, recursive=None, roles=None, levels=None)</code>
  <pre>Looks up representative information for a single geographic division.

Args:
  ocdId: string, The Open Civic Data division identifier of the division to look up. (required)
  recursive: boolean, If true, information about all divisions contained in the division requested will be included as well. For example, if querying ocd-division/country:us/district:dc, this would also return all DC's wards and ANCs.
  roles: string, A list of office roles to filter by. Only offices fulfilling one of these roles will be returned. Divisions that don't contain a matching office will not be returned. (repeated)
    Allowed values
      deputyHeadOfGovernment - 
      executiveCouncil - 
      governmentOfficer - 
      headOfGovernment - 
      headOfState - 
      highestCourtJudge - 
      judge - 
      legislatorLowerBody - 
      legislatorUpperBody - 
      schoolBoard - 
      specialPurposeOfficer - 
  levels: string, A list of office levels to filter by. Only offices that serve at least one of these levels will be returned. Divisions that don't contain a matching office will not be returned. (repeated)
    Allowed values
      administrativeArea1 - 
      administrativeArea2 - 
      country - 
      international - 
      locality - 
      regional - 
      special - 
      subLocality1 - 
      subLocality2 - 

Returns:
  An object of the form:

    {
    "divisions": { # Political geographic divisions that contain the requested address.
      "a_key": { # Describes a political geography. # The unique Open Civic Data identifier for this division.
        "officeIndices": [ # List of indices in the offices array, one for each office elected from this division. Will only be present if includeOffices was true (or absent) in the request.
          42,
        ],
        "alsoKnownAs": [ # Any other valid OCD IDs that refer to the same division.
            #
            # Because OCD IDs are meant to be human-readable and at least somewhat predictable, there are occasionally several identifiers for a single division. These identifiers are defined to be equivalent to one another, and one is always indicated as the primary identifier. The primary identifier will be returned in ocd_id above, and any other equivalent valid identifiers will be returned in this list.
            #
            # 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.
      },
    },
    "officials": [ # Officials holding the offices listed above. Will only be present if includeOffices was true in the request.
      { # Information about a person holding an elected office.
        "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.
      { # Information about an Office held by one or more Officials.
        "name": "A String", # The human-readable name of the office.
        "roles": [ # The roles which this office fulfills. Roles are not meant to be exhaustive, or to exactly specify the entire set of responsibilities of a given office, but are meant to be rough categories that are useful for general selection from or sorting of a list of offices.
          "A String",
        ],
        "officialIndices": [ # List of indices in the officials array of people who presently hold this office.
          42,
        ],
        "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.
          },
        ],
        "levels": [ # The levels of government of which this office is part. There may be more than one in cases where a jurisdiction effectively acts at two different levels of government; for example, the mayor of the District of Columbia acts at "locality" level, but also effectively at both "administrative-area-2" and "administrative-area-1".
          "A String",
        ],
        "divisionId": "A String", # The OCD ID of the division with which this office is associated.
      },
    ],
  }</pre>
</div>

</body></html>