From ff7a4ab0d7a31758628b36415cb34107ec5a68fc Mon Sep 17 00:00:00 2001
From: "gcf-owl-bot[bot]" <78513119+gcf-owl-bot[bot]@users.noreply.github.com>
Date: Thu, 25 Aug 2022 15:08:13 +0000
Subject: [PATCH] feat: add read_mask to ListPipelineJobsRequest in aiplatform
 v1 pipeline_service (#1032)

- [ ] Regenerate this pull request now.

feat: add input_artifacts to PipelineJob.runtime_config in aiplatform v1 pipeline_job

PiperOrigin-RevId: 469843667

Source-Link: https://github.com/googleapis/googleapis/commit/eb382eda1d3dfe5a3fe07b32f15a3a7dab266597

Source-Link: https://github.com/googleapis/googleapis-gen/commit/7af72d71f16060f229b77ae7edc74da5cfb8ee79
Copy-Tag: eyJwIjoiLmdpdGh1Yi8uT3dsQm90LnlhbWwiLCJoIjoiN2FmNzJkNzFmMTYwNjBmMjI5Yjc3YWU3ZWRjNzRkYTVjZmI4ZWU3OSJ9
---
 .../aiplatform/v1/PipelineServiceClient.java  |    3 +
 .../v1/ListPipelineJobsRequest.java           |  268 ++++
 .../v1/ListPipelineJobsRequestOrBuilder.java  |   35 +
 .../google/cloud/aiplatform/v1/Pipeline.java  |  193 ++-
 .../cloud/aiplatform/v1/PipelineJob.java      | 1429 ++++++++++++++++-
 .../aiplatform/v1/PipelineServiceProto.java   |  141 +-
 .../v1/PipelineTaskExecutorDetail.java        |    8 +-
 .../PipelineTaskExecutorDetailOrBuilder.java  |    4 +-
 .../cloud/aiplatform/v1/pipeline_job.proto    |   16 +
 .../aiplatform/v1/pipeline_service.proto      |    3 +
 10 files changed, 1914 insertions(+), 186 deletions(-)

diff --git a/java-aiplatform/google-cloud-aiplatform/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceClient.java b/java-aiplatform/google-cloud-aiplatform/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceClient.java
index 3e1c8484b497..679ae810f663 100644
--- a/java-aiplatform/google-cloud-aiplatform/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceClient.java
+++ b/java-aiplatform/google-cloud-aiplatform/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceClient.java
@@ -1157,6 +1157,7 @@ public final ListPipelineJobsPagedResponse listPipelineJobs(String parent) {
    *           .setPageSize(883849137)
    *           .setPageToken("pageToken873572522")
    *           .setOrderBy("orderBy-1207110587")
+   *           .setReadMask(FieldMask.newBuilder().build())
    *           .build();
    *   for (PipelineJob element : pipelineServiceClient.listPipelineJobs(request).iterateAll()) {
    *     // doThingsWith(element);
@@ -1188,6 +1189,7 @@ public final ListPipelineJobsPagedResponse listPipelineJobs(ListPipelineJobsRequ
    *           .setPageSize(883849137)
    *           .setPageToken("pageToken873572522")
    *           .setOrderBy("orderBy-1207110587")
+   *           .setReadMask(FieldMask.newBuilder().build())
    *           .build();
    *   ApiFuture<PipelineJob> future =
    *       pipelineServiceClient.listPipelineJobsPagedCallable().futureCall(request);
@@ -1220,6 +1222,7 @@ public final ListPipelineJobsPagedResponse listPipelineJobs(ListPipelineJobsRequ
    *           .setPageSize(883849137)
    *           .setPageToken("pageToken873572522")
    *           .setOrderBy("orderBy-1207110587")
+   *           .setReadMask(FieldMask.newBuilder().build())
    *           .build();
    *   while (true) {
    *     ListPipelineJobsResponse response =
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequest.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequest.java
index 5c4e5895b3ba..f362ce9eeb73 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequest.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequest.java
@@ -104,6 +104,21 @@ private ListPipelineJobsRequest(
               java.lang.String s = input.readStringRequireUtf8();
 
               orderBy_ = s;
+              break;
+            }
+          case 58:
+            {
+              com.google.protobuf.FieldMask.Builder subBuilder = null;
+              if (readMask_ != null) {
+                subBuilder = readMask_.toBuilder();
+              }
+              readMask_ =
+                  input.readMessage(com.google.protobuf.FieldMask.parser(), extensionRegistry);
+              if (subBuilder != null) {
+                subBuilder.mergeFrom(readMask_);
+                readMask_ = subBuilder.buildPartial();
+              }
+
               break;
             }
           default:
@@ -446,6 +461,52 @@ public com.google.protobuf.ByteString getOrderByBytes() {
     }
   }
 
+  public static final int READ_MASK_FIELD_NUMBER = 7;
+  private com.google.protobuf.FieldMask readMask_;
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   *
+   * @return Whether the readMask field is set.
+   */
+  @java.lang.Override
+  public boolean hasReadMask() {
+    return readMask_ != null;
+  }
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   *
+   * @return The readMask.
+   */
+  @java.lang.Override
+  public com.google.protobuf.FieldMask getReadMask() {
+    return readMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : readMask_;
+  }
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   */
+  @java.lang.Override
+  public com.google.protobuf.FieldMaskOrBuilder getReadMaskOrBuilder() {
+    return getReadMask();
+  }
+
   private byte memoizedIsInitialized = -1;
 
   @java.lang.Override
@@ -475,6 +536,9 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(orderBy_)) {
       com.google.protobuf.GeneratedMessageV3.writeString(output, 6, orderBy_);
     }
+    if (readMask_ != null) {
+      output.writeMessage(7, getReadMask());
+    }
     unknownFields.writeTo(output);
   }
 
@@ -499,6 +563,9 @@ public int getSerializedSize() {
     if (!com.google.protobuf.GeneratedMessageV3.isStringEmpty(orderBy_)) {
       size += com.google.protobuf.GeneratedMessageV3.computeStringSize(6, orderBy_);
     }
+    if (readMask_ != null) {
+      size += com.google.protobuf.CodedOutputStream.computeMessageSize(7, getReadMask());
+    }
     size += unknownFields.getSerializedSize();
     memoizedSize = size;
     return size;
@@ -520,6 +587,10 @@ public boolean equals(final java.lang.Object obj) {
     if (getPageSize() != other.getPageSize()) return false;
     if (!getPageToken().equals(other.getPageToken())) return false;
     if (!getOrderBy().equals(other.getOrderBy())) return false;
+    if (hasReadMask() != other.hasReadMask()) return false;
+    if (hasReadMask()) {
+      if (!getReadMask().equals(other.getReadMask())) return false;
+    }
     if (!unknownFields.equals(other.unknownFields)) return false;
     return true;
   }
@@ -541,6 +612,10 @@ public int hashCode() {
     hash = (53 * hash) + getPageToken().hashCode();
     hash = (37 * hash) + ORDER_BY_FIELD_NUMBER;
     hash = (53 * hash) + getOrderBy().hashCode();
+    if (hasReadMask()) {
+      hash = (37 * hash) + READ_MASK_FIELD_NUMBER;
+      hash = (53 * hash) + getReadMask().hashCode();
+    }
     hash = (29 * hash) + unknownFields.hashCode();
     memoizedHashCode = hash;
     return hash;
@@ -697,6 +772,12 @@ public Builder clear() {
 
       orderBy_ = "";
 
+      if (readMaskBuilder_ == null) {
+        readMask_ = null;
+      } else {
+        readMask_ = null;
+        readMaskBuilder_ = null;
+      }
       return this;
     }
 
@@ -729,6 +810,11 @@ public com.google.cloud.aiplatform.v1.ListPipelineJobsRequest buildPartial() {
       result.pageSize_ = pageSize_;
       result.pageToken_ = pageToken_;
       result.orderBy_ = orderBy_;
+      if (readMaskBuilder_ == null) {
+        result.readMask_ = readMask_;
+      } else {
+        result.readMask_ = readMaskBuilder_.build();
+      }
       onBuilt();
       return result;
     }
@@ -798,6 +884,9 @@ public Builder mergeFrom(com.google.cloud.aiplatform.v1.ListPipelineJobsRequest
         orderBy_ = other.orderBy_;
         onChanged();
       }
+      if (other.hasReadMask()) {
+        mergeReadMask(other.getReadMask());
+      }
       this.mergeUnknownFields(other.unknownFields);
       onChanged();
       return this;
@@ -1529,6 +1618,185 @@ public Builder setOrderByBytes(com.google.protobuf.ByteString value) {
       return this;
     }
 
+    private com.google.protobuf.FieldMask readMask_;
+    private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.FieldMask,
+            com.google.protobuf.FieldMask.Builder,
+            com.google.protobuf.FieldMaskOrBuilder>
+        readMaskBuilder_;
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     *
+     * @return Whether the readMask field is set.
+     */
+    public boolean hasReadMask() {
+      return readMaskBuilder_ != null || readMask_ != null;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     *
+     * @return The readMask.
+     */
+    public com.google.protobuf.FieldMask getReadMask() {
+      if (readMaskBuilder_ == null) {
+        return readMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : readMask_;
+      } else {
+        return readMaskBuilder_.getMessage();
+      }
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public Builder setReadMask(com.google.protobuf.FieldMask value) {
+      if (readMaskBuilder_ == null) {
+        if (value == null) {
+          throw new NullPointerException();
+        }
+        readMask_ = value;
+        onChanged();
+      } else {
+        readMaskBuilder_.setMessage(value);
+      }
+
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public Builder setReadMask(com.google.protobuf.FieldMask.Builder builderForValue) {
+      if (readMaskBuilder_ == null) {
+        readMask_ = builderForValue.build();
+        onChanged();
+      } else {
+        readMaskBuilder_.setMessage(builderForValue.build());
+      }
+
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public Builder mergeReadMask(com.google.protobuf.FieldMask value) {
+      if (readMaskBuilder_ == null) {
+        if (readMask_ != null) {
+          readMask_ =
+              com.google.protobuf.FieldMask.newBuilder(readMask_).mergeFrom(value).buildPartial();
+        } else {
+          readMask_ = value;
+        }
+        onChanged();
+      } else {
+        readMaskBuilder_.mergeFrom(value);
+      }
+
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public Builder clearReadMask() {
+      if (readMaskBuilder_ == null) {
+        readMask_ = null;
+        onChanged();
+      } else {
+        readMask_ = null;
+        readMaskBuilder_ = null;
+      }
+
+      return this;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public com.google.protobuf.FieldMask.Builder getReadMaskBuilder() {
+
+      onChanged();
+      return getReadMaskFieldBuilder().getBuilder();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    public com.google.protobuf.FieldMaskOrBuilder getReadMaskOrBuilder() {
+      if (readMaskBuilder_ != null) {
+        return readMaskBuilder_.getMessageOrBuilder();
+      } else {
+        return readMask_ == null ? com.google.protobuf.FieldMask.getDefaultInstance() : readMask_;
+      }
+    }
+    /**
+     *
+     *
+     * <pre>
+     * Mask specifying which fields to read.
+     * </pre>
+     *
+     * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+     */
+    private com.google.protobuf.SingleFieldBuilderV3<
+            com.google.protobuf.FieldMask,
+            com.google.protobuf.FieldMask.Builder,
+            com.google.protobuf.FieldMaskOrBuilder>
+        getReadMaskFieldBuilder() {
+      if (readMaskBuilder_ == null) {
+        readMaskBuilder_ =
+            new com.google.protobuf.SingleFieldBuilderV3<
+                com.google.protobuf.FieldMask,
+                com.google.protobuf.FieldMask.Builder,
+                com.google.protobuf.FieldMaskOrBuilder>(
+                getReadMask(), getParentForChildren(), isClean());
+        readMask_ = null;
+      }
+      return readMaskBuilder_;
+    }
+
     @java.lang.Override
     public final Builder setUnknownFields(final com.google.protobuf.UnknownFieldSet unknownFields) {
       return super.setUnknownFields(unknownFields);
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequestOrBuilder.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequestOrBuilder.java
index 3866f9a4f21d..0b8f6c95bc7c 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequestOrBuilder.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/ListPipelineJobsRequestOrBuilder.java
@@ -225,4 +225,39 @@ public interface ListPipelineJobsRequestOrBuilder
    * @return The bytes for orderBy.
    */
   com.google.protobuf.ByteString getOrderByBytes();
+
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   *
+   * @return Whether the readMask field is set.
+   */
+  boolean hasReadMask();
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   *
+   * @return The readMask.
+   */
+  com.google.protobuf.FieldMask getReadMask();
+  /**
+   *
+   *
+   * <pre>
+   * Mask specifying which fields to read.
+   * </pre>
+   *
+   * <code>.google.protobuf.FieldMask read_mask = 7;</code>
+   */
+  com.google.protobuf.FieldMaskOrBuilder getReadMaskOrBuilder();
 }
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/Pipeline.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/Pipeline.java
index db2b7f2a3eea..c4f855114ef1 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/Pipeline.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/Pipeline.java
@@ -35,6 +35,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r
       internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor;
+  static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
       internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParametersEntry_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
@@ -43,6 +47,10 @@ public static void registerAllExtensions(com.google.protobuf.ExtensionRegistry r
       internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParameterValuesEntry_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
       internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParameterValuesEntry_fieldAccessorTable;
+  static final com.google.protobuf.Descriptors.Descriptor
+      internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_descriptor;
+  static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+      internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_fieldAccessorTable;
   static final com.google.protobuf.Descriptors.Descriptor
       internal_static_google_cloud_aiplatform_v1_PipelineJob_LabelsEntry_descriptor;
   static final com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
@@ -109,7 +117,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           + "/pipeline_state.proto\032&google/cloud/aipl"
           + "atform/v1/value.proto\032\034google/protobuf/s"
           + "truct.proto\032\037google/protobuf/timestamp.p"
-          + "roto\032\027google/rpc/status.proto\"\210\014\n\013Pipeli"
+          + "roto\032\027google/rpc/status.proto\"\230\016\n\013Pipeli"
           + "neJob\022\021\n\004name\030\001 \001(\tB\003\340A\003\022\024\n\014display_name"
           + "\030\002 \001(\t\0224\n\013create_time\030\003 \001(\0132\032.google.pro"
           + "tobuf.TimestampB\003\340A\003\0223\n\nstart_time\030\004 \001(\013"
@@ -132,7 +140,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           + "eapis.com/Network\022\024\n\014template_uri\030\023 \001(\t\022"
           + "T\n\021template_metadata\030\024 \001(\01324.google.clou"
           + "d.aiplatform.v1.PipelineTemplateMetadata"
-          + "B\003\340A\003\032\350\003\n\rRuntimeConfig\022]\n\nparameters\030\001 "
+          + "B\003\340A\003\032\370\005\n\rRuntimeConfig\022]\n\nparameters\030\001 "
           + "\003(\0132E.google.cloud.aiplatform.v1.Pipelin"
           + "eJob.RuntimeConfig.ParametersEntryB\002\030\001\022!"
           + "\n\024gcs_output_directory\030\002 \001(\tB\003\340A\002\022d\n\020par"
@@ -140,78 +148,85 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           + "tform.v1.PipelineJob.RuntimeConfig.Param"
           + "eterValuesEntry\022I\n\016failure_policy\030\004 \001(\0162"
           + "1.google.cloud.aiplatform.v1.PipelineFai"
-          + "lurePolicy\032T\n\017ParametersEntry\022\013\n\003key\030\001 \001"
-          + "(\t\0220\n\005value\030\002 \001(\0132!.google.cloud.aiplatf"
-          + "orm.v1.Value:\0028\001\032N\n\024ParameterValuesEntry"
-          + "\022\013\n\003key\030\001 \001(\t\022%\n\005value\030\002 \001(\0132\026.google.pr"
-          + "otobuf.Value:\0028\001\032-\n\013LabelsEntry\022\013\n\003key\030\001"
-          + " \001(\t\022\r\n\005value\030\002 \001(\t:\0028\001:o\352Al\n%aiplatform"
-          + ".googleapis.com/PipelineJob\022Cprojects/{p"
-          + "roject}/locations/{location}/pipelineJob"
-          + "s/{pipeline_job}\"+\n\030PipelineTemplateMeta"
-          + "data\022\017\n\007version\030\003 \001(\t\"\352\001\n\021PipelineJobDet"
-          + "ail\022B\n\020pipeline_context\030\001 \001(\0132#.google.c"
-          + "loud.aiplatform.v1.ContextB\003\340A\003\022F\n\024pipel"
-          + "ine_run_context\030\002 \001(\0132#.google.cloud.aip"
-          + "latform.v1.ContextB\003\340A\003\022I\n\014task_details\030"
-          + "\003 \003(\0132..google.cloud.aiplatform.v1.Pipel"
-          + "ineTaskDetailB\003\340A\003\"\235\013\n\022PipelineTaskDetai"
-          + "l\022\024\n\007task_id\030\001 \001(\003B\003\340A\003\022\033\n\016parent_task_i"
-          + "d\030\014 \001(\003B\003\340A\003\022\026\n\ttask_name\030\002 \001(\tB\003\340A\003\0224\n\013"
-          + "create_time\030\003 \001(\0132\032.google.protobuf.Time"
-          + "stampB\003\340A\003\0223\n\nstart_time\030\004 \001(\0132\032.google."
-          + "protobuf.TimestampB\003\340A\003\0221\n\010end_time\030\005 \001("
-          + "\0132\032.google.protobuf.TimestampB\003\340A\003\022T\n\017ex"
-          + "ecutor_detail\030\006 \001(\01326.google.cloud.aipla"
-          + "tform.v1.PipelineTaskExecutorDetailB\003\340A\003"
-          + "\022H\n\005state\030\007 \001(\01624.google.cloud.aiplatfor"
-          + "m.v1.PipelineTaskDetail.StateB\003\340A\003\022=\n\tex"
-          + "ecution\030\010 \001(\0132%.google.cloud.aiplatform."
-          + "v1.ExecutionB\003\340A\003\022&\n\005error\030\t \001(\0132\022.googl"
-          + "e.rpc.StatusB\003\340A\003\022d\n\024pipeline_task_statu"
-          + "s\030\r \003(\0132A.google.cloud.aiplatform.v1.Pip"
-          + "elineTaskDetail.PipelineTaskStatusB\003\340A\003\022"
-          + "O\n\006inputs\030\n \003(\0132:.google.cloud.aiplatfor"
-          + "m.v1.PipelineTaskDetail.InputsEntryB\003\340A\003"
-          + "\022Q\n\007outputs\030\013 \003(\0132;.google.cloud.aiplatf"
-          + "orm.v1.PipelineTaskDetail.OutputsEntryB\003"
-          + "\340A\003\032\274\001\n\022PipelineTaskStatus\0224\n\013update_tim"
-          + "e\030\001 \001(\0132\032.google.protobuf.TimestampB\003\340A\003"
-          + "\022H\n\005state\030\002 \001(\01624.google.cloud.aiplatfor"
-          + "m.v1.PipelineTaskDetail.StateB\003\340A\003\022&\n\005er"
-          + "ror\030\003 \001(\0132\022.google.rpc.StatusB\003\340A\003\032L\n\014Ar"
-          + "tifactList\022<\n\tartifacts\030\001 \003(\0132$.google.c"
-          + "loud.aiplatform.v1.ArtifactB\003\340A\003\032j\n\013Inpu"
-          + "tsEntry\022\013\n\003key\030\001 \001(\t\022J\n\005value\030\002 \001(\0132;.go"
-          + "ogle.cloud.aiplatform.v1.PipelineTaskDet"
-          + "ail.ArtifactList:\0028\001\032k\n\014OutputsEntry\022\013\n\003"
-          + "key\030\001 \001(\t\022J\n\005value\030\002 \001(\0132;.google.cloud."
-          + "aiplatform.v1.PipelineTaskDetail.Artifac"
-          + "tList:\0028\001\"\246\001\n\005State\022\025\n\021STATE_UNSPECIFIED"
-          + "\020\000\022\013\n\007PENDING\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCCEEDE"
-          + "D\020\003\022\022\n\016CANCEL_PENDING\020\004\022\016\n\nCANCELLING\020\005\022"
-          + "\r\n\tCANCELLED\020\006\022\n\n\006FAILED\020\007\022\013\n\007SKIPPED\020\010\022"
-          + "\021\n\rNOT_TRIGGERED\020\t\"\354\003\n\032PipelineTaskExecu"
-          + "torDetail\022g\n\020container_detail\030\001 \001(\0132F.go"
-          + "ogle.cloud.aiplatform.v1.PipelineTaskExe"
-          + "cutorDetail.ContainerDetailB\003\340A\003H\000\022j\n\021cu"
-          + "stom_job_detail\030\002 \001(\0132F.google.cloud.aip"
-          + "latform.v1.PipelineTaskExecutorDetail.Cu"
-          + "stomJobDetailB\005\030\001\340A\003H\000\032\234\001\n\017ContainerDeta"
-          + "il\022=\n\010main_job\030\001 \001(\tB+\340A\003\372A%\n#aiplatform"
-          + ".googleapis.com/CustomJob\022J\n\025pre_caching"
-          + "_check_job\030\002 \001(\tB+\340A\003\372A%\n#aiplatform.goo"
-          + "gleapis.com/CustomJob\032O\n\017CustomJobDetail"
-          + "\0228\n\003job\030\001 \001(\tB+\340A\003\372A%\n#aiplatform.google"
-          + "apis.com/CustomJob:\002\030\001B\t\n\007detailsB\235\002\n\036co"
-          + "m.google.cloud.aiplatform.v1B\010PipelineP\001"
-          + "ZDgoogle.golang.org/genproto/googleapis/"
-          + "cloud/aiplatform/v1;aiplatform\252\002\032Google."
-          + "Cloud.AIPlatform.V1\312\002\032Google\\Cloud\\AIPla"
-          + "tform\\V1\352\002\035Google::Cloud::AIPlatform::V1"
-          + "\352AN\n\036compute.googleapis.com/Network\022,pro"
-          + "jects/{project}/global/networks/{network"
-          + "}b\006proto3"
+          + "lurePolicy\022b\n\017input_artifacts\030\005 \003(\0132I.go"
+          + "ogle.cloud.aiplatform.v1.PipelineJob.Run"
+          + "timeConfig.InputArtifactsEntry\032.\n\rInputA"
+          + "rtifact\022\025\n\013artifact_id\030\001 \001(\tH\000B\006\n\004kind\032T"
+          + "\n\017ParametersEntry\022\013\n\003key\030\001 \001(\t\0220\n\005value\030"
+          + "\002 \001(\0132!.google.cloud.aiplatform.v1.Value"
+          + ":\0028\001\032N\n\024ParameterValuesEntry\022\013\n\003key\030\001 \001("
+          + "\t\022%\n\005value\030\002 \001(\0132\026.google.protobuf.Value"
+          + ":\0028\001\032z\n\023InputArtifactsEntry\022\013\n\003key\030\001 \001(\t"
+          + "\022R\n\005value\030\002 \001(\0132C.google.cloud.aiplatfor"
+          + "m.v1.PipelineJob.RuntimeConfig.InputArti"
+          + "fact:\0028\001\032-\n\013LabelsEntry\022\013\n\003key\030\001 \001(\t\022\r\n\005"
+          + "value\030\002 \001(\t:\0028\001:o\352Al\n%aiplatform.googlea"
+          + "pis.com/PipelineJob\022Cprojects/{project}/"
+          + "locations/{location}/pipelineJobs/{pipel"
+          + "ine_job}\"+\n\030PipelineTemplateMetadata\022\017\n\007"
+          + "version\030\003 \001(\t\"\352\001\n\021PipelineJobDetail\022B\n\020p"
+          + "ipeline_context\030\001 \001(\0132#.google.cloud.aip"
+          + "latform.v1.ContextB\003\340A\003\022F\n\024pipeline_run_"
+          + "context\030\002 \001(\0132#.google.cloud.aiplatform."
+          + "v1.ContextB\003\340A\003\022I\n\014task_details\030\003 \003(\0132.."
+          + "google.cloud.aiplatform.v1.PipelineTaskD"
+          + "etailB\003\340A\003\"\235\013\n\022PipelineTaskDetail\022\024\n\007tas"
+          + "k_id\030\001 \001(\003B\003\340A\003\022\033\n\016parent_task_id\030\014 \001(\003B"
+          + "\003\340A\003\022\026\n\ttask_name\030\002 \001(\tB\003\340A\003\0224\n\013create_t"
+          + "ime\030\003 \001(\0132\032.google.protobuf.TimestampB\003\340"
+          + "A\003\0223\n\nstart_time\030\004 \001(\0132\032.google.protobuf"
+          + ".TimestampB\003\340A\003\0221\n\010end_time\030\005 \001(\0132\032.goog"
+          + "le.protobuf.TimestampB\003\340A\003\022T\n\017executor_d"
+          + "etail\030\006 \001(\01326.google.cloud.aiplatform.v1"
+          + ".PipelineTaskExecutorDetailB\003\340A\003\022H\n\005stat"
+          + "e\030\007 \001(\01624.google.cloud.aiplatform.v1.Pip"
+          + "elineTaskDetail.StateB\003\340A\003\022=\n\texecution\030"
+          + "\010 \001(\0132%.google.cloud.aiplatform.v1.Execu"
+          + "tionB\003\340A\003\022&\n\005error\030\t \001(\0132\022.google.rpc.St"
+          + "atusB\003\340A\003\022d\n\024pipeline_task_status\030\r \003(\0132"
+          + "A.google.cloud.aiplatform.v1.PipelineTas"
+          + "kDetail.PipelineTaskStatusB\003\340A\003\022O\n\006input"
+          + "s\030\n \003(\0132:.google.cloud.aiplatform.v1.Pip"
+          + "elineTaskDetail.InputsEntryB\003\340A\003\022Q\n\007outp"
+          + "uts\030\013 \003(\0132;.google.cloud.aiplatform.v1.P"
+          + "ipelineTaskDetail.OutputsEntryB\003\340A\003\032\274\001\n\022"
+          + "PipelineTaskStatus\0224\n\013update_time\030\001 \001(\0132"
+          + "\032.google.protobuf.TimestampB\003\340A\003\022H\n\005stat"
+          + "e\030\002 \001(\01624.google.cloud.aiplatform.v1.Pip"
+          + "elineTaskDetail.StateB\003\340A\003\022&\n\005error\030\003 \001("
+          + "\0132\022.google.rpc.StatusB\003\340A\003\032L\n\014ArtifactLi"
+          + "st\022<\n\tartifacts\030\001 \003(\0132$.google.cloud.aip"
+          + "latform.v1.ArtifactB\003\340A\003\032j\n\013InputsEntry\022"
+          + "\013\n\003key\030\001 \001(\t\022J\n\005value\030\002 \001(\0132;.google.clo"
+          + "ud.aiplatform.v1.PipelineTaskDetail.Arti"
+          + "factList:\0028\001\032k\n\014OutputsEntry\022\013\n\003key\030\001 \001("
+          + "\t\022J\n\005value\030\002 \001(\0132;.google.cloud.aiplatfo"
+          + "rm.v1.PipelineTaskDetail.ArtifactList:\0028"
+          + "\001\"\246\001\n\005State\022\025\n\021STATE_UNSPECIFIED\020\000\022\013\n\007PE"
+          + "NDING\020\001\022\013\n\007RUNNING\020\002\022\r\n\tSUCCEEDED\020\003\022\022\n\016C"
+          + "ANCEL_PENDING\020\004\022\016\n\nCANCELLING\020\005\022\r\n\tCANCE"
+          + "LLED\020\006\022\n\n\006FAILED\020\007\022\013\n\007SKIPPED\020\010\022\021\n\rNOT_T"
+          + "RIGGERED\020\t\"\354\003\n\032PipelineTaskExecutorDetai"
+          + "l\022g\n\020container_detail\030\001 \001(\0132F.google.clo"
+          + "ud.aiplatform.v1.PipelineTaskExecutorDet"
+          + "ail.ContainerDetailB\003\340A\003H\000\022j\n\021custom_job"
+          + "_detail\030\002 \001(\0132F.google.cloud.aiplatform."
+          + "v1.PipelineTaskExecutorDetail.CustomJobD"
+          + "etailB\005\030\001\340A\003H\000\032\234\001\n\017ContainerDetail\022=\n\010ma"
+          + "in_job\030\001 \001(\tB+\340A\003\372A%\n#aiplatform.googlea"
+          + "pis.com/CustomJob\022J\n\025pre_caching_check_j"
+          + "ob\030\002 \001(\tB+\340A\003\372A%\n#aiplatform.googleapis."
+          + "com/CustomJob\032O\n\017CustomJobDetail\0228\n\003job\030"
+          + "\001 \001(\tB+\340A\003\372A%\n#aiplatform.googleapis.com"
+          + "/CustomJob:\002\030\001B\t\n\007detailsB\235\002\n\036com.google"
+          + ".cloud.aiplatform.v1B\010PipelineP\001ZDgoogle"
+          + ".golang.org/genproto/googleapis/cloud/ai"
+          + "platform/v1;aiplatform\252\002\032Google.Cloud.AI"
+          + "Platform.V1\312\002\032Google\\Cloud\\AIPlatform\\V1"
+          + "\352\002\035Google::Cloud::AIPlatform::V1\352AN\n\036com"
+          + "pute.googleapis.com/Network\022,projects/{p"
+          + "roject}/global/networks/{network}b\006proto"
+          + "3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -260,12 +275,26 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor,
             new java.lang.String[] {
-              "Parameters", "GcsOutputDirectory", "ParameterValues", "FailurePolicy",
+              "Parameters",
+              "GcsOutputDirectory",
+              "ParameterValues",
+              "FailurePolicy",
+              "InputArtifacts",
             });
-    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParametersEntry_descriptor =
+    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor =
         internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor
             .getNestedTypes()
             .get(0);
+    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_fieldAccessorTable =
+        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+            internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor,
+            new java.lang.String[] {
+              "ArtifactId", "Kind",
+            });
+    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParametersEntry_descriptor =
+        internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor
+            .getNestedTypes()
+            .get(1);
     internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParametersEntry_fieldAccessorTable =
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParametersEntry_descriptor,
@@ -275,13 +304,23 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
     internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParameterValuesEntry_descriptor =
         internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor
             .getNestedTypes()
-            .get(1);
+            .get(2);
     internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParameterValuesEntry_fieldAccessorTable =
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_ParameterValuesEntry_descriptor,
             new java.lang.String[] {
               "Key", "Value",
             });
+    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_descriptor =
+        internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor
+            .getNestedTypes()
+            .get(3);
+    internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_fieldAccessorTable =
+        new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
+            internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_descriptor,
+            new java.lang.String[] {
+              "Key", "Value",
+            });
     internal_static_google_cloud_aiplatform_v1_PipelineJob_LabelsEntry_descriptor =
         internal_static_google_cloud_aiplatform_v1_PipelineJob_descriptor.getNestedTypes().get(1);
     internal_static_google_cloud_aiplatform_v1_PipelineJob_LabelsEntry_fieldAccessorTable =
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineJob.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineJob.java
index b16f0b215b42..dff5a9237010 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineJob.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineJob.java
@@ -586,6 +586,88 @@ com.google.protobuf.Value getParameterValuesOrDefault(
      * @return The failurePolicy.
      */
     com.google.cloud.aiplatform.v1.PipelineFailurePolicy getFailurePolicy();
+
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    int getInputArtifactsCount();
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    boolean containsInputArtifacts(java.lang.String key);
+    /** Use {@link #getInputArtifactsMap()} instead. */
+    @java.lang.Deprecated
+    java.util.Map<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        getInputArtifacts();
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    java.util.Map<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        getInputArtifactsMap();
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+
+    /* nullable */
+    com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+        getInputArtifactsOrDefault(
+            java.lang.String key,
+            /* nullable */
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact defaultValue);
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact getInputArtifactsOrThrow(
+        java.lang.String key);
   }
   /**
    *
@@ -689,6 +771,26 @@ private RuntimeConfig(
                 failurePolicy_ = rawValue;
                 break;
               }
+            case 42:
+              {
+                if (!((mutable_bitField0_ & 0x00000004) != 0)) {
+                  inputArtifacts_ =
+                      com.google.protobuf.MapField.newMapField(
+                          InputArtifactsDefaultEntryHolder.defaultEntry);
+                  mutable_bitField0_ |= 0x00000004;
+                }
+                com.google.protobuf.MapEntry<
+                        java.lang.String,
+                        com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+                    inputArtifacts__ =
+                        input.readMessage(
+                            InputArtifactsDefaultEntryHolder.defaultEntry.getParserForType(),
+                            extensionRegistry);
+                inputArtifacts_
+                    .getMutableMap()
+                    .put(inputArtifacts__.getKey(), inputArtifacts__.getValue());
+                break;
+              }
             default:
               {
                 if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
@@ -698,44 +800,921 @@ private RuntimeConfig(
               }
           }
         }
-      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
-        throw e.setUnfinishedMessage(this);
-      } catch (com.google.protobuf.UninitializedMessageException e) {
-        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
-      } catch (java.io.IOException e) {
-        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
-      } finally {
-        this.unknownFields = unknownFields.build();
-        makeExtensionsImmutable();
+      } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+        throw e.setUnfinishedMessage(this);
+      } catch (com.google.protobuf.UninitializedMessageException e) {
+        throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
+      } catch (java.io.IOException e) {
+        throw new com.google.protobuf.InvalidProtocolBufferException(e).setUnfinishedMessage(this);
+      } finally {
+        this.unknownFields = unknownFields.build();
+        makeExtensionsImmutable();
+      }
+    }
+
+    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+      return com.google.cloud.aiplatform.v1.Pipeline
+          .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor;
+    }
+
+    @SuppressWarnings({"rawtypes"})
+    @java.lang.Override
+    protected com.google.protobuf.MapField internalGetMapField(int number) {
+      switch (number) {
+        case 1:
+          return internalGetParameters();
+        case 3:
+          return internalGetParameterValues();
+        case 5:
+          return internalGetInputArtifacts();
+        default:
+          throw new RuntimeException("Invalid map field number: " + number);
+      }
+    }
+
+    @java.lang.Override
+    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+        internalGetFieldAccessorTable() {
+      return com.google.cloud.aiplatform.v1.Pipeline
+          .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_fieldAccessorTable
+          .ensureFieldAccessorsInitialized(
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.class,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.Builder.class);
+    }
+
+    public interface InputArtifactOrBuilder
+        extends
+        // @@protoc_insertion_point(interface_extends:google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
+        com.google.protobuf.MessageOrBuilder {
+
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return Whether the artifactId field is set.
+       */
+      boolean hasArtifactId();
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return The artifactId.
+       */
+      java.lang.String getArtifactId();
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return The bytes for artifactId.
+       */
+      com.google.protobuf.ByteString getArtifactIdBytes();
+
+      public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.KindCase
+          getKindCase();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * The type of an input artifact.
+     * </pre>
+     *
+     * Protobuf type {@code google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact}
+     */
+    public static final class InputArtifact extends com.google.protobuf.GeneratedMessageV3
+        implements
+        // @@protoc_insertion_point(message_implements:google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
+        InputArtifactOrBuilder {
+      private static final long serialVersionUID = 0L;
+      // Use InputArtifact.newBuilder() to construct.
+      private InputArtifact(com.google.protobuf.GeneratedMessageV3.Builder<?> builder) {
+        super(builder);
+      }
+
+      private InputArtifact() {}
+
+      @java.lang.Override
+      @SuppressWarnings({"unused"})
+      protected java.lang.Object newInstance(UnusedPrivateParameter unused) {
+        return new InputArtifact();
+      }
+
+      @java.lang.Override
+      public final com.google.protobuf.UnknownFieldSet getUnknownFields() {
+        return this.unknownFields;
+      }
+
+      private InputArtifact(
+          com.google.protobuf.CodedInputStream input,
+          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+          throws com.google.protobuf.InvalidProtocolBufferException {
+        this();
+        if (extensionRegistry == null) {
+          throw new java.lang.NullPointerException();
+        }
+        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
+            com.google.protobuf.UnknownFieldSet.newBuilder();
+        try {
+          boolean done = false;
+          while (!done) {
+            int tag = input.readTag();
+            switch (tag) {
+              case 0:
+                done = true;
+                break;
+              case 10:
+                {
+                  java.lang.String s = input.readStringRequireUtf8();
+                  kindCase_ = 1;
+                  kind_ = s;
+                  break;
+                }
+              default:
+                {
+                  if (!parseUnknownField(input, unknownFields, extensionRegistry, tag)) {
+                    done = true;
+                  }
+                  break;
+                }
+            }
+          }
+        } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+          throw e.setUnfinishedMessage(this);
+        } catch (com.google.protobuf.UninitializedMessageException e) {
+          throw e.asInvalidProtocolBufferException().setUnfinishedMessage(this);
+        } catch (java.io.IOException e) {
+          throw new com.google.protobuf.InvalidProtocolBufferException(e)
+              .setUnfinishedMessage(this);
+        } finally {
+          this.unknownFields = unknownFields.build();
+          makeExtensionsImmutable();
+        }
+      }
+
+      public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+        return com.google.cloud.aiplatform.v1.Pipeline
+            .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor;
+      }
+
+      @java.lang.Override
+      protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+          internalGetFieldAccessorTable() {
+        return com.google.cloud.aiplatform.v1.Pipeline
+            .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_fieldAccessorTable
+            .ensureFieldAccessorsInitialized(
+                com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.class,
+                com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.Builder
+                    .class);
+      }
+
+      private int kindCase_ = 0;
+      private java.lang.Object kind_;
+
+      public enum KindCase
+          implements
+              com.google.protobuf.Internal.EnumLite,
+              com.google.protobuf.AbstractMessage.InternalOneOfEnum {
+        ARTIFACT_ID(1),
+        KIND_NOT_SET(0);
+        private final int value;
+
+        private KindCase(int value) {
+          this.value = value;
+        }
+        /**
+         * @param value The number of the enum to look for.
+         * @return The enum associated with the given number.
+         * @deprecated Use {@link #forNumber(int)} instead.
+         */
+        @java.lang.Deprecated
+        public static KindCase valueOf(int value) {
+          return forNumber(value);
+        }
+
+        public static KindCase forNumber(int value) {
+          switch (value) {
+            case 1:
+              return ARTIFACT_ID;
+            case 0:
+              return KIND_NOT_SET;
+            default:
+              return null;
+          }
+        }
+
+        public int getNumber() {
+          return this.value;
+        }
+      };
+
+      public KindCase getKindCase() {
+        return KindCase.forNumber(kindCase_);
+      }
+
+      public static final int ARTIFACT_ID_FIELD_NUMBER = 1;
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return Whether the artifactId field is set.
+       */
+      public boolean hasArtifactId() {
+        return kindCase_ == 1;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return The artifactId.
+       */
+      public java.lang.String getArtifactId() {
+        java.lang.Object ref = "";
+        if (kindCase_ == 1) {
+          ref = kind_;
+        }
+        if (ref instanceof java.lang.String) {
+          return (java.lang.String) ref;
+        } else {
+          com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+          java.lang.String s = bs.toStringUtf8();
+          if (kindCase_ == 1) {
+            kind_ = s;
+          }
+          return s;
+        }
+      }
+      /**
+       *
+       *
+       * <pre>
+       * Artifact resource id from MLMD. Which is the last portion of an
+       * artifact resource
+       * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+       * The artifact must stay within the same project, location and default
+       * metadatastore as the pipeline.
+       * </pre>
+       *
+       * <code>string artifact_id = 1;</code>
+       *
+       * @return The bytes for artifactId.
+       */
+      public com.google.protobuf.ByteString getArtifactIdBytes() {
+        java.lang.Object ref = "";
+        if (kindCase_ == 1) {
+          ref = kind_;
+        }
+        if (ref instanceof java.lang.String) {
+          com.google.protobuf.ByteString b =
+              com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+          if (kindCase_ == 1) {
+            kind_ = b;
+          }
+          return b;
+        } else {
+          return (com.google.protobuf.ByteString) ref;
+        }
+      }
+
+      private byte memoizedIsInitialized = -1;
+
+      @java.lang.Override
+      public final boolean isInitialized() {
+        byte isInitialized = memoizedIsInitialized;
+        if (isInitialized == 1) return true;
+        if (isInitialized == 0) return false;
+
+        memoizedIsInitialized = 1;
+        return true;
+      }
+
+      @java.lang.Override
+      public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io.IOException {
+        if (kindCase_ == 1) {
+          com.google.protobuf.GeneratedMessageV3.writeString(output, 1, kind_);
+        }
+        unknownFields.writeTo(output);
+      }
+
+      @java.lang.Override
+      public int getSerializedSize() {
+        int size = memoizedSize;
+        if (size != -1) return size;
+
+        size = 0;
+        if (kindCase_ == 1) {
+          size += com.google.protobuf.GeneratedMessageV3.computeStringSize(1, kind_);
+        }
+        size += unknownFields.getSerializedSize();
+        memoizedSize = size;
+        return size;
+      }
+
+      @java.lang.Override
+      public boolean equals(final java.lang.Object obj) {
+        if (obj == this) {
+          return true;
+        }
+        if (!(obj
+            instanceof com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)) {
+          return super.equals(obj);
+        }
+        com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact other =
+            (com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact) obj;
+
+        if (!getKindCase().equals(other.getKindCase())) return false;
+        switch (kindCase_) {
+          case 1:
+            if (!getArtifactId().equals(other.getArtifactId())) return false;
+            break;
+          case 0:
+          default:
+        }
+        if (!unknownFields.equals(other.unknownFields)) return false;
+        return true;
+      }
+
+      @java.lang.Override
+      public int hashCode() {
+        if (memoizedHashCode != 0) {
+          return memoizedHashCode;
+        }
+        int hash = 41;
+        hash = (19 * hash) + getDescriptor().hashCode();
+        switch (kindCase_) {
+          case 1:
+            hash = (37 * hash) + ARTIFACT_ID_FIELD_NUMBER;
+            hash = (53 * hash) + getArtifactId().hashCode();
+            break;
+          case 0:
+          default:
+        }
+        hash = (29 * hash) + unknownFields.hashCode();
+        memoizedHashCode = hash;
+        return hash;
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(java.nio.ByteBuffer data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(
+              java.nio.ByteBuffer data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(com.google.protobuf.ByteString data)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(
+              com.google.protobuf.ByteString data,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(byte[] data) throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(byte[] data, com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws com.google.protobuf.InvalidProtocolBufferException {
+        return PARSER.parseFrom(data, extensionRegistry);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(java.io.InputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
+            PARSER, input, extensionRegistry);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseDelimitedFrom(java.io.InputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(PARSER, input);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseDelimitedFrom(
+              java.io.InputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseDelimitedWithIOException(
+            PARSER, input, extensionRegistry);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(com.google.protobuf.CodedInputStream input) throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(PARSER, input);
+      }
+
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          parseFrom(
+              com.google.protobuf.CodedInputStream input,
+              com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+              throws java.io.IOException {
+        return com.google.protobuf.GeneratedMessageV3.parseWithIOException(
+            PARSER, input, extensionRegistry);
+      }
+
+      @java.lang.Override
+      public Builder newBuilderForType() {
+        return newBuilder();
+      }
+
+      public static Builder newBuilder() {
+        return DEFAULT_INSTANCE.toBuilder();
+      }
+
+      public static Builder newBuilder(
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact prototype) {
+        return DEFAULT_INSTANCE.toBuilder().mergeFrom(prototype);
+      }
+
+      @java.lang.Override
+      public Builder toBuilder() {
+        return this == DEFAULT_INSTANCE ? new Builder() : new Builder().mergeFrom(this);
+      }
+
+      @java.lang.Override
+      protected Builder newBuilderForType(
+          com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+        Builder builder = new Builder(parent);
+        return builder;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The type of an input artifact.
+       * </pre>
+       *
+       * Protobuf type {@code google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact}
+       */
+      public static final class Builder
+          extends com.google.protobuf.GeneratedMessageV3.Builder<Builder>
+          implements
+          // @@protoc_insertion_point(builder_implements:google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifactOrBuilder {
+        public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
+          return com.google.cloud.aiplatform.v1.Pipeline
+              .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor;
+        }
+
+        @java.lang.Override
+        protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
+            internalGetFieldAccessorTable() {
+          return com.google.cloud.aiplatform.v1.Pipeline
+              .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_fieldAccessorTable
+              .ensureFieldAccessorsInitialized(
+                  com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.class,
+                  com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.Builder
+                      .class);
+        }
+
+        // Construct using
+        // com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact.newBuilder()
+        private Builder() {
+          maybeForceBuilderInitialization();
+        }
+
+        private Builder(com.google.protobuf.GeneratedMessageV3.BuilderParent parent) {
+          super(parent);
+          maybeForceBuilderInitialization();
+        }
+
+        private void maybeForceBuilderInitialization() {
+          if (com.google.protobuf.GeneratedMessageV3.alwaysUseFieldBuilders) {}
+        }
+
+        @java.lang.Override
+        public Builder clear() {
+          super.clear();
+          kindCase_ = 0;
+          kind_ = null;
+          return this;
+        }
+
+        @java.lang.Override
+        public com.google.protobuf.Descriptors.Descriptor getDescriptorForType() {
+          return com.google.cloud.aiplatform.v1.Pipeline
+              .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifact_descriptor;
+        }
+
+        @java.lang.Override
+        public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+            getDefaultInstanceForType() {
+          return com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+              .getDefaultInstance();
+        }
+
+        @java.lang.Override
+        public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact build() {
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact result =
+              buildPartial();
+          if (!result.isInitialized()) {
+            throw newUninitializedMessageException(result);
+          }
+          return result;
+        }
+
+        @java.lang.Override
+        public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+            buildPartial() {
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact result =
+              new com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact(this);
+          if (kindCase_ == 1) {
+            result.kind_ = kind_;
+          }
+          result.kindCase_ = kindCase_;
+          onBuilt();
+          return result;
+        }
+
+        @java.lang.Override
+        public Builder clone() {
+          return super.clone();
+        }
+
+        @java.lang.Override
+        public Builder setField(
+            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return super.setField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder clearField(com.google.protobuf.Descriptors.FieldDescriptor field) {
+          return super.clearField(field);
+        }
+
+        @java.lang.Override
+        public Builder clearOneof(com.google.protobuf.Descriptors.OneofDescriptor oneof) {
+          return super.clearOneof(oneof);
+        }
+
+        @java.lang.Override
+        public Builder setRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field,
+            int index,
+            java.lang.Object value) {
+          return super.setRepeatedField(field, index, value);
+        }
+
+        @java.lang.Override
+        public Builder addRepeatedField(
+            com.google.protobuf.Descriptors.FieldDescriptor field, java.lang.Object value) {
+          return super.addRepeatedField(field, value);
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(com.google.protobuf.Message other) {
+          if (other
+              instanceof com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact) {
+            return mergeFrom(
+                (com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact) other);
+          } else {
+            super.mergeFrom(other);
+            return this;
+          }
+        }
+
+        public Builder mergeFrom(
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact other) {
+          if (other
+              == com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+                  .getDefaultInstance()) return this;
+          switch (other.getKindCase()) {
+            case ARTIFACT_ID:
+              {
+                kindCase_ = 1;
+                kind_ = other.kind_;
+                onChanged();
+                break;
+              }
+            case KIND_NOT_SET:
+              {
+                break;
+              }
+          }
+          this.mergeUnknownFields(other.unknownFields);
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final boolean isInitialized() {
+          return true;
+        }
+
+        @java.lang.Override
+        public Builder mergeFrom(
+            com.google.protobuf.CodedInputStream input,
+            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+            throws java.io.IOException {
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact parsedMessage =
+              null;
+          try {
+            parsedMessage = PARSER.parsePartialFrom(input, extensionRegistry);
+          } catch (com.google.protobuf.InvalidProtocolBufferException e) {
+            parsedMessage =
+                (com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
+                    e.getUnfinishedMessage();
+            throw e.unwrapIOException();
+          } finally {
+            if (parsedMessage != null) {
+              mergeFrom(parsedMessage);
+            }
+          }
+          return this;
+        }
+
+        private int kindCase_ = 0;
+        private java.lang.Object kind_;
+
+        public KindCase getKindCase() {
+          return KindCase.forNumber(kindCase_);
+        }
+
+        public Builder clearKind() {
+          kindCase_ = 0;
+          kind_ = null;
+          onChanged();
+          return this;
+        }
+
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @return Whether the artifactId field is set.
+         */
+        @java.lang.Override
+        public boolean hasArtifactId() {
+          return kindCase_ == 1;
+        }
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @return The artifactId.
+         */
+        @java.lang.Override
+        public java.lang.String getArtifactId() {
+          java.lang.Object ref = "";
+          if (kindCase_ == 1) {
+            ref = kind_;
+          }
+          if (!(ref instanceof java.lang.String)) {
+            com.google.protobuf.ByteString bs = (com.google.protobuf.ByteString) ref;
+            java.lang.String s = bs.toStringUtf8();
+            if (kindCase_ == 1) {
+              kind_ = s;
+            }
+            return s;
+          } else {
+            return (java.lang.String) ref;
+          }
+        }
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @return The bytes for artifactId.
+         */
+        @java.lang.Override
+        public com.google.protobuf.ByteString getArtifactIdBytes() {
+          java.lang.Object ref = "";
+          if (kindCase_ == 1) {
+            ref = kind_;
+          }
+          if (ref instanceof String) {
+            com.google.protobuf.ByteString b =
+                com.google.protobuf.ByteString.copyFromUtf8((java.lang.String) ref);
+            if (kindCase_ == 1) {
+              kind_ = b;
+            }
+            return b;
+          } else {
+            return (com.google.protobuf.ByteString) ref;
+          }
+        }
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @param value The artifactId to set.
+         * @return This builder for chaining.
+         */
+        public Builder setArtifactId(java.lang.String value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          kindCase_ = 1;
+          kind_ = value;
+          onChanged();
+          return this;
+        }
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @return This builder for chaining.
+         */
+        public Builder clearArtifactId() {
+          if (kindCase_ == 1) {
+            kindCase_ = 0;
+            kind_ = null;
+            onChanged();
+          }
+          return this;
+        }
+        /**
+         *
+         *
+         * <pre>
+         * Artifact resource id from MLMD. Which is the last portion of an
+         * artifact resource
+         * name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+         * The artifact must stay within the same project, location and default
+         * metadatastore as the pipeline.
+         * </pre>
+         *
+         * <code>string artifact_id = 1;</code>
+         *
+         * @param value The bytes for artifactId to set.
+         * @return This builder for chaining.
+         */
+        public Builder setArtifactIdBytes(com.google.protobuf.ByteString value) {
+          if (value == null) {
+            throw new NullPointerException();
+          }
+          checkByteStringIsUtf8(value);
+          kindCase_ = 1;
+          kind_ = value;
+          onChanged();
+          return this;
+        }
+
+        @java.lang.Override
+        public final Builder setUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.setUnknownFields(unknownFields);
+        }
+
+        @java.lang.Override
+        public final Builder mergeUnknownFields(
+            final com.google.protobuf.UnknownFieldSet unknownFields) {
+          return super.mergeUnknownFields(unknownFields);
+        }
+
+        // @@protoc_insertion_point(builder_scope:google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
       }
-    }
 
-    public static final com.google.protobuf.Descriptors.Descriptor getDescriptor() {
-      return com.google.cloud.aiplatform.v1.Pipeline
-          .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_descriptor;
-    }
+      // @@protoc_insertion_point(class_scope:google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact)
+      private static final com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          DEFAULT_INSTANCE;
 
-    @SuppressWarnings({"rawtypes"})
-    @java.lang.Override
-    protected com.google.protobuf.MapField internalGetMapField(int number) {
-      switch (number) {
-        case 1:
-          return internalGetParameters();
-        case 3:
-          return internalGetParameterValues();
-        default:
-          throw new RuntimeException("Invalid map field number: " + number);
+      static {
+        DEFAULT_INSTANCE =
+            new com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact();
       }
-    }
 
-    @java.lang.Override
-    protected com.google.protobuf.GeneratedMessageV3.FieldAccessorTable
-        internalGetFieldAccessorTable() {
-      return com.google.cloud.aiplatform.v1.Pipeline
-          .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_fieldAccessorTable
-          .ensureFieldAccessorsInitialized(
-              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.class,
-              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.Builder.class);
+      public static com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          getDefaultInstance() {
+        return DEFAULT_INSTANCE;
+      }
+
+      private static final com.google.protobuf.Parser<InputArtifact> PARSER =
+          new com.google.protobuf.AbstractParser<InputArtifact>() {
+            @java.lang.Override
+            public InputArtifact parsePartialFrom(
+                com.google.protobuf.CodedInputStream input,
+                com.google.protobuf.ExtensionRegistryLite extensionRegistry)
+                throws com.google.protobuf.InvalidProtocolBufferException {
+              return new InputArtifact(input, extensionRegistry);
+            }
+          };
+
+      public static com.google.protobuf.Parser<InputArtifact> parser() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.protobuf.Parser<InputArtifact> getParserForType() {
+        return PARSER;
+      }
+
+      @java.lang.Override
+      public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          getDefaultInstanceForType() {
+        return DEFAULT_INSTANCE;
+      }
     }
 
     public static final int PARAMETERS_FIELD_NUMBER = 1;
@@ -1110,6 +2089,146 @@ public com.google.cloud.aiplatform.v1.PipelineFailurePolicy getFailurePolicy() {
           : result;
     }
 
+    public static final int INPUT_ARTIFACTS_FIELD_NUMBER = 5;
+
+    private static final class InputArtifactsDefaultEntryHolder {
+      static final com.google.protobuf.MapEntry<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          defaultEntry =
+              com.google.protobuf.MapEntry
+                  .<java.lang.String,
+                      com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+                      newDefaultInstance(
+                          com.google.cloud.aiplatform.v1.Pipeline
+                              .internal_static_google_cloud_aiplatform_v1_PipelineJob_RuntimeConfig_InputArtifactsEntry_descriptor,
+                          com.google.protobuf.WireFormat.FieldType.STRING,
+                          "",
+                          com.google.protobuf.WireFormat.FieldType.MESSAGE,
+                          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+                              .getDefaultInstance());
+    }
+
+    private com.google.protobuf.MapField<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        inputArtifacts_;
+
+    private com.google.protobuf.MapField<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        internalGetInputArtifacts() {
+      if (inputArtifacts_ == null) {
+        return com.google.protobuf.MapField.emptyMapField(
+            InputArtifactsDefaultEntryHolder.defaultEntry);
+      }
+      return inputArtifacts_;
+    }
+
+    public int getInputArtifactsCount() {
+      return internalGetInputArtifacts().getMap().size();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    @java.lang.Override
+    public boolean containsInputArtifacts(java.lang.String key) {
+      if (key == null) {
+        throw new NullPointerException("map key");
+      }
+      return internalGetInputArtifacts().getMap().containsKey(key);
+    }
+    /** Use {@link #getInputArtifactsMap()} instead. */
+    @java.lang.Override
+    @java.lang.Deprecated
+    public java.util.Map<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        getInputArtifacts() {
+      return getInputArtifactsMap();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    @java.lang.Override
+    public java.util.Map<
+            java.lang.String,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+        getInputArtifactsMap() {
+      return internalGetInputArtifacts().getMap();
+    }
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    @java.lang.Override
+    public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+        getInputArtifactsOrDefault(
+            java.lang.String key,
+            com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact defaultValue) {
+      if (key == null) {
+        throw new NullPointerException("map key");
+      }
+      java.util.Map<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          map = internalGetInputArtifacts().getMap();
+      return map.containsKey(key) ? map.get(key) : defaultValue;
+    }
+    /**
+     *
+     *
+     * <pre>
+     * The runtime artifacts of the PipelineJob. The key will be the input
+     * artifact name and the value would be one of the InputArtifact.
+     * </pre>
+     *
+     * <code>
+     * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+     * </code>
+     */
+    @java.lang.Override
+    public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+        getInputArtifactsOrThrow(java.lang.String key) {
+      if (key == null) {
+        throw new NullPointerException("map key");
+      }
+      java.util.Map<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          map = internalGetInputArtifacts().getMap();
+      if (!map.containsKey(key)) {
+        throw new java.lang.IllegalArgumentException();
+      }
+      return map.get(key);
+    }
+
     private byte memoizedIsInitialized = -1;
 
     @java.lang.Override
@@ -1137,6 +2256,8 @@ public void writeTo(com.google.protobuf.CodedOutputStream output) throws java.io
               .getNumber()) {
         output.writeEnum(4, failurePolicy_);
       }
+      com.google.protobuf.GeneratedMessageV3.serializeStringMapTo(
+          output, internalGetInputArtifacts(), InputArtifactsDefaultEntryHolder.defaultEntry, 5);
       unknownFields.writeTo(output);
     }
 
@@ -1177,6 +2298,21 @@ public int getSerializedSize() {
               .getNumber()) {
         size += com.google.protobuf.CodedOutputStream.computeEnumSize(4, failurePolicy_);
       }
+      for (java.util.Map.Entry<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          entry : internalGetInputArtifacts().getMap().entrySet()) {
+        com.google.protobuf.MapEntry<
+                java.lang.String,
+                com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+            inputArtifacts__ =
+                InputArtifactsDefaultEntryHolder.defaultEntry
+                    .newBuilderForType()
+                    .setKey(entry.getKey())
+                    .setValue(entry.getValue())
+                    .build();
+        size += com.google.protobuf.CodedOutputStream.computeMessageSize(5, inputArtifacts__);
+      }
       size += unknownFields.getSerializedSize();
       memoizedSize = size;
       return size;
@@ -1197,6 +2333,7 @@ public boolean equals(final java.lang.Object obj) {
       if (!getGcsOutputDirectory().equals(other.getGcsOutputDirectory())) return false;
       if (!internalGetParameterValues().equals(other.internalGetParameterValues())) return false;
       if (failurePolicy_ != other.failurePolicy_) return false;
+      if (!internalGetInputArtifacts().equals(other.internalGetInputArtifacts())) return false;
       if (!unknownFields.equals(other.unknownFields)) return false;
       return true;
     }
@@ -1220,6 +2357,10 @@ public int hashCode() {
       }
       hash = (37 * hash) + FAILURE_POLICY_FIELD_NUMBER;
       hash = (53 * hash) + failurePolicy_;
+      if (!internalGetInputArtifacts().getMap().isEmpty()) {
+        hash = (37 * hash) + INPUT_ARTIFACTS_FIELD_NUMBER;
+        hash = (53 * hash) + internalGetInputArtifacts().hashCode();
+      }
       hash = (29 * hash) + unknownFields.hashCode();
       memoizedHashCode = hash;
       return hash;
@@ -1348,6 +2489,8 @@ protected com.google.protobuf.MapField internalGetMapField(int number) {
             return internalGetParameters();
           case 3:
             return internalGetParameterValues();
+          case 5:
+            return internalGetInputArtifacts();
           default:
             throw new RuntimeException("Invalid map field number: " + number);
         }
@@ -1360,6 +2503,8 @@ protected com.google.protobuf.MapField internalGetMutableMapField(int number) {
             return internalGetMutableParameters();
           case 3:
             return internalGetMutableParameterValues();
+          case 5:
+            return internalGetMutableInputArtifacts();
           default:
             throw new RuntimeException("Invalid map field number: " + number);
         }
@@ -1398,6 +2543,7 @@ public Builder clear() {
         internalGetMutableParameterValues().clear();
         failurePolicy_ = 0;
 
+        internalGetMutableInputArtifacts().clear();
         return this;
       }
 
@@ -1432,6 +2578,8 @@ public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig buildPartial() {
         result.parameterValues_ = internalGetParameterValues();
         result.parameterValues_.makeImmutable();
         result.failurePolicy_ = failurePolicy_;
+        result.inputArtifacts_ = internalGetInputArtifacts();
+        result.inputArtifacts_.makeImmutable();
         onBuilt();
         return result;
       }
@@ -1493,6 +2641,7 @@ public Builder mergeFrom(com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfi
         if (other.failurePolicy_ != 0) {
           setFailurePolicyValue(other.getFailurePolicyValue());
         }
+        internalGetMutableInputArtifacts().mergeFrom(other.internalGetInputArtifacts());
         this.mergeUnknownFields(other.unknownFields);
         onChanged();
         return this;
@@ -2200,6 +3349,220 @@ public Builder clearFailurePolicy() {
         return this;
       }
 
+      private com.google.protobuf.MapField<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          inputArtifacts_;
+
+      private com.google.protobuf.MapField<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          internalGetInputArtifacts() {
+        if (inputArtifacts_ == null) {
+          return com.google.protobuf.MapField.emptyMapField(
+              InputArtifactsDefaultEntryHolder.defaultEntry);
+        }
+        return inputArtifacts_;
+      }
+
+      private com.google.protobuf.MapField<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          internalGetMutableInputArtifacts() {
+        onChanged();
+        ;
+        if (inputArtifacts_ == null) {
+          inputArtifacts_ =
+              com.google.protobuf.MapField.newMapField(
+                  InputArtifactsDefaultEntryHolder.defaultEntry);
+        }
+        if (!inputArtifacts_.isMutable()) {
+          inputArtifacts_ = inputArtifacts_.copy();
+        }
+        return inputArtifacts_;
+      }
+
+      public int getInputArtifactsCount() {
+        return internalGetInputArtifacts().getMap().size();
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      @java.lang.Override
+      public boolean containsInputArtifacts(java.lang.String key) {
+        if (key == null) {
+          throw new NullPointerException("map key");
+        }
+        return internalGetInputArtifacts().getMap().containsKey(key);
+      }
+      /** Use {@link #getInputArtifactsMap()} instead. */
+      @java.lang.Override
+      @java.lang.Deprecated
+      public java.util.Map<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          getInputArtifacts() {
+        return getInputArtifactsMap();
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      @java.lang.Override
+      public java.util.Map<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          getInputArtifactsMap() {
+        return internalGetInputArtifacts().getMap();
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      @java.lang.Override
+      public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          getInputArtifactsOrDefault(
+              java.lang.String key,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact defaultValue) {
+        if (key == null) {
+          throw new NullPointerException("map key");
+        }
+        java.util.Map<
+                java.lang.String,
+                com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+            map = internalGetInputArtifacts().getMap();
+        return map.containsKey(key) ? map.get(key) : defaultValue;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      @java.lang.Override
+      public com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact
+          getInputArtifactsOrThrow(java.lang.String key) {
+        if (key == null) {
+          throw new NullPointerException("map key");
+        }
+        java.util.Map<
+                java.lang.String,
+                com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+            map = internalGetInputArtifacts().getMap();
+        if (!map.containsKey(key)) {
+          throw new java.lang.IllegalArgumentException();
+        }
+        return map.get(key);
+      }
+
+      public Builder clearInputArtifacts() {
+        internalGetMutableInputArtifacts().getMutableMap().clear();
+        return this;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      public Builder removeInputArtifacts(java.lang.String key) {
+        if (key == null) {
+          throw new NullPointerException("map key");
+        }
+        internalGetMutableInputArtifacts().getMutableMap().remove(key);
+        return this;
+      }
+      /** Use alternate mutation accessors instead. */
+      @java.lang.Deprecated
+      public java.util.Map<
+              java.lang.String,
+              com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+          getMutableInputArtifacts() {
+        return internalGetMutableInputArtifacts().getMutableMap();
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      public Builder putInputArtifacts(
+          java.lang.String key,
+          com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact value) {
+        if (key == null) {
+          throw new NullPointerException("map key");
+        }
+        if (value == null) {
+          throw new NullPointerException("map value");
+        }
+
+        internalGetMutableInputArtifacts().getMutableMap().put(key, value);
+        return this;
+      }
+      /**
+       *
+       *
+       * <pre>
+       * The runtime artifacts of the PipelineJob. The key will be the input
+       * artifact name and the value would be one of the InputArtifact.
+       * </pre>
+       *
+       * <code>
+       * map&lt;string, .google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact&gt; input_artifacts = 5;
+       * </code>
+       */
+      public Builder putAllInputArtifacts(
+          java.util.Map<
+                  java.lang.String,
+                  com.google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.InputArtifact>
+              values) {
+        internalGetMutableInputArtifacts().getMutableMap().putAll(values);
+        return this;
+      }
+
       @java.lang.Override
       public final Builder setUnknownFields(
           final com.google.protobuf.UnknownFieldSet unknownFields) {
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceProto.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceProto.java
index 5b86a7b8ee3d..a578abf4563f 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceProto.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineServiceProto.java
@@ -120,78 +120,79 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
           + "m.v1.PipelineJobB\003\340A\002\022\027\n\017pipeline_job_id"
           + "\030\003 \001(\t\"T\n\025GetPipelineJobRequest\022;\n\004name\030"
           + "\001 \001(\tB-\340A\002\372A\'\n%aiplatform.googleapis.com"
-          + "/PipelineJob\"\235\001\n\027ListPipelineJobsRequest"
+          + "/PipelineJob\"\314\001\n\027ListPipelineJobsRequest"
           + "\0229\n\006parent\030\001 \001(\tB)\340A\002\372A#\n!locations.goog"
           + "leapis.com/Location\022\016\n\006filter\030\002 \001(\t\022\021\n\tp"
           + "age_size\030\003 \001(\005\022\022\n\npage_token\030\004 \001(\t\022\020\n\010or"
-          + "der_by\030\006 \001(\t\"s\n\030ListPipelineJobsResponse"
-          + "\022>\n\rpipeline_jobs\030\001 \003(\0132\'.google.cloud.a"
-          + "iplatform.v1.PipelineJob\022\027\n\017next_page_to"
-          + "ken\030\002 \001(\t\"W\n\030DeletePipelineJobRequest\022;\n"
-          + "\004name\030\001 \001(\tB-\340A\002\372A\'\n%aiplatform.googleap"
-          + "is.com/PipelineJob\"W\n\030CancelPipelineJobR"
-          + "equest\022;\n\004name\030\001 \001(\tB-\340A\002\372A\'\n%aiplatform"
-          + ".googleapis.com/PipelineJob2\374\020\n\017Pipeline"
-          + "Service\022\356\001\n\026CreateTrainingPipeline\0229.goo"
-          + "gle.cloud.aiplatform.v1.CreateTrainingPi"
-          + "pelineRequest\032,.google.cloud.aiplatform."
-          + "v1.TrainingPipeline\"k\202\323\344\223\002J\"5/v1/{parent"
-          + "=projects/*/locations/*}/trainingPipelin"
-          + "es:\021training_pipeline\332A\030parent,training_"
-          + "pipeline\022\301\001\n\023GetTrainingPipeline\0226.googl"
-          + "e.cloud.aiplatform.v1.GetTrainingPipelin"
-          + "eRequest\032,.google.cloud.aiplatform.v1.Tr"
-          + "ainingPipeline\"D\202\323\344\223\0027\0225/v1/{name=projec"
-          + "ts/*/locations/*/trainingPipelines/*}\332A\004"
-          + "name\022\324\001\n\025ListTrainingPipelines\0228.google."
-          + "cloud.aiplatform.v1.ListTrainingPipeline"
-          + "sRequest\0329.google.cloud.aiplatform.v1.Li"
-          + "stTrainingPipelinesResponse\"F\202\323\344\223\0027\0225/v1"
-          + "/{parent=projects/*/locations/*}/trainin"
-          + "gPipelines\332A\006parent\022\353\001\n\026DeleteTrainingPi"
-          + "peline\0229.google.cloud.aiplatform.v1.Dele"
-          + "teTrainingPipelineRequest\032\035.google.longr"
-          + "unning.Operation\"w\202\323\344\223\0027*5/v1/{name=proj"
-          + "ects/*/locations/*/trainingPipelines/*}\332"
-          + "A\004name\312A0\n\025google.protobuf.Empty\022\027Delete"
-          + "OperationMetadata\022\273\001\n\026CancelTrainingPipe"
-          + "line\0229.google.cloud.aiplatform.v1.Cancel"
-          + "TrainingPipelineRequest\032\026.google.protobu"
-          + "f.Empty\"N\202\323\344\223\002A\"</v1/{name=projects/*/lo"
-          + "cations/*/trainingPipelines/*}:cancel:\001*"
-          + "\332A\004name\022\340\001\n\021CreatePipelineJob\0224.google.c"
-          + "loud.aiplatform.v1.CreatePipelineJobRequ"
-          + "est\032\'.google.cloud.aiplatform.v1.Pipelin"
-          + "eJob\"l\202\323\344\223\002@\"0/v1/{parent=projects/*/loc"
-          + "ations/*}/pipelineJobs:\014pipeline_job\332A#p"
-          + "arent,pipeline_job,pipeline_job_id\022\255\001\n\016G"
-          + "etPipelineJob\0221.google.cloud.aiplatform."
-          + "v1.GetPipelineJobRequest\032\'.google.cloud."
-          + "aiplatform.v1.PipelineJob\"?\202\323\344\223\0022\0220/v1/{"
-          + "name=projects/*/locations/*/pipelineJobs"
-          + "/*}\332A\004name\022\300\001\n\020ListPipelineJobs\0223.google"
-          + ".cloud.aiplatform.v1.ListPipelineJobsReq"
-          + "uest\0324.google.cloud.aiplatform.v1.ListPi"
-          + "pelineJobsResponse\"A\202\323\344\223\0022\0220/v1/{parent="
-          + "projects/*/locations/*}/pipelineJobs\332A\006p"
-          + "arent\022\334\001\n\021DeletePipelineJob\0224.google.clo"
-          + "ud.aiplatform.v1.DeletePipelineJobReques"
-          + "t\032\035.google.longrunning.Operation\"r\202\323\344\223\0022"
-          + "*0/v1/{name=projects/*/locations/*/pipel"
-          + "ineJobs/*}\332A\004name\312A0\n\025google.protobuf.Em"
-          + "pty\022\027DeleteOperationMetadata\022\254\001\n\021CancelP"
-          + "ipelineJob\0224.google.cloud.aiplatform.v1."
-          + "CancelPipelineJobRequest\032\026.google.protob"
-          + "uf.Empty\"I\202\323\344\223\002<\"7/v1/{name=projects/*/l"
-          + "ocations/*/pipelineJobs/*}:cancel:\001*\332A\004n"
-          + "ame\032M\312A\031aiplatform.googleapis.com\322A.http"
-          + "s://www.googleapis.com/auth/cloud-platfo"
-          + "rmB\330\001\n\036com.google.cloud.aiplatform.v1B\024P"
-          + "ipelineServiceProtoP\001ZDgoogle.golang.org"
-          + "/genproto/googleapis/cloud/aiplatform/v1"
-          + ";aiplatform\252\002\032Google.Cloud.AIPlatform.V1"
-          + "\312\002\032Google\\Cloud\\AIPlatform\\V1\352\002\035Google::"
-          + "Cloud::AIPlatform::V1b\006proto3"
+          + "der_by\030\006 \001(\t\022-\n\tread_mask\030\007 \001(\0132\032.google"
+          + ".protobuf.FieldMask\"s\n\030ListPipelineJobsR"
+          + "esponse\022>\n\rpipeline_jobs\030\001 \003(\0132\'.google."
+          + "cloud.aiplatform.v1.PipelineJob\022\027\n\017next_"
+          + "page_token\030\002 \001(\t\"W\n\030DeletePipelineJobReq"
+          + "uest\022;\n\004name\030\001 \001(\tB-\340A\002\372A\'\n%aiplatform.g"
+          + "oogleapis.com/PipelineJob\"W\n\030CancelPipel"
+          + "ineJobRequest\022;\n\004name\030\001 \001(\tB-\340A\002\372A\'\n%aip"
+          + "latform.googleapis.com/PipelineJob2\374\020\n\017P"
+          + "ipelineService\022\356\001\n\026CreateTrainingPipelin"
+          + "e\0229.google.cloud.aiplatform.v1.CreateTra"
+          + "iningPipelineRequest\032,.google.cloud.aipl"
+          + "atform.v1.TrainingPipeline\"k\202\323\344\223\002J\"5/v1/"
+          + "{parent=projects/*/locations/*}/training"
+          + "Pipelines:\021training_pipeline\332A\030parent,tr"
+          + "aining_pipeline\022\301\001\n\023GetTrainingPipeline\022"
+          + "6.google.cloud.aiplatform.v1.GetTraining"
+          + "PipelineRequest\032,.google.cloud.aiplatfor"
+          + "m.v1.TrainingPipeline\"D\202\323\344\223\0027\0225/v1/{name"
+          + "=projects/*/locations/*/trainingPipeline"
+          + "s/*}\332A\004name\022\324\001\n\025ListTrainingPipelines\0228."
+          + "google.cloud.aiplatform.v1.ListTrainingP"
+          + "ipelinesRequest\0329.google.cloud.aiplatfor"
+          + "m.v1.ListTrainingPipelinesResponse\"F\202\323\344\223"
+          + "\0027\0225/v1/{parent=projects/*/locations/*}/"
+          + "trainingPipelines\332A\006parent\022\353\001\n\026DeleteTra"
+          + "iningPipeline\0229.google.cloud.aiplatform."
+          + "v1.DeleteTrainingPipelineRequest\032\035.googl"
+          + "e.longrunning.Operation\"w\202\323\344\223\0027*5/v1/{na"
+          + "me=projects/*/locations/*/trainingPipeli"
+          + "nes/*}\332A\004name\312A0\n\025google.protobuf.Empty\022"
+          + "\027DeleteOperationMetadata\022\273\001\n\026CancelTrain"
+          + "ingPipeline\0229.google.cloud.aiplatform.v1"
+          + ".CancelTrainingPipelineRequest\032\026.google."
+          + "protobuf.Empty\"N\202\323\344\223\002A\"</v1/{name=projec"
+          + "ts/*/locations/*/trainingPipelines/*}:ca"
+          + "ncel:\001*\332A\004name\022\340\001\n\021CreatePipelineJob\0224.g"
+          + "oogle.cloud.aiplatform.v1.CreatePipeline"
+          + "JobRequest\032\'.google.cloud.aiplatform.v1."
+          + "PipelineJob\"l\202\323\344\223\002@\"0/v1/{parent=project"
+          + "s/*/locations/*}/pipelineJobs:\014pipeline_"
+          + "job\332A#parent,pipeline_job,pipeline_job_i"
+          + "d\022\255\001\n\016GetPipelineJob\0221.google.cloud.aipl"
+          + "atform.v1.GetPipelineJobRequest\032\'.google"
+          + ".cloud.aiplatform.v1.PipelineJob\"?\202\323\344\223\0022"
+          + "\0220/v1/{name=projects/*/locations/*/pipel"
+          + "ineJobs/*}\332A\004name\022\300\001\n\020ListPipelineJobs\0223"
+          + ".google.cloud.aiplatform.v1.ListPipeline"
+          + "JobsRequest\0324.google.cloud.aiplatform.v1"
+          + ".ListPipelineJobsResponse\"A\202\323\344\223\0022\0220/v1/{"
+          + "parent=projects/*/locations/*}/pipelineJ"
+          + "obs\332A\006parent\022\334\001\n\021DeletePipelineJob\0224.goo"
+          + "gle.cloud.aiplatform.v1.DeletePipelineJo"
+          + "bRequest\032\035.google.longrunning.Operation\""
+          + "r\202\323\344\223\0022*0/v1/{name=projects/*/locations/"
+          + "*/pipelineJobs/*}\332A\004name\312A0\n\025google.prot"
+          + "obuf.Empty\022\027DeleteOperationMetadata\022\254\001\n\021"
+          + "CancelPipelineJob\0224.google.cloud.aiplatf"
+          + "orm.v1.CancelPipelineJobRequest\032\026.google"
+          + ".protobuf.Empty\"I\202\323\344\223\002<\"7/v1/{name=proje"
+          + "cts/*/locations/*/pipelineJobs/*}:cancel"
+          + ":\001*\332A\004name\032M\312A\031aiplatform.googleapis.com"
+          + "\322A.https://www.googleapis.com/auth/cloud"
+          + "-platformB\330\001\n\036com.google.cloud.aiplatfor"
+          + "m.v1B\024PipelineServiceProtoP\001ZDgoogle.gol"
+          + "ang.org/genproto/googleapis/cloud/aiplat"
+          + "form/v1;aiplatform\252\002\032Google.Cloud.AIPlat"
+          + "form.V1\312\002\032Google\\Cloud\\AIPlatform\\V1\352\002\035G"
+          + "oogle::Cloud::AIPlatform::V1b\006proto3"
     };
     descriptor =
         com.google.protobuf.Descriptors.FileDescriptor.internalBuildGeneratedFileFrom(
@@ -277,7 +278,7 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() {
         new com.google.protobuf.GeneratedMessageV3.FieldAccessorTable(
             internal_static_google_cloud_aiplatform_v1_ListPipelineJobsRequest_descriptor,
             new java.lang.String[] {
-              "Parent", "Filter", "PageSize", "PageToken", "OrderBy",
+              "Parent", "Filter", "PageSize", "PageToken", "OrderBy", "ReadMask",
             });
     internal_static_google_cloud_aiplatform_v1_ListPipelineJobsResponse_descriptor =
         getDescriptor().getMessageTypes().get(9);
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetail.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetail.java
index 60e527d03ab5..e9149ce78b8d 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetail.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetail.java
@@ -1921,7 +1921,7 @@ public boolean hasContainerDetail() {
    * </code>
    *
    * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
    * @return Whether the customJobDetail field is set.
    */
   @java.lang.Override
@@ -1941,7 +1941,7 @@ public boolean hasCustomJobDetail() {
    * </code>
    *
    * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
    * @return The customJobDetail.
    */
   @java.lang.Override
@@ -2631,7 +2631,7 @@ public Builder clearContainerDetail() {
      * </code>
      *
      * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-     *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+     *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
      * @return Whether the customJobDetail field is set.
      */
     @java.lang.Override
@@ -2651,7 +2651,7 @@ public boolean hasCustomJobDetail() {
      * </code>
      *
      * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-     *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+     *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
      * @return The customJobDetail.
      */
     @java.lang.Override
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetailOrBuilder.java b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetailOrBuilder.java
index 19a55844d3b9..101aa01d46e3 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetailOrBuilder.java
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/java/com/google/cloud/aiplatform/v1/PipelineTaskExecutorDetailOrBuilder.java
@@ -77,7 +77,7 @@ public interface PipelineTaskExecutorDetailOrBuilder
    * </code>
    *
    * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
    * @return Whether the customJobDetail field is set.
    */
   @java.lang.Deprecated
@@ -94,7 +94,7 @@ public interface PipelineTaskExecutorDetailOrBuilder
    * </code>
    *
    * @deprecated google.cloud.aiplatform.v1.PipelineTaskExecutorDetail.custom_job_detail is
-   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=343
+   *     deprecated. See google/cloud/aiplatform/v1/pipeline_job.proto;l=359
    * @return The customJobDetail.
    */
   @java.lang.Deprecated
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_job.proto b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_job.proto
index eb12aabfef13..656a385b9aa7 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_job.proto
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_job.proto
@@ -50,6 +50,18 @@ message PipelineJob {
 
   // The runtime config of a PipelineJob.
   message RuntimeConfig {
+    // The type of an input artifact.
+    message InputArtifact {
+      oneof kind {
+        // Artifact resource id from MLMD. Which is the last portion of an
+        // artifact resource
+        // name(projects/{project}/locations/{location}/metadataStores/default/artifacts/{artifact_id}).
+        // The artifact must stay within the same project, location and default
+        // metadatastore as the pipeline.
+        string artifact_id = 1;
+      }
+    }
+
     // Deprecated. Use [RuntimeConfig.parameter_values][google.cloud.aiplatform.v1.PipelineJob.RuntimeConfig.parameter_values] instead. The runtime
     // parameters of the PipelineJob. The parameters will be passed into
     // [PipelineJob.pipeline_spec][google.cloud.aiplatform.v1.PipelineJob.pipeline_spec] to replace the placeholders at runtime.
@@ -81,6 +93,10 @@ message PipelineJob {
     // will stop scheduling any new tasks when a task has failed. Any scheduled
     // tasks will continue to completion.
     PipelineFailurePolicy failure_policy = 4;
+
+    // The runtime artifacts of the PipelineJob. The key will be the input
+    // artifact name and the value would be one of the InputArtifact.
+    map<string, InputArtifact> input_artifacts = 5;
   }
 
   // Output only. The resource name of the PipelineJob.
diff --git a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_service.proto b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_service.proto
index 84ab232de64c..41fef46685d8 100644
--- a/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_service.proto
+++ b/java-aiplatform/proto-google-cloud-aiplatform-v1/src/main/proto/google/cloud/aiplatform/v1/pipeline_service.proto
@@ -366,6 +366,9 @@ message ListPipelineJobsRequest {
   //   * `end_time`
   //   * `start_time`
   string order_by = 6;
+
+  // Mask specifying which fields to read.
+  google.protobuf.FieldMask read_mask = 7;
 }
 
 // Response message for [PipelineService.ListPipelineJobs][google.cloud.aiplatform.v1.PipelineService.ListPipelineJobs]