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

Args:
  accountId: string, Account ID to retrieve the goal for. (required)
  webPropertyId: string, Web property ID to retrieve the goal for. (required)
  profileId: string, View (Profile) ID to retrieve the goal for. (required)
  goalId: string, Goal ID to retrieve the goal for. (required)

Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
      },
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
            &quot;number&quot;: 42, # Step number.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
            &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
          },
        ],
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;name&quot;: &quot;A String&quot;, # Goal name.
      &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
        &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      },
      &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
      },
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
      &quot;value&quot;: 3.14, # Goal value.
    }</pre>
</div>

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

Args:
  accountId: string, Account ID to create the goal for. (required)
  webPropertyId: string, Web property ID to create the goal for. (required)
  profileId: string, View (Profile) ID to create the goal for. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics goal resource.
    &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
    },
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          &quot;number&quot;: 42, # Step number.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
          &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
        },
      ],
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;name&quot;: &quot;A String&quot;, # Goal name.
    &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
    },
    &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
    },
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
    &quot;value&quot;: 3.14, # Goal value.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
      },
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
            &quot;number&quot;: 42, # Step number.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
            &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
          },
        ],
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;name&quot;: &quot;A String&quot;, # Goal name.
      &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
        &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      },
      &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
      },
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
      &quot;value&quot;: 3.14, # Goal value.
    }</pre>
</div>

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

Args:
  accountId: string, Account ID to retrieve goals for. Can either be a specific account ID or &#x27;~all&#x27;, which refers to all the accounts that user has access to. (required)
  webPropertyId: string, Web property ID to retrieve goals for. Can either be a specific web property ID or &#x27;~all&#x27;, which refers to all the web properties that user has access to. (required)
  profileId: string, View (Profile) ID to retrieve goals for. Can either be a specific view (profile) ID or &#x27;~all&#x27;, which refers to all the views (profiles) that user has access to. (required)
  start_index: integer, An index of the first goal to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
  max_results: integer, The maximum number of goals to include in this response.

Returns:
  An object of the form:

    { # A goal collection lists Analytics goals to which the user has access. Each view (profile) can have a set of goals. Each resource in the Goal collection corresponds to a single Analytics goal.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this goal collection.
    &quot;items&quot;: [ # A list of goals.
      { # JSON template for Analytics goal resource.
          &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
          },
          &quot;active&quot;: True or False, # Determines whether this goal is active.
          &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
            &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
            &quot;steps&quot;: [ # List of steps configured for this goal funnel.
              {
                &quot;name&quot;: &quot;A String&quot;, # Step name.
                &quot;url&quot;: &quot;A String&quot;, # URL for this step.
                &quot;number&quot;: 42, # Step number.
              },
            ],
            &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
            &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
            &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
          },
          &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
          &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
            &quot;eventConditions&quot;: [ # List of event conditions.
              {
                &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
                &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
                &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
                &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
                &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
              },
            ],
            &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
          },
          &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
          &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
          &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
          &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
          &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
          &quot;id&quot;: &quot;A String&quot;, # Goal ID.
          &quot;name&quot;: &quot;A String&quot;, # Goal name.
          &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
            &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
            &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
          },
          &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
          },
          &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
          &quot;value&quot;: 3.14, # Goal value.
        },
    ],
    &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;nextLink&quot;: &quot;A String&quot;, # Link to next page for this goal collection.
    &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;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &quot;kind&quot;: &quot;analytics#goals&quot;, # Collection type.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of resources in the result.
  }</pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(accountId, webPropertyId, profileId, goalId, body=None)</code>
  <pre>Updates an existing goal. This method supports patch semantics.

Args:
  accountId: string, Account ID to update the goal. (required)
  webPropertyId: string, Web property ID to update the goal. (required)
  profileId: string, View (Profile) ID to update the goal. (required)
  goalId: string, Index of the goal to be updated. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics goal resource.
    &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
    },
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          &quot;number&quot;: 42, # Step number.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
          &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
        },
      ],
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;name&quot;: &quot;A String&quot;, # Goal name.
    &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
    },
    &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
    },
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
    &quot;value&quot;: 3.14, # Goal value.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
      },
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
            &quot;number&quot;: 42, # Step number.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
            &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
          },
        ],
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;name&quot;: &quot;A String&quot;, # Goal name.
      &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
        &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      },
      &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
      },
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
      &quot;value&quot;: 3.14, # Goal value.
    }</pre>
</div>

<div class="method">
    <code class="details" id="update">update(accountId, webPropertyId, profileId, goalId, body=None)</code>
  <pre>Updates an existing goal.

Args:
  accountId: string, Account ID to update the goal. (required)
  webPropertyId: string, Web property ID to update the goal. (required)
  profileId: string, View (Profile) ID to update the goal. (required)
  goalId: string, Index of the goal to be updated. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics goal resource.
    &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
    },
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          &quot;number&quot;: 42, # Step number.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
          &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
        },
      ],
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
    },
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;name&quot;: &quot;A String&quot;, # Goal name.
    &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
    },
    &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
      &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
      &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
    },
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
    &quot;value&quot;: 3.14, # Goal value.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &quot;visitTimeOnSiteDetails&quot;: { # Details for the goal of the type VISIT_TIME_ON_SITE.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN or GREATER_THAN.
      },
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &quot;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
            &quot;number&quot;: 42, # Step number.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;expression&quot;: &quot;A String&quot;, # Expression used for this match.
            &quot;type&quot;: &quot;A String&quot;, # Type of this event condition. Possible values are CATEGORY, ACTION, LABEL, or VALUE.
          },
        ],
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      },
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;updated&quot;: &quot;A String&quot;, # Time this goal was last modified.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this goal belongs.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;name&quot;: &quot;A String&quot;, # Goal name.
      &quot;parentLink&quot;: { # Parent link for a goal. Points to the view (profile) to which this goal belongs.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
        &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      },
      &quot;visitNumPagesDetails&quot;: { # Details for the goal of the type VISIT_NUM_PAGES.
        &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
        &quot;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN, or EQUAL.
      },
      &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this goal belongs. The web property ID is of the form UA-XXXXX-YY.
      &quot;value&quot;: 3.14, # Goal value.
    }</pre>
</div>

</body></html>