<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="#close">close()</a></code></p>
<p class="firstline">Close httplib2 connections.</p>
<p class="toc_element">
  <code><a href="#representativeInfoByAddress">representativeInfoByAddress(address=None, includeOffices=None, levels=None, roles=None, x__xgafv=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, levels=None, recursive=None, roles=None, x__xgafv=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="close">close()</code>
  <pre>Close httplib2 connections.</pre>
</div>

<div class="method">
    <code class="details" id="representativeInfoByAddress">representativeInfoByAddress(address=None, includeOffices=None, levels=None, roles=None, x__xgafv=None)</code>
  <pre>Looks up political geography and representative information for a single address.

Args:
  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.
  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&#x27;t contain a matching office will not be returned. (repeated)
    Allowed values
      international - 
      country - 
      administrativeArea1 - 
      regional - 
      administrativeArea2 - 
      locality - 
      subLocality1 - 
      subLocality2 - 
      special - 
  roles: string, A list of office roles to filter by. Only offices fulfilling one of these roles will be returned. Divisions that don&#x27;t contain a matching office will not be returned. (repeated)
    Allowed values
      headOfState - 
      headOfGovernment - 
      deputyHeadOfGovernment - 
      governmentOfficer - 
      executiveCouncil - 
      legislatorUpperBody - 
      legislatorLowerBody - 
      highestCourtJudge - 
      judge - 
      schoolBoard - 
      specialPurposeOfficer - 
      otherRole - 
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The result of a representative info lookup query.
  &quot;divisions&quot;: { # A map of political geographic divisions that contain the requested address, keyed by the unique Open Civic Data identifier for this division.
    &quot;a_key&quot;: { # Describes a political geography.
      &quot;alsoKnownAs&quot;: [ # Any other valid OCD IDs that refer to the same division.\n\nBecause 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.\n\nFor example, if this division&#x27;s OCD ID is ocd-division/country:us/district:dc, this will contain ocd-division/country:us/state:dc.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the division.
      &quot;officeIndices&quot;: [ # 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,
      ],
    },
  },
  &quot;kind&quot;: &quot;civicinfo#representativeInfoResponse&quot;, # Identifies what kind of resource this is. Value: the fixed string &quot;civicinfo#representativeInfoResponse&quot;.
  &quot;normalizedInput&quot;: { # A simple representation of an address. # The normalized version of the requested address
    &quot;city&quot;: &quot;A String&quot;, # The city or town for the address.
    &quot;line1&quot;: &quot;A String&quot;, # The street name and number of this address.
    &quot;line2&quot;: &quot;A String&quot;, # The second line the address, if needed.
    &quot;line3&quot;: &quot;A String&quot;, # The third line of the address, if needed.
    &quot;locationName&quot;: &quot;A String&quot;, # The name of the location.
    &quot;state&quot;: &quot;A String&quot;, # The US two letter state abbreviation of the address.
    &quot;zip&quot;: &quot;A String&quot;, # The US Postal Zip Code of the address.
  },
  &quot;offices&quot;: [ # 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.
      &quot;divisionId&quot;: &quot;A String&quot;, # The OCD ID of the division with which this office is associated.
      &quot;levels&quot;: [ # 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 &quot;locality&quot; level, but also effectively at both &quot;administrative-area-2&quot; and &quot;administrative-area-1&quot;.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The human-readable name of the office.
      &quot;officialIndices&quot;: [ # List of indices in the officials array of people who presently hold this office.
        42,
      ],
      &quot;roles&quot;: [ # 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.
        &quot;A String&quot;,
      ],
      &quot;sources&quot;: [ # 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.
          &quot;name&quot;: &quot;A String&quot;, # The name of the data source.
          &quot;official&quot;: True or False, # Whether this data comes from an official government source.
        },
      ],
    },
  ],
  &quot;officials&quot;: [ # 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.
      &quot;address&quot;: [ # Addresses at which to contact the official.
        { # A simple representation of an address.
          &quot;city&quot;: &quot;A String&quot;, # The city or town for the address.
          &quot;line1&quot;: &quot;A String&quot;, # The street name and number of this address.
          &quot;line2&quot;: &quot;A String&quot;, # The second line the address, if needed.
          &quot;line3&quot;: &quot;A String&quot;, # The third line of the address, if needed.
          &quot;locationName&quot;: &quot;A String&quot;, # The name of the location.
          &quot;state&quot;: &quot;A String&quot;, # The US two letter state abbreviation of the address.
          &quot;zip&quot;: &quot;A String&quot;, # The US Postal Zip Code of the address.
        },
      ],
      &quot;channels&quot;: [ # A list of known (social) media channels for this official.
        { # A social media or web channel for a candidate.
          &quot;id&quot;: &quot;A String&quot;, # The unique public identifier for the candidate&#x27;s channel.
          &quot;type&quot;: &quot;A String&quot;, # 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
        },
      ],
      &quot;emails&quot;: [ # The direct email addresses for the official.
        &quot;A String&quot;,
      ],
      &quot;geocodingSummaries&quot;: [ # Detailed summary about the official&#x27;s address&#x27;s geocoding
        { # Detailed summary of the result from geocoding an address
          &quot;addressUnderstood&quot;: True or False, # Represents the best estimate of whether or not the input address was fully understood and the address is correctly componentized. Mirrors the same-name field in geostore.staging.AddressLinkupScoringProto.
          &quot;featureId&quot;: { # A globally unique identifier associated with each feature. We use 128-bit identifiers so that we have lots of bits available to distinguish between features. The feature id currently consists of a 64-bit &quot;cell id&quot; that **sometimes** corresponds to the approximate centroid of the feature, plus a 64-bit fingerprint of other identifying information. See more on each respective field in its comments. Feature ids are first assigned when the data is created in MapFacts. After initial creation of the feature, they are immutable. This means that the only properties that you should rely on are that they are unique, and that cell_ids often - but not always - preserve spatial locality. The degree of locality varies as the feature undergoes geometry changes, and should not in general be considered a firm guarantee of the location of any particular feature. In fact, some locationless features have randomized cell IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that fprints in the id field of features will be globally unique. Using the fprint allows consumers who don&#x27;t need the spatial benefit of cell ids to uniquely identify features in a 64-bit address space. This property is not guaranteed for other sources of FeatureProtos. # The ID of the FeatureProto returned by the geocoder
            &quot;cellId&quot;: &quot;A String&quot;, # The S2CellId corresponding to the approximate location of this feature as of when it was first created. This can be of variable accuracy, ranging from the exact centroid of the feature at creation, a very large S2 Cell, or even being completely randomized for locationless features. Cell ids have the nice property that they follow a space-filling curve over the surface of the earth. (See s2cellid.h for details.) WARNING: Clients should only use cell IDs to perform spatial locality optimizations. There is no strict guarantee that the cell ID of a feature is related to the current geometry of the feature in any way.
            &quot;fprint&quot;: &quot;A String&quot;, # A 64-bit fingerprint used to identify features. Most clients should rely on MapFacts or OneRing to choose fingerprints. If creating new fprints, the strategy should be chosen so that the chance of collision is remote or non-existent, and the distribution should be reasonably uniform. For example, if the source data assigns unique ids to features, then a fingerprint of the provider name, version, and source id is sufficient.
            &quot;temporaryData&quot;: { # This is proto2&#x27;s version of MessageSet. # A place for clients to attach arbitrary data to a feature ID. Never set in MapFacts.
            },
          },
          &quot;featureType&quot;: &quot;A String&quot;, # The feature type for the FeatureProto returned by the geocoder
          &quot;positionPrecisionMeters&quot;: 3.14, # Precision of the center point (lat/long) of the geocoded FeatureProto
          &quot;queryString&quot;: &quot;A String&quot;, # The query sent to the geocoder
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The official&#x27;s name.
      &quot;party&quot;: &quot;A String&quot;, # The full name of the party the official belongs to.
      &quot;phones&quot;: [ # The official&#x27;s public contact phone numbers.
        &quot;A String&quot;,
      ],
      &quot;photoUrl&quot;: &quot;A String&quot;, # A URL for a photo of the official.
      &quot;urls&quot;: [ # The official&#x27;s public website URLs.
        &quot;A String&quot;,
      ],
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="representativeInfoByDivision">representativeInfoByDivision(ocdId, levels=None, recursive=None, roles=None, x__xgafv=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)
  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&#x27;t contain a matching office will not be returned. (repeated)
    Allowed values
      international - 
      country - 
      administrativeArea1 - 
      regional - 
      administrativeArea2 - 
      locality - 
      subLocality1 - 
      subLocality2 - 
      special - 
  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&#x27;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&#x27;t contain a matching office will not be returned. (repeated)
    Allowed values
      headOfState - 
      headOfGovernment - 
      deputyHeadOfGovernment - 
      governmentOfficer - 
      executiveCouncil - 
      legislatorUpperBody - 
      legislatorLowerBody - 
      highestCourtJudge - 
      judge - 
      schoolBoard - 
      specialPurposeOfficer - 
      otherRole - 
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
  &quot;divisions&quot;: { # A map of political geographic divisions that contain the requested address, keyed by the unique Open Civic Data identifier for this division.
    &quot;a_key&quot;: { # Describes a political geography.
      &quot;alsoKnownAs&quot;: [ # Any other valid OCD IDs that refer to the same division.\n\nBecause 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.\n\nFor example, if this division&#x27;s OCD ID is ocd-division/country:us/district:dc, this will contain ocd-division/country:us/state:dc.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The name of the division.
      &quot;officeIndices&quot;: [ # 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,
      ],
    },
  },
  &quot;offices&quot;: [ # 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.
      &quot;divisionId&quot;: &quot;A String&quot;, # The OCD ID of the division with which this office is associated.
      &quot;levels&quot;: [ # 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 &quot;locality&quot; level, but also effectively at both &quot;administrative-area-2&quot; and &quot;administrative-area-1&quot;.
        &quot;A String&quot;,
      ],
      &quot;name&quot;: &quot;A String&quot;, # The human-readable name of the office.
      &quot;officialIndices&quot;: [ # List of indices in the officials array of people who presently hold this office.
        42,
      ],
      &quot;roles&quot;: [ # 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.
        &quot;A String&quot;,
      ],
      &quot;sources&quot;: [ # 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.
          &quot;name&quot;: &quot;A String&quot;, # The name of the data source.
          &quot;official&quot;: True or False, # Whether this data comes from an official government source.
        },
      ],
    },
  ],
  &quot;officials&quot;: [ # 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.
      &quot;address&quot;: [ # Addresses at which to contact the official.
        { # A simple representation of an address.
          &quot;city&quot;: &quot;A String&quot;, # The city or town for the address.
          &quot;line1&quot;: &quot;A String&quot;, # The street name and number of this address.
          &quot;line2&quot;: &quot;A String&quot;, # The second line the address, if needed.
          &quot;line3&quot;: &quot;A String&quot;, # The third line of the address, if needed.
          &quot;locationName&quot;: &quot;A String&quot;, # The name of the location.
          &quot;state&quot;: &quot;A String&quot;, # The US two letter state abbreviation of the address.
          &quot;zip&quot;: &quot;A String&quot;, # The US Postal Zip Code of the address.
        },
      ],
      &quot;channels&quot;: [ # A list of known (social) media channels for this official.
        { # A social media or web channel for a candidate.
          &quot;id&quot;: &quot;A String&quot;, # The unique public identifier for the candidate&#x27;s channel.
          &quot;type&quot;: &quot;A String&quot;, # 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
        },
      ],
      &quot;emails&quot;: [ # The direct email addresses for the official.
        &quot;A String&quot;,
      ],
      &quot;geocodingSummaries&quot;: [ # Detailed summary about the official&#x27;s address&#x27;s geocoding
        { # Detailed summary of the result from geocoding an address
          &quot;addressUnderstood&quot;: True or False, # Represents the best estimate of whether or not the input address was fully understood and the address is correctly componentized. Mirrors the same-name field in geostore.staging.AddressLinkupScoringProto.
          &quot;featureId&quot;: { # A globally unique identifier associated with each feature. We use 128-bit identifiers so that we have lots of bits available to distinguish between features. The feature id currently consists of a 64-bit &quot;cell id&quot; that **sometimes** corresponds to the approximate centroid of the feature, plus a 64-bit fingerprint of other identifying information. See more on each respective field in its comments. Feature ids are first assigned when the data is created in MapFacts. After initial creation of the feature, they are immutable. This means that the only properties that you should rely on are that they are unique, and that cell_ids often - but not always - preserve spatial locality. The degree of locality varies as the feature undergoes geometry changes, and should not in general be considered a firm guarantee of the location of any particular feature. In fact, some locationless features have randomized cell IDs! Consumers of FeatureProtos from Mapfacts are guaranteed that fprints in the id field of features will be globally unique. Using the fprint allows consumers who don&#x27;t need the spatial benefit of cell ids to uniquely identify features in a 64-bit address space. This property is not guaranteed for other sources of FeatureProtos. # The ID of the FeatureProto returned by the geocoder
            &quot;cellId&quot;: &quot;A String&quot;, # The S2CellId corresponding to the approximate location of this feature as of when it was first created. This can be of variable accuracy, ranging from the exact centroid of the feature at creation, a very large S2 Cell, or even being completely randomized for locationless features. Cell ids have the nice property that they follow a space-filling curve over the surface of the earth. (See s2cellid.h for details.) WARNING: Clients should only use cell IDs to perform spatial locality optimizations. There is no strict guarantee that the cell ID of a feature is related to the current geometry of the feature in any way.
            &quot;fprint&quot;: &quot;A String&quot;, # A 64-bit fingerprint used to identify features. Most clients should rely on MapFacts or OneRing to choose fingerprints. If creating new fprints, the strategy should be chosen so that the chance of collision is remote or non-existent, and the distribution should be reasonably uniform. For example, if the source data assigns unique ids to features, then a fingerprint of the provider name, version, and source id is sufficient.
            &quot;temporaryData&quot;: { # This is proto2&#x27;s version of MessageSet. # A place for clients to attach arbitrary data to a feature ID. Never set in MapFacts.
            },
          },
          &quot;featureType&quot;: &quot;A String&quot;, # The feature type for the FeatureProto returned by the geocoder
          &quot;positionPrecisionMeters&quot;: 3.14, # Precision of the center point (lat/long) of the geocoded FeatureProto
          &quot;queryString&quot;: &quot;A String&quot;, # The query sent to the geocoder
        },
      ],
      &quot;name&quot;: &quot;A String&quot;, # The official&#x27;s name.
      &quot;party&quot;: &quot;A String&quot;, # The full name of the party the official belongs to.
      &quot;phones&quot;: [ # The official&#x27;s public contact phone numbers.
        &quot;A String&quot;,
      ],
      &quot;photoUrl&quot;: &quot;A String&quot;, # A URL for a photo of the official.
      &quot;urls&quot;: [ # The official&#x27;s public website URLs.
        &quot;A String&quot;,
      ],
    },
  ],
}</pre>
</div>

</body></html>