diff --git a/java-batch/README.md b/java-batch/README.md
index cd4d32738f1c..58b59061da76 100644
--- a/java-batch/README.md
+++ b/java-batch/README.md
@@ -23,7 +23,7 @@ If you are using Maven with [BOM][libraries-bom], add this to your pom.xml file:
bool install_gpu_drivers = 3 [deprecated = true];
*
* @deprecated google.cloud.batch.v1.AllocationPolicy.Accelerator.install_gpu_drivers is
- * deprecated. See google/cloud/batch/v1/job.proto;l=327
+ * deprecated. See google/cloud/batch/v1/job.proto;l=331
* @return The installGpuDrivers.
*/
@java.lang.Deprecated
@@ -4598,7 +4598,7 @@ public long getCount() {
* bool install_gpu_drivers = 3 [deprecated = true];
*
* @deprecated google.cloud.batch.v1.AllocationPolicy.Accelerator.install_gpu_drivers is
- * deprecated. See google/cloud/batch/v1/job.proto;l=327
+ * deprecated. See google/cloud/batch/v1/job.proto;l=331
* @return The installGpuDrivers.
*/
@java.lang.Override
@@ -5260,7 +5260,7 @@ public Builder clearCount() {
* bool install_gpu_drivers = 3 [deprecated = true];
*
* @deprecated google.cloud.batch.v1.AllocationPolicy.Accelerator.install_gpu_drivers is
- * deprecated. See google/cloud/batch/v1/job.proto;l=327
+ * deprecated. See google/cloud/batch/v1/job.proto;l=331
* @return The installGpuDrivers.
*/
@java.lang.Override
@@ -5278,7 +5278,7 @@ public boolean getInstallGpuDrivers() {
* bool install_gpu_drivers = 3 [deprecated = true];
*
* @deprecated google.cloud.batch.v1.AllocationPolicy.Accelerator.install_gpu_drivers is
- * deprecated. See google/cloud/batch/v1/job.proto;l=327
+ * deprecated. See google/cloud/batch/v1/job.proto;l=331
* @param value The installGpuDrivers to set.
* @return This builder for chaining.
*/
@@ -5300,7 +5300,7 @@ public Builder setInstallGpuDrivers(boolean value) {
* bool install_gpu_drivers = 3 [deprecated = true];
*
* @deprecated google.cloud.batch.v1.AllocationPolicy.Accelerator.install_gpu_drivers is
- * deprecated. See google/cloud/batch/v1/job.proto;l=327
+ * deprecated. See google/cloud/batch/v1/job.proto;l=331
* @return This builder for chaining.
*/
@java.lang.Deprecated
diff --git a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotification.java b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotification.java
index c81ec9aec7b1..7a0c8959871d 100644
--- a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotification.java
+++ b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotification.java
@@ -304,8 +304,12 @@ public interface MessageOrBuilder
*
*
* Message details.
- * Describe the attribute that a message should have.
- * Without specified message attributes, no message will be sent by default.
+ * Describe the conditions under which messages will be sent.
+ * If no attribute is defined, no message will be sent by default.
+ * One message should specify either the job or the task level attributes,
+ * but not both. For example,
+ * job level: JOB_STATE_CHANGED and/or a specified new_job_state;
+ * task level: TASK_STATE_CHANGED and/or a specified new_task_state.
*
*
* Protobuf type {@code google.cloud.batch.v1.JobNotification.Message}
@@ -637,8 +641,12 @@ protected Builder newBuilderForType(
*
*
* Message details.
- * Describe the attribute that a message should have.
- * Without specified message attributes, no message will be sent by default.
+ * Describe the conditions under which messages will be sent.
+ * If no attribute is defined, no message will be sent by default.
+ * One message should specify either the job or the task level attributes,
+ * but not both. For example,
+ * job level: JOB_STATE_CHANGED and/or a specified new_job_state;
+ * task level: TASK_STATE_CHANGED and/or a specified new_task_state.
*
*
* Protobuf type {@code google.cloud.batch.v1.JobNotification.Message}
@@ -1189,8 +1197,8 @@ public com.google.cloud.batch.v1.JobNotification.Message getDefaultInstanceForTy
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1216,8 +1224,8 @@ public java.lang.String getPubsubTopic() {
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1670,8 +1678,8 @@ public Builder mergeFrom(
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1696,8 +1704,8 @@ public java.lang.String getPubsubTopic() {
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1722,8 +1730,8 @@ public com.google.protobuf.ByteString getPubsubTopicBytes() {
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1747,8 +1755,8 @@ public Builder setPubsubTopic(java.lang.String value) {
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -1768,8 +1776,8 @@ public Builder clearPubsubTopic() {
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
diff --git a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotificationOrBuilder.java b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotificationOrBuilder.java
index 9c9a3731f7f0..0ab9b7d64bc9 100644
--- a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotificationOrBuilder.java
+++ b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/JobNotificationOrBuilder.java
@@ -28,8 +28,8 @@ public interface JobNotificationOrBuilder
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
@@ -44,8 +44,8 @@ public interface JobNotificationOrBuilder
*
*
* The Pub/Sub topic where notifications like the job state changes
- * will be published. This topic exist in the same project as the job
- * and billings will be charged to this project.
+ * will be published. The topic must exist in the same project as
+ * the job and billings will be charged to this project.
* If not specified, no Pub/Sub messages will be sent.
* Topic format: `projects/{project}/topics/{topic}`.
*
diff --git a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/TaskProto.java b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/TaskProto.java
index 44eaf17b9bab..de3a9488bd3e 100644
--- a/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/TaskProto.java
+++ b/java-batch/proto-google-cloud-batch-v1/src/main/java/com/google/cloud/batch/v1/TaskProto.java
@@ -109,87 +109,89 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
static {
java.lang.String[] descriptorData = {
"\n google/cloud/batch/v1/task.proto\022\025goog"
- + "le.cloud.batch.v1\032\031google/api/resource.p"
- + "roto\032\"google/cloud/batch/v1/volume.proto"
- + "\032\036google/protobuf/duration.proto\032\037google"
- + "/protobuf/timestamp.proto\"O\n\017ComputeReso"
- + "urce\022\021\n\tcpu_milli\030\001 \001(\003\022\022\n\nmemory_mib\030\002 "
- + "\001(\003\022\025\n\rboot_disk_mib\030\004 \001(\003\"\333\001\n\013StatusEve"
- + "nt\022\014\n\004type\030\003 \001(\t\022\023\n\013description\030\001 \001(\t\022.\n"
- + "\nevent_time\030\002 \001(\0132\032.google.protobuf.Time"
- + "stamp\022<\n\016task_execution\030\004 \001(\0132$.google.c"
- + "loud.batch.v1.TaskExecution\022;\n\ntask_stat"
- + "e\030\005 \001(\0162\'.google.cloud.batch.v1.TaskStat"
- + "us.State\"\"\n\rTaskExecution\022\021\n\texit_code\030\001"
- + " \001(\005\"\362\001\n\nTaskStatus\0226\n\005state\030\001 \001(\0162\'.goo"
- + "gle.cloud.batch.v1.TaskStatus.State\0229\n\rs"
- + "tatus_events\030\002 \003(\0132\".google.cloud.batch."
- + "v1.StatusEvent\"q\n\005State\022\025\n\021STATE_UNSPECI"
- + "FIED\020\000\022\013\n\007PENDING\020\001\022\014\n\010ASSIGNED\020\002\022\013\n\007RUN"
- + "NING\020\003\022\n\n\006FAILED\020\004\022\r\n\tSUCCEEDED\020\005\022\016\n\nUNE"
- + "XECUTED\020\006\"\336\005\n\010Runnable\022>\n\tcontainer\030\001 \001("
- + "\0132).google.cloud.batch.v1.Runnable.Conta"
- + "inerH\000\0228\n\006script\030\002 \001(\0132&.google.cloud.ba"
- + "tch.v1.Runnable.ScriptH\000\022:\n\007barrier\030\006 \001("
- + "\0132\'.google.cloud.batch.v1.Runnable.Barri"
- + "erH\000\022\032\n\022ignore_exit_status\030\003 \001(\010\022\022\n\nback"
- + "ground\030\004 \001(\010\022\022\n\nalways_run\030\005 \001(\010\0227\n\013envi"
- + "ronment\030\007 \001(\0132\".google.cloud.batch.v1.En"
- + "vironment\022*\n\007timeout\030\010 \001(\0132\031.google.prot"
- + "obuf.Duration\022;\n\006labels\030\t \003(\0132+.google.c"
- + "loud.batch.v1.Runnable.LabelsEntry\032\252\001\n\tC"
- + "ontainer\022\021\n\timage_uri\030\001 \001(\t\022\020\n\010commands\030"
- + "\002 \003(\t\022\022\n\nentrypoint\030\003 \001(\t\022\017\n\007volumes\030\007 \003"
- + "(\t\022\017\n\007options\030\010 \001(\t\022\036\n\026block_external_ne"
- + "twork\030\t \001(\010\022\020\n\010username\030\n \001(\t\022\020\n\010passwor"
- + "d\030\013 \001(\t\0323\n\006Script\022\016\n\004path\030\001 \001(\tH\000\022\016\n\004tex"
- + "t\030\002 \001(\tH\000B\t\n\007command\032\027\n\007Barrier\022\014\n\004name\030"
- + "\001 \001(\t\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005val"
- + "ue\030\002 \001(\t:\0028\001B\014\n\nexecutable\"\375\003\n\010TaskSpec\022"
- + "2\n\trunnables\030\010 \003(\0132\037.google.cloud.batch."
- + "v1.Runnable\022@\n\020compute_resource\030\003 \001(\0132&."
- + "google.cloud.batch.v1.ComputeResource\0223\n"
- + "\020max_run_duration\030\004 \001(\0132\031.google.protobu"
- + "f.Duration\022\027\n\017max_retry_count\030\005 \001(\005\022B\n\022l"
- + "ifecycle_policies\030\t \003(\0132&.google.cloud.b"
- + "atch.v1.LifecyclePolicy\022K\n\014environments\030"
- + "\006 \003(\01321.google.cloud.batch.v1.TaskSpec.E"
- + "nvironmentsEntryB\002\030\001\022.\n\007volumes\030\007 \003(\0132\035."
- + "google.cloud.batch.v1.Volume\0227\n\013environm"
- + "ent\030\n \001(\0132\".google.cloud.batch.v1.Enviro"
- + "nment\0323\n\021EnvironmentsEntry\022\013\n\003key\030\001 \001(\t\022"
- + "\r\n\005value\030\002 \001(\t:\0028\001\"\212\002\n\017LifecyclePolicy\022="
- + "\n\006action\030\001 \001(\0162-.google.cloud.batch.v1.L"
- + "ifecyclePolicy.Action\022P\n\020action_conditio"
- + "n\030\002 \001(\01326.google.cloud.batch.v1.Lifecycl"
- + "ePolicy.ActionCondition\032%\n\017ActionConditi"
- + "on\022\022\n\nexit_codes\030\001 \003(\005\"?\n\006Action\022\026\n\022ACTI"
- + "ON_UNSPECIFIED\020\000\022\016\n\nRETRY_TASK\020\001\022\r\n\tFAIL"
- + "_TASK\020\002\"\300\001\n\004Task\022\014\n\004name\030\001 \001(\t\0221\n\006status"
- + "\030\002 \001(\0132!.google.cloud.batch.v1.TaskStatu"
- + "s:w\352At\n\031batch.googleapis.com/Task\022Wproje"
- + "cts/{project}/locations/{location}/jobs/"
- + "{job}/taskGroups/{task_group}/tasks/{tas"
- + "k}\"\217\003\n\013Environment\022D\n\tvariables\030\001 \003(\01321."
- + "google.cloud.batch.v1.Environment.Variab"
- + "lesEntry\022Q\n\020secret_variables\030\002 \003(\01327.goo"
- + "gle.cloud.batch.v1.Environment.SecretVar"
- + "iablesEntry\022I\n\023encrypted_variables\030\003 \001(\013"
- + "2,.google.cloud.batch.v1.Environment.KMS"
- + "EnvMap\0322\n\tKMSEnvMap\022\020\n\010key_name\030\001 \001(\t\022\023\n"
- + "\013cipher_text\030\002 \001(\t\0320\n\016VariablesEntry\022\013\n\003"
- + "key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0326\n\024SecretVa"
- + "riablesEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t"
- + ":\0028\001B\252\001\n\031com.google.cloud.batch.v1B\tTask"
- + "ProtoP\001Z/cloud.google.com/go/batch/apiv1"
- + "/batchpb;batchpb\242\002\003GCB\252\002\025Google.Cloud.Ba"
- + "tch.V1\312\002\025Google\\Cloud\\Batch\\V1\352\002\030Google:"
- + ":Cloud::Batch::V1b\006proto3"
+ + "le.cloud.batch.v1\032\037google/api/field_beha"
+ + "vior.proto\032\031google/api/resource.proto\032\"g"
+ + "oogle/cloud/batch/v1/volume.proto\032\036googl"
+ + "e/protobuf/duration.proto\032\037google/protob"
+ + "uf/timestamp.proto\"O\n\017ComputeResource\022\021\n"
+ + "\tcpu_milli\030\001 \001(\003\022\022\n\nmemory_mib\030\002 \001(\003\022\025\n\r"
+ + "boot_disk_mib\030\004 \001(\003\"\333\001\n\013StatusEvent\022\014\n\004t"
+ + "ype\030\003 \001(\t\022\023\n\013description\030\001 \001(\t\022.\n\nevent_"
+ + "time\030\002 \001(\0132\032.google.protobuf.Timestamp\022<"
+ + "\n\016task_execution\030\004 \001(\0132$.google.cloud.ba"
+ + "tch.v1.TaskExecution\022;\n\ntask_state\030\005 \001(\016"
+ + "2\'.google.cloud.batch.v1.TaskStatus.Stat"
+ + "e\"\"\n\rTaskExecution\022\021\n\texit_code\030\001 \001(\005\"\362\001"
+ + "\n\nTaskStatus\0226\n\005state\030\001 \001(\0162\'.google.clo"
+ + "ud.batch.v1.TaskStatus.State\0229\n\rstatus_e"
+ + "vents\030\002 \003(\0132\".google.cloud.batch.v1.Stat"
+ + "usEvent\"q\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022"
+ + "\013\n\007PENDING\020\001\022\014\n\010ASSIGNED\020\002\022\013\n\007RUNNING\020\003\022"
+ + "\n\n\006FAILED\020\004\022\r\n\tSUCCEEDED\020\005\022\016\n\nUNEXECUTED"
+ + "\020\006\"\336\005\n\010Runnable\022>\n\tcontainer\030\001 \001(\0132).goo"
+ + "gle.cloud.batch.v1.Runnable.ContainerH\000\022"
+ + "8\n\006script\030\002 \001(\0132&.google.cloud.batch.v1."
+ + "Runnable.ScriptH\000\022:\n\007barrier\030\006 \001(\0132\'.goo"
+ + "gle.cloud.batch.v1.Runnable.BarrierH\000\022\032\n"
+ + "\022ignore_exit_status\030\003 \001(\010\022\022\n\nbackground\030"
+ + "\004 \001(\010\022\022\n\nalways_run\030\005 \001(\010\0227\n\013environment"
+ + "\030\007 \001(\0132\".google.cloud.batch.v1.Environme"
+ + "nt\022*\n\007timeout\030\010 \001(\0132\031.google.protobuf.Du"
+ + "ration\022;\n\006labels\030\t \003(\0132+.google.cloud.ba"
+ + "tch.v1.Runnable.LabelsEntry\032\252\001\n\tContaine"
+ + "r\022\021\n\timage_uri\030\001 \001(\t\022\020\n\010commands\030\002 \003(\t\022\022"
+ + "\n\nentrypoint\030\003 \001(\t\022\017\n\007volumes\030\007 \003(\t\022\017\n\007o"
+ + "ptions\030\010 \001(\t\022\036\n\026block_external_network\030\t"
+ + " \001(\010\022\020\n\010username\030\n \001(\t\022\020\n\010password\030\013 \001(\t"
+ + "\0323\n\006Script\022\016\n\004path\030\001 \001(\tH\000\022\016\n\004text\030\002 \001(\t"
+ + "H\000B\t\n\007command\032\027\n\007Barrier\022\014\n\004name\030\001 \001(\t\032-"
+ + "\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001("
+ + "\t:\0028\001B\014\n\nexecutable\"\375\003\n\010TaskSpec\0222\n\trunn"
+ + "ables\030\010 \003(\0132\037.google.cloud.batch.v1.Runn"
+ + "able\022@\n\020compute_resource\030\003 \001(\0132&.google."
+ + "cloud.batch.v1.ComputeResource\0223\n\020max_ru"
+ + "n_duration\030\004 \001(\0132\031.google.protobuf.Durat"
+ + "ion\022\027\n\017max_retry_count\030\005 \001(\005\022B\n\022lifecycl"
+ + "e_policies\030\t \003(\0132&.google.cloud.batch.v1"
+ + ".LifecyclePolicy\022K\n\014environments\030\006 \003(\01321"
+ + ".google.cloud.batch.v1.TaskSpec.Environm"
+ + "entsEntryB\002\030\001\022.\n\007volumes\030\007 \003(\0132\035.google."
+ + "cloud.batch.v1.Volume\0227\n\013environment\030\n \001"
+ + "(\0132\".google.cloud.batch.v1.Environment\0323"
+ + "\n\021EnvironmentsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005valu"
+ + "e\030\002 \001(\t:\0028\001\"\212\002\n\017LifecyclePolicy\022=\n\006actio"
+ + "n\030\001 \001(\0162-.google.cloud.batch.v1.Lifecycl"
+ + "ePolicy.Action\022P\n\020action_condition\030\002 \001(\013"
+ + "26.google.cloud.batch.v1.LifecyclePolicy"
+ + ".ActionCondition\032%\n\017ActionCondition\022\022\n\ne"
+ + "xit_codes\030\001 \003(\005\"?\n\006Action\022\026\n\022ACTION_UNSP"
+ + "ECIFIED\020\000\022\016\n\nRETRY_TASK\020\001\022\r\n\tFAIL_TASK\020\002"
+ + "\"\300\001\n\004Task\022\014\n\004name\030\001 \001(\t\0221\n\006status\030\002 \001(\0132"
+ + "!.google.cloud.batch.v1.TaskStatus:w\352At\n"
+ + "\031batch.googleapis.com/Task\022Wprojects/{pr"
+ + "oject}/locations/{location}/jobs/{job}/t"
+ + "askGroups/{task_group}/tasks/{task}\"\217\003\n\013"
+ + "Environment\022D\n\tvariables\030\001 \003(\01321.google."
+ + "cloud.batch.v1.Environment.VariablesEntr"
+ + "y\022Q\n\020secret_variables\030\002 \003(\01327.google.clo"
+ + "ud.batch.v1.Environment.SecretVariablesE"
+ + "ntry\022I\n\023encrypted_variables\030\003 \001(\0132,.goog"
+ + "le.cloud.batch.v1.Environment.KMSEnvMap\032"
+ + "2\n\tKMSEnvMap\022\020\n\010key_name\030\001 \001(\t\022\023\n\013cipher"
+ + "_text\030\002 \001(\t\0320\n\016VariablesEntry\022\013\n\003key\030\001 \001"
+ + "(\t\022\r\n\005value\030\002 \001(\t:\0028\001\0326\n\024SecretVariables"
+ + "Entry\022\013\n\003key\030\001 \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001B\252\001"
+ + "\n\031com.google.cloud.batch.v1B\tTaskProtoP\001"
+ + "Z/cloud.google.com/go/batch/apiv1/batchp"
+ + "b;batchpb\242\002\003GCB\252\002\025Google.Cloud.Batch.V1\312"
+ + "\002\025Google\\Cloud\\Batch\\V1\352\002\030Google::Cloud:"
+ + ":Batch::V1b\006proto3"
};
descriptor =
com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
descriptorData,
new com.google.protobuf.Descriptors.FileDescriptor[] {
+ com.google.api.FieldBehaviorProto.getDescriptor(),
com.google.api.ResourceProto.getDescriptor(),
com.google.cloud.batch.v1.VolumeProto.getDescriptor(),
com.google.protobuf.DurationProto.getDescriptor(),
@@ -367,6 +369,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
registry.add(com.google.api.ResourceProto.resource);
com.google.protobuf.Descriptors.FileDescriptor.internalUpdateFileDescriptor(
descriptor, registry);
+ com.google.api.FieldBehaviorProto.getDescriptor();
com.google.api.ResourceProto.getDescriptor();
com.google.cloud.batch.v1.VolumeProto.getDescriptor();
com.google.protobuf.DurationProto.getDescriptor();
diff --git a/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/job.proto b/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/job.proto
index f982f162d194..bbf737a43d4b 100644
--- a/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/job.proto
+++ b/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/job.proto
@@ -184,8 +184,12 @@ message JobStatus {
// Notification configurations.
message JobNotification {
// Message details.
- // Describe the attribute that a message should have.
- // Without specified message attributes, no message will be sent by default.
+ // Describe the conditions under which messages will be sent.
+ // If no attribute is defined, no message will be sent by default.
+ // One message should specify either the job or the task level attributes,
+ // but not both. For example,
+ // job level: JOB_STATE_CHANGED and/or a specified new_job_state;
+ // task level: TASK_STATE_CHANGED and/or a specified new_task_state.
message Message {
// The message type.
Type type = 1;
@@ -210,8 +214,8 @@ message JobNotification {
}
// The Pub/Sub topic where notifications like the job state changes
- // will be published. This topic exist in the same project as the job
- // and billings will be charged to this project.
+ // will be published. The topic must exist in the same project as
+ // the job and billings will be charged to this project.
// If not specified, no Pub/Sub messages will be sent.
// Topic format: `projects/{project}/topics/{topic}`.
string pubsub_topic = 1;
diff --git a/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/task.proto b/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/task.proto
index b89ba09d0a19..8ee148251400 100644
--- a/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/task.proto
+++ b/java-batch/proto-google-cloud-batch-v1/src/main/proto/google/cloud/batch/v1/task.proto
@@ -16,6 +16,7 @@ syntax = "proto3";
package google.cloud.batch.v1;
+import "google/api/field_behavior.proto";
import "google/api/resource.proto";
import "google/cloud/batch/v1/volume.proto";
import "google/protobuf/duration.proto";