<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="ml_v1.html">AI Platform Training & Prediction API</a> . <a href="ml_v1.projects.html">projects</a> . <a href="ml_v1.projects.locations.html">locations</a> . <a href="ml_v1.projects.locations.studies.html">studies</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="ml_v1.projects.locations.studies.trials.html">trials()</a></code>
</p>
<p class="firstline">Returns the trials Resource.</p>

<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, studyId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a study.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes a study.</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets a study.</p>
<p class="toc_element">
  <code><a href="#list">list(parent, x__xgafv=None)</a></code></p>
<p class="firstline">Lists all the studies in a region for an associated project.</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, studyId=None, x__xgafv=None)</code>
  <pre>Creates a study.

Args:
  parent: string, Required. The project and location that the study belongs to. Format: projects/{project}/locations/{location} (required)
  body: object, The request body.
    The object takes the form of:

{ # A message representing a Study.
  &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
    &quot;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &quot;childParameterSpecs&quot;: [ # A child node is active if the parameter&#x27;s value matches the child node&#x27;s matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values.
          # Object with schema name: GoogleCloudMlV1_StudyConfig_ParameterSpec
        ],
        &quot;discreteValueSpec&quot;: { # The value spec for a &#x27;DISCRETE&#x27; parameter.
          &quot;values&quot;: [ # Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
            3.14,
          ],
        },
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
        &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter.
          &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;DISCRETE&#x27;. All values must exist in `discrete_value_spec` of parent parameter.
            3.14,
          ],
        },
        &quot;categoricalValueSpec&quot;: { # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
          &quot;values&quot;: [ # Must be specified if type is `CATEGORICAL`. The list of possible categories.
            &quot;A String&quot;,
          ],
        },
        &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter.
          &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;INTEGER&#x27;. All values must lie in `integer_value_spec` of parent parameter.
            &quot;A String&quot;,
          ],
        },
        &quot;integerValueSpec&quot;: { # The value spec for an &#x27;INTEGER&#x27; parameter.
          &quot;maxValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Maximum value of the parameter.
          &quot;minValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Minimum value of the parameter.
        },
        &quot;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
          &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
        },
        &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
        &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter.
          &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;CATEGORICAL&#x27;. All values must exist in `categorical_value_spec` of parent parameter.
            &quot;A String&quot;,
          ],
        },
        &quot;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
      },
    ],
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
    &quot;metrics&quot;: [ # Metric specs for the study.
      { # Represents a metric to optimize.
        &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
        &quot;metric&quot;: &quot;A String&quot;, # Required. The name of the metric.
      },
    ],
    &quot;automatedStoppingConfig&quot;: { # Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run. # Configuration for automated stopping of unpromising Trials.
      &quot;decayCurveStoppingConfig&quot;: {
        &quot;useElapsedTime&quot;: True or False, # If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis.
      },
      &quot;medianAutomatedStoppingConfig&quot;: { # The median automated stopping rule stops a pending trial if the trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed trials reported up to the trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the trial in each measurement.
        &quot;useElapsedTime&quot;: True or False, # If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial&#x27;s latest measurement is used to compute the median objective value for each completed trial.
      },
    },
  },
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the study was created.
  &quot;inactiveReason&quot;: &quot;A String&quot;, # Output only. A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.
}

  studyId: string, Required. The ID to use for the study, which will become the final component of the study&#x27;s resource name.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A message representing a Study.
    &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
      &quot;parameters&quot;: [ # Required. The set of parameters to tune.
        { # Represents a single parameter to optimize.
          &quot;childParameterSpecs&quot;: [ # A child node is active if the parameter&#x27;s value matches the child node&#x27;s matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values.
            # Object with schema name: GoogleCloudMlV1_StudyConfig_ParameterSpec
          ],
          &quot;discreteValueSpec&quot;: { # The value spec for a &#x27;DISCRETE&#x27; parameter.
            &quot;values&quot;: [ # Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
              3.14,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
          &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;DISCRETE&#x27;. All values must exist in `discrete_value_spec` of parent parameter.
              3.14,
            ],
          },
          &quot;categoricalValueSpec&quot;: { # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
            &quot;values&quot;: [ # Must be specified if type is `CATEGORICAL`. The list of possible categories.
              &quot;A String&quot;,
            ],
          },
          &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;INTEGER&#x27;. All values must lie in `integer_value_spec` of parent parameter.
              &quot;A String&quot;,
            ],
          },
          &quot;integerValueSpec&quot;: { # The value spec for an &#x27;INTEGER&#x27; parameter.
            &quot;maxValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Maximum value of the parameter.
            &quot;minValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Minimum value of the parameter.
          },
          &quot;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
            &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
            &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
          },
          &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
          &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;CATEGORICAL&#x27;. All values must exist in `categorical_value_spec` of parent parameter.
              &quot;A String&quot;,
            ],
          },
          &quot;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
        },
      ],
      &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
      &quot;metrics&quot;: [ # Metric specs for the study.
        { # Represents a metric to optimize.
          &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
          &quot;metric&quot;: &quot;A String&quot;, # Required. The name of the metric.
        },
      ],
      &quot;automatedStoppingConfig&quot;: { # Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run. # Configuration for automated stopping of unpromising Trials.
        &quot;decayCurveStoppingConfig&quot;: {
          &quot;useElapsedTime&quot;: True or False, # If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis.
        },
        &quot;medianAutomatedStoppingConfig&quot;: { # The median automated stopping rule stops a pending trial if the trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed trials reported up to the trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the trial in each measurement.
          &quot;useElapsedTime&quot;: True or False, # If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial&#x27;s latest measurement is used to compute the median objective value for each completed trial.
        },
      },
    },
    &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the study was created.
    &quot;inactiveReason&quot;: &quot;A String&quot;, # Output only. A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.
  }</pre>
