<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_v3beta1.html">Dialogflow API</a> . <a href="dialogflow_v3beta1.projects.html">projects</a> . <a href="dialogflow_v3beta1.projects.locations.html">locations</a> . <a href="dialogflow_v3beta1.projects.locations.agents.html">agents</a> . <a href="dialogflow_v3beta1.projects.locations.agents.environments.html">environments</a> . <a href="dialogflow_v3beta1.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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
      &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
        &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
        &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
        &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
          { # A single rollout step with specified traffic allocation.
            &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
            &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
            &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
          },
        ],
      },
      &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
      &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
        &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
        &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
        &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
      },
      &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
      &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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. If auto-rollout is not enabled, default value and maximum will be 30 days. If auto-rollout is enabled, default value and maximum will be 6 days.
  &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;rolloutConfig&quot;: { # The configuration for auto rollout. # The configuration for auto rollout. If set, there should be exactly two variants in the experiment (control variant being the default version of the flow), the traffic allocation for the non-control variant will gradually increase to 100% when conditions are met, and eventually replace the control variant to become the default version of the flow.
    &quot;failureCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the failure of a rollout step. If not specified, no rollout steps will fail. E.g. &quot;containment_rate &lt; 10% OR average_turn_count &lt; 3&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutCondition&quot;: &quot;A String&quot;, # The conditions that are used to evaluate the success of a rollout step. If not specified, all rollout steps will proceed to the next one unless failure conditions are met. E.g. &quot;containment_rate &gt; 60% AND callback_rate &lt; 20%&quot;. See the [conditions reference](https://cloud.google.com/dialogflow/cx/docs/reference/condition).
    &quot;rolloutSteps&quot;: [ # Steps to roll out a flow version. Steps should be sorted by percentage in ascending order.
      { # A single rollout step with specified traffic allocation.
        &quot;displayName&quot;: &quot;A String&quot;, # The name of the rollout step;
        &quot;minDuration&quot;: &quot;A String&quot;, # The minimum time that this step should last. Should be longer than 1 hour. If not set, the default minimum duration for each step will be 1 hour.
        &quot;trafficPercent&quot;: 42, # The percentage of traffic allocated to the flow version of this rollout step. (0%, 100%].
      },
    ],
  },
  &quot;rolloutFailureReason&quot;: &quot;A String&quot;, # The reason why rollout has failed. Should only be set when state is ROLLOUT_FAILED.
  &quot;rolloutState&quot;: { # State of the auto-rollout process. # State of the auto rollout process.
    &quot;startTime&quot;: &quot;A String&quot;, # Start time of the current step.
    &quot;step&quot;: &quot;A String&quot;, # Display name of the current auto rollout step.
    &quot;stepIndex&quot;: 42, # Index of the current step in the auto rollout steps list.
  },
  &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 Experiments.StartExperiment: DRAFT-&gt;RUNNING. Transition triggered by Experiments.CancelExperiment: DRAFT-&gt;DONE or RUNNING-&gt;DONE.
  &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>