<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="#get">get(volumeId, layerId, annotationDataId, contentVersion, scale=None, source=None, locale=None, h=None, w=None)</a></code></p>
<p class="firstline">Gets the annotation data.</p>
<p class="toc_element">
  <code><a href="#list">list(volumeId, layerId, contentVersion, locale=None, scale=None, pageToken=None, updatedMin=None, source=None, updatedMax=None, maxResults=None, annotationDataId=None, w=None, h=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="get">get(volumeId, layerId, annotationDataId, contentVersion, scale=None, source=None, locale=None, h=None, w=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)
  scale: integer, The requested scale for the image.
  source: string, String to identify the originator of this request.
  locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.
  h: integer, The requested pixel height for any images. If height is provided width must also be provided.
  w: integer, The requested pixel width for any images. If width is provided height must also be provided.

Returns:
  An object of the form:

    {
    "annotationType": "A String", # The type of annotation this data is for.
    "kind": "books#annotationdata", # Resource Type
    "updated": "A String", # Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).
    "volumeId": "A String", # The volume id for this data. *
    "encoded_data": "A String", # Base64 encoded data for this annotation data.
    "layerId": "A String", # The Layer id for this data. *
    "data": "",
    "id": "A String", # Unique id for this annotation data.
    "selfLink": "A String", # URL for this resource. *
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(volumeId, layerId, contentVersion, locale=None, scale=None, pageToken=None, updatedMin=None, source=None, updatedMax=None, maxResults=None, annotationDataId=None, w=None, h=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)
  locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: 'en_US'.
  scale: integer, The requested scale for the image.
  pageToken: string, The value of the nextToken from the previous page.
  updatedMin: string, RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).
  source: string, String to identify the originator of this request.
  updatedMax: string, RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).
  maxResults: integer, Maximum number of results to return
  annotationDataId: string, The list of Annotation Data Ids to retrieve. Pagination is ignored if this is set. (repeated)
  w: integer, The requested pixel width for any images. If width is provided height must also be provided.
  h: integer, The requested pixel height for any images. If height is provided width must also be provided.

Returns:
  An object of the form:

    {
    "nextPageToken": "A String", # Token to pass in for pagination for the next page. This will not be present if this request does not have more results.
    "items": [ # A list of Annotation Data.
      {
        "annotationType": "A String", # The type of annotation this data is for.
        "kind": "books#annotationdata", # Resource Type
        "updated": "A String", # Timestamp for the last time this data was updated. (RFC 3339 UTC date-time format).
        "volumeId": "A String", # The volume id for this data. *
        "encoded_data": "A String", # Base64 encoded data for this annotation data.
        "layerId": "A String", # The Layer id for this data. *
        "data": "",
        "id": "A String", # Unique id for this annotation data.
        "selfLink": "A String", # URL for this resource. *
      },
    ],
    "kind": "books#annotationsdata", # Resource type
    "totalItems": 42, # The total number of volume annotations found.
  }</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 'execute()' on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

</body></html>