</div>

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

Args:
  name: string, Required. The study name. (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>Gets a study.

Args:
  name: string, Required. The study name. (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # A message representing a Study.
    &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
      &quot;parameters&quot;: [ # Required. The set of parameters to tune.
        { # Represents a single parameter to optimize.
          &quot;childParameterSpecs&quot;: [ # A child node is active if the parameter&#x27;s value matches the child node&#x27;s matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values.
            # Object with schema name: GoogleCloudMlV1_StudyConfig_ParameterSpec
          ],
          &quot;discreteValueSpec&quot;: { # The value spec for a &#x27;DISCRETE&#x27; parameter.
            &quot;values&quot;: [ # Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
              3.14,
            ],
          },
          &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
          &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;DISCRETE&#x27;. All values must exist in `discrete_value_spec` of parent parameter.
              3.14,
            ],
          },
          &quot;categoricalValueSpec&quot;: { # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
            &quot;values&quot;: [ # Must be specified if type is `CATEGORICAL`. The list of possible categories.
              &quot;A String&quot;,
            ],
          },
          &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;INTEGER&#x27;. All values must lie in `integer_value_spec` of parent parameter.
              &quot;A String&quot;,
            ],
          },
          &quot;integerValueSpec&quot;: { # The value spec for an &#x27;INTEGER&#x27; parameter.
            &quot;maxValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Maximum value of the parameter.
            &quot;minValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Minimum value of the parameter.
          },
          &quot;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
            &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
            &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
          },
          &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
          &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter.
            &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;CATEGORICAL&#x27;. All values must exist in `categorical_value_spec` of parent parameter.
              &quot;A String&quot;,
            ],
          },
          &quot;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
        },
      ],
      &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
      &quot;metrics&quot;: [ # Metric specs for the study.
        { # Represents a metric to optimize.
          &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
          &quot;metric&quot;: &quot;A String&quot;, # Required. The name of the metric.
        },
      ],
      &quot;automatedStoppingConfig&quot;: { # Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run. # Configuration for automated stopping of unpromising Trials.
        &quot;decayCurveStoppingConfig&quot;: {
          &quot;useElapsedTime&quot;: True or False, # If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis.
        },
        &quot;medianAutomatedStoppingConfig&quot;: { # The median automated stopping rule stops a pending trial if the trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed trials reported up to the trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the trial in each measurement.
          &quot;useElapsedTime&quot;: True or False, # If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial&#x27;s latest measurement is used to compute the median objective value for each completed trial.
        },
      },
    },
    &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
    &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
    &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the study was created.
    &quot;inactiveReason&quot;: &quot;A String&quot;, # Output only. A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.
  }</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, x__xgafv=None)</code>
  <pre>Lists all the studies in a region for an associated project.

