From 3bc5603e226465e718c61c0bc9e32ebf00961517 Mon Sep 17 00:00:00 2001 From: viambot Date: Tue, 4 Mar 2025 20:40:43 +0000 Subject: [PATCH] [WORKFLOW] Updating protos from viamrobotics/api, commit: a4c29282ff80080f81759538244a99670cf5dc38 --- api_version.lock | 2 +- .../src/main/gen/com/viam/robot/v1/Robot.java | 956 ++++++++- .../com/viam/robot/v1/RobotServiceGrpc.java | 87 +- .../src/main/gen/viam/app/data/v1/Data.java | 1797 ++++++++++++++++- .../gen/viam/app/datasync/v1/DataSync.java | 339 +++- .../viam/app/mlinference/v1/MlInference.java | 114 +- core/sdk/src/main/gen/viam/app/v1/App.java | 176 +- core/sdk/src/main/gen/viam/app/v1/Robot.java | 570 +++++- core/sdk/src/main/resources/protofds/viam.api | Bin 575743 -> 578652 bytes 9 files changed, 3969 insertions(+), 72 deletions(-) diff --git a/api_version.lock b/api_version.lock index 0e4f630a2..69d0bf9a9 100644 --- a/api_version.lock +++ b/api_version.lock @@ -1 +1 @@ -v0.1.395 +v0.1.399 diff --git a/core/sdk/src/main/gen/com/viam/robot/v1/Robot.java b/core/sdk/src/main/gen/com/viam/robot/v1/Robot.java index ad04f0cb2..f85d6c4e6 100644 --- a/core/sdk/src/main/gen/com/viam/robot/v1/Robot.java +++ b/core/sdk/src/main/gen/com/viam/robot/v1/Robot.java @@ -664,6 +664,938 @@ public static com.google.protobuf.Parser parser() { } } + public interface ListTunnelsRequestOrBuilder extends + // @@protoc_insertion_point(interface_extends:viam.robot.v1.ListTunnelsRequest) + com.google.protobuf.MessageLiteOrBuilder { + } + /** + * Protobuf type {@code viam.robot.v1.ListTunnelsRequest} + */ + public static final class ListTunnelsRequest extends + com.google.protobuf.GeneratedMessageLite< + ListTunnelsRequest, ListTunnelsRequest.Builder> implements + // @@protoc_insertion_point(message_implements:viam.robot.v1.ListTunnelsRequest) + ListTunnelsRequestOrBuilder { + private ListTunnelsRequest() { + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.ListTunnelsRequest parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(com.viam.robot.v1.Robot.ListTunnelsRequest prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code viam.robot.v1.ListTunnelsRequest} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + com.viam.robot.v1.Robot.ListTunnelsRequest, Builder> implements + // @@protoc_insertion_point(builder_implements:viam.robot.v1.ListTunnelsRequest) + com.viam.robot.v1.Robot.ListTunnelsRequestOrBuilder { + // Construct using com.viam.robot.v1.Robot.ListTunnelsRequest.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + // @@protoc_insertion_point(builder_scope:viam.robot.v1.ListTunnelsRequest) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new com.viam.robot.v1.Robot.ListTunnelsRequest(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = null;java.lang.String info = + "\u0000\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (com.viam.robot.v1.Robot.ListTunnelsRequest.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:viam.robot.v1.ListTunnelsRequest) + private static final com.viam.robot.v1.Robot.ListTunnelsRequest DEFAULT_INSTANCE; + static { + ListTunnelsRequest defaultInstance = new ListTunnelsRequest(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ListTunnelsRequest.class, defaultInstance); + } + + public static com.viam.robot.v1.Robot.ListTunnelsRequest getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface ListTunnelsResponseOrBuilder extends + // @@protoc_insertion_point(interface_extends:viam.robot.v1.ListTunnelsResponse) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + java.util.List + getTunnelsList(); + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + com.viam.robot.v1.Robot.Tunnel getTunnels(int index); + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + int getTunnelsCount(); + } + /** + * Protobuf type {@code viam.robot.v1.ListTunnelsResponse} + */ + public static final class ListTunnelsResponse extends + com.google.protobuf.GeneratedMessageLite< + ListTunnelsResponse, ListTunnelsResponse.Builder> implements + // @@protoc_insertion_point(message_implements:viam.robot.v1.ListTunnelsResponse) + ListTunnelsResponseOrBuilder { + private ListTunnelsResponse() { + tunnels_ = emptyProtobufList(); + } + public static final int TUNNELS_FIELD_NUMBER = 1; + private com.google.protobuf.Internal.ProtobufList tunnels_; + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public java.util.List getTunnelsList() { + return tunnels_; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public java.util.List + getTunnelsOrBuilderList() { + return tunnels_; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public int getTunnelsCount() { + return tunnels_.size(); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public com.viam.robot.v1.Robot.Tunnel getTunnels(int index) { + return tunnels_.get(index); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public com.viam.robot.v1.Robot.TunnelOrBuilder getTunnelsOrBuilder( + int index) { + return tunnels_.get(index); + } + private void ensureTunnelsIsMutable() { + com.google.protobuf.Internal.ProtobufList tmp = tunnels_; + if (!tmp.isModifiable()) { + tunnels_ = + com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp); + } + } + + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void setTunnels( + int index, com.viam.robot.v1.Robot.Tunnel value) { + value.getClass(); + ensureTunnelsIsMutable(); + tunnels_.set(index, value); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void addTunnels(com.viam.robot.v1.Robot.Tunnel value) { + value.getClass(); + ensureTunnelsIsMutable(); + tunnels_.add(value); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void addTunnels( + int index, com.viam.robot.v1.Robot.Tunnel value) { + value.getClass(); + ensureTunnelsIsMutable(); + tunnels_.add(index, value); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void addAllTunnels( + java.lang.Iterable values) { + ensureTunnelsIsMutable(); + com.google.protobuf.AbstractMessageLite.addAll( + values, tunnels_); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void clearTunnels() { + tunnels_ = emptyProtobufList(); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + private void removeTunnels(int index) { + ensureTunnelsIsMutable(); + tunnels_.remove(index); + } + + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.ListTunnelsResponse parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(com.viam.robot.v1.Robot.ListTunnelsResponse prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code viam.robot.v1.ListTunnelsResponse} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + com.viam.robot.v1.Robot.ListTunnelsResponse, Builder> implements + // @@protoc_insertion_point(builder_implements:viam.robot.v1.ListTunnelsResponse) + com.viam.robot.v1.Robot.ListTunnelsResponseOrBuilder { + // Construct using com.viam.robot.v1.Robot.ListTunnelsResponse.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public java.util.List getTunnelsList() { + return java.util.Collections.unmodifiableList( + instance.getTunnelsList()); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public int getTunnelsCount() { + return instance.getTunnelsCount(); + }/** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + @java.lang.Override + public com.viam.robot.v1.Robot.Tunnel getTunnels(int index) { + return instance.getTunnels(index); + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder setTunnels( + int index, com.viam.robot.v1.Robot.Tunnel value) { + copyOnWrite(); + instance.setTunnels(index, value); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder setTunnels( + int index, com.viam.robot.v1.Robot.Tunnel.Builder builderForValue) { + copyOnWrite(); + instance.setTunnels(index, + builderForValue.build()); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder addTunnels(com.viam.robot.v1.Robot.Tunnel value) { + copyOnWrite(); + instance.addTunnels(value); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder addTunnels( + int index, com.viam.robot.v1.Robot.Tunnel value) { + copyOnWrite(); + instance.addTunnels(index, value); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder addTunnels( + com.viam.robot.v1.Robot.Tunnel.Builder builderForValue) { + copyOnWrite(); + instance.addTunnels(builderForValue.build()); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder addTunnels( + int index, com.viam.robot.v1.Robot.Tunnel.Builder builderForValue) { + copyOnWrite(); + instance.addTunnels(index, + builderForValue.build()); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder addAllTunnels( + java.lang.Iterable values) { + copyOnWrite(); + instance.addAllTunnels(values); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder clearTunnels() { + copyOnWrite(); + instance.clearTunnels(); + return this; + } + /** + * repeated .viam.robot.v1.Tunnel tunnels = 1 [json_name = "tunnels"]; + */ + public Builder removeTunnels(int index) { + copyOnWrite(); + instance.removeTunnels(index); + return this; + } + + // @@protoc_insertion_point(builder_scope:viam.robot.v1.ListTunnelsResponse) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new com.viam.robot.v1.Robot.ListTunnelsResponse(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "tunnels_", + com.viam.robot.v1.Robot.Tunnel.class, + }; + java.lang.String info = + "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0001\u0000\u0001\u001b"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (com.viam.robot.v1.Robot.ListTunnelsResponse.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:viam.robot.v1.ListTunnelsResponse) + private static final com.viam.robot.v1.Robot.ListTunnelsResponse DEFAULT_INSTANCE; + static { + ListTunnelsResponse defaultInstance = new ListTunnelsResponse(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + ListTunnelsResponse.class, defaultInstance); + } + + public static com.viam.robot.v1.Robot.ListTunnelsResponse getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + + public interface TunnelOrBuilder extends + // @@protoc_insertion_point(interface_extends:viam.robot.v1.Tunnel) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * uint32 port = 1 [json_name = "port"]; + * @return The port. + */ + int getPort(); + + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + * @return Whether the connectionTimeout field is set. + */ + boolean hasConnectionTimeout(); + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + * @return The connectionTimeout. + */ + com.google.protobuf.Duration getConnectionTimeout(); + } + /** + * Protobuf type {@code viam.robot.v1.Tunnel} + */ + public static final class Tunnel extends + com.google.protobuf.GeneratedMessageLite< + Tunnel, Tunnel.Builder> implements + // @@protoc_insertion_point(message_implements:viam.robot.v1.Tunnel) + TunnelOrBuilder { + private Tunnel() { + } + private int bitField0_; + public static final int PORT_FIELD_NUMBER = 1; + private int port_; + /** + * uint32 port = 1 [json_name = "port"]; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + /** + * uint32 port = 1 [json_name = "port"]; + * @param value The port to set. + */ + private void setPort(int value) { + + port_ = value; + } + /** + * uint32 port = 1 [json_name = "port"]; + */ + private void clearPort() { + + port_ = 0; + } + + public static final int CONNECTION_TIMEOUT_FIELD_NUMBER = 2; + private com.google.protobuf.Duration connectionTimeout_; + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public boolean hasConnectionTimeout() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public com.google.protobuf.Duration getConnectionTimeout() { + return connectionTimeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : connectionTimeout_; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + private void setConnectionTimeout(com.google.protobuf.Duration value) { + value.getClass(); + connectionTimeout_ = value; + bitField0_ |= 0x00000001; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeConnectionTimeout(com.google.protobuf.Duration value) { + value.getClass(); + if (connectionTimeout_ != null && + connectionTimeout_ != com.google.protobuf.Duration.getDefaultInstance()) { + connectionTimeout_ = + com.google.protobuf.Duration.newBuilder(connectionTimeout_).mergeFrom(value).buildPartial(); + } else { + connectionTimeout_ = value; + } + bitField0_ |= 0x00000001; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + private void clearConnectionTimeout() { connectionTimeout_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + } + + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static com.viam.robot.v1.Robot.Tunnel parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static com.viam.robot.v1.Robot.Tunnel parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static com.viam.robot.v1.Robot.Tunnel parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(com.viam.robot.v1.Robot.Tunnel prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code viam.robot.v1.Tunnel} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + com.viam.robot.v1.Robot.Tunnel, Builder> implements + // @@protoc_insertion_point(builder_implements:viam.robot.v1.Tunnel) + com.viam.robot.v1.Robot.TunnelOrBuilder { + // Construct using com.viam.robot.v1.Robot.Tunnel.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * uint32 port = 1 [json_name = "port"]; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return instance.getPort(); + } + /** + * uint32 port = 1 [json_name = "port"]; + * @param value The port to set. + * @return This builder for chaining. + */ + public Builder setPort(int value) { + copyOnWrite(); + instance.setPort(value); + return this; + } + /** + * uint32 port = 1 [json_name = "port"]; + * @return This builder for chaining. + */ + public Builder clearPort() { + copyOnWrite(); + instance.clearPort(); + return this; + } + + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public boolean hasConnectionTimeout() { + return instance.hasConnectionTimeout(); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public com.google.protobuf.Duration getConnectionTimeout() { + return instance.getConnectionTimeout(); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder setConnectionTimeout(com.google.protobuf.Duration value) { + copyOnWrite(); + instance.setConnectionTimeout(value); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder setConnectionTimeout( + com.google.protobuf.Duration.Builder builderForValue) { + copyOnWrite(); + instance.setConnectionTimeout(builderForValue.build()); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder mergeConnectionTimeout(com.google.protobuf.Duration value) { + copyOnWrite(); + instance.mergeConnectionTimeout(value); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder clearConnectionTimeout() { copyOnWrite(); + instance.clearConnectionTimeout(); + return this; + } + + // @@protoc_insertion_point(builder_scope:viam.robot.v1.Tunnel) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new com.viam.robot.v1.Robot.Tunnel(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "bitField0_", + "port_", + "connectionTimeout_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u000b\u0002\u1009" + + "\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (com.viam.robot.v1.Robot.Tunnel.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:viam.robot.v1.Tunnel) + private static final com.viam.robot.v1.Robot.Tunnel DEFAULT_INSTANCE; + static { + Tunnel defaultInstance = new Tunnel(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + Tunnel.class, defaultInstance); + } + + public static com.viam.robot.v1.Robot.Tunnel getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + public interface FrameSystemConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:viam.robot.v1.FrameSystemConfig) com.google.protobuf.MessageLiteOrBuilder { @@ -17525,7 +18457,7 @@ public interface GetCloudMetadataResponseOrBuilder extends * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The robotPartId. */ @java.lang.Deprecated java.lang.String getRobotPartId(); @@ -17536,7 +18468,7 @@ public interface GetCloudMetadataResponseOrBuilder extends * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The bytes for robotPartId. */ @java.lang.Deprecated com.google.protobuf.ByteString @@ -17614,7 +18546,7 @@ private GetCloudMetadataResponse() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The robotPartId. */ @java.lang.Override @@ -17628,7 +18560,7 @@ private GetCloudMetadataResponse() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The bytes for robotPartId. */ @java.lang.Override @@ -17643,7 +18575,7 @@ private GetCloudMetadataResponse() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @param value The robotPartId to set. */ private void setRobotPartId( @@ -17659,7 +18591,7 @@ private void setRobotPartId( * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 */ private void clearRobotPartId() { @@ -17672,7 +18604,7 @@ private void clearRobotPartId() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @param value The bytes for robotPartId to set. */ private void setRobotPartIdBytes( @@ -17974,7 +18906,7 @@ private Builder() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The robotPartId. */ @java.lang.Override @@ -17988,7 +18920,7 @@ private Builder() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return The bytes for robotPartId. */ @java.lang.Override @@ -18003,7 +18935,7 @@ private Builder() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @param value The robotPartId to set. * @return This builder for chaining. */ @@ -18020,7 +18952,7 @@ private Builder() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @return This builder for chaining. */ @java.lang.Deprecated public Builder clearRobotPartId() { @@ -18035,7 +18967,7 @@ private Builder() { * * string robot_part_id = 1 [json_name = "robotPartId", deprecated = true]; * @deprecated viam.robot.v1.GetCloudMetadataResponse.robot_part_id is deprecated. - * See robot/v1/robot.proto;l=351 + * See robot/v1/robot.proto;l=367 * @param value The bytes for robotPartId to set. * @return This builder for chaining. */ diff --git a/core/sdk/src/main/gen/com/viam/robot/v1/RobotServiceGrpc.java b/core/sdk/src/main/gen/com/viam/robot/v1/RobotServiceGrpc.java index bdae3d50a..321e9c1f9 100644 --- a/core/sdk/src/main/gen/com/viam/robot/v1/RobotServiceGrpc.java +++ b/core/sdk/src/main/gen/com/viam/robot/v1/RobotServiceGrpc.java @@ -708,6 +708,36 @@ com.viam.robot.v1.Robot.TunnelResponse> getTunnelMethod() { return getTunnelMethod; } + private static volatile io.grpc.MethodDescriptor getListTunnelsMethod; + + @io.grpc.stub.annotations.RpcMethod( + fullMethodName = SERVICE_NAME + '/' + "ListTunnels", + requestType = com.viam.robot.v1.Robot.ListTunnelsRequest.class, + responseType = com.viam.robot.v1.Robot.ListTunnelsResponse.class, + methodType = io.grpc.MethodDescriptor.MethodType.UNARY) + public static io.grpc.MethodDescriptor getListTunnelsMethod() { + io.grpc.MethodDescriptor getListTunnelsMethod; + if ((getListTunnelsMethod = RobotServiceGrpc.getListTunnelsMethod) == null) { + synchronized (RobotServiceGrpc.class) { + if ((getListTunnelsMethod = RobotServiceGrpc.getListTunnelsMethod) == null) { + RobotServiceGrpc.getListTunnelsMethod = getListTunnelsMethod = + io.grpc.MethodDescriptor.newBuilder() + .setType(io.grpc.MethodDescriptor.MethodType.UNARY) + .setFullMethodName(generateFullMethodName(SERVICE_NAME, "ListTunnels")) + .setSampledToLocalTracing(true) + .setRequestMarshaller(io.grpc.protobuf.lite.ProtoLiteUtils.marshaller( + com.viam.robot.v1.Robot.ListTunnelsRequest.getDefaultInstance())) + .setResponseMarshaller(io.grpc.protobuf.lite.ProtoLiteUtils.marshaller( + com.viam.robot.v1.Robot.ListTunnelsResponse.getDefaultInstance())) + .build(); + } + } + } + return getListTunnelsMethod; + } + /** * Creates a new async stub that supports all call types for the service */ @@ -971,6 +1001,16 @@ default io.grpc.stub.StreamObserver tunne io.grpc.stub.StreamObserver responseObserver) { return io.grpc.stub.ServerCalls.asyncUnimplementedStreamingCall(getTunnelMethod(), responseObserver); } + + /** + *
+     * ListTunnels lists all available tunnels configured on the robot.
+     * 
+ */ + default void listTunnels(com.viam.robot.v1.Robot.ListTunnelsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ServerCalls.asyncUnimplementedUnaryCall(getListTunnelsMethod(), responseObserver); + } } /** @@ -1241,6 +1281,17 @@ public io.grpc.stub.StreamObserver tunnel return io.grpc.stub.ClientCalls.asyncBidiStreamingCall( getChannel().newCall(getTunnelMethod(), getCallOptions()), responseObserver); } + + /** + *
+     * ListTunnels lists all available tunnels configured on the robot.
+     * 
+ */ + public void listTunnels(com.viam.robot.v1.Robot.ListTunnelsRequest request, + io.grpc.stub.StreamObserver responseObserver) { + io.grpc.stub.ClientCalls.asyncUnaryCall( + getChannel().newCall(getListTunnelsMethod(), getCallOptions()), request, responseObserver); + } } /** @@ -1465,6 +1516,16 @@ public com.viam.robot.v1.Robot.GetVersionResponse getVersion(com.viam.robot.v1.R return io.grpc.stub.ClientCalls.blockingUnaryCall( getChannel(), getGetVersionMethod(), getCallOptions(), request); } + + /** + *
+     * ListTunnels lists all available tunnels configured on the robot.
+     * 
+ */ + public com.viam.robot.v1.Robot.ListTunnelsResponse listTunnels(com.viam.robot.v1.Robot.ListTunnelsRequest request) { + return io.grpc.stub.ClientCalls.blockingUnaryCall( + getChannel(), getListTunnelsMethod(), getCallOptions(), request); + } } /** @@ -1698,6 +1759,17 @@ public com.google.common.util.concurrent.ListenableFuture + * ListTunnels lists all available tunnels configured on the robot. + * + */ + public com.google.common.util.concurrent.ListenableFuture listTunnels( + com.viam.robot.v1.Robot.ListTunnelsRequest request) { + return io.grpc.stub.ClientCalls.futureUnaryCall( + getChannel().newCall(getListTunnelsMethod(), getCallOptions()), request); + } } private static final int METHODID_GET_OPERATIONS = 0; @@ -1722,7 +1794,8 @@ public com.google.common.util.concurrent.ListenableFuture implements io.grpc.stub.ServerCalls.UnaryMethod, @@ -1829,6 +1902,10 @@ public void invoke(Req request, io.grpc.stub.StreamObserver responseObserv serviceImpl.getVersion((com.viam.robot.v1.Robot.GetVersionRequest) request, (io.grpc.stub.StreamObserver) responseObserver); break; + case METHODID_LIST_TUNNELS: + serviceImpl.listTunnels((com.viam.robot.v1.Robot.ListTunnelsRequest) request, + (io.grpc.stub.StreamObserver) responseObserver); + break; default: throw new AssertionError(); } @@ -2011,6 +2088,13 @@ public static final io.grpc.ServerServiceDefinition bindService(AsyncService ser com.viam.robot.v1.Robot.TunnelRequest, com.viam.robot.v1.Robot.TunnelResponse>( service, METHODID_TUNNEL))) + .addMethod( + getListTunnelsMethod(), + io.grpc.stub.ServerCalls.asyncUnaryCall( + new MethodHandlers< + com.viam.robot.v1.Robot.ListTunnelsRequest, + com.viam.robot.v1.Robot.ListTunnelsResponse>( + service, METHODID_LIST_TUNNELS))) .build(); } @@ -2046,6 +2130,7 @@ public static io.grpc.ServiceDescriptor getServiceDescriptor() { .addMethod(getGetMachineStatusMethod()) .addMethod(getGetVersionMethod()) .addMethod(getTunnelMethod()) + .addMethod(getListTunnelsMethod()) .build(); } } diff --git a/core/sdk/src/main/gen/viam/app/data/v1/Data.java b/core/sdk/src/main/gen/viam/app/data/v1/Data.java index 4ed6c85ac..ee97f35ae 100644 --- a/core/sdk/src/main/gen/viam/app/data/v1/Data.java +++ b/core/sdk/src/main/gen/viam/app/data/v1/Data.java @@ -15105,6 +15105,31 @@ public interface BinaryDataByIDsRequestOrBuilder extends * repeated .viam.app.data.v1.BinaryID binary_ids = 3 [json_name = "binaryIds"]; */ int getBinaryIdsCount(); + + /** + * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"]; + * @return A list containing the binaryDataIds. + */ + java.util.List + getBinaryDataIdsList(); + /** + * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"]; + * @return The count of binaryDataIds. + */ + int getBinaryDataIdsCount(); + /** + * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"]; + * @param index The index of the element to return. + * @return The binaryDataIds at the given index. + */ + java.lang.String getBinaryDataIds(int index); + /** + * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"]; + * @param index The index of the element to return. + * @return The binaryDataIds at the given index. + */ + com.google.protobuf.ByteString + getBinaryDataIdsBytes(int index); } /** *
@@ -15120,6 +15145,7 @@ public  static final class BinaryDataByIDsRequest extends
       BinaryDataByIDsRequestOrBuilder {
     private BinaryDataByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
     }
     public static final int INCLUDE_BINARY_FIELD_NUMBER = 2;
     private boolean includeBinary_;
@@ -15241,6 +15267,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 4;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static viam.app.data.v1.Data.BinaryDataByIDsRequest parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -15472,6 +15591,98 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:viam.app.data.v1.BinaryDataByIDsRequest)
     }
     @java.lang.Override
@@ -15491,10 +15702,11 @@ protected final java.lang.Object dynamicMethod(
               "includeBinary_",
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0000\u0002\u0003\u0002\u0000\u0001\u0000\u0002\u0007\u0003\u001b" +
-                "";
+                "\u0000\u0003\u0000\u0000\u0002\u0004\u0003\u0000\u0002\u0000\u0002\u0007\u0003\u001b" +
+                "\u0004\u021a";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -17965,6 +18177,18 @@ public interface BinaryMetadataOrBuilder extends
      */
     com.google.protobuf.ByteString
         getDatasetIdsBytes(int index);
