<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="#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, max_results=None, start_index=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="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;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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
      &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
      &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
      &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
      &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
          &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
      &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
      &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
    }</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;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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
      &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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
      &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
      &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
      &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
      &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
          &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
      &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
      &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
    }</pre>
</div>

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

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;username&quot;: &quot;A String&quot;, # Email ID of the authenticated user
    &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 experiments.
      { # JSON template for Analytics experiment resource.
          &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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
          &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
          &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
          &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
          &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
              &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
          &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
          &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
          &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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;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;startIndex&quot;: 42, # The starting index of the resources, which is 1 by default or otherwise specified by the start-index query parameter.
    &quot;nextLink&quot;: &quot;A String&quot;, # Link to next page for this experiment collection.
    &quot;previousLink&quot;: &quot;A String&quot;, # Link to previous 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;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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
      &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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
      &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
      &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
      &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
      &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
          &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
      &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
      &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
    }</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;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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
    &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
    &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
    &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
    &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
        &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
    &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
    &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
    &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
  }


Returns:
  An object of the form:

    { # JSON template for Analytics experiment resource.
      &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;updated&quot;: &quot;A String&quot;, # Time the experiment was last modified. This field is read-only.
      &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;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;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;selfLink&quot;: &quot;A String&quot;, # Link for this experiment. 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;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;accountId&quot;: &quot;A String&quot;, # Account ID to which this experiment belongs. This field is read-only.
      &quot;kind&quot;: &quot;analytics#experiment&quot;, # Resource type for an Analytics experiment. 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;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;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;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;editableInGaUi&quot;: True or False, # If true, the end user will be able to edit the experiment via the Google Analytics user interface.
      &quot;created&quot;: &quot;A String&quot;, # Time the experiment was created. 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;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;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;profileId&quot;: &quot;A String&quot;, # View (Profile) ID to which this experiment belongs. This field is read-only.
      &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;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;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;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;weight&quot;: 3.14, # Weight that this variation should receive. Only present if the experiment is running. This field is read-only.
          &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;winnerFound&quot;: True or False, # Boolean specifying whether a winner has been found for this experiment. This field is read-only.
      &quot;description&quot;: &quot;A String&quot;, # Notes about this experiment.
      &quot;snippet&quot;: &quot;A String&quot;, # The snippet of code to include on the control page(s). This field is read-only.
      &quot;internalWebPropertyId&quot;: &quot;A String&quot;, # Internal ID for the web property to which this experiment belongs. 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;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.
    }</pre>
</div>

</body></html>