<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="notebooks_v1.html">Notebooks API</a> . <a href="notebooks_v1.projects.html">projects</a> . <a href="notebooks_v1.projects.locations.html">locations</a> . <a href="notebooks_v1.projects.locations.executions.html">executions</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, executionId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Execution in a given project and location.</p>
<p class="toc_element">
  <code><a href="#delete">delete(name, x__xgafv=None)</a></code></p>
<p class="firstline">Deletes execution</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of executions</p>
<p class="toc_element">
  <code><a href="#list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</a></code></p>
<p class="firstline">Lists executions in a given project and location</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>
<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, executionId=None, x__xgafv=None)</code>
  <pre>Creates a new Execution in a given project and location.

Args:
  parent: string, Required. Format: `parent=projects/{project_id}/locations/{location}` (required)
  body: object, The request body.
    The object takes the form of:

{ # The definition of a single executed notebook.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was instantiated.
  &quot;description&quot;: &quot;A String&quot;, # A brief description of this execution.
  &quot;displayName&quot;: &quot;A String&quot;, # Output only. Name used for UI purposes. Name can only contain alphanumeric characters and underscores &#x27;_&#x27;.
  &quot;executionTemplate&quot;: { # The description a notebook execution workload. # execute metadata including name, hardware spec, region, labels, etc.
    &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. Check [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid combination. TPUs are not supported. # Configuration (count and accelerator type) for hardware running notebook execution.
      &quot;coreCount&quot;: &quot;A String&quot;, # Count of cores of this accelerator.
      &quot;type&quot;: &quot;A String&quot;, # Type of this accelerator.
    },
    &quot;containerImageUri&quot;: &quot;A String&quot;, # Container Image URI to a DLVM Example: &#x27;gcr.io/deeplearning-platform-release/base-cu100&#x27; More examples can be found at: https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
    &quot;dataprocParameters&quot;: { # Parameters used in Dataproc JobType executions. # Parameters used in Dataproc JobType executions.
      &quot;cluster&quot;: &quot;A String&quot;, # URI for cluster used to run Dataproc execution. Format: &#x27;projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}
    },
    &quot;inputNotebookFile&quot;: &quot;A String&quot;, # Path to the notebook file to execute. Must be in a Google Cloud Storage bucket. Format: gs://{bucket_name}/{folder}/{notebook_file_name} Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb
    &quot;jobType&quot;: &quot;A String&quot;, # The type of Job to be used on this execution.
    &quot;labels&quot;: { # Labels for execution. If execution is scheduled, a field included will be &#x27;nbs-scheduled&#x27;. Otherwise, it is an immediate execution, and an included field will be &#x27;nbs-immediate&#x27;. Use fields to efficiently index between various types of executions.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;masterType&quot;: &quot;A String&quot;, # Specifies the type of virtual machine to use for your training job&#x27;s master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. The following types are supported: - `n1-standard-4` - `n1-standard-8` - `n1-standard-16` - `n1-standard-32` - `n1-standard-64` - `n1-standard-96` - `n1-highmem-2` - `n1-highmem-4` - `n1-highmem-8` - `n1-highmem-16` - `n1-highmem-32` - `n1-highmem-64` - `n1-highmem-96` - `n1-highcpu-16` - `n1-highcpu-32` - `n1-highcpu-64` - `n1-highcpu-96` Alternatively, you can use the following legacy machine types: - `standard` - `large_model` - `complex_model_s` - `complex_model_m` - `complex_model_l` - `standard_gpu` - `complex_model_m_gpu` - `complex_model_l_gpu` - `standard_p100` - `complex_model_m_p100` - `standard_v100` - `large_model_v100` - `complex_model_m_v100` - `complex_model_l_v100` Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
    &quot;outputNotebookFolder&quot;: &quot;A String&quot;, # Path to the notebook folder to write to. Must be in a Google Cloud Storage bucket path. Format: gs://{bucket_name}/{folder} Ex: gs://notebook_user/scheduled_notebooks
    &quot;parameters&quot;: &quot;A String&quot;, # Parameters used within the &#x27;input_notebook_file&#x27; notebook.
    &quot;paramsYamlFile&quot;: &quot;A String&quot;, # Parameters to be overridden in the notebook during execution. Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on how to specifying parameters in the input notebook and pass them here in an YAML file. Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml
    &quot;scaleTier&quot;: &quot;A String&quot;, # Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The email address of a service account to use when running the execution. You must have the `iam.serviceAccounts.actAs` permission for the specified service account.
    &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
      &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network.
    },
  },
  &quot;jobUri&quot;: &quot;A String&quot;, # Output only. The URI of the external job used to execute the notebook.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`
  &quot;outputNotebookFile&quot;: &quot;A String&quot;, # Output notebook file generated by this execution
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the underlying AI Platform job.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was last updated.
}

  executionId: string, Required. User-defined unique ID of this execution.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

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

