<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.experiments.html">experiments</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="#delete">delete(accountId, webPropertyId, profileId, experimentId)</a></code></p>
<p class="firstline">Delete an experiment.</p>
<p class="toc_element">
  <code><a href="#get">get(accountId, webPropertyId, profileId, experimentId)</a></code></p>
<p class="firstline">Returns an experiment 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 experiment.</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 experiments to which the user has access.</p>
<p class="toc_element">
  <code><a href="#patch">patch(accountId, webPropertyId, profileId, experimentId, body=None)</a></code></p>
<p class="firstline">Update an existing experiment. This method supports patch semantics.</p>
<p class="toc_element">
  <code><a href="#update">update(accountId, webPropertyId, profileId, experimentId, body=None)</a></code></p>
<p class="firstline">Update an existing experiment.</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="delete">delete(accountId, webPropertyId, profileId, experimentId)</code>
  <pre>Delete an experiment.

Args:
  accountId: string, Account ID to which the experiment belongs (required)
  webPropertyId: string, Web property ID to which the experiment belongs (required)
  profileId: string, View (Profile) ID to which the experiment belongs (required)
  experimentId: string, ID of the experiment to delete (required)
</pre>
</div>

<div class="method">
    <code class="details" id="get">get(accountId, webPropertyId, profileId, experimentId)</code>
  <pre>Returns an experiment to which the user has access.

Args:
  accountId: string, Account ID to retrieve the experiment for. (required)
  webPropertyId: string, Web property ID to retrieve the experiment for. (required)
  profileId: string, View (Profile) ID to retrieve the experiment for. (required)
  experimentId: string, Experiment ID to retrieve the experiment for. (required)

Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
    &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
        # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
        # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
        # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
    &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
    &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
      {
        &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
        &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
        &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
        &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
      },
    ],
    &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
    },
    &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
    &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
    &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
    &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
    &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
    &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
    &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
    &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
    &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
  }</pre>
</div>

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

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

{ # JSON template for Analytics experiment resource.
  &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
      # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
      # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
      # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
  &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
  &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
    {
      &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
      &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
      &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
      &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
    },
  ],
  &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
    &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
    &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
  },
  &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
  &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
  &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
  &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
  &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
  &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
  &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
  &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
  &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
  &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
  &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
  &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
  &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
  &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
  &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
  &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
  &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
  &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
  &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
}


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
    &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
        # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
        # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
        # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
    &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
    &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
      {
        &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
        &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
        &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
        &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
      },
    ],
    &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
    },
    &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
    &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
    &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
    &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
    &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
    &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
    &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
    &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
    &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
  }</pre>
</div>

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

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

Returns:
  An object of the form:

    { # An experiment collection lists Analytics experiments to which the user has access. Each view (profile) can have a set of experiments. Each resource in the Experiment collection corresponds to a single Analytics experiment.
    &quot;totalResults&quot;: 42, # The total number of results for the query, regardless of the number of resources in the result.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous page for this experiment 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#experiments&quot;, # Collection type.
    &quot;itemsPerPage&quot;: 42, # The maximum number of resources the response can contain, regardless of the actual number of resources returned. Its value ranges from 1 to 1000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
    &quot;items&quot;: [ # A list of experiments.
      { # JSON template for Analytics experiment resource.
        &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
            # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
            # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
            # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
        &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
        &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
          {
            &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
            &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
            &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
            &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
            &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
          },
        ],
        &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
          &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
          &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
        },
        &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
        &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
        &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
        &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
        &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
        &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
        &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
        &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
        &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
        &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
        &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
        &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
        &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
        &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
        &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
        &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
        &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
        &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
        &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
        &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
        &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
        &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
        &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
        &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
      },
    ],
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this experiment collection.
  }</pre>
</div>

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

Args:
  accountId: string, Account ID of the experiment to update. (required)
  webPropertyId: string, Web property ID of the experiment to update. (required)
  profileId: string, View (Profile) ID of the experiment to update. (required)
  experimentId: string, Experiment ID of the experiment to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics experiment resource.
  &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
      # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
      # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
      # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
  &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
  &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
    {
      &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
      &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
      &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
      &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
    },
  ],
  &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
    &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
    &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
  },
  &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
  &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
  &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
  &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
  &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
  &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
  &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
  &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
  &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
  &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
  &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
  &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
  &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
  &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
  &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
  &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
  &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
  &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
  &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
}


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
    &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
        # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
        # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
        # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
    &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
    &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
      {
        &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
        &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
        &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
        &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
      },
    ],
    &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
    },
    &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
    &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
    &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
    &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
    &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
    &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
    &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
    &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
    &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
  }</pre>
</div>

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

Args:
  accountId: string, Account ID of the experiment to update. (required)
  webPropertyId: string, Web property ID of the experiment to update. (required)
  profileId: string, View (Profile) ID of the experiment to update. (required)
  experimentId: string, Experiment ID of the experiment to update. (required)
  body: object, The request body.
    The object takes the form of:

