<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="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.management.html">management</a> . <a href="analytics_v3.management.segments.html">segments</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="#list">list(max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists segments to which the user has access.</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="list">list(max_results=None, start_index=None)</code>
  <pre>Lists segments to which the user has access.

Args:
  max_results: integer, The maximum number of segments to include in this response.
  start_index: integer, An index of the first segment to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # An segment collection lists Analytics segments that the user has access to. Each resource in the collection corresponds to a single Analytics segment.
    &quot;startIndex&quot;: 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this segment collection.
    &quot;items&quot;: [ # A list of segments.
      { # JSON template for an Analytics segment.
        &quot;updated&quot;: &quot;A String&quot;, # Time the segment was last modified.
        &quot;definition&quot;: &quot;A String&quot;, # Segment definition.
        &quot;type&quot;: &quot;A String&quot;, # Type for a segment. Possible values are &quot;BUILT_IN&quot; or &quot;CUSTOM&quot;.
        &quot;created&quot;: &quot;A String&quot;, # Time the segment was created.
        &quot;id&quot;: &quot;A String&quot;, # Segment ID.
        &quot;segmentId&quot;: &quot;A String&quot;, # Segment ID. Can be used with the &#x27;segment&#x27; parameter in Core Reporting API.
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this segment.
        &quot;name&quot;: &quot;A String&quot;, # Segment name.
        &quot;kind&quot;: &quot;analytics#segment&quot;, # Resource type for Analytics segment.
      },
    ],
    &quot;itemsPerPage&quot;: 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
    &quot;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;kind&quot;: &quot;analytics#segments&quot;, # Collection type for segments.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this segment collection.
  }</pre>
</div>

</body></html>