Args:
  name: string, Required. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # This resource represents a long-running operation that is the result of a network API call.
  &quot;done&quot;: True or False, # If the value is `false`, it means the operation is still in progress. If `true`, the operation is completed, and either `error` or `response` is available.
  &quot;error&quot;: { # The `Status` type defines a logical error model that is suitable for different programming environments, including REST APIs and RPC APIs. It is used by [gRPC](https://github.com/grpc). Each `Status` message contains three pieces of data: error code, error message, and error details. You can find out more about this error model and how to work with it in the [API Design Guide](https://cloud.google.com/apis/design/errors). # The error result of the operation in case of failure or cancellation.
    &quot;code&quot;: 42, # The status code, which should be an enum value of google.rpc.Code.
    &quot;details&quot;: [ # A list of messages that carry the error details. There is a common set of message types for APIs to use.
      {
        &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
      },
    ],
    &quot;message&quot;: &quot;A String&quot;, # A developer-facing error message, which should be in English. Any user-facing error message should be localized and sent in the google.rpc.Status.details field, or localized by the client.
  },
  &quot;metadata&quot;: { # Service-specific metadata associated with the operation. It typically contains progress information and common metadata such as create time. Some services might not provide such metadata. Any method that returns a long-running operation should document the metadata type, if any.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
  &quot;name&quot;: &quot;A String&quot;, # The server-assigned name, which is only unique within the same service that originally returns it. If you use the default HTTP mapping, the `name` should be a resource name ending with `operations/{unique_id}`.
  &quot;response&quot;: { # The normal response of the operation in case of success. If the original method returns no data on success, such as `Delete`, the response is `google.protobuf.Empty`. If the original method is standard `Get`/`Create`/`Update`, the response should be the resource. For other methods, the response should have the type `XxxResponse`, where `Xxx` is the original method name. For example, if the original method name is `TakeSnapshot()`, the inferred response type is `TakeSnapshotResponse`.
    &quot;a_key&quot;: &quot;&quot;, # Properties of the object. Contains field @type with type URL.
  },
}</pre>
</div>

<div class="method">
    <code class="details" id="get">get(name, x__xgafv=None)</code>
  <pre>Gets details of executions

