<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.volumeAnnotations.html">volumeAnnotations</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, annotationId, source=None, locale=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the volume annotation.</p>
<p class="toc_element">
  <code><a href="#list">list(volumeId, layerId, startOffset=None, locale=None, endOffset=None, source=None, contentVersion=None, startPosition=None, showDeleted=None, volumeAnnotationsVersion=None, endPosition=None, updatedMin=None, updatedMax=None, maxResults=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the volume annotations 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, annotationId, source=None, locale=None, x__xgafv=None)</code>
  <pre>Gets the volume annotation.

Args:
  volumeId: string, The volume to retrieve annotations for. (required)
  layerId: string, The ID for the layer to get the annotations. (required)
  annotationId: string, The ID of the volume annotation to retrieve. (required)
  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: &#x27;en_US&#x27;.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;annotationType&quot;: &quot;A String&quot;, # The type of annotation this is.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL to this resource.
    &quot;pageIds&quot;: [ # Pages the annotation spans.
      &quot;A String&quot;,
    ],
    &quot;contentRanges&quot;: { # The content ranges to identify the selected text.
      &quot;cfiRange&quot;: { # Range in CFI format for this annotation for version above.
        &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
        &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
        &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
        &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
      },
      &quot;gbImageRange&quot;: { # Range in GB image format for this annotation for version above.
        &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
        &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
        &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
        &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
      },
      &quot;contentVersion&quot;: &quot;A String&quot;, # Content version applicable to ranges below.
      &quot;gbTextRange&quot;: { # Range in GB text format for this annotation for version above.
        &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
        &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
        &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
        &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
      },
    },
    &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time this anntoation was updated. (RFC 3339 UTC date-time format).
    &quot;annotationDataId&quot;: &quot;A String&quot;, # The annotation data id for this volume annotation.
    &quot;kind&quot;: &quot;A String&quot;, # Resource Type
    &quot;layerId&quot;: &quot;A String&quot;, # The Layer this annotation is for.
    &quot;selectedText&quot;: &quot;A String&quot;, # Excerpt from the volume.
    &quot;id&quot;: &quot;A String&quot;, # Unique id of this volume annotation.
    &quot;volumeId&quot;: &quot;A String&quot;, # The Volume this annotation is for.
    &quot;annotationDataLink&quot;: &quot;A String&quot;, # Link to get data for this annotation.
    &quot;data&quot;: &quot;A String&quot;, # Data for this annotation.
    &quot;deleted&quot;: True or False, # Indicates that this annotation is deleted.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(volumeId, layerId, startOffset=None, locale=None, endOffset=None, source=None, contentVersion=None, startPosition=None, showDeleted=None, volumeAnnotationsVersion=None, endPosition=None, updatedMin=None, updatedMax=None, maxResults=None, pageToken=None, x__xgafv=None)</code>
  <pre>Gets the volume annotations for a volume and layer.

Args:
  volumeId: string, The volume to retrieve annotations for. (required)
  layerId: string, The ID for the layer to get the annotations. (required)
  startOffset: string, The start offset to start retrieving data from.
  locale: string, The locale information for the data. ISO-639-1 language and ISO-3166-1 country code. Ex: &#x27;en_US&#x27;.
  endOffset: string, The end offset to end retrieving data from.
  source: string, String to identify the originator of this request.
  contentVersion: string, The content version for the requested volume.
  startPosition: string, The start position to start retrieving data from.
  showDeleted: boolean, Set to true to return deleted annotations. updatedMin must be in the request to use this. Defaults to false.
  volumeAnnotationsVersion: string, The version of the volume annotations that you are requesting.
  endPosition: string, The end position to end retrieving data from.
  updatedMin: string, RFC 3339 timestamp to restrict to items updated since this timestamp (inclusive).
  updatedMax: string, RFC 3339 timestamp to restrict to items updated prior to this timestamp (exclusive).
  maxResults: integer, Maximum number of results to return
  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;items&quot;: [ # A list of volume annotations.
      {
        &quot;annotationType&quot;: &quot;A String&quot;, # The type of annotation this is.
        &quot;selfLink&quot;: &quot;A String&quot;, # URL to this resource.
        &quot;pageIds&quot;: [ # Pages the annotation spans.
          &quot;A String&quot;,
        ],
        &quot;contentRanges&quot;: { # The content ranges to identify the selected text.
          &quot;cfiRange&quot;: { # Range in CFI format for this annotation for version above.
            &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
            &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
            &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
            &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
          },
          &quot;gbImageRange&quot;: { # Range in GB image format for this annotation for version above.
            &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
            &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
            &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
            &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
          },
          &quot;contentVersion&quot;: &quot;A String&quot;, # Content version applicable to ranges below.
          &quot;gbTextRange&quot;: { # Range in GB text format for this annotation for version above.
            &quot;endPosition&quot;: &quot;A String&quot;, # The ending position for the range.
            &quot;startPosition&quot;: &quot;A String&quot;, # The starting position for the range.
            &quot;endOffset&quot;: &quot;A String&quot;, # The offset from the ending position.
            &quot;startOffset&quot;: &quot;A String&quot;, # The offset from the starting position.
          },
        },
        &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time this anntoation was updated. (RFC 3339 UTC date-time format).
        &quot;annotationDataId&quot;: &quot;A String&quot;, # The annotation data id for this volume annotation.
        &quot;kind&quot;: &quot;A String&quot;, # Resource Type
        &quot;layerId&quot;: &quot;A String&quot;, # The Layer this annotation is for.
        &quot;selectedText&quot;: &quot;A String&quot;, # Excerpt from the volume.
        &quot;id&quot;: &quot;A String&quot;, # Unique id of this volume annotation.
        &quot;volumeId&quot;: &quot;A String&quot;, # The Volume this annotation is for.
        &quot;annotationDataLink&quot;: &quot;A String&quot;, # Link to get data for this annotation.
        &quot;data&quot;: &quot;A String&quot;, # Data for this annotation.
        &quot;deleted&quot;: True or False, # Indicates that this annotation is deleted.
      },
    ],
    &quot;totalItems&quot;: 42, # The total number of volume annotations found.
    &quot;version&quot;: &quot;A String&quot;, # The version string for all of the volume annotations in this layer (not just the ones in this response). Note: the version string doesn&#x27;t apply to the annotation data, just the information in this response (e.g. the location of annotations in the book).
    &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.
    &quot;kind&quot;: &quot;A String&quot;, # Resource type
  }</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>