<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, 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="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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      },
      &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;index&quot;: 42, # Index of the custom metric.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    }</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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    },
    &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics Custom Metric.
      &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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      },
      &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;index&quot;: 42, # Index of the custom metric.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    }</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;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;items&quot;: [ # Collection of custom metrics.
      { # JSON template for Analytics Custom Metric.
          &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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
          },
          &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
          &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
          &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
          &quot;index&quot;: 42, # Index of the custom metric.
          &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
          &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
        },
    ],
    &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;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;kind&quot;: &quot;analytics#customMetrics&quot;, # Collection type.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of results in the response.
  }</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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    },
    &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  }

  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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      },
      &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;index&quot;: 42, # Index of the custom metric.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    }</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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
    },
    &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
    &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
    &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
    &quot;index&quot;: 42, # Index of the custom metric.
    &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
    &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
  }

  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;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;parentLink&quot;: { # Parent link for the custom metric. Points 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;href&quot;: &quot;A String&quot;, # Link to the property to which the custom metric belongs.
      },
      &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;selfLink&quot;: &quot;A String&quot;, # Link for the custom metric
      &quot;id&quot;: &quot;A String&quot;, # Custom metric ID.
      &quot;type&quot;: &quot;A String&quot;, # Data type of custom metric.
      &quot;index&quot;: 42, # Index of the custom metric.
      &quot;created&quot;: &quot;A String&quot;, # Time the custom metric was created.
      &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;updated&quot;: &quot;A String&quot;, # Time the custom metric was last modified.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID.
    }</pre>
</div>

</body></html>