Args:
  name: string, Required. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}` (required)
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # The definition of a single executed notebook.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was instantiated.
  &quot;description&quot;: &quot;A String&quot;, # A brief description of this execution.
  &quot;displayName&quot;: &quot;A String&quot;, # Output only. Name used for UI purposes. Name can only contain alphanumeric characters and underscores &#x27;_&#x27;.
  &quot;executionTemplate&quot;: { # The description a notebook execution workload. # execute metadata including name, hardware spec, region, labels, etc.
    &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. Check [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid combination. TPUs are not supported. # Configuration (count and accelerator type) for hardware running notebook execution.
      &quot;coreCount&quot;: &quot;A String&quot;, # Count of cores of this accelerator.
      &quot;type&quot;: &quot;A String&quot;, # Type of this accelerator.
    },
    &quot;containerImageUri&quot;: &quot;A String&quot;, # Container Image URI to a DLVM Example: &#x27;gcr.io/deeplearning-platform-release/base-cu100&#x27; More examples can be found at: https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
    &quot;dataprocParameters&quot;: { # Parameters used in Dataproc JobType executions. # Parameters used in Dataproc JobType executions.
      &quot;cluster&quot;: &quot;A String&quot;, # URI for cluster used to run Dataproc execution. Format: &#x27;projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}
    },
    &quot;inputNotebookFile&quot;: &quot;A String&quot;, # Path to the notebook file to execute. Must be in a Google Cloud Storage bucket. Format: gs://{bucket_name}/{folder}/{notebook_file_name} Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb
    &quot;jobType&quot;: &quot;A String&quot;, # The type of Job to be used on this execution.
    &quot;labels&quot;: { # Labels for execution. If execution is scheduled, a field included will be &#x27;nbs-scheduled&#x27;. Otherwise, it is an immediate execution, and an included field will be &#x27;nbs-immediate&#x27;. Use fields to efficiently index between various types of executions.
      &quot;a_key&quot;: &quot;A String&quot;,
    },
    &quot;masterType&quot;: &quot;A String&quot;, # Specifies the type of virtual machine to use for your training job&#x27;s master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. The following types are supported: - `n1-standard-4` - `n1-standard-8` - `n1-standard-16` - `n1-standard-32` - `n1-standard-64` - `n1-standard-96` - `n1-highmem-2` - `n1-highmem-4` - `n1-highmem-8` - `n1-highmem-16` - `n1-highmem-32` - `n1-highmem-64` - `n1-highmem-96` - `n1-highcpu-16` - `n1-highcpu-32` - `n1-highcpu-64` - `n1-highcpu-96` Alternatively, you can use the following legacy machine types: - `standard` - `large_model` - `complex_model_s` - `complex_model_m` - `complex_model_l` - `standard_gpu` - `complex_model_m_gpu` - `complex_model_l_gpu` - `standard_p100` - `complex_model_m_p100` - `standard_v100` - `large_model_v100` - `complex_model_m_v100` - `complex_model_l_v100` Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
    &quot;outputNotebookFolder&quot;: &quot;A String&quot;, # Path to the notebook folder to write to. Must be in a Google Cloud Storage bucket path. Format: gs://{bucket_name}/{folder} Ex: gs://notebook_user/scheduled_notebooks
    &quot;parameters&quot;: &quot;A String&quot;, # Parameters used within the &#x27;input_notebook_file&#x27; notebook.
    &quot;paramsYamlFile&quot;: &quot;A String&quot;, # Parameters to be overridden in the notebook during execution. Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on how to specifying parameters in the input notebook and pass them here in an YAML file. Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml
    &quot;scaleTier&quot;: &quot;A String&quot;, # Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
    &quot;serviceAccount&quot;: &quot;A String&quot;, # The email address of a service account to use when running the execution. You must have the `iam.serviceAccounts.actAs` permission for the specified service account.
    &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
      &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network.
    },
  },
  &quot;jobUri&quot;: &quot;A String&quot;, # Output only. The URI of the external job used to execute the notebook.
  &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`
  &quot;outputNotebookFile&quot;: &quot;A String&quot;, # Output notebook file generated by this execution
  &quot;state&quot;: &quot;A String&quot;, # Output only. State of the underlying AI Platform job.
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was last updated.
}</pre>
</div>

<div class="method">
    <code class="details" id="list">list(parent, filter=None, orderBy=None, pageSize=None, pageToken=None, x__xgafv=None)</code>
  <pre>Lists executions in a given project and location

Args:
  parent: string, Required. Format: `parent=projects/{project_id}/locations/{location}` (required)
  filter: string, Filter applied to resulting executions. Currently only supports filtering executions by a specified schedule_id. Format: &quot;schedule_id=&quot;
  orderBy: string, Sort by field.
  pageSize: integer, Maximum return size of the list call.
  pageToken: string, A previous returned page token that can be used to continue listing from the last result.
  x__xgafv: string, V1 error format.
    Allowed values
      1 - v1 error format
      2 - v2 error format