+
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
   }
   /**
    * 
@@ -17984,6 +18208,7 @@ private BinaryMetadata() {
       fileExt_ = "";
       uri_ = "";
       datasetIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+      binaryDataId_ = "";
     }
     private int bitField0_;
     public static final int ID_FIELD_NUMBER = 1;
@@ -18451,6 +18676,53 @@ private void addDatasetIdsBytes(
       datasetIds_.add(value.toStringUtf8());
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 10;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 10 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static viam.app.data.v1.Data.BinaryMetadata parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -19028,6 +19300,55 @@ public Builder addDatasetIdsBytes(
         return this;
       }
 
+      /**
+       * string binary_data_id = 10 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 10 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 10 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 10 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 10 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:viam.app.data.v1.BinaryMetadata)
     }
     @java.lang.Override
@@ -19054,11 +19375,12 @@ protected final java.lang.Object dynamicMethod(
               "uri_",
               "annotations_",
               "datasetIds_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\t\u0000\u0001\u0001\t\t\u0000\u0001\u0000\u0001\u0208\u0002\u1009\u0000\u0003" +
+                "\u0000\n\u0000\u0001\u0001\n\n\u0000\u0001\u0000\u0001\u0208\u0002\u1009\u0000\u0003" +
                 "\u1009\u0001\u0004\u1009\u0002\u0005\u0208\u0006\u0208\u0007\u0208\b\u1009\u0003" +
-                "\t\u021a";
+                "\t\u021a\n\u0208";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -20371,6 +20693,31 @@ public interface DeleteBinaryDataByIDsRequestOrBuilder extends
      * repeated .viam.app.data.v1.BinaryID binary_ids = 2 [json_name = "binaryIds"];
      */
     int getBinaryIdsCount();
