<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.customMetrics.html">customMetrics</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(accountId, webPropertyId, customMetricId)</a></code></p>
<p class="firstline">Get a custom metric to which the user has access.</p>
<p class="toc_element">
  <code><a href="#insert">insert(accountId, webPropertyId, body=None)</a></code></p>
<p class="firstline">Create a new custom metric.</p>
<p class="toc_element">
  <code><a href="#list">list(accountId, webPropertyId, max_results=None, start_index=None)</a></code></p>
<p class="firstline">Lists custom metrics to which the user has access.</p>
<p class="toc_element">
  <code><a href="#patch">patch(accountId, webPropertyId, customMetricId, body=None, ignoreCustomDataSourceLinks=None)</a></code></p>
<p class="firstline">Updates an existing custom metric. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, webPropertyId, customMetricId, body=None, ignoreCustomDataSourceLinks=None)</a></code></p>
<p class="firstline">Updates an existing custom metric.</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(accountId, webPropertyId, customMetricId)</code>
  <pre>Get a custom metric to which the user has access.

Args:
  accountId: string, Account ID for the custom metric to retrieve. (required)
  webPropertyId: string, Web property ID for the custom metric to retrieve. (required)
  customMetricId: string, The ID of the custom metric to retrieve. (required)

Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
  }</pre>
</div>

<div class="method">
    <code class="details" id="insert">insert(accountId, webPropertyId, body=None)</code>
  <pre>Create a new custom metric.

Args:
  accountId: string, Account ID for the custom metric to create. (required)
  webPropertyId: string, Web property ID for the custom dimension to create. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics Custom Metric.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
  &quot;index&quot;: 42, # Index of the custom metric.
  &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
  &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
  &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
  &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
  &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
  &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
  &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
    &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
  &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
  &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
  &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
}


Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, webPropertyId, max_results=None, start_index=None)</code>
  <pre>Lists custom metrics to which the user has access.

Args:
  accountId: string, Account ID for the custom metrics to retrieve. (required)
  webPropertyId: string, Web property ID for the custom metrics to retrieve. (required)
  max_results: integer, The maximum number of custom metrics to include in this response.
  start_index: integer, An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.

Returns:
  An object of the form:

    { # A custom metric collection lists Analytics custom metrics to which the user has access. Each resource in the collection corresponds to a single Analytics custom metric.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this custom metric collection.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this custom metric collection.
    &quot;kind&quot;: &quot;analytics#customMetrics&quot;, # Collection type.
    &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;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;items&quot;: [ # Collection of custom metrics.
      { # JSON template for Analytics Custom Metric.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
        &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
        &quot;index&quot;: 42, # Index of the custom metric.
        &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
        &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
        &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
        &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
        &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
        &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
        &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
          &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
          &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
        },
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
        &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
        &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
        &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
      },
    ],
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
    &quot;startIndex&quot;: 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(accountId, webPropertyId, customMetricId, body=None, ignoreCustomDataSourceLinks=None)</code>
  <pre>Updates an existing custom metric. This method supports patch semantics.

Args:
  accountId: string, Account ID for the custom metric to update. (required)
  webPropertyId: string, Web property ID for the custom metric to update. (required)
  customMetricId: string, Custom metric ID for the custom metric to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics Custom Metric.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
  &quot;index&quot;: 42, # Index of the custom metric.
  &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
  &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
  &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
  &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
  &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
  &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
  &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
    &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
  &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
  &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
  &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
}

  ignoreCustomDataSourceLinks: boolean, Force the update and ignore any warnings related to the custom metric being linked to a custom data source / data set.

Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
  }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, webPropertyId, customMetricId, body=None, ignoreCustomDataSourceLinks=None)</code>
  <pre>Updates an existing custom metric.

Args:
  accountId: string, Account ID for the custom metric to update. (required)
  webPropertyId: string, Web property ID for the custom metric to update. (required)
  customMetricId: string, Custom metric ID for the custom metric to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics Custom Metric.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
  &quot;index&quot;: 42, # Index of the custom metric.
  &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
  &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
  &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
  &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
  &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
  &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
  &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
    &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
  },
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
  &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
  &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
  &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
}

  ignoreCustomDataSourceLinks: boolean, Force the update and ignore any warnings related to the custom metric being linked to a custom data source / data set.

Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;kind&quot;: &quot;analytics#customMetric&quot;, # Kind value for a custom metric. Set to &quot;analytics#customMetric&quot;. It is a read-only field.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;parentLink&quot;: { # Parent link for the custom metric. Points to the property to which the custom metric belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      &quot;type&quot;: &quot;analytics#webproperty&quot;, # Type of the parent link. Set to &quot;analytics#webproperty&quot;.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &quot;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
  }</pre>
</div>

</body></html>