Returns:
  An object of the form:

    { # Response for listing scheduled notebook executions
  &quot;executions&quot;: [ # A list of returned instances.
    { # The definition of a single executed notebook.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was instantiated.
      &quot;description&quot;: &quot;A String&quot;, # A brief description of this execution.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. Name used for UI purposes. Name can only contain alphanumeric characters and underscores &#x27;_&#x27;.
      &quot;executionTemplate&quot;: { # The description a notebook execution workload. # execute metadata including name, hardware spec, region, labels, etc.
        &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. Check [GPUs on Compute Engine](https://cloud.google.com/compute/docs/gpus) to find a valid combination. TPUs are not supported. # Configuration (count and accelerator type) for hardware running notebook execution.
          &quot;coreCount&quot;: &quot;A String&quot;, # Count of cores of this accelerator.
          &quot;type&quot;: &quot;A String&quot;, # Type of this accelerator.
        },
        &quot;containerImageUri&quot;: &quot;A String&quot;, # Container Image URI to a DLVM Example: &#x27;gcr.io/deeplearning-platform-release/base-cu100&#x27; More examples can be found at: https://cloud.google.com/ai-platform/deep-learning-containers/docs/choosing-container
        &quot;dataprocParameters&quot;: { # Parameters used in Dataproc JobType executions. # Parameters used in Dataproc JobType executions.
          &quot;cluster&quot;: &quot;A String&quot;, # URI for cluster used to run Dataproc execution. Format: &#x27;projects/{PROJECT_ID}/regions/{REGION}/clusters/{CLUSTER_NAME}
        },
        &quot;inputNotebookFile&quot;: &quot;A String&quot;, # Path to the notebook file to execute. Must be in a Google Cloud Storage bucket. Format: gs://{bucket_name}/{folder}/{notebook_file_name} Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook.ipynb
        &quot;jobType&quot;: &quot;A String&quot;, # The type of Job to be used on this execution.
        &quot;labels&quot;: { # Labels for execution. If execution is scheduled, a field included will be &#x27;nbs-scheduled&#x27;. Otherwise, it is an immediate execution, and an included field will be &#x27;nbs-immediate&#x27;. Use fields to efficiently index between various types of executions.
          &quot;a_key&quot;: &quot;A String&quot;,
        },
        &quot;masterType&quot;: &quot;A String&quot;, # Specifies the type of virtual machine to use for your training job&#x27;s master worker. You must specify this field when `scaleTier` is set to `CUSTOM`. You can use certain Compute Engine machine types directly in this field. The following types are supported: - `n1-standard-4` - `n1-standard-8` - `n1-standard-16` - `n1-standard-32` - `n1-standard-64` - `n1-standard-96` - `n1-highmem-2` - `n1-highmem-4` - `n1-highmem-8` - `n1-highmem-16` - `n1-highmem-32` - `n1-highmem-64` - `n1-highmem-96` - `n1-highcpu-16` - `n1-highcpu-32` - `n1-highcpu-64` - `n1-highcpu-96` Alternatively, you can use the following legacy machine types: - `standard` - `large_model` - `complex_model_s` - `complex_model_m` - `complex_model_l` - `standard_gpu` - `complex_model_m_gpu` - `complex_model_l_gpu` - `standard_p100` - `complex_model_m_p100` - `standard_v100` - `large_model_v100` - `complex_model_m_v100` - `complex_model_l_v100` Finally, if you want to use a TPU for training, specify `cloud_tpu` in this field. Learn more about the [special configuration options for training with TPU](https://cloud.google.com/ai-platform/training/docs/using-tpus#configuring_a_custom_tpu_machine).
        &quot;outputNotebookFolder&quot;: &quot;A String&quot;, # Path to the notebook folder to write to. Must be in a Google Cloud Storage bucket path. Format: gs://{bucket_name}/{folder} Ex: gs://notebook_user/scheduled_notebooks
        &quot;parameters&quot;: &quot;A String&quot;, # Parameters used within the &#x27;input_notebook_file&#x27; notebook.
        &quot;paramsYamlFile&quot;: &quot;A String&quot;, # Parameters to be overridden in the notebook during execution. Ref https://papermill.readthedocs.io/en/latest/usage-parameterize.html on how to specifying parameters in the input notebook and pass them here in an YAML file. Ex: gs://notebook_user/scheduled_notebooks/sentiment_notebook_params.yaml
        &quot;scaleTier&quot;: &quot;A String&quot;, # Required. Scale tier of the hardware used for notebook execution. DEPRECATED Will be discontinued. As right now only CUSTOM is supported.
        &quot;serviceAccount&quot;: &quot;A String&quot;, # The email address of a service account to use when running the execution. You must have the `iam.serviceAccounts.actAs` permission for the specified service account.
        &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
          &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](/compute/docs/networks-and-firewalls#networks) to which the Job should be peered. For example, `projects/12345/global/networks/myVPC`. [Format](https://cloud.google.com/compute/docs/reference/rest/v1/networks/insert) is of the form `projects/{project}/global/networks/{network}`. Where {project} is a project number, as in `12345`, and {network} is a network name. Private services access must already be configured for the network. If left unspecified, the job is not peered with any network.
        },
      },
      &quot;jobUri&quot;: &quot;A String&quot;, # Output only. The URI of the external job used to execute the notebook.
      &quot;name&quot;: &quot;A String&quot;, # Output only. The resource name of the execute. Format: `projects/{project_id}/locations/{location}/executions/{execution_id}`
      &quot;outputNotebookFile&quot;: &quot;A String&quot;, # Output notebook file generated by this execution
      &quot;state&quot;: &quot;A String&quot;, # Output only. State of the underlying AI Platform job.
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the Execution was last updated.
    },
  ],
  &quot;nextPageToken&quot;: &quot;A String&quot;, # Page token that can be used to continue listing from the last result in the next list call.
  &quot;unreachable&quot;: [ # Executions IDs that could not be reached. For example, [&#x27;projects/{project_id}/location/{location}/executions/imagenet_test1&#x27;, &#x27;projects/{project_id}/location/{location}/executions/classifier_train1&#x27;].
    &quot;A String&quot;,
  ],
}</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>

</body></html>