<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="dialogflow_v3.html">Dialogflow API</a> . <a href="dialogflow_v3.projects.html">projects</a> . <a href="dialogflow_v3.projects.locations.html">locations</a> . <a href="dialogflow_v3.projects.locations.agents.html">agents</a> . <a href="dialogflow_v3.projects.locations.agents.environments.html">environments</a> . <a href="dialogflow_v3.projects.locations.agents.environments.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="#create">create(parent, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates an Experiment in the specified Environment.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes the specified Experiment.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Retrieves the specified Experiment.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Returns the list of all experiments in the specified Environment.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next(previous_request, previous_response)</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#patch">patch(name, body=None, updateMask=None, x__xgafv=None)</a></code></p>
<p class="firstline">Updates the specified Experiment.</p>
<p class="toc_element">
  <code><a href="#start">start(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Starts the specified Experiment. This rpc only changes the state of experiment from PENDING to RUNNING.</p>
<p class="toc_element">
  <code><a href="#stop">stop(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Stops the specified Experiment. This rpc only changes the state of experiment from RUNNING to DONE.</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="create">create(parent, body=None, x__xgafv=None)</code>
  <pre>Creates an Experiment in the specified Environment.

Args:
  parent: string, Required. The Agent to create an Environment for. Format: `projects//locations//agents//environments/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="delete">delete(name, x__xgafv=None)</code>
  <pre>Deletes the specified Experiment.

Args:
  name: string, Required. The name of the Environment to delete. Format: `projects//locations//agents//environments//experiments/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); } The JSON representation for `Empty` is empty JSON object `{}`.
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Retrieves the specified Experiment.

Args:
  name: string, Required. The name of the Environment. Format: `projects//locations//agents//environments//experiments/`. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Returns the list of all experiments in the specified Environment.

Args:
  parent: string, Required. The Environment to list all environments for. Format: `projects//locations//agents//environments/`. (required)
  pageSize: integer, The maximum number of items to return in a single page. By default 20 and at most 100.
  pageToken: string, The next_page_token value returned from a previous list request.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The response message for Experiments.ListExperiments.
  &quot;experiments&quot;: [ # The list of experiments. There will be a maximum number of items returned based on the page_size field in the request. The list may in some cases be empty or contain fewer entries than page_size even if this isn&#x27;t the last page.
    { # Represents an experiment in an environment.
      &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
      &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
        &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
        &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
          &quot;variants&quot;: [ # A list of flow version variants.
            { # A single flow version with specified traffic allocation.
              &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
              &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
              &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
            },
          ],
        },
      },
      &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
      &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
      &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
      &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
      &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
      &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
      &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
        &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
        &quot;versionMetrics&quot;: [ # Version variants and metrics.
          { # Version variant and associated metrics.
            &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
              { # Metric and corresponding confidence intervals.
                &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
                  &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
                  &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
                  &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
                  &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
                },
                &quot;count&quot;: 3.14, # Count value of a metric.
                &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
                &quot;ratio&quot;: 3.14, # Ratio value of a metric.
                &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
              },
            ],
            &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
      &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
      &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
      &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
        { # The history of variants update.
          &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
          &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
            &quot;variants&quot;: [ # A list of flow version variants.
              { # A single flow version with specified traffic allocation.
                &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
                &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
                &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
              },
            ],
          },
        },
      ],
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Token to retrieve the next page of results, or empty if there are no more results in the list.
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="patch">patch(name, body=None, updateMask=None, x__xgafv=None)</code>
  <pre>Updates the specified Experiment.

Args:
  name: string, The name of the experiment. Format: projects//locations//agents//environments//experiments/.. (required)
  body: object, The request body.
    The object takes the form of:

{ # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}

  updateMask: string, Required. The mask to control which fields get updated.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="start">start(name, body=None, x__xgafv=None)</code>
  <pre>Starts the specified Experiment. This rpc only changes the state of experiment from PENDING to RUNNING.

Args:
  name: string, Required. Resource name of the experiment to start. Format: `projects//locations//agents//environments//experiments/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for Experiments.StartExperiment.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="stop">stop(name, body=None, x__xgafv=None)</code>
  <pre>Stops the specified Experiment. This rpc only changes the state of experiment from RUNNING to DONE.

Args:
  name: string, Required. Resource name of the experiment to stop. Format: `projects//locations//agents//environments//experiments/`. (required)
  body: object, The request body.
    The object takes the form of:

{ # The request message for Experiments.StopExperiment.
}

  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Represents an experiment in an environment.
  &quot;createTime&quot;: &quot;A String&quot;, # Creation time of this experiment.
  &quot;definition&quot;: { # Definition of the experiment. # The definition of the experiment.
    &quot;condition&quot;: &quot;A String&quot;, # The condition defines which subset of sessions are selected for this experiment. If not specified, all sessions are eligible. E.g. &quot;query_input.language_code=en&quot; See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants of this experiment.
      &quot;variants&quot;: [ # A list of flow version variants.
        { # A single flow version with specified traffic allocation.
          &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
          &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
          &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
        },
      ],
    },
  },
  &quot;description&quot;: &quot;A String&quot;, # The human-readable description of the experiment.
  &quot;displayName&quot;: &quot;A String&quot;, # Required. The human-readable name of the experiment (unique in an environment). Limit of 64 characters.
  &quot;endTime&quot;: &quot;A String&quot;, # End time of this experiment.
  &quot;experimentLength&quot;: &quot;A String&quot;, # Maximum number of days to run the experiment.
  &quot;lastUpdateTime&quot;: &quot;A String&quot;, # Last update time of this experiment.
  &quot;name&quot;: &quot;A String&quot;, # The name of the experiment. Format: projects//locations//agents//environments//experiments/..
  &quot;result&quot;: { # The inference result which includes an objective metric to optimize and the confidence interval. # Inference result of the experiment.
    &quot;lastUpdateTime&quot;: &quot;A String&quot;, # The last time the experiment&#x27;s stats data was updated. Will have default value if stats have never been computed for this experiment.
    &quot;versionMetrics&quot;: [ # Version variants and metrics.
      { # Version variant and associated metrics.
        &quot;metrics&quot;: [ # The metrics and corresponding confidence intervals in the inference result.
          { # Metric and corresponding confidence intervals.
            &quot;confidenceInterval&quot;: { # A confidence interval is a range of possible values for the experiment objective you are trying to measure. # The probability that the treatment is better than all other treatments in the experiment
              &quot;confidenceLevel&quot;: 3.14, # The confidence level used to construct the interval, i.e. there is X% chance that the true value is within this interval.
              &quot;lowerBound&quot;: 3.14, # Lower bound of the interval.
              &quot;ratio&quot;: 3.14, # The percent change between an experiment metric&#x27;s value and the value for its control.
              &quot;upperBound&quot;: 3.14, # Upper bound of the interval.
            },
            &quot;count&quot;: 3.14, # Count value of a metric.
            &quot;countType&quot;: &quot;A String&quot;, # Count-based metric type. Only one of type or count_type is specified in each Metric.
            &quot;ratio&quot;: 3.14, # Ratio value of a metric.
            &quot;type&quot;: &quot;A String&quot;, # Ratio-based metric type. Only one of type or count_type is specified in each Metric.
          },
        ],
        &quot;sessionCount&quot;: 42, # Number of sessions that were allocated to this version.
        &quot;version&quot;: &quot;A String&quot;, # The name of the flow Version. Format: `projects//locations//agents//flows//versions/`.
      },
    ],
  },
  &quot;startTime&quot;: &quot;A String&quot;, # Start time of this experiment.
  &quot;state&quot;: &quot;A String&quot;, # The current state of the experiment. Transition triggered by Expriments.StartExperiment: PENDING-&gt;RUNNING. Transition triggered by Expriments.CancelExperiment: PENDING-&gt;CANCELLED or RUNNING-&gt;CANCELLED.
  &quot;variantsHistory&quot;: [ # The history of updates to the experiment variants.
    { # The history of variants update.
      &quot;updateTime&quot;: &quot;A String&quot;, # Update time of the variants.
      &quot;versionVariants&quot;: { # A list of flow version variants. # The flow versions as the variants.
        &quot;variants&quot;: [ # A list of flow version variants.
          { # A single flow version with specified traffic allocation.
            &quot;isControlGroup&quot;: True or False, # Whether the variant is for the control group.
            &quot;trafficAllocation&quot;: 3.14, # Percentage of the traffic which should be routed to this version of flow. Traffic allocation for a single flow must sum up to 1.0.
            &quot;version&quot;: &quot;A String&quot;, # The name of the flow version. Format: `projects//locations//agents//flows//versions/`.
          },
        ],
      },
    },
  ],
}</pre>
</div>

</body></html>