<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;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.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
  &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
    &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;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;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &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;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;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
        },
        &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;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
        &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;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;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;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
      },
    ],
  },
}

  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;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.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
  &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
    &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;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;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &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;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;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
        },
        &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;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
        &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;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;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;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
      },
    ],
  },
}</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;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.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
  &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
  &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
    &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
    &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;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;parameters&quot;: [ # Required. The set of parameters to tune.
      { # Represents a single parameter to optimize.
        &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;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;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
          &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
          &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
        },
        &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;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
        &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;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;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;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
        &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
      },
    ],
  },
}</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;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.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The name of a study.
      &quot;state&quot;: &quot;A String&quot;, # Output only. The detailed state of a study.
      &quot;studyConfig&quot;: { # Represents configuration of a study. # Required. Configuration of the study.
        &quot;algorithm&quot;: &quot;A String&quot;, # The search algorithm specified for the study.
        &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;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;parameters&quot;: [ # Required. The set of parameters to tune.
          { # Represents a single parameter to optimize.
            &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;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;doubleValueSpec&quot;: { # The value spec for a &#x27;DOUBLE&#x27; parameter.
              &quot;maxValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Maximum value of the parameter.
              &quot;minValue&quot;: 3.14, # Must be specified if type is `DOUBLE`. Minimum value of the parameter.
            },
            &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;parameter&quot;: &quot;A String&quot;, # Required. The parameter name must be unique amongst all ParameterSpecs.
            &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;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;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;scaleType&quot;: &quot;A String&quot;, # How the parameter should be scaled. Leave unset for categorical parameters.
            &quot;type&quot;: &quot;A String&quot;, # Required. The type of the parameter.
          },
        ],
      },
    },
  ],
}</pre>
</div>

</body></html>