+
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    java.util.List
+        getBinaryDataIdsList();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    int getBinaryDataIdsCount();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    java.lang.String getBinaryDataIds(int index);
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index);
   }
   /**
    * 
@@ -20386,6 +20733,7 @@ public  static final class DeleteBinaryDataByIDsRequest extends
       DeleteBinaryDataByIDsRequestOrBuilder {
     private DeleteBinaryDataByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
     }
     public static final int BINARY_IDS_FIELD_NUMBER = 2;
     private com.google.protobuf.Internal.ProtobufList binaryIds_;
@@ -20481,6 +20829,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 3;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static viam.app.data.v1.Data.DeleteBinaryDataByIDsRequest parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -20684,27 +21125,121 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
-      // @@protoc_insertion_point(builder_scope:viam.app.data.v1.DeleteBinaryDataByIDsRequest)
-    }
-    @java.lang.Override
-    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
-    protected final java.lang.Object dynamicMethod(
-        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
-        java.lang.Object arg0, java.lang.Object arg1) {
-      switch (method) {
-        case NEW_MUTABLE_INSTANCE: {
-          return new viam.app.data.v1.Data.DeleteBinaryDataByIDsRequest();
-        }
-        case NEW_BUILDER: {
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
+      // @@protoc_insertion_point(builder_scope:viam.app.data.v1.DeleteBinaryDataByIDsRequest)
+    }
+    @java.lang.Override
+    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
+    protected final java.lang.Object dynamicMethod(
+        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
+        java.lang.Object arg0, java.lang.Object arg1) {
+      switch (method) {
+        case NEW_MUTABLE_INSTANCE: {
+          return new viam.app.data.v1.Data.DeleteBinaryDataByIDsRequest();
+        }
+        case NEW_BUILDER: {
           return new Builder();
         }
         case BUILD_MESSAGE_INFO: {
             java.lang.Object[] objects = new java.lang.Object[] {
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0001\u0000\u0000\u0002\u0002\u0001\u0000\u0001\u0000\u0002\u001b";
+                "\u0000\u0002\u0000\u0000\u0002\u0003\u0002\u0000\u0002\u0000\u0002\u001b\u0003\u021a" +
+                "";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -21030,6 +21565,31 @@ public interface AddTagsToBinaryDataByIDsRequestOrBuilder extends
      */
     int getBinaryIdsCount();
 
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    java.util.List
+        getBinaryDataIdsList();
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    int getBinaryDataIdsCount();
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    java.lang.String getBinaryDataIds(int index);
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index);
+
     /**
      * repeated string tags = 2 [json_name = "tags"];
      * @return A list containing the tags.
@@ -21069,6 +21629,7 @@ public  static final class AddTagsToBinaryDataByIDsRequest extends
       AddTagsToBinaryDataByIDsRequestOrBuilder {
     private AddTagsToBinaryDataByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
       tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
     }
     public static final int BINARY_IDS_FIELD_NUMBER = 3;
@@ -21165,6 +21726,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 4;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static final int TAGS_FIELD_NUMBER = 2;
     private com.google.protobuf.Internal.ProtobufList tags_;
     /**
@@ -21461,6 +22115,98 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
       /**
        * repeated string tags = 2 [json_name = "tags"];
        * @return A list containing the tags.
@@ -21572,10 +22318,11 @@ protected final java.lang.Object dynamicMethod(
               "tags_",
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0000\u0002\u0003\u0002\u0000\u0002\u0000\u0002\u021a\u0003\u001b" +
-                "";
+                "\u0000\u0003\u0000\u0000\u0002\u0004\u0003\u0000\u0003\u0000\u0002\u021a\u0003\u001b" +
+                "\u0004\u021a";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -22524,6 +23271,31 @@ public interface RemoveTagsFromBinaryDataByIDsRequestOrBuilder extends
      */
     int getBinaryIdsCount();
 
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    java.util.List
+        getBinaryDataIdsList();
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    int getBinaryDataIdsCount();
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    java.lang.String getBinaryDataIds(int index);
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index);
+
     /**
      * repeated string tags = 2 [json_name = "tags"];
      * @return A list containing the tags.
@@ -22563,6 +23335,7 @@ public  static final class RemoveTagsFromBinaryDataByIDsRequest extends
       RemoveTagsFromBinaryDataByIDsRequestOrBuilder {
     private RemoveTagsFromBinaryDataByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
       tags_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
     }
     public static final int BINARY_IDS_FIELD_NUMBER = 3;
@@ -22659,6 +23432,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 4;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static final int TAGS_FIELD_NUMBER = 2;
     private com.google.protobuf.Internal.ProtobufList tags_;
     /**
@@ -22955,6 +23821,98 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 4 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
       /**
        * repeated string tags = 2 [json_name = "tags"];
        * @return A list containing the tags.
@@ -23066,10 +24024,11 @@ protected final java.lang.Object dynamicMethod(
               "tags_",
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0000\u0002\u0003\u0002\u0000\u0002\u0000\u0002\u021a\u0003\u001b" +
-                "";
+                "\u0000\u0003\u0000\u0000\u0002\u0004\u0003\u0000\u0003\u0000\u0002\u021a\u0003\u001b" +
+                "\u0004\u021a";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -24860,6 +25819,18 @@ public interface AddBoundingBoxToImageByIDRequestOrBuilder extends
      */
     viam.app.data.v1.Data.BinaryID getBinaryId();
 
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
+
     /**
      * string label = 2 [json_name = "label"];
      * @return The label.
@@ -24910,6 +25881,7 @@ public  static final class AddBoundingBoxToImageByIDRequest extends
       // @@protoc_insertion_point(message_implements:viam.app.data.v1.AddBoundingBoxToImageByIDRequest)
       AddBoundingBoxToImageByIDRequestOrBuilder {
     private AddBoundingBoxToImageByIDRequest() {
+      binaryDataId_ = "";
       label_ = "";
     }
     private int bitField0_;
@@ -24959,6 +25931,53 @@ private void mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
       bitField0_ = (bitField0_ & ~0x00000001);
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 8;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static final int LABEL_FIELD_NUMBER = 2;
     private java.lang.String label_;
     /**
@@ -25259,6 +26278,55 @@ public Builder mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
         return this;
       }
 
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       /**
        * string label = 2 [json_name = "label"];
        * @return The label.
@@ -25443,10 +26511,11 @@ protected final java.lang.Object dynamicMethod(
               "xMaxNormalized_",
               "yMaxNormalized_",
               "binaryId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0006\u0000\u0001\u0002\u0007\u0006\u0000\u0000\u0000\u0002\u0208\u0003\u0000" +
-                "\u0004\u0000\u0005\u0000\u0006\u0000\u0007\u1009\u0000";
+                "\u0000\u0007\u0000\u0001\u0002\b\u0007\u0000\u0000\u0000\u0002\u0208\u0003\u0000" +
+                "\u0004\u0000\u0005\u0000\u0006\u0000\u0007\u1009\u0000\b\u0208";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -25818,6 +26887,18 @@ public interface RemoveBoundingBoxFromImageByIDRequestOrBuilder extends
      */
     viam.app.data.v1.Data.BinaryID getBinaryId();
 
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
+
     /**
      * string bbox_id = 2 [json_name = "bboxId"];
      * @return The bboxId.
@@ -25843,6 +26924,7 @@ public  static final class RemoveBoundingBoxFromImageByIDRequest extends
       // @@protoc_insertion_point(message_implements:viam.app.data.v1.RemoveBoundingBoxFromImageByIDRequest)
       RemoveBoundingBoxFromImageByIDRequestOrBuilder {
     private RemoveBoundingBoxFromImageByIDRequest() {
+      binaryDataId_ = "";
       bboxId_ = "";
     }
     private int bitField0_;
@@ -25892,6 +26974,53 @@ private void mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
       bitField0_ = (bitField0_ & ~0x00000001);
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 4;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 4 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static final int BBOX_ID_FIELD_NUMBER = 2;
     private java.lang.String bboxId_;
     /**
@@ -26087,6 +27216,55 @@ public Builder mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
         return this;
       }
 
+      /**
+       * string binary_data_id = 4 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 4 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 4 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 4 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 4 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       /**
        * string bbox_id = 2 [json_name = "bboxId"];
        * @return The bboxId.
@@ -26155,10 +27333,11 @@ protected final java.lang.Object dynamicMethod(
               "bitField0_",
               "bboxId_",
               "binaryId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0001\u0002\u0003\u0002\u0000\u0000\u0000\u0002\u0208\u0003\u1009" +
-                "\u0000";
+                "\u0000\u0003\u0000\u0001\u0002\u0004\u0003\u0000\u0000\u0000\u0002\u0208\u0003\u1009" +
+                "\u0000\u0004\u0208";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -26410,6 +27589,18 @@ public interface UpdateBoundingBoxRequestOrBuilder extends
      */
     viam.app.data.v1.Data.BinaryID getBinaryId();
 
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
+
     /**
      * string bbox_id = 2 [json_name = "bboxId"];
      * @return The bboxId.
@@ -26496,6 +27687,7 @@ public  static final class UpdateBoundingBoxRequest extends
       // @@protoc_insertion_point(message_implements:viam.app.data.v1.UpdateBoundingBoxRequest)
       UpdateBoundingBoxRequestOrBuilder {
     private UpdateBoundingBoxRequest() {
+      binaryDataId_ = "";
       bboxId_ = "";
       label_ = "";
     }
@@ -26546,6 +27738,53 @@ private void mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
       bitField0_ = (bitField0_ & ~0x00000001);
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 8;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 8 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static final int BBOX_ID_FIELD_NUMBER = 2;
     private java.lang.String bboxId_;
     /**
@@ -26908,27 +28147,76 @@ public Builder setBinaryId(viam.app.data.v1.Data.BinaryID value) {
         return this;
         }
       /**
-       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       */
+      public Builder setBinaryId(
+          viam.app.data.v1.Data.BinaryID.Builder builderForValue) {
+        copyOnWrite();
+        instance.setBinaryId(builderForValue.build());
+        return this;
+      }
+      /**
+       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       */
+      public Builder mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
+        copyOnWrite();
+        instance.mergeBinaryId(value);
+        return this;
+      }
+      /**
+       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       */
+      public Builder clearBinaryId() {  copyOnWrite();
+        instance.clearBinaryId();
+        return this;
+      }
+
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
        */
