<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(previous_request, previous_response)</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 &#x27;-&#x27;, and underscores &#x27;_&#x27;.
  &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. 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;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. 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;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 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 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 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 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 &#x27;-&#x27;, and underscores &#x27;_&#x27;.
  &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. 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;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. 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;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 &#x27;-&#x27;, and underscores &#x27;_&#x27;.
      &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. 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;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. 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;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(previous_request, previous_response)</code>
  <pre>Retrieves the next page of results.

Args:
  previous_request: The request for the previous page. (required)
  previous_response: The response from the request for the previous page. (required)

Returns:
  A request object that you can call &#x27;execute()&#x27; on to request the next
  page. Returns None if there are no more items in the collection.
    </pre>
</div>

<div class="method">
    <code class="details" id="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 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>

</body></html>