{ # JSON template for Analytics experiment resource.
  &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
      # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
      # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
      # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
  &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
  &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
    {
      &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
      &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
      &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
      &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
      &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
    },
  ],
  &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
    &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
    &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
  },
  &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
  &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
  &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
  &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
  &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
  &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
  &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
  &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
  &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
  &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
  &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
  &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
  &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
  &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
  &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
  &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
  &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
  &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
  &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
  &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
  &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
  &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
  &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
}


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
    &quot;servingFramework&quot;: &quot;A String&quot;, # The framework used to serve the experiment variations and evaluate the results. One of:
        # - REDIRECT: Google Analytics redirects traffic to different variation pages, reports the chosen variation and evaluates the results.
        # - API: Google Analytics chooses and reports the variation to serve and evaluates the results; the caller is responsible for serving the selected variation.
        # - EXTERNAL: The variations will be served externally and the chosen variation reported to Google Analytics. The caller is responsible for serving the selected variation and evaluating the results.
    &quot;id&quot;: &quot;A String&quot;, # Experiment ID. Required for patch and update. Disallowed for create.
    &quot;variations&quot;: [ # Array of variations. The first variation in the array is the original. The number of variations may not change once an experiment is in the RUNNING state. At least two variations are required before status can be set to RUNNING.
      {
        &quot;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &quot;url&quot;: &quot;A String&quot;, # The URL of the variation. This field may not be changed for an experiment whose status is RUNNING or ENDED.
        &quot;won&quot;: True or False, # True if the experiment has ended and this variation performed (statistically) significantly better than the original. This field is read-only.
        &quot;name&quot;: &quot;A String&quot;, # The name of the variation. This field is required when creating an experiment. This field may not be changed for an experiment whose status is ENDED.
        &quot;status&quot;: &quot;A String&quot;, # Status of the variation. Possible values: &quot;ACTIVE&quot;, &quot;INACTIVE&quot;. INACTIVE variations are not served. This field may not be changed for an experiment whose status is ENDED.
      },
    ],
    &quot;parentLink&quot;: { # Parent link for an experiment. Points to the view (profile) to which this experiment belongs.
      &quot;type&quot;: &quot;analytics#profile&quot;, # Value is &quot;analytics#profile&quot;. This field is read-only.
      &quot;href&quot;: &quot;A String&quot;, # Link to the view (profile) to which this experiment belongs. This field is read-only.
    },
    &quot;name&quot;: &quot;A String&quot;, # Experiment name. This field may not be changed for an experiment whose status is ENDED. This field is required when creating an experiment.
    &quot;trafficCoverage&quot;: 3.14, # A floating-point number in (0, 1]. Specifies the fraction of the traffic that participates in the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. This field is read-only.
    &quot;status&quot;: &quot;A String&quot;, # Experiment status. Possible values: &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot;, &quot;RUNNING&quot;, &quot;ENDED&quot;. Experiments can be created in the &quot;DRAFT&quot;, &quot;READY_TO_RUN&quot; or &quot;RUNNING&quot; state. This field is required when creating an experiment.
    &quot;rewriteVariationUrlsAsOriginal&quot;: True or False, # Boolean specifying whether variations URLS are rewritten to match those of the original. This field may not be changed for an experiments whose status is ENDED.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. This field is read-only.
    &quot;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;startTime&quot;: &quot;A String&quot;, # The starting time of the experiment (the time the status changed from READY_TO_RUN to RUNNING). This field is present only if the experiment has started. This field is read-only.
    &quot;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &quot;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;winnerConfidenceLevel&quot;: 3.14, # A floating-point number in (0, 1). Specifies the necessary confidence level to choose a winner. This field may not be changed for an experiments whose status is ENDED.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;equalWeighting&quot;: True or False, # Boolean specifying whether to distribute traffic evenly across all variations. If the value is False, content experiments follows the default behavior of adjusting traffic dynamically based on variation performance. Optional -- defaults to False. This field may not be changed for an experiment whose status is ENDED.
    &quot;webPropertyId&quot;: &quot;A String&quot;, # Web property ID to which this experiment belongs. The web property ID is of the form UA-XXXXX-YY. This field is read-only.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. This field is read-only.
    &quot;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;minimumExperimentLengthInDays&quot;: 42, # An integer number in [3, 90]. Specifies the minimum length of the experiment. Can be changed for a running experiment. This field may not be changed for an experiments whose status is ENDED.
    &quot;optimizationType&quot;: &quot;A String&quot;, # Whether the objectiveMetric should be minimized or maximized. Possible values: &quot;MAXIMUM&quot;, &quot;MINIMUM&quot;. Optional--defaults to &quot;MAXIMUM&quot;. Cannot be specified without objectiveMetric. Cannot be modified when status is &quot;RUNNING&quot; or &quot;ENDED&quot;.
    &quot;objectiveMetric&quot;: &quot;A String&quot;, # The metric that the experiment is optimizing. Valid values: &quot;ga:goal(n)Completions&quot;, &quot;ga:adsenseAdsClicks&quot;, &quot;ga:adsenseAdsViewed&quot;, &quot;ga:adsenseRevenue&quot;, &quot;ga:bounces&quot;, &quot;ga:pageviews&quot;, &quot;ga:sessionDuration&quot;, &quot;ga:transactions&quot;, &quot;ga:transactionRevenue&quot;. This field is required if status is &quot;RUNNING&quot; and servingFramework is one of &quot;REDIRECT&quot; or &quot;API&quot;.
    &quot;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &quot;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. This field is read-only.
    &quot;endTime&quot;: &quot;A String&quot;, # The ending time of the experiment (the time the status changed from RUNNING to ENDED). This field is present only if the experiment has ended. This field is read-only.
    &quot;reasonExperimentEnded&quot;: &quot;A String&quot;, # Why the experiment ended. Possible values: &quot;STOPPED_BY_USER&quot;, &quot;WINNER_FOUND&quot;, &quot;EXPERIMENT_EXPIRED&quot;, &quot;ENDED_WITH_NO_WINNER&quot;, &quot;GOAL_OBJECTIVE_CHANGED&quot;. &quot;ENDED_WITH_NO_WINNER&quot; means that the experiment didn&#x27;t expire but no winner was projected to be found. If the experiment status is changed via the API to ENDED this field is set to STOPPED_BY_USER. This field is read-only.
  }</pre>
</div>

</body></html>