Args:
  parent: string, Required. The project and location that the study belongs to. Format: projects/{project}/locations/{location} (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    {
    &quot;studies&quot;: [ # The studies associated with the project.
      { # A message representing a Study.
        &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
          &quot;parameters&quot;: [ # Required. The set of parameters to tune.
            { # Represents a single parameter to optimize.
              &quot;childParameterSpecs&quot;: [ # A child node is active if the parameter&#x27;s value matches the child node&#x27;s matching_parent_values. If two items in child_parameter_specs have the same name, they must have disjoint matching_parent_values.
                # Object with schema name: GoogleCloudMlV1_StudyConfig_ParameterSpec
              ],
              &quot;discreteValueSpec&quot;: { # The value spec for a &#x27;DISCRETE&#x27; parameter.
                &quot;values&quot;: [ # Must be specified if type is `DISCRETE`. A list of feasible points. The list should be in strictly increasing order. For instance, this parameter might have possible settings of 1.5, 2.5, and 4.0. This list should not contain more than 1,000 values.
                  3.14,
                ],
              },
              &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
              &quot;parentDiscreteValues&quot;: { # Represents the spec to match discrete values from parent parameter.
                &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;DISCRETE&#x27;. All values must exist in `discrete_value_spec` of parent parameter.
                  3.14,
                ],
              },
              &quot;categoricalValueSpec&quot;: { # The value spec for a &#x27;CATEGORICAL&#x27; parameter.
                &quot;values&quot;: [ # Must be specified if type is `CATEGORICAL`. The list of possible categories.
                  &quot;A String&quot;,
                ],
              },
              &quot;parentIntValues&quot;: { # Represents the spec to match integer values from parent parameter.
                &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;INTEGER&#x27;. All values must lie in `integer_value_spec` of parent parameter.
                  &quot;A String&quot;,
                ],
              },
              &quot;integerValueSpec&quot;: { # The value spec for an &#x27;INTEGER&#x27; parameter.
                &quot;maxValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Maximum value of the parameter.
                &quot;minValue&quot;: &quot;A String&quot;, # Must be specified if type is `INTEGER`. Minimum value of the parameter.
              },
              &quot;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
                &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
                &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
              },
              &quot;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
              &quot;parentCategoricalValues&quot;: { # Represents the spec to match categorical values from parent parameter.
                &quot;values&quot;: [ # Matches values of the parent parameter with type &#x27;CATEGORICAL&#x27;. All values must exist in `categorical_value_spec` of parent parameter.
                  &quot;A String&quot;,
                ],
              },
              &quot;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
            },
          ],
          &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
          &quot;metrics&quot;: [ # Metric specs for the study.
            { # Represents a metric to optimize.
              &quot;goal&quot;: &quot;A String&quot;, # Required. The optimization goal of the metric.
              &quot;metric&quot;: &quot;A String&quot;, # Required. The name of the metric.
            },
          ],
          &quot;automatedStoppingConfig&quot;: { # Configuration for Automated Early Stopping of Trials. If no implementation_config is set, automated early stopping will not be run. # Configuration for automated stopping of unpromising Trials.
            &quot;decayCurveStoppingConfig&quot;: {
              &quot;useElapsedTime&quot;: True or False, # If true, measurement.elapsed_time is used as the x-axis of each Trials Decay Curve. Otherwise, Measurement.steps will be used as the x-axis.
            },
            &quot;medianAutomatedStoppingConfig&quot;: { # The median automated stopping rule stops a pending trial if the trial&#x27;s best objective_value is strictly below the median &#x27;performance&#x27; of all completed trials reported up to the trial&#x27;s last measurement. Currently, &#x27;performance&#x27; refers to the running average of the objective values reported by the trial in each measurement.
              &quot;useElapsedTime&quot;: True or False, # If true, the median automated stopping rule applies to measurement.use_elapsed_time, which means the elapsed_time field of the current trial&#x27;s latest measurement is used to compute the median objective value for each completed trial.
            },
          },
        },
        &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
        &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
        &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time at which the study was created.
        &quot;inactiveReason&quot;: &quot;A String&quot;, # Output only. A human readable reason why the Study is inactive. This should be empty if a study is ACTIVE or COMPLETED.
      },
    ],
  }</pre>
</div>

</body></html>