<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/rollout. 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/rollout. 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/rollout. 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/rollout. 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/rollout. 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/rollout. 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/rollout. 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/rollout. 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>