<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="books_v1.html">Books API</a> . <a href="books_v1.layers.html">layers</a> . <a href="books_v1.layers.annotationData.html">annotationData</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="#get">get(volumeId, layerId, annotationDataId, contentVersion, h=None, locale=None, w=None, allowWebDefinitions=None, scale=None, source=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the annotation data.</p>
<p class="toc_element">
  <code><a href="#list">list(volumeId, layerId, contentVersion, updatedMax=None, annotationDataId=None, locale=None, w=None, scale=None, source=None, h=None, maxResults=None, updatedMin=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the annotation data for a volume and layer.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</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="get">get(volumeId, layerId, annotationDataId, contentVersion, h=None, locale=None, w=None, allowWebDefinitions=None, scale=None, source=None, x__xgafv=None)</code>
  <pre>Gets the annotation data.

Args:
  volumeId: string, The volume to retrieve annotations for. (required)
  layerId: string, The ID for the layer to get the annotations. (required)
  annotationDataId: string, The ID of the annotation data to retrieve. (required)
  contentVersion: string, The content version for the volume you are trying to retrieve. (required)
  h: integer, The requested pixel height for any images. If height is provided width must also be provided.
  locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: &#x27;en_US&#x27;.
  w: integer, The requested pixel width for any images. If width is provided height must also be provided.
  allowWebDefinitions: boolean, For the dictionary layer. Whether or not to allow web definitions.
  scale: integer, The requested scale for the image.
  source: string, String to identify the originator of this request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;volumeId&quot;: &quot;A String&quot;, # The volume id for this data. *
    &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).
    &quot;data&quot;: { # JSON encoded data for this dictionary annotation data. Emitted with name &#x27;data&#x27; in JSON output. Either this or geo_data will be populated.
      &quot;dict&quot;: {
        &quot;source&quot;: { # The source, url and attribution for this dictionary data.
          &quot;attribution&quot;: &quot;A String&quot;,
          &quot;url&quot;: &quot;A String&quot;,
        },
        &quot;words&quot;: [
          {
            &quot;source&quot;: { # The words with different meanings but not related words, e.g. &quot;go&quot; (game) and &quot;go&quot; (verb).
              &quot;attribution&quot;: &quot;A String&quot;,
              &quot;url&quot;: &quot;A String&quot;,
            },
            &quot;senses&quot;: [
              {
                &quot;source&quot;: {
                  &quot;url&quot;: &quot;A String&quot;,
                  &quot;attribution&quot;: &quot;A String&quot;,
                },
                &quot;definitions&quot;: [
                  {
                    &quot;examples&quot;: [
                      {
                        &quot;text&quot;: &quot;A String&quot;,
                        &quot;source&quot;: {
                          &quot;url&quot;: &quot;A String&quot;,
                          &quot;attribution&quot;: &quot;A String&quot;,
                        },
                      },
                    ],
                    &quot;definition&quot;: &quot;A String&quot;,
                  },
                ],
                &quot;pronunciationUrl&quot;: &quot;A String&quot;,
                &quot;syllabification&quot;: &quot;A String&quot;,
                &quot;conjugations&quot;: [
                  {
                    &quot;value&quot;: &quot;A String&quot;,
                    &quot;type&quot;: &quot;A String&quot;,
                  },
                ],
                &quot;partOfSpeech&quot;: &quot;A String&quot;,
                &quot;pronunciation&quot;: &quot;A String&quot;,
                &quot;synonyms&quot;: [
                  {
                    &quot;text&quot;: &quot;A String&quot;,
                    &quot;source&quot;: {
                      &quot;url&quot;: &quot;A String&quot;,
                      &quot;attribution&quot;: &quot;A String&quot;,
                    },
                  },
                ],
              },
            ],
            &quot;derivatives&quot;: [
              {
                &quot;text&quot;: &quot;A String&quot;,
                &quot;source&quot;: {
                  &quot;attribution&quot;: &quot;A String&quot;,
                  &quot;url&quot;: &quot;A String&quot;,
                },
              },
            ],
            &quot;examples&quot;: [
              {
                &quot;text&quot;: &quot;A String&quot;,
                &quot;source&quot;: {
                  &quot;attribution&quot;: &quot;A String&quot;,
                  &quot;url&quot;: &quot;A String&quot;,
                },
              },
            ],
          },
        ],
      },
      &quot;common&quot;: {
        &quot;title&quot;: &quot;A String&quot;, # The display title and localized canonical name to use when searching for this entity on Google search.
      },
      &quot;kind&quot;: &quot;A String&quot;,
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # URL for this resource. *
    &quot;layerId&quot;: &quot;A String&quot;, # The Layer id for this data. *
    &quot;encodedData&quot;: &quot;A String&quot;, # Base64 encoded data for this annotation data.
    &quot;id&quot;: &quot;A String&quot;, # Unique id for this annotation data.
    &quot;kind&quot;: &quot;A String&quot;, # Resource Type
    &quot;annotationType&quot;: &quot;A String&quot;, # The type of annotation this data is for.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(volumeId, layerId, contentVersion, updatedMax=None, annotationDataId=None, locale=None, w=None, scale=None, source=None, h=None, maxResults=None, updatedMin=None, pageToken=None, x__xgafv=None)</code>
  <pre>Gets the annotation data for a volume and layer.

Args:
  volumeId: string, The volume to retrieve annotation data for. (required)
  layerId: string, The ID for the layer to get the annotation data. (required)
  contentVersion: string, The content version for the requested volume. (required)
  updatedMax: string, RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).
  annotationDataId: string, The list of Annotation Data Ids to retrieve. Pagination is ignored if this is set. (repeated)
  locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: &#x27;en_US&#x27;.
  w: integer, The requested pixel width for any images. If width is provided height must also be provided.
  scale: integer, The requested scale for the image.
  source: string, String to identify the originator of this request.
  h: integer, The requested pixel height for any images. If height is provided width must also be provided.
  maxResults: integer, Maximum number of results to return
  updatedMin: string, RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).
  pageToken: string, The value of the nextToken from the previous page.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;totalItems&quot;: 42, # The total number of volume annotations found.
    &quot;kind&quot;: &quot;A String&quot;, # Resource type
    &quot;items&quot;: [ # A list of Annotation Data.
      {
        &quot;annotationType&quot;: &quot;A String&quot;, # The type of annotation this data is for.
        &quot;volumeId&quot;: &quot;A String&quot;, # The volume id for this data. *
        &quot;data&quot;: { # JSON encoded data for this geo annotation data. Emitted with name &#x27;data&#x27; in JSON output. Either this or dict_data will be populated.
          &quot;geo&quot;: {
            &quot;viewport&quot;: { # The viewport for showing this location. This is a latitude, longitude rectangle.
              &quot;lo&quot;: {
                &quot;latitude&quot;: 3.14,
                &quot;longitude&quot;: 3.14,
              },
              &quot;hi&quot;: {
                &quot;longitude&quot;: 3.14,
                &quot;latitude&quot;: 3.14,
              },
            },
            &quot;longitude&quot;: 3.14, # The longitude of the location.
            &quot;zoom&quot;: 42, # The Zoom level to use for the map. Zoom levels between 0 (the lowest zoom level, in which the entire world can be seen on one map) to 21+ (down to individual buildings). See: https: //developers.google.com/maps/documentation/staticmaps/#Zoomlevels
            &quot;boundary&quot;: [ # The boundary of the location as a set of loops containing pairs of latitude, longitude coordinates.
              &quot;A String&quot;,
            ],
            &quot;cachePolicy&quot;: &quot;A String&quot;, # The cache policy active for this data. EX: UNRESTRICTED, RESTRICTED, NEVER
            &quot;latitude&quot;: 3.14, # The latitude of the location.
            &quot;countryCode&quot;: &quot;A String&quot;, # The country code of the location.
            &quot;mapType&quot;: &quot;A String&quot;, # The type of map that should be used for this location. EX: HYBRID, ROADMAP, SATELLITE, TERRAIN
          },
          &quot;common&quot;: {
            &quot;previewImageUrl&quot;: &quot;A String&quot;, # The URL for the preview image information.
            &quot;lang&quot;: &quot;A String&quot;, # The language of the information url and description.
            &quot;snippetUrl&quot;: &quot;A String&quot;, # The URL for information for this location. Ex: wikipedia link.
            &quot;title&quot;: &quot;A String&quot;, # The display title and localized canonical name to use when searching for this entity on Google search.
            &quot;snippet&quot;: &quot;A String&quot;, # The description for this location.
          },
          &quot;kind&quot;: &quot;A String&quot;,
        },
        &quot;kind&quot;: &quot;A String&quot;, # Resource Type
        &quot;id&quot;: &quot;A String&quot;, # Unique id for this annotation data.
        &quot;selfLink&quot;: &quot;A String&quot;, # URL for this resource. *
        &quot;encodedData&quot;: &quot;A String&quot;, # Base64 encoded data for this annotation data.
        &quot;layerId&quot;: &quot;A String&quot;, # The Layer id for this data. *
        &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).
      },
    ],
    &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to pass in for pagination for the next page. This will not be present if this request does not have more results.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>