<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="#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="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;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;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          },
        ],
      },
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;number&quot;: 42, # Step number.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      },
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;value&quot;: 3.14, # Goal value.
      &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.
      },
    }</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;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;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
        },
      ],
    },
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;number&quot;: 42, # Step number.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
    },
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;value&quot;: 3.14, # Goal value.
    &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.
    },
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &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;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          },
        ],
      },
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;number&quot;: 42, # Step number.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      },
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;value&quot;: 3.14, # Goal value.
      &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.
      },
    }</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;kind&quot;: &quot;analytics#goals&quot;, # Collection type.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this goal collection.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this goal collection.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of resources in the result.
    &quot;items&quot;: [ # A list of goals.
      { # JSON template for Analytics goal resource.
          &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;eventDetails&quot;: { # Details for the goal of the type EVENT.
            &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
            &quot;eventConditions&quot;: [ # List of event conditions.
              {
                &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
                &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
                &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
              },
            ],
          },
          &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
          &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
          &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
          &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
            &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
            &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
            &quot;steps&quot;: [ # List of steps configured for this goal funnel.
              {
                &quot;name&quot;: &quot;A String&quot;, # Step name.
                &quot;number&quot;: 42, # Step number.
                &quot;url&quot;: &quot;A String&quot;, # URL for this step.
              },
            ],
            &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
            &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
          },
          &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
          &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
          &quot;active&quot;: True or False, # Determines whether this goal is active.
          &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
            &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
          },
          &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
          &quot;id&quot;: &quot;A String&quot;, # Goal ID.
          &quot;value&quot;: 3.14, # Goal value.
          &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;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &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;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.
  }</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;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;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
        },
      ],
    },
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;number&quot;: 42, # Step number.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
    },
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;value&quot;: 3.14, # Goal value.
    &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.
    },
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &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;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          },
        ],
      },
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;number&quot;: 42, # Step number.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      },
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;value&quot;: 3.14, # Goal value.
      &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.
      },
    }</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;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;eventDetails&quot;: { # Details for the goal of the type EVENT.
      &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
      &quot;eventConditions&quot;: [ # List of event conditions.
        {
          &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
          &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
          &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
        },
      ],
    },
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
    &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
    &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
      &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
      &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
      &quot;steps&quot;: [ # List of steps configured for this goal funnel.
        {
          &quot;name&quot;: &quot;A String&quot;, # Step name.
          &quot;number&quot;: 42, # Step number.
          &quot;url&quot;: &quot;A String&quot;, # URL for this step.
        },
      ],
      &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
      &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
    },
    &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
    &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
    &quot;active&quot;: True or False, # Determines whether this goal is active.
    &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
    },
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
    &quot;id&quot;: &quot;A String&quot;, # Goal ID.
    &quot;value&quot;: 3.14, # Goal value.
    &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.
    },
  }


Returns:
  An object of the form:

    { # JSON template for Analytics goal resource.
      &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;eventDetails&quot;: { # Details for the goal of the type EVENT.
        &quot;useEventValue&quot;: True or False, # Determines if the event value should be used as the value for this goal.
        &quot;eventConditions&quot;: [ # List of event conditions.
          {
            &quot;matchType&quot;: &quot;A String&quot;, # Type of the match to be performed. Possible values are REGEXP, BEGINS_WITH, or EXACT.
            &quot;comparisonValue&quot;: &quot;A String&quot;, # Value used for this comparison.
            &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;comparisonType&quot;: &quot;A String&quot;, # Type of comparison. Possible values are LESS_THAN, GREATER_THAN or EQUAL.
          },
        ],
      },
      &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this goal belongs.
      &quot;type&quot;: &quot;A String&quot;, # Goal type. Possible values are URL_DESTINATION, VISIT_TIME_ON_SITE, VISIT_NUM_PAGES, AND EVENT.
      &quot;selfLink&quot;: &quot;A String&quot;, # Link for this goal.
      &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;urlDestinationDetails&quot;: { # Details for the goal of the type URL_DESTINATION.
        &quot;caseSensitive&quot;: True or False, # Determines if the goal URL must exactly match the capitalization of visited URLs.
        &quot;firstStepRequired&quot;: True or False, # Determines if the first step in this goal is required.
        &quot;steps&quot;: [ # List of steps configured for this goal funnel.
          {
            &quot;name&quot;: &quot;A String&quot;, # Step name.
            &quot;number&quot;: 42, # Step number.
            &quot;url&quot;: &quot;A String&quot;, # URL for this step.
          },
        ],
        &quot;url&quot;: &quot;A String&quot;, # URL for this goal.
        &quot;matchType&quot;: &quot;A String&quot;, # Match type for the goal URL. Possible values are HEAD, EXACT, or REGEX.
      },
      &quot;kind&quot;: &quot;analytics#goal&quot;, # Resource type for an Analytics goal.
      &quot;created&quot;: &quot;A String&quot;, # Time this goal was created.
      &quot;active&quot;: True or False, # Determines whether this goal is active.
      &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;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;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;.
        &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this goal belongs.
      },
      &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this goal belongs.
      &quot;id&quot;: &quot;A String&quot;, # Goal ID.
      &quot;value&quot;: 3.14, # Goal value.
      &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.
      },
    }</pre>
</div>

</body></html>