<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="#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, start_index=None, max_results=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="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;index&quot;: 42, # Index of the custom metric.
      &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
      &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
      &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;accountId&quot;: &quot;A String&quot;, # Account ID.
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
      &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    }</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;index&quot;: 42, # Index of the custom metric.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &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;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
      &quot;index&quot;: 42, # Index of the custom metric.
      &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
      &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
      &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;accountId&quot;: &quot;A String&quot;, # Account ID.
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
      &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(accountId, webPropertyId, start_index=None, max_results=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)
  start_index: integer, An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
  max_results: integer, The maximum number of custom metrics to include in this response.

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

  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;index&quot;: 42, # Index of the custom metric.
      &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
      &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
      &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;accountId&quot;: &quot;A String&quot;, # Account ID.
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
      &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    }</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;index&quot;: 42, # Index of the custom metric.
    &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
    &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
    &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;accountId&quot;: &quot;A String&quot;, # Account ID.
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
    &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
  }

  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;index&quot;: 42, # Index of the custom metric.
      &quot;scope&quot;: &quot;A String&quot;, # Scope of the custom metric: HIT or PRODUCT.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;active&quot;: True or False, # Boolean indicating whether the custom metric is active.
      &quot;name&quot;: &quot;A String&quot;, # Name of the custom metric.
      &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;accountId&quot;: &quot;A String&quot;, # Account ID.
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;max_value&quot;: &quot;A String&quot;, # Max value of custom metric.
      &quot;min_value&quot;: &quot;A String&quot;, # Min value of custom metric.
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Property ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    }</pre>
</div>

</body></html>