-      public Builder setBinaryId(
-          viam.app.data.v1.Data.BinaryID.Builder builderForValue) {
+      public Builder setBinaryDataId(
+          java.lang.String value) {
         copyOnWrite();
-        instance.setBinaryId(builderForValue.build());
+        instance.setBinaryDataId(value);
         return this;
       }
       /**
-       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
        */
-      public Builder mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
+      public Builder clearBinaryDataId() {
         copyOnWrite();
-        instance.mergeBinaryId(value);
+        instance.clearBinaryDataId();
         return this;
       }
       /**
-       * .viam.app.data.v1.BinaryID binary_id = 1 [json_name = "binaryId"];
+       * string binary_data_id = 8 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
        */
-      public Builder clearBinaryId() {  copyOnWrite();
-        instance.clearBinaryId();
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
         return this;
       }
 
@@ -27206,11 +28494,12 @@ protected final java.lang.Object dynamicMethod(
               "yMinNormalized_",
               "xMaxNormalized_",
               "yMaxNormalized_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0007\u0000\u0001\u0001\u0007\u0007\u0000\u0000\u0000\u0001\u1009\u0000\u0002" +
-                "\u0208\u0003\u1208\u0001\u0004\u1000\u0002\u0005\u1000\u0003\u0006\u1000\u0004\u0007" +
-                "\u1000\u0005";
+                "\u0000\b\u0000\u0001\u0001\b\b\u0000\u0000\u0000\u0001\u1009\u0000\u0002\u0208\u0003" +
+                "\u1208\u0001\u0004\u1000\u0002\u0005\u1000\u0003\u0006\u1000\u0004\u0007\u1000\u0005" +
+                "\b\u0208";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -29547,6 +30836,31 @@ public interface AddBinaryDataToDatasetByIDsRequestOrBuilder extends
      */
     int getBinaryIdsCount();
 
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    java.util.List
+        getBinaryDataIdsList();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    int getBinaryDataIdsCount();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    java.lang.String getBinaryDataIds(int index);
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index);
+
     /**
      * string dataset_id = 2 [json_name = "datasetId"];
      * @return The datasetId.
@@ -29573,6 +30887,7 @@ public  static final class AddBinaryDataToDatasetByIDsRequest extends
       AddBinaryDataToDatasetByIDsRequestOrBuilder {
     private AddBinaryDataToDatasetByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
       datasetId_ = "";
     }
     public static final int BINARY_IDS_FIELD_NUMBER = 1;
@@ -29669,6 +30984,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 3;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static final int DATASET_ID_FIELD_NUMBER = 2;
     private java.lang.String datasetId_;
     /**
@@ -29919,6 +31327,98 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
       /**
        * string dataset_id = 2 [json_name = "datasetId"];
        * @return The datasetId.
@@ -29987,10 +31487,11 @@ protected final java.lang.Object dynamicMethod(
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
               "datasetId_",
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0001\u0000\u0001\u001b\u0002\u0208" +
-                "";
+                "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0002\u0000\u0001\u001b\u0002\u0208" +
+                "\u0003\u021a";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -30245,6 +31746,31 @@ public interface RemoveBinaryDataFromDatasetByIDsRequestOrBuilder extends
      */
     int getBinaryIdsCount();
 
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    java.util.List
+        getBinaryDataIdsList();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    int getBinaryDataIdsCount();
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    java.lang.String getBinaryDataIds(int index);
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index);
+
     /**
      * string dataset_id = 2 [json_name = "datasetId"];
      * @return The datasetId.
@@ -30271,6 +31797,7 @@ public  static final class RemoveBinaryDataFromDatasetByIDsRequest extends
       RemoveBinaryDataFromDatasetByIDsRequestOrBuilder {
     private RemoveBinaryDataFromDatasetByIDsRequest() {
       binaryIds_ = emptyProtobufList();
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
       datasetId_ = "";
     }
     public static final int BINARY_IDS_FIELD_NUMBER = 1;
@@ -30367,6 +31894,99 @@ private void removeBinaryIds(int index) {
       binaryIds_.remove(index);
     }
 
+    public static final int BINARY_DATA_IDS_FIELD_NUMBER = 3;
+    private com.google.protobuf.Internal.ProtobufList binaryDataIds_;
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return A list containing the binaryDataIds.
+     */
+    @java.lang.Override
+    public java.util.List getBinaryDataIdsList() {
+      return binaryDataIds_;
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @return The count of binaryDataIds.
+     */
+    @java.lang.Override
+    public int getBinaryDataIdsCount() {
+      return binaryDataIds_.size();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the element to return.
+     * @return The binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataIds(int index) {
+      return binaryDataIds_.get(index);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index of the value to return.
+     * @return The bytes of the binaryDataIds at the given index.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdsBytes(int index) {
+      return com.google.protobuf.ByteString.copyFromUtf8(
+          binaryDataIds_.get(index));
+    }
+    private void ensureBinaryDataIdsIsMutable() {
+      com.google.protobuf.Internal.ProtobufList tmp =
+          binaryDataIds_;  if (!tmp.isModifiable()) {
+        binaryDataIds_ =
+            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
+       }
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param index The index to set the value at.
+     * @param value The binaryDataIds to set.
+     */
+    private void setBinaryDataIds(
+        int index, java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.set(index, value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The binaryDataIds to add.
+     */
+    private void addBinaryDataIds(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param values The binaryDataIds to add.
+     */
+    private void addAllBinaryDataIds(
+        java.lang.Iterable values) {
+      ensureBinaryDataIdsIsMutable();
+      com.google.protobuf.AbstractMessageLite.addAll(
+          values, binaryDataIds_);
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     */
+    private void clearBinaryDataIds() {
+      binaryDataIds_ = com.google.protobuf.GeneratedMessageLite.emptyProtobufList();
+    }
+    /**
+     * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+     * @param value The bytes of the binaryDataIds to add.
+     */
+    private void addBinaryDataIdsBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      ensureBinaryDataIdsIsMutable();
+      binaryDataIds_.add(value.toStringUtf8());
+    }
+
     public static final int DATASET_ID_FIELD_NUMBER = 2;
     private java.lang.String datasetId_;
     /**
@@ -30617,6 +32237,98 @@ public Builder removeBinaryIds(int index) {
         return this;
       }
 
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return A list containing the binaryDataIds.
+       */
+      @java.lang.Override
+      public java.util.List
+          getBinaryDataIdsList() {
+        return java.util.Collections.unmodifiableList(
+            instance.getBinaryDataIdsList());
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return The count of binaryDataIds.
+       */
+      @java.lang.Override
+      public int getBinaryDataIdsCount() {
+        return instance.getBinaryDataIdsCount();
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the element to return.
+       * @return The binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataIds(int index) {
+        return instance.getBinaryDataIds(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index of the value to return.
+       * @return The bytes of the binaryDataIds at the given index.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdsBytes(int index) {
+        return instance.getBinaryDataIdsBytes(index);
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param index The index to set the value at.
+       * @param value The binaryDataIds to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIds(
+          int index, java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataIds(index, value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIds(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.addBinaryDataIds(value);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param values The binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addAllBinaryDataIds(
+          java.lang.Iterable values) {
+        copyOnWrite();
+        instance.addAllBinaryDataIds(values);
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataIds() {
+        copyOnWrite();
+        instance.clearBinaryDataIds();
+        return this;
+      }
+      /**
+       * repeated string binary_data_ids = 3 [json_name = "binaryDataIds"];
+       * @param value The bytes of the binaryDataIds to add.
+       * @return This builder for chaining.
+       */
+      public Builder addBinaryDataIdsBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.addBinaryDataIdsBytes(value);
+        return this;
+      }
+
       /**
        * string dataset_id = 2 [json_name = "datasetId"];
        * @return The datasetId.
@@ -30685,10 +32397,11 @@ protected final java.lang.Object dynamicMethod(
               "binaryIds_",
               viam.app.data.v1.Data.BinaryID.class,
               "datasetId_",
+              "binaryDataIds_",
             };
             java.lang.String info =
-                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0001\u0000\u0001\u001b\u0002\u0208" +
-                "";
+                "\u0000\u0003\u0000\u0000\u0001\u0003\u0003\u0000\u0002\u0000\u0001\u001b\u0002\u0208" +
+                "\u0003\u021a";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
diff --git a/core/sdk/src/main/gen/viam/app/datasync/v1/DataSync.java b/core/sdk/src/main/gen/viam/app/datasync/v1/DataSync.java
index 50ac86200..fd8f30a23 100644
--- a/core/sdk/src/main/gen/viam/app/datasync/v1/DataSync.java
+++ b/core/sdk/src/main/gen/viam/app/datasync/v1/DataSync.java
@@ -756,6 +756,18 @@ public interface DataCaptureUploadResponseOrBuilder extends
      */
     com.google.protobuf.ByteString
         getFileIdBytes();
+
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
   }
   /**
    * 
@@ -771,6 +783,7 @@ public  static final class DataCaptureUploadResponse extends
       DataCaptureUploadResponseOrBuilder {
     private DataCaptureUploadResponse() {
       fileId_ = "";
+      binaryDataId_ = "";
     }
     public static final int FILE_ID_FIELD_NUMBER = 1;
     private java.lang.String fileId_;
@@ -819,6 +832,53 @@ private void setFileIdBytes(
 
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 2;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static viam.app.datasync.v1.DataSync.DataCaptureUploadResponse parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -969,6 +1029,55 @@ public Builder setFileIdBytes(
         return this;
       }
 
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:viam.app.datasync.v1.DataCaptureUploadResponse)
     }
     @java.lang.Override
@@ -986,9 +1095,11 @@ protected final java.lang.Object dynamicMethod(
         case BUILD_MESSAGE_INFO: {
             java.lang.Object[] objects = new java.lang.Object[] {
               "fileId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
+                "";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -1532,6 +1643,18 @@ public interface FileUploadResponseOrBuilder extends
      */
     com.google.protobuf.ByteString
         getFileIdBytes();
+
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
   }
   /**
    * 
@@ -1547,6 +1670,7 @@ public  static final class FileUploadResponse extends
       FileUploadResponseOrBuilder {
     private FileUploadResponse() {
       fileId_ = "";
+      binaryDataId_ = "";
     }
     public static final int FILE_ID_FIELD_NUMBER = 1;
     private java.lang.String fileId_;
@@ -1595,6 +1719,53 @@ private void setFileIdBytes(
 
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 2;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static viam.app.datasync.v1.DataSync.FileUploadResponse parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -1745,6 +1916,55 @@ public Builder setFileIdBytes(
         return this;
       }
 
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:viam.app.datasync.v1.FileUploadResponse)
     }
     @java.lang.Override
@@ -1762,9 +1982,11 @@ protected final java.lang.Object dynamicMethod(
         case BUILD_MESSAGE_INFO: {
             java.lang.Object[] objects = new java.lang.Object[] {
               "fileId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
+                "";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
@@ -2284,6 +2506,18 @@ public interface StreamingDataCaptureUploadResponseOrBuilder extends
      */
     com.google.protobuf.ByteString
         getFileIdBytes();
+
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
   }
   /**
    * 
@@ -2299,6 +2533,7 @@ public  static final class StreamingDataCaptureUploadResponse extends
       StreamingDataCaptureUploadResponseOrBuilder {
     private StreamingDataCaptureUploadResponse() {
       fileId_ = "";
+      binaryDataId_ = "";
     }
     public static final int FILE_ID_FIELD_NUMBER = 1;
     private java.lang.String fileId_;
@@ -2347,6 +2582,53 @@ private void setFileIdBytes(
 
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 2;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 2 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static viam.app.datasync.v1.DataSync.StreamingDataCaptureUploadResponse parseFrom(
         java.nio.ByteBuffer data)
         throws com.google.protobuf.InvalidProtocolBufferException {
@@ -2497,6 +2779,55 @@ public Builder setFileIdBytes(
         return this;
       }
 
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 2 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       // @@protoc_insertion_point(builder_scope:viam.app.datasync.v1.StreamingDataCaptureUploadResponse)
     }
     @java.lang.Override
@@ -2514,9 +2845,11 @@ protected final java.lang.Object dynamicMethod(
         case BUILD_MESSAGE_INFO: {
             java.lang.Object[] objects = new java.lang.Object[] {
               "fileId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
+                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
+                "";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
diff --git a/core/sdk/src/main/gen/viam/app/mlinference/v1/MlInference.java b/core/sdk/src/main/gen/viam/app/mlinference/v1/MlInference.java
index 678ad7147..bda6d5a2d 100644
--- a/core/sdk/src/main/gen/viam/app/mlinference/v1/MlInference.java
+++ b/core/sdk/src/main/gen/viam/app/mlinference/v1/MlInference.java
@@ -61,6 +61,18 @@ public interface GetInferenceRequestOrBuilder extends
      */
     viam.app.data.v1.Data.BinaryID getBinaryId();
 
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    java.lang.String getBinaryDataId();
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    com.google.protobuf.ByteString
+        getBinaryDataIdBytes();
+
     /**
      * string organization_id = 4 [json_name = "organizationId"];
      * @return The organizationId.
@@ -84,6 +96,7 @@ public  static final class GetInferenceRequest extends
     private GetInferenceRequest() {
       registryItemId_ = "";
       registryItemVersion_ = "";
+      binaryDataId_ = "";
       organizationId_ = "";
     }
     private int bitField0_;
@@ -257,6 +270,53 @@ private void mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
       bitField0_ = (bitField0_ & ~0x00000001);
     }
 
+    public static final int BINARY_DATA_ID_FIELD_NUMBER = 5;
+    private java.lang.String binaryDataId_;
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @return The binaryDataId.
+     */
+    @java.lang.Override
+    public java.lang.String getBinaryDataId() {
+      return binaryDataId_;
+    }
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @return The bytes for binaryDataId.
+     */
+    @java.lang.Override
+    public com.google.protobuf.ByteString
+        getBinaryDataIdBytes() {
+      return com.google.protobuf.ByteString.copyFromUtf8(binaryDataId_);
+    }
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @param value The binaryDataId to set.
+     */
+    private void setBinaryDataId(
+        java.lang.String value) {
+      java.lang.Class valueClass = value.getClass();
+  
+      binaryDataId_ = value;
+    }
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     */
+    private void clearBinaryDataId() {
+
+      binaryDataId_ = getDefaultInstance().getBinaryDataId();
+    }
+    /**
+     * string binary_data_id = 5 [json_name = "binaryDataId"];
+     * @param value The bytes for binaryDataId to set.
+     */
+    private void setBinaryDataIdBytes(
+        com.google.protobuf.ByteString value) {
+      checkByteStringIsUtf8(value);
+      binaryDataId_ = value.toStringUtf8();
+
+    }
+
     public static final int ORGANIZATION_ID_FIELD_NUMBER = 4;
     private java.lang.String organizationId_;
     /**
@@ -576,6 +636,55 @@ public Builder mergeBinaryId(viam.app.data.v1.Data.BinaryID value) {
         return this;
       }
 
+      /**
+       * string binary_data_id = 5 [json_name = "binaryDataId"];
+       * @return The binaryDataId.
+       */
+      @java.lang.Override
+      public java.lang.String getBinaryDataId() {
+        return instance.getBinaryDataId();
+      }
+      /**
+       * string binary_data_id = 5 [json_name = "binaryDataId"];
+       * @return The bytes for binaryDataId.
+       */
+      @java.lang.Override
+      public com.google.protobuf.ByteString
+          getBinaryDataIdBytes() {
+        return instance.getBinaryDataIdBytes();
+      }
+      /**
+       * string binary_data_id = 5 [json_name = "binaryDataId"];
+       * @param value The binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataId(
+          java.lang.String value) {
+        copyOnWrite();
+        instance.setBinaryDataId(value);
+        return this;
+      }
+      /**
+       * string binary_data_id = 5 [json_name = "binaryDataId"];
+       * @return This builder for chaining.
+       */
+      public Builder clearBinaryDataId() {
+        copyOnWrite();
+        instance.clearBinaryDataId();
+        return this;
+      }
+      /**
+       * string binary_data_id = 5 [json_name = "binaryDataId"];
+       * @param value The bytes for binaryDataId to set.
+       * @return This builder for chaining.
+       */
+      public Builder setBinaryDataIdBytes(
+          com.google.protobuf.ByteString value) {
+        copyOnWrite();
+        instance.setBinaryDataIdBytes(value);
+        return this;
+      }
+
       /**
        * string organization_id = 4 [json_name = "organizationId"];
        * @return The organizationId.
@@ -646,10 +755,11 @@ protected final java.lang.Object dynamicMethod(
               "registryItemVersion_",
               "binaryId_",
               "organizationId_",
+              "binaryDataId_",
             };
             java.lang.String info =
-                "\u0000\u0004\u0000\u0001\u0001\u0004\u0004\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
-                "\u0003\u1009\u0000\u0004\u0208";
+                "\u0000\u0005\u0000\u0001\u0001\u0005\u0005\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
+                "\u0003\u1009\u0000\u0004\u0208\u0005\u0208";
             return newMessageInfo(DEFAULT_INSTANCE, info, objects);
         }
         // fall through
diff --git a/core/sdk/src/main/gen/viam/app/v1/App.java b/core/sdk/src/main/gen/viam/app/v1/App.java
index 7f57b952a..309d01472 100644
--- a/core/sdk/src/main/gen/viam/app/v1/App.java
+++ b/core/sdk/src/main/gen/viam/app/v1/App.java
@@ -24710,6 +24710,25 @@ public interface LocationOrBuilder extends
      * @return The config.
      */
     viam.app.v1.App.StorageConfig getConfig();
+
+    /**
+     * 
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + * @return Whether the primaryOrgIdentity field is set. + */ + boolean hasPrimaryOrgIdentity(); + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + * @return The primaryOrgIdentity. + */ + viam.app.v1.App.OrganizationIdentity getPrimaryOrgIdentity(); } /** * Protobuf type {@code viam.app.v1.Location} @@ -25298,6 +25317,72 @@ private void mergeConfig(viam.app.v1.App.StorageConfig value) { bitField0_ = (bitField0_ & ~0x00000004); } + public static final int PRIMARY_ORG_IDENTITY_FIELD_NUMBER = 9; + private viam.app.v1.App.OrganizationIdentity primaryOrgIdentity_; + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + @java.lang.Override + public boolean hasPrimaryOrgIdentity() { + return ((bitField0_ & 0x00000008) != 0); + } + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + @java.lang.Override + public viam.app.v1.App.OrganizationIdentity getPrimaryOrgIdentity() { + return primaryOrgIdentity_ == null ? viam.app.v1.App.OrganizationIdentity.getDefaultInstance() : primaryOrgIdentity_; + } + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + private void setPrimaryOrgIdentity(viam.app.v1.App.OrganizationIdentity value) { + value.getClass(); + primaryOrgIdentity_ = value; + bitField0_ |= 0x00000008; + } + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergePrimaryOrgIdentity(viam.app.v1.App.OrganizationIdentity value) { + value.getClass(); + if (primaryOrgIdentity_ != null && + primaryOrgIdentity_ != viam.app.v1.App.OrganizationIdentity.getDefaultInstance()) { + primaryOrgIdentity_ = + viam.app.v1.App.OrganizationIdentity.newBuilder(primaryOrgIdentity_).mergeFrom(value).buildPartial(); + } else { + primaryOrgIdentity_ = value; + } + bitField0_ |= 0x00000008; + } + /** + *
+     * The organization that is the primary owner of the location.
+     * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + private void clearPrimaryOrgIdentity() { primaryOrgIdentity_ = null; + bitField0_ = (bitField0_ & ~0x00000008); + } + public static viam.app.v1.App.Location parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { @@ -26002,6 +26087,77 @@ public Builder mergeConfig(viam.app.v1.App.StorageConfig value) { return this; } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + @java.lang.Override + public boolean hasPrimaryOrgIdentity() { + return instance.hasPrimaryOrgIdentity(); + } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + @java.lang.Override + public viam.app.v1.App.OrganizationIdentity getPrimaryOrgIdentity() { + return instance.getPrimaryOrgIdentity(); + } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + public Builder setPrimaryOrgIdentity(viam.app.v1.App.OrganizationIdentity value) { + copyOnWrite(); + instance.setPrimaryOrgIdentity(value); + return this; + } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + public Builder setPrimaryOrgIdentity( + viam.app.v1.App.OrganizationIdentity.Builder builderForValue) { + copyOnWrite(); + instance.setPrimaryOrgIdentity(builderForValue.build()); + return this; + } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + public Builder mergePrimaryOrgIdentity(viam.app.v1.App.OrganizationIdentity value) { + copyOnWrite(); + instance.mergePrimaryOrgIdentity(value); + return this; + } + /** + *
+       * The organization that is the primary owner of the location.
+       * 
+ * + * optional .viam.app.v1.OrganizationIdentity primary_org_identity = 9 [json_name = "primaryOrgIdentity"]; + */ + public Builder clearPrimaryOrgIdentity() { copyOnWrite(); + instance.clearPrimaryOrgIdentity(); + return this; + } + // @@protoc_insertion_point(builder_scope:viam.app.v1.Location) } @java.lang.Override @@ -26028,10 +26184,12 @@ protected final java.lang.Object dynamicMethod( viam.app.v1.App.LocationOrganization.class, "robotCount_", "config_", + "primaryOrgIdentity_", }; java.lang.String info = - "\u0000\b\u0000\u0001\u0001\b\b\u0000\u0001\u0000\u0001\u0208\u0002\u0208\u0003\u1009" + - "\u0001\u0004\u0208\u0005\u1009\u0000\u0006\u001b\u0007\u0004\b\u1009\u0002"; + "\u0000\t\u0000\u0001\u0001\t\t\u0000\u0001\u0000\u0001\u0208\u0002\u0208\u0003\u1009" + + "\u0001\u0004\u0208\u0005\u1009\u0000\u0006\u001b\u0007\u0004\b\u1009\u0002\t\u1009" + + "\u0003"; return newMessageInfo(DEFAULT_INSTANCE, info, objects); } // fall through @@ -39871,7 +40029,7 @@ public interface GetRobotPartLogsRequestOrBuilder extends * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @return The errorsOnly. */ @java.lang.Deprecated boolean getErrorsOnly(); @@ -40073,7 +40231,7 @@ private void setIdBytes( * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @return The errorsOnly. */ @java.lang.Override @@ -40087,7 +40245,7 @@ private void setIdBytes( * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @param value The errorsOnly to set. */ private void setErrorsOnly(boolean value) { @@ -40101,7 +40259,7 @@ private void setErrorsOnly(boolean value) { * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 */ private void clearErrorsOnly() { @@ -40681,7 +40839,7 @@ public Builder setIdBytes( * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @return The errorsOnly. */ @java.lang.Override @@ -40695,7 +40853,7 @@ public Builder setIdBytes( * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @param value The errorsOnly to set. * @return This builder for chaining. */ @@ -40711,7 +40869,7 @@ public Builder setIdBytes( * * bool errors_only = 2 [json_name = "errorsOnly", deprecated = true]; * @deprecated viam.app.v1.GetRobotPartLogsRequest.errors_only is deprecated. - * See app/v1/app.proto;l=788 + * See app/v1/app.proto;l=790 * @return This builder for chaining. */ @java.lang.Deprecated public Builder clearErrorsOnly() { diff --git a/core/sdk/src/main/gen/viam/app/v1/Robot.java b/core/sdk/src/main/gen/viam/app/v1/Robot.java index ba38bb124..8f2676c9f 100644 --- a/core/sdk/src/main/gen/viam/app/v1/Robot.java +++ b/core/sdk/src/main/gen/viam/app/v1/Robot.java @@ -10991,6 +10991,20 @@ public interface NetworkConfigOrBuilder extends * @return The sessions. */ viam.app.v1.Robot.SessionsConfig getSessions(); + + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + java.util.List + getTrafficTunnelEndpointsList(); + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + viam.app.v1.Robot.TrafficTunnelEndpoint getTrafficTunnelEndpoints(int index); + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + int getTrafficTunnelEndpointsCount(); } /** * Protobuf type {@code viam.app.v1.NetworkConfig} @@ -11005,6 +11019,7 @@ private NetworkConfig() { bindAddress_ = ""; tlsCertFile_ = ""; tlsKeyFile_ = ""; + trafficTunnelEndpoints_ = emptyProtobufList(); } private int bitField0_; public static final int FQDN_FIELD_NUMBER = 1; @@ -11241,6 +11256,100 @@ private void mergeSessions(viam.app.v1.Robot.SessionsConfig value) { bitField0_ = (bitField0_ & ~0x00000001); } + public static final int TRAFFIC_TUNNEL_ENDPOINTS_FIELD_NUMBER = 6; + private com.google.protobuf.Internal.ProtobufList trafficTunnelEndpoints_; + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public java.util.List getTrafficTunnelEndpointsList() { + return trafficTunnelEndpoints_; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public java.util.List + getTrafficTunnelEndpointsOrBuilderList() { + return trafficTunnelEndpoints_; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public int getTrafficTunnelEndpointsCount() { + return trafficTunnelEndpoints_.size(); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public viam.app.v1.Robot.TrafficTunnelEndpoint getTrafficTunnelEndpoints(int index) { + return trafficTunnelEndpoints_.get(index); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public viam.app.v1.Robot.TrafficTunnelEndpointOrBuilder getTrafficTunnelEndpointsOrBuilder( + int index) { + return trafficTunnelEndpoints_.get(index); + } + private void ensureTrafficTunnelEndpointsIsMutable() { + com.google.protobuf.Internal.ProtobufList tmp = trafficTunnelEndpoints_; + if (!tmp.isModifiable()) { + trafficTunnelEndpoints_ = + com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp); + } + } + + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void setTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint value) { + value.getClass(); + ensureTrafficTunnelEndpointsIsMutable(); + trafficTunnelEndpoints_.set(index, value); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void addTrafficTunnelEndpoints(viam.app.v1.Robot.TrafficTunnelEndpoint value) { + value.getClass(); + ensureTrafficTunnelEndpointsIsMutable(); + trafficTunnelEndpoints_.add(value); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void addTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint value) { + value.getClass(); + ensureTrafficTunnelEndpointsIsMutable(); + trafficTunnelEndpoints_.add(index, value); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void addAllTrafficTunnelEndpoints( + java.lang.Iterable values) { + ensureTrafficTunnelEndpointsIsMutable(); + com.google.protobuf.AbstractMessageLite.addAll( + values, trafficTunnelEndpoints_); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void clearTrafficTunnelEndpoints() { + trafficTunnelEndpoints_ = emptyProtobufList(); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + private void removeTrafficTunnelEndpoints(int index) { + ensureTrafficTunnelEndpointsIsMutable(); + trafficTunnelEndpoints_.remove(index); + } + public static viam.app.v1.Robot.NetworkConfig parseFrom( java.nio.ByteBuffer data) throws com.google.protobuf.InvalidProtocolBufferException { @@ -11581,6 +11690,108 @@ public Builder mergeSessions(viam.app.v1.Robot.SessionsConfig value) { return this; } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public java.util.List getTrafficTunnelEndpointsList() { + return java.util.Collections.unmodifiableList( + instance.getTrafficTunnelEndpointsList()); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public int getTrafficTunnelEndpointsCount() { + return instance.getTrafficTunnelEndpointsCount(); + }/** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + @java.lang.Override + public viam.app.v1.Robot.TrafficTunnelEndpoint getTrafficTunnelEndpoints(int index) { + return instance.getTrafficTunnelEndpoints(index); + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder setTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint value) { + copyOnWrite(); + instance.setTrafficTunnelEndpoints(index, value); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder setTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint.Builder builderForValue) { + copyOnWrite(); + instance.setTrafficTunnelEndpoints(index, + builderForValue.build()); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder addTrafficTunnelEndpoints(viam.app.v1.Robot.TrafficTunnelEndpoint value) { + copyOnWrite(); + instance.addTrafficTunnelEndpoints(value); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder addTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint value) { + copyOnWrite(); + instance.addTrafficTunnelEndpoints(index, value); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder addTrafficTunnelEndpoints( + viam.app.v1.Robot.TrafficTunnelEndpoint.Builder builderForValue) { + copyOnWrite(); + instance.addTrafficTunnelEndpoints(builderForValue.build()); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder addTrafficTunnelEndpoints( + int index, viam.app.v1.Robot.TrafficTunnelEndpoint.Builder builderForValue) { + copyOnWrite(); + instance.addTrafficTunnelEndpoints(index, + builderForValue.build()); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder addAllTrafficTunnelEndpoints( + java.lang.Iterable values) { + copyOnWrite(); + instance.addAllTrafficTunnelEndpoints(values); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder clearTrafficTunnelEndpoints() { + copyOnWrite(); + instance.clearTrafficTunnelEndpoints(); + return this; + } + /** + * repeated .viam.app.v1.TrafficTunnelEndpoint traffic_tunnel_endpoints = 6 [json_name = "trafficTunnelEndpoints"]; + */ + public Builder removeTrafficTunnelEndpoints(int index) { + copyOnWrite(); + instance.removeTrafficTunnelEndpoints(index); + return this; + } + // @@protoc_insertion_point(builder_scope:viam.app.v1.NetworkConfig) } @java.lang.Override @@ -11603,10 +11814,12 @@ protected final java.lang.Object dynamicMethod( "tlsCertFile_", "tlsKeyFile_", "sessions_", + "trafficTunnelEndpoints_", + viam.app.v1.Robot.TrafficTunnelEndpoint.class, }; java.lang.String info = - "\u0000\u0005\u0000\u0001\u0001\u0005\u0005\u0000\u0000\u0000\u0001\u0208\u0002\u0208" + - "\u0003\u0208\u0004\u0208\u0005\u1009\u0000"; + "\u0000\u0006\u0000\u0001\u0001\u0006\u0006\u0000\u0001\u0000\u0001\u0208\u0002\u0208" + + "\u0003\u0208\u0004\u0208\u0005\u1009\u0000\u0006\u001b"; return newMessageInfo(DEFAULT_INSTANCE, info, objects); } // fall through @@ -11952,6 +12165,359 @@ public static com.google.protobuf.Parser parser() { } } + public interface TrafficTunnelEndpointOrBuilder extends + // @@protoc_insertion_point(interface_extends:viam.app.v1.TrafficTunnelEndpoint) + com.google.protobuf.MessageLiteOrBuilder { + + /** + * int32 port = 1 [json_name = "port"]; + * @return The port. + */ + int getPort(); + + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + * @return Whether the connectionTimeout field is set. + */ + boolean hasConnectionTimeout(); + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + * @return The connectionTimeout. + */ + com.google.protobuf.Duration getConnectionTimeout(); + } + /** + * Protobuf type {@code viam.app.v1.TrafficTunnelEndpoint} + */ + public static final class TrafficTunnelEndpoint extends + com.google.protobuf.GeneratedMessageLite< + TrafficTunnelEndpoint, TrafficTunnelEndpoint.Builder> implements + // @@protoc_insertion_point(message_implements:viam.app.v1.TrafficTunnelEndpoint) + TrafficTunnelEndpointOrBuilder { + private TrafficTunnelEndpoint() { + } + private int bitField0_; + public static final int PORT_FIELD_NUMBER = 1; + private int port_; + /** + * int32 port = 1 [json_name = "port"]; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return port_; + } + /** + * int32 port = 1 [json_name = "port"]; + * @param value The port to set. + */ + private void setPort(int value) { + + port_ = value; + } + /** + * int32 port = 1 [json_name = "port"]; + */ + private void clearPort() { + + port_ = 0; + } + + public static final int CONNECTION_TIMEOUT_FIELD_NUMBER = 2; + private com.google.protobuf.Duration connectionTimeout_; + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public boolean hasConnectionTimeout() { + return ((bitField0_ & 0x00000001) != 0); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public com.google.protobuf.Duration getConnectionTimeout() { + return connectionTimeout_ == null ? com.google.protobuf.Duration.getDefaultInstance() : connectionTimeout_; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + private void setConnectionTimeout(com.google.protobuf.Duration value) { + value.getClass(); + connectionTimeout_ = value; + bitField0_ |= 0x00000001; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.SuppressWarnings({"ReferenceEquality"}) + private void mergeConnectionTimeout(com.google.protobuf.Duration value) { + value.getClass(); + if (connectionTimeout_ != null && + connectionTimeout_ != com.google.protobuf.Duration.getDefaultInstance()) { + connectionTimeout_ = + com.google.protobuf.Duration.newBuilder(connectionTimeout_).mergeFrom(value).buildPartial(); + } else { + connectionTimeout_ = value; + } + bitField0_ |= 0x00000001; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + private void clearConnectionTimeout() { connectionTimeout_ = null; + bitField0_ = (bitField0_ & ~0x00000001); + } + + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + java.nio.ByteBuffer data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + java.nio.ByteBuffer data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + com.google.protobuf.ByteString data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + com.google.protobuf.ByteString data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom(byte[] data) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + byte[] data, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws com.google.protobuf.InvalidProtocolBufferException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, data, extensionRegistry); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom(java.io.InputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseDelimitedFrom(java.io.InputStream input) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input); + } + + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseDelimitedFrom( + java.io.InputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + com.google.protobuf.CodedInputStream input) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input); + } + public static viam.app.v1.Robot.TrafficTunnelEndpoint parseFrom( + com.google.protobuf.CodedInputStream input, + com.google.protobuf.ExtensionRegistryLite extensionRegistry) + throws java.io.IOException { + return com.google.protobuf.GeneratedMessageLite.parseFrom( + DEFAULT_INSTANCE, input, extensionRegistry); + } + + public static Builder newBuilder() { + return (Builder) DEFAULT_INSTANCE.createBuilder(); + } + public static Builder newBuilder(viam.app.v1.Robot.TrafficTunnelEndpoint prototype) { + return DEFAULT_INSTANCE.createBuilder(prototype); + } + + /** + * Protobuf type {@code viam.app.v1.TrafficTunnelEndpoint} + */ + public static final class Builder extends + com.google.protobuf.GeneratedMessageLite.Builder< + viam.app.v1.Robot.TrafficTunnelEndpoint, Builder> implements + // @@protoc_insertion_point(builder_implements:viam.app.v1.TrafficTunnelEndpoint) + viam.app.v1.Robot.TrafficTunnelEndpointOrBuilder { + // Construct using viam.app.v1.Robot.TrafficTunnelEndpoint.newBuilder() + private Builder() { + super(DEFAULT_INSTANCE); + } + + + /** + * int32 port = 1 [json_name = "port"]; + * @return The port. + */ + @java.lang.Override + public int getPort() { + return instance.getPort(); + } + /** + * int32 port = 1 [json_name = "port"]; + * @param value The port to set. + * @return This builder for chaining. + */ + public Builder setPort(int value) { + copyOnWrite(); + instance.setPort(value); + return this; + } + /** + * int32 port = 1 [json_name = "port"]; + * @return This builder for chaining. + */ + public Builder clearPort() { + copyOnWrite(); + instance.clearPort(); + return this; + } + + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public boolean hasConnectionTimeout() { + return instance.hasConnectionTimeout(); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + @java.lang.Override + public com.google.protobuf.Duration getConnectionTimeout() { + return instance.getConnectionTimeout(); + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder setConnectionTimeout(com.google.protobuf.Duration value) { + copyOnWrite(); + instance.setConnectionTimeout(value); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder setConnectionTimeout( + com.google.protobuf.Duration.Builder builderForValue) { + copyOnWrite(); + instance.setConnectionTimeout(builderForValue.build()); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder mergeConnectionTimeout(com.google.protobuf.Duration value) { + copyOnWrite(); + instance.mergeConnectionTimeout(value); + return this; + } + /** + * .google.protobuf.Duration connection_timeout = 2 [json_name = "connectionTimeout"]; + */ + public Builder clearConnectionTimeout() { copyOnWrite(); + instance.clearConnectionTimeout(); + return this; + } + + // @@protoc_insertion_point(builder_scope:viam.app.v1.TrafficTunnelEndpoint) + } + @java.lang.Override + @java.lang.SuppressWarnings({"unchecked", "fallthrough"}) + protected final java.lang.Object dynamicMethod( + com.google.protobuf.GeneratedMessageLite.MethodToInvoke method, + java.lang.Object arg0, java.lang.Object arg1) { + switch (method) { + case NEW_MUTABLE_INSTANCE: { + return new viam.app.v1.Robot.TrafficTunnelEndpoint(); + } + case NEW_BUILDER: { + return new Builder(); + } + case BUILD_MESSAGE_INFO: { + java.lang.Object[] objects = new java.lang.Object[] { + "bitField0_", + "port_", + "connectionTimeout_", + }; + java.lang.String info = + "\u0000\u0002\u0000\u0001\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0004\u0002\u1009" + + "\u0000"; + return newMessageInfo(DEFAULT_INSTANCE, info, objects); + } + // fall through + case GET_DEFAULT_INSTANCE: { + return DEFAULT_INSTANCE; + } + case GET_PARSER: { + com.google.protobuf.Parser parser = PARSER; + if (parser == null) { + synchronized (viam.app.v1.Robot.TrafficTunnelEndpoint.class) { + parser = PARSER; + if (parser == null) { + parser = + new DefaultInstanceBasedParser( + DEFAULT_INSTANCE); + PARSER = parser; + } + } + } + return parser; + } + case GET_MEMOIZED_IS_INITIALIZED: { + return (byte) 1; + } + case SET_MEMOIZED_IS_INITIALIZED: { + return null; + } + } + throw new UnsupportedOperationException(); + } + + + // @@protoc_insertion_point(class_scope:viam.app.v1.TrafficTunnelEndpoint) + private static final viam.app.v1.Robot.TrafficTunnelEndpoint DEFAULT_INSTANCE; + static { + TrafficTunnelEndpoint defaultInstance = new TrafficTunnelEndpoint(); + // New instances are implicitly immutable so no need to make + // immutable. + DEFAULT_INSTANCE = defaultInstance; + com.google.protobuf.GeneratedMessageLite.registerDefaultInstance( + TrafficTunnelEndpoint.class, defaultInstance); + } + + public static viam.app.v1.Robot.TrafficTunnelEndpoint getDefaultInstance() { + return DEFAULT_INSTANCE; + } + + private static volatile com.google.protobuf.Parser PARSER; + + public static com.google.protobuf.Parser parser() { + return DEFAULT_INSTANCE.getParserForType(); + } + } + public interface AuthConfigOrBuilder extends // @@protoc_insertion_point(interface_extends:viam.app.v1.AuthConfig) com.google.protobuf.MessageLiteOrBuilder { diff --git a/core/sdk/src/main/resources/protofds/viam.api b/core/sdk/src/main/resources/protofds/viam.api index cb2538289b14c1223706cffb776705e24c502950..73ad4dcb54eb3a3daf3c864aa68591f8b78b6e2b 100644 GIT binary patch delta 60219 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 DGKSPo delta 57393 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