<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.schedules.html">schedules</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, scheduleId=None, x__xgafv=None)</a></code></p>
<p class="firstline">Creates a new Scheduled Notebook 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 schedule and all underlying jobs</p>
<p class="toc_element">
  <code><a href="#get">get(name, x__xgafv=None)</a></code></p>
<p class="firstline">Gets details of schedule</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 schedules in a given project and location.</p>
<p class="toc_element">
  <code><a href="#list_next">list_next()</a></code></p>
<p class="firstline">Retrieves the next page of results.</p>
<p class="toc_element">
  <code><a href="#trigger">trigger(name, body=None, x__xgafv=None)</a></code></p>
<p class="firstline">Triggers execution of an existing schedule.</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, scheduleId=None, x__xgafv=None)</code>
  <pre>Creates a new Scheduled Notebook 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 schedule.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the schedule was created.
  &quot;cronSchedule&quot;: &quot;A String&quot;, # Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html
  &quot;description&quot;: &quot;A String&quot;, # A brief description of this environment.
  &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name used for UI purposes. Name can only contain alphanumeric characters, hyphens `-`, and underscores `_`.
  &quot;executionTemplate&quot;: { # The description a notebook execution workload. # Notebook Execution Template corresponding to this schedule.
    &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
    &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
    &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
      &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;name&quot;: &quot;A String&quot;, # Output only. The name of this schedule. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_id}`
  &quot;recentExecutions&quot;: [ # Output only. The most recent execution names triggered from this schedule and their corresponding states.
    { # 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. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
        &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
        &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
          &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;state&quot;: &quot;A String&quot;,
  &quot;timeZone&quot;: &quot;A String&quot;, # Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string &quot;utc&quot;. If a time zone is not specified, the default will be in UTC (also known as GMT).
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the schedule was last updated.
}

  scheduleId: string, Required. User-defined unique ID of this schedule.
  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, successful response of the operation. 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 schedule and all underlying jobs

Args:
  name: string, Required. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_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, successful response of the operation. 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 schedule

Args:
  name: string, Required. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_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 schedule.
  &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the schedule was created.
  &quot;cronSchedule&quot;: &quot;A String&quot;, # Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html
  &quot;description&quot;: &quot;A String&quot;, # A brief description of this environment.
  &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name used for UI purposes. Name can only contain alphanumeric characters, hyphens `-`, and underscores `_`.
  &quot;executionTemplate&quot;: { # The description a notebook execution workload. # Notebook Execution Template corresponding to this schedule.
    &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
    &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
    &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
      &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
        &quot;a_key&quot;: &quot;A String&quot;,
      },
      &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;name&quot;: &quot;A String&quot;, # Output only. The name of this schedule. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_id}`
  &quot;recentExecutions&quot;: [ # Output only. The most recent execution names triggered from this schedule and their corresponding states.
    { # 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. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
        &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
        &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
          &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;state&quot;: &quot;A String&quot;,
  &quot;timeZone&quot;: &quot;A String&quot;, # Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string &quot;utc&quot;. If a time zone is not specified, the default will be in UTC (also known as GMT).
  &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the schedule 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 schedules in a given project and location.

Args:
  parent: string, Required. Format: `parent=projects/{project_id}/locations/{location}` (required)
  filter: string, Filter applied to resulting schedules.
  orderBy: string, Field to order results by.
  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 job.
  &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;schedules&quot;: [ # A list of returned instances.
    { # The definition of a schedule.
      &quot;createTime&quot;: &quot;A String&quot;, # Output only. Time the schedule was created.
      &quot;cronSchedule&quot;: &quot;A String&quot;, # Cron-tab formatted schedule by which the job will execute. Format: minute, hour, day of month, month, day of week, e.g. `0 0 * * WED` = every Wednesday More examples: https://crontab.guru/examples.html
      &quot;description&quot;: &quot;A String&quot;, # A brief description of this environment.
      &quot;displayName&quot;: &quot;A String&quot;, # Output only. Display name used for UI purposes. Name can only contain alphanumeric characters, hyphens `-`, and underscores `_`.
      &quot;executionTemplate&quot;: { # The description a notebook execution workload. # Notebook Execution Template corresponding to this schedule.
        &quot;acceleratorConfig&quot;: { # Definition of a hardware accelerator. Note that not all combinations of `type` and `core_count` are valid. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
        &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
        &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
          &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
            &quot;a_key&quot;: &quot;A String&quot;,
          },
          &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;name&quot;: &quot;A String&quot;, # Output only. The name of this schedule. Format: `projects/{project_id}/locations/{location}/schedules/{schedule_id}`
      &quot;recentExecutions&quot;: [ # Output only. The most recent execution names triggered from this schedule and their corresponding states.
        { # 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. See [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: `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;kernelSpec&quot;: &quot;A String&quot;, # Name of the kernel spec to use. This must be specified if the kernel spec name on the execution target does not match the name in the input notebook file.
            &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;tensorboard&quot;: &quot;A String&quot;, # The name of a Vertex AI [Tensorboard] resource to which this execution will upload Tensorboard logs. Format: `projects/{project}/locations/{location}/tensorboards/{tensorboard}`
            &quot;vertexAiParameters&quot;: { # Parameters used in Vertex AI JobType executions. # Parameters used in Vertex AI JobType executions.
              &quot;env&quot;: { # Environment variables. At most 100 environment variables can be specified and unique. Example: `GCP_BUCKET=gs://my-bucket/samples/`
                &quot;a_key&quot;: &quot;A String&quot;,
              },
              &quot;network&quot;: &quot;A String&quot;, # The full name of the Compute Engine [network](https://cloud.google.com/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;state&quot;: &quot;A String&quot;,
      &quot;timeZone&quot;: &quot;A String&quot;, # Timezone on which the cron_schedule. The value of this field must be a time zone name from the tz database. TZ Database: https://en.wikipedia.org/wiki/List_of_tz_database_time_zones Note that some time zones include a provision for daylight savings time. The rules for daylight saving time are determined by the chosen tz. For UTC use the string &quot;utc&quot;. If a time zone is not specified, the default will be in UTC (also known as GMT).
      &quot;updateTime&quot;: &quot;A String&quot;, # Output only. Time the schedule was last updated.
    },
  ],
  &quot;unreachable&quot;: [ # Schedules that could not be reached. For example: [&#x27;projects/{project_id}/location/{location}/schedules/monthly_digest&#x27;, &#x27;projects/{project_id}/location/{location}/schedules/weekly_sentiment&#x27;]
    &quot;A String&quot;,
  ],
}</pre>
</div>

<div class="method">
    <code class="details" id="list_next">list_next()</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="trigger">trigger(name, body=None, x__xgafv=None)</code>
  <pre>Triggers execution of an existing schedule.

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

{ # Request for created scheduled notebooks
}

  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, successful response of the operation. 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>

</body></html>