<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="tagmanager_v2.html">Tag Manager API</a> . <a href="tagmanager_v2.accounts.html">accounts</a> . <a href="tagmanager_v2.accounts.containers.html">containers</a> . <a href="tagmanager_v2.accounts.containers.version_headers.html">version_headers</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="#latest">latest(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Gets the latest container version header</p>
<p class="toc_element">
  <code><a href="#list">list(parent, includeDeleted=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all Container Versions of a GTM Container.</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="latest">latest(parent, x__xgafv=None)</code>
  <pre>Gets the latest container version header

Args:
  parent: string, GTM Container&#x27;s API relative path. Example: accounts/{account_id}/containers/{container_id} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents a Google Tag Manager Container Version Header.
  &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
  &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID.
  &quot;containerVersionId&quot;: &quot;A String&quot;, # The Container Version ID uniquely identifies the GTM Container Version.
  &quot;deleted&quot;: True or False, # A value of true indicates this container version has been deleted.
  &quot;name&quot;: &quot;A String&quot;, # Container version display name.
  &quot;numClients&quot;: &quot;A String&quot;, # Number of clients in the container version.
  &quot;numCustomTemplates&quot;: &quot;A String&quot;, # Number of custom templates in the container version.
  &quot;numMacros&quot;: &quot;A String&quot;, # Number of macros in the container version.
  &quot;numRules&quot;: &quot;A String&quot;, # Number of rules in the container version.
  &quot;numTags&quot;: &quot;A String&quot;, # Number of tags in the container version.
  &quot;numTriggers&quot;: &quot;A String&quot;, # Number of triggers in the container version.
  &quot;numVariables&quot;: &quot;A String&quot;, # Number of variables in the container version.
  &quot;numZones&quot;: &quot;A String&quot;, # Number of zones in the container version.
  &quot;path&quot;: &quot;A String&quot;, # GTM Container Versions&#x27;s API relative path.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, includeDeleted=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists all Container Versions of a GTM Container.

Args:
  parent: string, GTM Container&#x27;s API relative path. Example: accounts/{account_id}/containers/{container_id} (required)
  includeDeleted: boolean, Also retrieve deleted (archived) versions when true.
  pageToken: string, Continuation token for fetching the next page of results.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # List container versions response.
  &quot;containerVersionHeader&quot;: [ # All container version headers of a GTM Container.
    { # Represents a Google Tag Manager Container Version Header.
      &quot;accountId&quot;: &quot;A String&quot;, # GTM Account ID.
      &quot;containerId&quot;: &quot;A String&quot;, # GTM Container ID.
      &quot;containerVersionId&quot;: &quot;A String&quot;, # The Container Version ID uniquely identifies the GTM Container Version.
      &quot;deleted&quot;: True or False, # A value of true indicates this container version has been deleted.
      &quot;name&quot;: &quot;A String&quot;, # Container version display name.
      &quot;numClients&quot;: &quot;A String&quot;, # Number of clients in the container version.
      &quot;numCustomTemplates&quot;: &quot;A String&quot;, # Number of custom templates in the container version.
      &quot;numMacros&quot;: &quot;A String&quot;, # Number of macros in the container version.
      &quot;numRules&quot;: &quot;A String&quot;, # Number of rules in the container version.
      &quot;numTags&quot;: &quot;A String&quot;, # Number of tags in the container version.
      &quot;numTriggers&quot;: &quot;A String&quot;, # Number of triggers in the container version.
      &quot;numVariables&quot;: &quot;A String&quot;, # Number of variables in the container version.
      &quot;numZones&quot;: &quot;A String&quot;, # Number of zones in the container version.
      &quot;path&quot;: &quot;A String&quot;, # GTM Container Versions&#x27;s API relative path.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Continuation token for fetching the next page of 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>