<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></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="books_v1.layers.annotationData.html">annotationData()</a></code>
</p>
<p class="firstline">Returns the annotationData Resource.</p>

<p class="toc_element">
  <code><a href="books_v1.layers.volumeAnnotations.html">volumeAnnotations()</a></code>
</p>
<p class="firstline">Returns the volumeAnnotations Resource.</p>

<p class="toc_element">
  <code><a href="#get">get(volumeId, summaryId, contentVersion=None, source=None, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the layer summary for a volume.</p>
<p class="toc_element">
  <code><a href="#list">list(volumeId, pageToken=None, contentVersion=None, source=None, maxResults=None, x__xgafv=None)</a></code></p>
<p class="firstline">List the layer summaries for a volume.</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(volumeId, summaryId, contentVersion=None, source=None, x__xgafv=None)</code>
  <pre>Gets the layer summary for a volume.

Args:
  volumeId: string, The volume to retrieve layers for. (required)
  summaryId: string, The ID for the layer to get the summary for. (required)
  contentVersion: string, The content version for the requested volume.
  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;id&quot;: &quot;A String&quot;, # Unique id of this layer summary.
    &quot;contentVersion&quot;: &quot;A String&quot;, # The content version this resource is for.
    &quot;annotationsDataLink&quot;: &quot;A String&quot;, # Link to get data for this annotation.
    &quot;kind&quot;: &quot;A String&quot;, # Resource Type
    &quot;annotationTypes&quot;: [ # The list of annotation types contained for this layer.
      &quot;A String&quot;,
    ],
    &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time an item in this layer was updated. (RFC 3339 UTC date-time format).
    &quot;layerId&quot;: &quot;A String&quot;, # The layer id for this summary.
    &quot;dataCount&quot;: 42, # The number of data items for this layer.
    &quot;volumeId&quot;: &quot;A String&quot;, # The volume id this resource is for.
    &quot;annotationCount&quot;: 42, # The number of annotations for this layer.
    &quot;annotationsLink&quot;: &quot;A String&quot;, # The link to get the annotations for this layer.
    &quot;selfLink&quot;: &quot;A String&quot;, # URL to this resource.
    &quot;volumeAnnotationsVersion&quot;: &quot;A String&quot;, # The current version of this layer&#x27;s volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(volumeId, pageToken=None, contentVersion=None, source=None, maxResults=None, x__xgafv=None)</code>
  <pre>List the layer summaries for a volume.

Args:
  volumeId: string, The volume to retrieve layers for. (required)
  pageToken: string, The value of the nextToken from the previous page.
  contentVersion: string, The content version for the requested volume.
  source: string, String to identify the originator of this request.
  maxResults: integer, Maximum number of results to return
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;kind&quot;: &quot;A String&quot;, # Resource type.
    &quot;totalItems&quot;: 42, # The total number of layer summaries found.
    &quot;items&quot;: [ # A list of layer summary items.
      {
        &quot;id&quot;: &quot;A String&quot;, # Unique id of this layer summary.
        &quot;contentVersion&quot;: &quot;A String&quot;, # The content version this resource is for.
        &quot;annotationsDataLink&quot;: &quot;A String&quot;, # Link to get data for this annotation.
        &quot;kind&quot;: &quot;A String&quot;, # Resource Type
        &quot;annotationTypes&quot;: [ # The list of annotation types contained for this layer.
          &quot;A String&quot;,
        ],
        &quot;updated&quot;: &quot;A String&quot;, # Timestamp for the last time an item in this layer was updated. (RFC 3339 UTC date-time format).
        &quot;layerId&quot;: &quot;A String&quot;, # The layer id for this summary.
        &quot;dataCount&quot;: 42, # The number of data items for this layer.
        &quot;volumeId&quot;: &quot;A String&quot;, # The volume id this resource is for.
        &quot;annotationCount&quot;: 42, # The number of annotations for this layer.
        &quot;annotationsLink&quot;: &quot;A String&quot;, # The link to get the annotations for this layer.
        &quot;selfLink&quot;: &quot;A String&quot;, # URL to this resource.
        &quot;volumeAnnotationsVersion&quot;: &quot;A String&quot;, # The current version of this layer&#x27;s volume annotations. Note that this version applies only to the data in the books.layers.volumeAnnotations.* responses. The actual annotation data is versioned separately.
      },
    ],
  }</pre>
</div>

</body></html>