diff --git a/go/gen/sift/remote_files/v1/remote_files.pb.go b/go/gen/sift/remote_files/v1/remote_files.pb.go index 89b75654d..c8a853e1d 100644 --- a/go/gen/sift/remote_files/v1/remote_files.pb.go +++ b/go/gen/sift/remote_files/v1/remote_files.pb.go @@ -9,6 +9,7 @@ package remote_filesv1 import ( _ "github.com/sift-stack/sift/go/gen/google/api" _ "github.com/sift-stack/sift/go/gen/protoc-gen-openapiv2/options" + v1 "github.com/sift-stack/sift/go/gen/sift/metadata/v1" protoreflect "google.golang.org/protobuf/reflect/protoreflect" protoimpl "google.golang.org/protobuf/runtime/protoimpl" fieldmaskpb "google.golang.org/protobuf/types/known/fieldmaskpb" @@ -107,6 +108,7 @@ type RemoteFile struct { ModifiedByUserId string `protobuf:"bytes,14,opt,name=modified_by_user_id,json=modifiedByUserId,proto3" json:"modified_by_user_id,omitempty"` CreatedDate *timestamppb.Timestamp `protobuf:"bytes,15,opt,name=created_date,json=createdDate,proto3" json:"created_date,omitempty"` ModifiedDate *timestamppb.Timestamp `protobuf:"bytes,16,opt,name=modified_date,json=modifiedDate,proto3" json:"modified_date,omitempty"` + MetadataValues []*v1.MetadataValue `protobuf:"bytes,18,rep,name=metadata_values,json=metadataValues,proto3" json:"metadata_values,omitempty"` } func (x *RemoteFile) Reset() { @@ -267,6 +269,13 @@ func (x *RemoteFile) GetModifiedDate() *timestamppb.Timestamp { return nil } +func (x *RemoteFile) GetMetadataValues() []*v1.MetadataValue { + if x != nil { + return x.MetadataValues + } + return nil +} + type isRemoteFile_Metadata interface { isRemoteFile_Metadata() } @@ -582,7 +591,7 @@ type ListRemoteFilesRequest struct { // the call that provided the page token. Optional. PageToken string `protobuf:"bytes,2,opt,name=page_token,json=pageToken,proto3" json:"page_token,omitempty"` // A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string. - // Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, and `file_name`. + // Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, `metadata`, and `file_name`. // For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions). // For more information about the fields used for filtering, please refer to [this definition](/docs/api/grpc/protocol-buffers/remote_files#remotefile). Optional. Filter string `protobuf:"bytes,3,opt,name=filter,proto3" json:"filter,omitempty"` @@ -729,6 +738,8 @@ type CreateRemoteFileRequest struct { Metadata isCreateRemoteFileRequest_Metadata `protobuf_oneof:"metadata"` // A custom UUID used to generate the object key. Recommended to be left unset. CustomUuid *string `protobuf:"bytes,11,opt,name=custom_uuid,json=customUuid,proto3,oneof" json:"custom_uuid,omitempty"` + // The metadata values associated with this remote file. + MetadataValues []*v1.MetadataValue `protobuf:"bytes,13,rep,name=metadata_values,json=metadataValues,proto3" json:"metadata_values,omitempty"` } func (x *CreateRemoteFileRequest) Reset() { @@ -854,6 +865,13 @@ func (x *CreateRemoteFileRequest) GetCustomUuid() string { return "" } +func (x *CreateRemoteFileRequest) GetMetadataValues() []*v1.MetadataValue { + if x != nil { + return x.MetadataValues + } + return nil +} + type isCreateRemoteFileRequest_Metadata interface { isCreateRemoteFileRequest_Metadata() } @@ -1107,7 +1125,7 @@ type UpdateRemoteFileRequest struct { // The remote file to update. RemoteFile *RemoteFile `protobuf:"bytes,1,opt,name=remote_file,json=remoteFile,proto3" json:"remote_file,omitempty"` - // The list of fields to be updated. The fields available to be updated are `description` and `metadata`. + // The list of fields to be updated. The fields available to be updated are `description`, `metadata_values`, and `metadata`. UpdateMask *fieldmaskpb.FieldMask `protobuf:"bytes,2,opt,name=update_mask,json=updateMask,proto3" json:"update_mask,omitempty"` } @@ -1319,66 +1337,73 @@ var file_sift_remote_files_v1_remote_files_proto_rawDesc = []byte{ 0x6f, 0x1a, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x2d, 0x67, 0x65, 0x6e, 0x2d, 0x6f, 0x70, 0x65, 0x6e, 0x61, 0x70, 0x69, 0x76, 0x32, 0x2f, 0x6f, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0xce, 0x07, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, 0x6f, - 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, 0x6e, - 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, 0x74, - 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0b, 0x65, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x20, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, - 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, - 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, 0x69, - 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, - 0x41, 0x02, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x37, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, 0x74, - 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x6e, - 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x74, 0x6f, - 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, 0x12, - 0x20, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x04, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, 0x7a, - 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x0b, 0x64, - 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x51, 0x0a, - 0x0e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, - 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, 0x64, - 0x65, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, - 0x00, 0x52, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, - 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, - 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, - 0x41, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, - 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, - 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, - 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, - 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x13, 0x6d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, - 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x6d, 0x6f, 0x64, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x42, 0x0a, 0x0c, - 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, - 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, - 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, - 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, - 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x6f, 0x1a, 0x1f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2f, 0x76, 0x31, 0x2f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x22, 0x9d, 0x08, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x12, 0x2c, 0x0a, 0x0f, + 0x6f, 0x72, 0x67, 0x61, 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0e, 0x6f, 0x72, 0x67, 0x61, + 0x6e, 0x69, 0x7a, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x20, 0x0a, 0x09, 0x65, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, + 0x41, 0x02, 0x52, 0x08, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x49, 0x64, 0x12, 0x46, 0x0a, 0x0b, + 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x20, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x65, 0x6e, 0x74, 0x69, 0x74, 0x79, + 0x54, 0x79, 0x70, 0x65, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x66, 0x69, + 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x29, 0x0a, 0x0e, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6d, + 0x69, 0x6d, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x66, 0x69, 0x6c, 0x65, 0x4d, 0x69, 0x6d, 0x65, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x37, 0x0a, 0x15, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x74, 0x65, 0x6e, + 0x74, 0x5f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, + 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x13, 0x66, 0x69, 0x6c, 0x65, 0x43, 0x6f, 0x6e, 0x74, 0x65, + 0x6e, 0x74, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x12, 0x24, 0x0a, 0x0b, 0x73, 0x74, + 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x4b, 0x65, 0x79, + 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x08, 0x66, 0x69, 0x6c, 0x65, 0x53, 0x69, + 0x7a, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x01, 0x52, 0x0b, + 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x51, + 0x0a, 0x0e, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x18, 0x0b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x56, 0x69, + 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, + 0x48, 0x00, 0x52, 0x0d, 0x76, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x12, 0x51, 0x0a, 0x0e, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x49, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x03, + 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x69, 0x6d, 0x61, 0x67, 0x65, 0x4d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x12, 0x51, 0x0a, 0x0e, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x5f, 0x6d, 0x65, + 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x18, 0x11, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, + 0x61, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x00, 0x52, 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4d, + 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x30, 0x0a, 0x12, 0x63, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x0d, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0f, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x32, 0x0a, 0x13, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x62, 0x79, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, + 0x18, 0x0e, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x10, 0x6d, 0x6f, 0x64, + 0x69, 0x66, 0x69, 0x65, 0x64, 0x42, 0x79, 0x55, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x42, 0x0a, + 0x0c, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x64, 0x61, 0x74, 0x65, 0x18, 0x0f, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x42, + 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x44, 0x61, 0x74, + 0x65, 0x12, 0x44, 0x0a, 0x0d, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x61, + 0x74, 0x65, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, + 0x74, 0x61, 0x6d, 0x70, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0c, 0x6d, 0x6f, 0x64, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x44, 0x61, 0x74, 0x65, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, 0x65, 0x74, 0x61, 0x64, + 0x61, 0x74, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x12, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xb6, 0x01, 0x0a, 0x0d, 0x56, 0x69, 0x64, 0x65, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x1b, 0x0a, 0x06, 0x68, 0x65, 0x69, 0x67, 0x68, 0x74, 0x18, 0x01, @@ -1433,7 +1458,7 @@ var file_sift_remote_files_v1_remote_files_proto_rawDesc = []byte{ 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x26, 0x0a, 0x0f, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, 0x61, 0x67, 0x65, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, - 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xd5, 0x05, + 0x6e, 0x65, 0x78, 0x74, 0x50, 0x61, 0x67, 0x65, 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x22, 0xa4, 0x06, 0x0a, 0x17, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x09, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, @@ -1476,183 +1501,188 @@ var file_sift_remote_files_v1_remote_files_proto_rawDesc = []byte{ 0x0d, 0x61, 0x75, 0x64, 0x69, 0x6f, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x12, 0x29, 0x0a, 0x0b, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, 0x75, 0x75, 0x69, 0x64, 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x48, 0x02, 0x52, 0x0a, 0x63, 0x75, 0x73, 0x74, - 0x6f, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, - 0x61, 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, - 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, - 0x5f, 0x75, 0x75, 0x69, 0x64, 0x22, 0x62, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, + 0x6f, 0x6d, 0x55, 0x75, 0x69, 0x64, 0x88, 0x01, 0x01, 0x12, 0x4d, 0x0a, 0x0f, 0x6d, 0x65, 0x74, + 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x18, 0x0d, 0x20, 0x03, + 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x01, 0x52, 0x0e, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, + 0x74, 0x61, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x73, 0x42, 0x0a, 0x0a, 0x08, 0x6d, 0x65, 0x74, 0x61, + 0x64, 0x61, 0x74, 0x61, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, + 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x63, 0x75, 0x73, 0x74, 0x6f, 0x6d, 0x5f, + 0x75, 0x75, 0x69, 0x64, 0x22, 0x62, 0x0a, 0x18, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x17, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, + 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x1a, + 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x1d, 0x42, 0x61, + 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x01, + 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x49, 0x64, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x22, 0x44, 0x0a, 0x17, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, - 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, - 0x02, 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, - 0x1a, 0x0a, 0x18, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x47, 0x0a, 0x1d, 0x42, - 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0f, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0d, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x49, 0x64, 0x73, 0x22, 0x20, 0x0a, 0x1e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xa3, 0x01, 0x0a, 0x17, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, - 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, - 0x66, 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x62, 0x0a, 0x18, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, - 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x42, - 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x22, 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, - 0x52, 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x4a, - 0x0a, 0x20, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x2a, 0xae, 0x01, 0x0a, 0x0a, 0x45, - 0x6e, 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, - 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, - 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x45, - 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x54, - 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x54, 0x49, 0x54, - 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1e, - 0x0a, 0x1a, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, - 0x4e, 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x04, 0x12, 0x1b, - 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, - 0x53, 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x32, 0xbf, 0x0c, 0x0a, 0x11, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x12, 0xc2, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2b, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, - 0x28, 0x12, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x1a, 0x17, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, - 0x25, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x40, 0x0a, 0x0b, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x5f, 0x6d, 0x61, 0x73, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x4d, 0x61, 0x73, 0x6b, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4d, 0x61, 0x73, 0x6b, 0x22, 0x62, 0x0a, 0x18, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x46, 0x0a, 0x0b, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x73, + 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x42, 0x03, + 0xe0, 0x41, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x22, + 0x4c, 0x0a, 0x1f, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x29, 0x0a, 0x0e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, + 0x0c, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x4a, 0x0a, + 0x20, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x26, 0x0a, 0x0c, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x5f, 0x75, 0x72, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x03, 0xe0, 0x41, 0x02, 0x52, 0x0b, 0x64, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x2a, 0xae, 0x01, 0x0a, 0x0a, 0x45, 0x6e, + 0x74, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x4e, 0x54, 0x49, + 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, + 0x54, 0x59, 0x50, 0x45, 0x5f, 0x52, 0x55, 0x4e, 0x10, 0x01, 0x12, 0x1a, 0x0a, 0x16, 0x45, 0x4e, + 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x4e, 0x4f, 0x54, 0x41, + 0x54, 0x49, 0x4f, 0x4e, 0x10, 0x02, 0x12, 0x15, 0x0a, 0x11, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, + 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x53, 0x53, 0x45, 0x54, 0x10, 0x03, 0x12, 0x1e, 0x0a, + 0x1a, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x41, 0x4e, 0x4e, + 0x4f, 0x54, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x5f, 0x4c, 0x4f, 0x47, 0x10, 0x04, 0x12, 0x1b, 0x0a, + 0x17, 0x45, 0x4e, 0x54, 0x49, 0x54, 0x59, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x53, + 0x54, 0x5f, 0x52, 0x45, 0x50, 0x4f, 0x52, 0x54, 0x10, 0x05, 0x32, 0xbf, 0x0c, 0x0a, 0x11, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x12, 0xc2, 0x01, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x2a, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, + 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, + 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x58, 0x92, 0x41, 0x28, + 0x12, 0x0d, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x1a, + 0x17, 0x52, 0x65, 0x74, 0x72, 0x69, 0x65, 0x76, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x12, 0x25, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xbe, 0x01, 0x0a, 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x92, 0x41, 0x29, 0x12, - 0x10, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x1a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, - 0x2a, 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x73, 0x69, - 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x92, 0x41, 0x25, 0x12, 0x0f, 0x4c, - 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x12, - 0x4c, 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, - 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, - 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x84, - 0x02, 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, - 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, - 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x90, 0x01, 0x92, 0x41, 0x6e, 0x12, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x5a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, - 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x75, 0x73, 0x69, 0x6e, - 0x67, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, - 0x20, 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, - 0x66, 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, - 0x6d, 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x32, - 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, - 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, 0x66, + 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4b, 0x92, 0x41, 0x29, 0x12, 0x10, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x1a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, + 0x22, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0xb4, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x2c, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x44, 0x92, 0x41, 0x25, 0x12, 0x0f, 0x4c, 0x69, + 0x73, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x12, 0x4c, + 0x69, 0x73, 0x74, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x73, + 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, + 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x84, 0x02, + 0x0a, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, + 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, + 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x90, 0x01, 0x92, 0x41, 0x6e, 0x12, 0x10, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x1a, 0x5a, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x73, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x20, 0x72, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, + 0x20, 0x75, 0x73, 0x69, 0x6e, 0x67, 0x20, 0x74, 0x68, 0x65, 0x20, 0x6c, 0x69, 0x73, 0x74, 0x20, + 0x6f, 0x66, 0x20, 0x66, 0x69, 0x65, 0x6c, 0x64, 0x73, 0x20, 0x73, 0x70, 0x65, 0x63, 0x69, 0x66, + 0x69, 0x65, 0x64, 0x20, 0x69, 0x6e, 0x20, 0x60, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x5f, 0x6d, + 0x61, 0x73, 0x6b, 0x60, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x19, 0x3a, 0x01, 0x2a, 0x32, 0x14, + 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, + 0x69, 0x6c, 0x65, 0x73, 0x12, 0xcc, 0x01, 0x0a, 0x10, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, + 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x12, 0x2d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x92, 0x41, 0x29, 0x12, 0x10, + 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, - 0x1a, 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, - 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x02, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, - 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, - 0x33, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, - 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, - 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x92, 0x41, 0x5b, - 0x12, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, - 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x41, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, - 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, - 0x69, 0x73, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, - 0x30, 0x30, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x25, 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x84, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x72, 0x6c, 0x12, 0x35, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, - 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, - 0x55, 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x69, 0x66, - 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, - 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, - 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x79, 0x92, 0x41, 0x3c, 0x12, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x28, 0x47, 0x65, 0x74, 0x73, 0x20, - 0x61, 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x66, - 0x6f, 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, - 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, - 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, - 0x7b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, - 0x2f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x75, 0x72, 0x6c, 0x42, 0xfa, 0x01, - 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, - 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x52, 0x65, 0x6d, 0x6f, - 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2d, - 0x73, 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, - 0x6e, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, - 0x6c, 0x65, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x52, 0x58, 0xaa, 0x02, 0x13, 0x53, 0x69, - 0x66, 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x56, - 0x31, 0xca, 0x02, 0x13, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, - 0x69, 0x6c, 0x65, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x52, - 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, - 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x53, 0x69, 0x66, 0x74, - 0x3a, 0x3a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x56, - 0x31, 0x92, 0x41, 0x16, 0x12, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, - 0x6c, 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x92, 0x41, 0x29, 0x12, 0x10, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x1a, + 0x15, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x20, 0x66, 0x69, 0x6c, 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x27, 0x2a, 0x25, 0x2f, 0x61, + 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, + 0x69, 0x64, 0x7d, 0x12, 0x8f, 0x02, 0x0a, 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, + 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x12, 0x33, + 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x34, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x42, 0x61, 0x74, 0x63, 0x68, + 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x89, 0x01, 0x92, 0x41, 0x5b, 0x12, + 0x16, 0x42, 0x61, 0x74, 0x63, 0x68, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x65, 0x6d, 0x6f, + 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x1a, 0x41, 0x42, 0x61, 0x74, 0x63, 0x68, 0x20, 0x64, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2e, 0x20, 0x45, 0x61, 0x63, 0x68, 0x20, 0x62, 0x61, 0x74, 0x63, 0x68, 0x20, 0x69, + 0x73, 0x20, 0x6c, 0x69, 0x6d, 0x69, 0x74, 0x65, 0x64, 0x20, 0x74, 0x6f, 0x20, 0x31, 0x30, 0x30, + 0x30, 0x20, 0x72, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x73, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x25, + 0x3a, 0x01, 0x2a, 0x22, 0x20, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, 0x31, 0x2f, 0x72, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x62, 0x61, 0x74, 0x63, 0x68, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x12, 0x84, 0x02, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, + 0x72, 0x6c, 0x12, 0x35, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, + 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, + 0x72, 0x6c, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x36, 0x2e, 0x73, 0x69, 0x66, 0x74, + 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x44, 0x6f, + 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x55, 0x72, 0x6c, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x79, 0x92, 0x41, 0x3c, 0x12, 0x10, 0x47, 0x65, 0x74, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x46, 0x69, 0x6c, 0x65, 0x55, 0x72, 0x6c, 0x1a, 0x28, 0x47, 0x65, 0x74, 0x73, 0x20, 0x61, + 0x20, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x20, 0x55, 0x52, 0x4c, 0x20, 0x66, 0x6f, + 0x72, 0x20, 0x74, 0x68, 0x65, 0x20, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x20, 0x66, 0x69, 0x6c, + 0x65, 0x2e, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x34, 0x12, 0x32, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x76, + 0x31, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x2d, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2f, 0x7b, + 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x6f, 0x61, 0x64, 0x2d, 0x75, 0x72, 0x6c, 0x42, 0xfa, 0x01, 0x0a, + 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x73, 0x69, 0x66, 0x74, 0x2e, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, + 0x5f, 0x66, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x76, 0x31, 0x42, 0x10, 0x52, 0x65, 0x6d, 0x6f, 0x74, + 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x45, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2d, 0x73, + 0x74, 0x61, 0x63, 0x6b, 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x67, 0x6f, 0x2f, 0x67, 0x65, 0x6e, + 0x2f, 0x73, 0x69, 0x66, 0x74, 0x2f, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x2f, 0x76, 0x31, 0x3b, 0x72, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x5f, 0x66, 0x69, 0x6c, + 0x65, 0x73, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x53, 0x52, 0x58, 0xaa, 0x02, 0x13, 0x53, 0x69, 0x66, + 0x74, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x2e, 0x56, 0x31, + 0xca, 0x02, 0x13, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, + 0x6c, 0x65, 0x73, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x53, 0x69, 0x66, 0x74, 0x5c, 0x52, 0x65, + 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, + 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x15, 0x53, 0x69, 0x66, 0x74, 0x3a, + 0x3a, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, 0x65, 0x73, 0x3a, 0x3a, 0x56, 0x31, + 0x92, 0x41, 0x16, 0x12, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, 0x74, 0x65, 0x46, 0x69, 0x6c, + 0x65, 0x20, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1690,7 +1720,8 @@ var file_sift_remote_files_v1_remote_files_proto_goTypes = []interface{}{ (*GetRemoteFileDownloadUrlRequest)(nil), // 17: sift.remote_files.v1.GetRemoteFileDownloadUrlRequest (*GetRemoteFileDownloadUrlResponse)(nil), // 18: sift.remote_files.v1.GetRemoteFileDownloadUrlResponse (*timestamppb.Timestamp)(nil), // 19: google.protobuf.Timestamp - (*fieldmaskpb.FieldMask)(nil), // 20: google.protobuf.FieldMask + (*v1.MetadataValue)(nil), // 20: sift.metadata.v1.MetadataValue + (*fieldmaskpb.FieldMask)(nil), // 21: google.protobuf.FieldMask } var file_sift_remote_files_v1_remote_files_proto_depIdxs = []int32{ 0, // 0: sift.remote_files.v1.RemoteFile.entity_type:type_name -> sift.remote_files.v1.EntityType @@ -1699,37 +1730,39 @@ var file_sift_remote_files_v1_remote_files_proto_depIdxs = []int32{ 4, // 3: sift.remote_files.v1.RemoteFile.audio_metadata:type_name -> sift.remote_files.v1.AudioMetadata 19, // 4: sift.remote_files.v1.RemoteFile.created_date:type_name -> google.protobuf.Timestamp 19, // 5: sift.remote_files.v1.RemoteFile.modified_date:type_name -> google.protobuf.Timestamp - 19, // 6: sift.remote_files.v1.VideoMetadata.timestamp:type_name -> google.protobuf.Timestamp - 19, // 7: sift.remote_files.v1.AudioMetadata.timestamp:type_name -> google.protobuf.Timestamp - 1, // 8: sift.remote_files.v1.GetRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile - 1, // 9: sift.remote_files.v1.ListRemoteFilesResponse.remote_files:type_name -> sift.remote_files.v1.RemoteFile - 0, // 10: sift.remote_files.v1.CreateRemoteFileRequest.entity_type:type_name -> sift.remote_files.v1.EntityType - 2, // 11: sift.remote_files.v1.CreateRemoteFileRequest.video_metadata:type_name -> sift.remote_files.v1.VideoMetadata - 3, // 12: sift.remote_files.v1.CreateRemoteFileRequest.image_metadata:type_name -> sift.remote_files.v1.ImageMetadata - 4, // 13: sift.remote_files.v1.CreateRemoteFileRequest.audio_metadata:type_name -> sift.remote_files.v1.AudioMetadata - 1, // 14: sift.remote_files.v1.CreateRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile - 1, // 15: sift.remote_files.v1.UpdateRemoteFileRequest.remote_file:type_name -> sift.remote_files.v1.RemoteFile - 20, // 16: sift.remote_files.v1.UpdateRemoteFileRequest.update_mask:type_name -> google.protobuf.FieldMask - 1, // 17: sift.remote_files.v1.UpdateRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile - 5, // 18: sift.remote_files.v1.RemoteFileService.GetRemoteFile:input_type -> sift.remote_files.v1.GetRemoteFileRequest - 9, // 19: sift.remote_files.v1.RemoteFileService.CreateRemoteFile:input_type -> sift.remote_files.v1.CreateRemoteFileRequest - 7, // 20: sift.remote_files.v1.RemoteFileService.ListRemoteFiles:input_type -> sift.remote_files.v1.ListRemoteFilesRequest - 15, // 21: sift.remote_files.v1.RemoteFileService.UpdateRemoteFile:input_type -> sift.remote_files.v1.UpdateRemoteFileRequest - 11, // 22: sift.remote_files.v1.RemoteFileService.DeleteRemoteFile:input_type -> sift.remote_files.v1.DeleteRemoteFileRequest - 13, // 23: sift.remote_files.v1.RemoteFileService.BatchDeleteRemoteFiles:input_type -> sift.remote_files.v1.BatchDeleteRemoteFilesRequest - 17, // 24: sift.remote_files.v1.RemoteFileService.GetRemoteFileDownloadUrl:input_type -> sift.remote_files.v1.GetRemoteFileDownloadUrlRequest - 6, // 25: sift.remote_files.v1.RemoteFileService.GetRemoteFile:output_type -> sift.remote_files.v1.GetRemoteFileResponse - 10, // 26: sift.remote_files.v1.RemoteFileService.CreateRemoteFile:output_type -> sift.remote_files.v1.CreateRemoteFileResponse - 8, // 27: sift.remote_files.v1.RemoteFileService.ListRemoteFiles:output_type -> sift.remote_files.v1.ListRemoteFilesResponse - 16, // 28: sift.remote_files.v1.RemoteFileService.UpdateRemoteFile:output_type -> sift.remote_files.v1.UpdateRemoteFileResponse - 12, // 29: sift.remote_files.v1.RemoteFileService.DeleteRemoteFile:output_type -> sift.remote_files.v1.DeleteRemoteFileResponse - 14, // 30: sift.remote_files.v1.RemoteFileService.BatchDeleteRemoteFiles:output_type -> sift.remote_files.v1.BatchDeleteRemoteFilesResponse - 18, // 31: sift.remote_files.v1.RemoteFileService.GetRemoteFileDownloadUrl:output_type -> sift.remote_files.v1.GetRemoteFileDownloadUrlResponse - 25, // [25:32] is the sub-list for method output_type - 18, // [18:25] is the sub-list for method input_type - 18, // [18:18] is the sub-list for extension type_name - 18, // [18:18] is the sub-list for extension extendee - 0, // [0:18] is the sub-list for field type_name + 20, // 6: sift.remote_files.v1.RemoteFile.metadata_values:type_name -> sift.metadata.v1.MetadataValue + 19, // 7: sift.remote_files.v1.VideoMetadata.timestamp:type_name -> google.protobuf.Timestamp + 19, // 8: sift.remote_files.v1.AudioMetadata.timestamp:type_name -> google.protobuf.Timestamp + 1, // 9: sift.remote_files.v1.GetRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile + 1, // 10: sift.remote_files.v1.ListRemoteFilesResponse.remote_files:type_name -> sift.remote_files.v1.RemoteFile + 0, // 11: sift.remote_files.v1.CreateRemoteFileRequest.entity_type:type_name -> sift.remote_files.v1.EntityType + 2, // 12: sift.remote_files.v1.CreateRemoteFileRequest.video_metadata:type_name -> sift.remote_files.v1.VideoMetadata + 3, // 13: sift.remote_files.v1.CreateRemoteFileRequest.image_metadata:type_name -> sift.remote_files.v1.ImageMetadata + 4, // 14: sift.remote_files.v1.CreateRemoteFileRequest.audio_metadata:type_name -> sift.remote_files.v1.AudioMetadata + 20, // 15: sift.remote_files.v1.CreateRemoteFileRequest.metadata_values:type_name -> sift.metadata.v1.MetadataValue + 1, // 16: sift.remote_files.v1.CreateRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile + 1, // 17: sift.remote_files.v1.UpdateRemoteFileRequest.remote_file:type_name -> sift.remote_files.v1.RemoteFile + 21, // 18: sift.remote_files.v1.UpdateRemoteFileRequest.update_mask:type_name -> google.protobuf.FieldMask + 1, // 19: sift.remote_files.v1.UpdateRemoteFileResponse.remote_file:type_name -> sift.remote_files.v1.RemoteFile + 5, // 20: sift.remote_files.v1.RemoteFileService.GetRemoteFile:input_type -> sift.remote_files.v1.GetRemoteFileRequest + 9, // 21: sift.remote_files.v1.RemoteFileService.CreateRemoteFile:input_type -> sift.remote_files.v1.CreateRemoteFileRequest + 7, // 22: sift.remote_files.v1.RemoteFileService.ListRemoteFiles:input_type -> sift.remote_files.v1.ListRemoteFilesRequest + 15, // 23: sift.remote_files.v1.RemoteFileService.UpdateRemoteFile:input_type -> sift.remote_files.v1.UpdateRemoteFileRequest + 11, // 24: sift.remote_files.v1.RemoteFileService.DeleteRemoteFile:input_type -> sift.remote_files.v1.DeleteRemoteFileRequest + 13, // 25: sift.remote_files.v1.RemoteFileService.BatchDeleteRemoteFiles:input_type -> sift.remote_files.v1.BatchDeleteRemoteFilesRequest + 17, // 26: sift.remote_files.v1.RemoteFileService.GetRemoteFileDownloadUrl:input_type -> sift.remote_files.v1.GetRemoteFileDownloadUrlRequest + 6, // 27: sift.remote_files.v1.RemoteFileService.GetRemoteFile:output_type -> sift.remote_files.v1.GetRemoteFileResponse + 10, // 28: sift.remote_files.v1.RemoteFileService.CreateRemoteFile:output_type -> sift.remote_files.v1.CreateRemoteFileResponse + 8, // 29: sift.remote_files.v1.RemoteFileService.ListRemoteFiles:output_type -> sift.remote_files.v1.ListRemoteFilesResponse + 16, // 30: sift.remote_files.v1.RemoteFileService.UpdateRemoteFile:output_type -> sift.remote_files.v1.UpdateRemoteFileResponse + 12, // 31: sift.remote_files.v1.RemoteFileService.DeleteRemoteFile:output_type -> sift.remote_files.v1.DeleteRemoteFileResponse + 14, // 32: sift.remote_files.v1.RemoteFileService.BatchDeleteRemoteFiles:output_type -> sift.remote_files.v1.BatchDeleteRemoteFilesResponse + 18, // 33: sift.remote_files.v1.RemoteFileService.GetRemoteFileDownloadUrl:output_type -> sift.remote_files.v1.GetRemoteFileDownloadUrlResponse + 27, // [27:34] is the sub-list for method output_type + 20, // [20:27] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name } func init() { file_sift_remote_files_v1_remote_files_proto_init() } diff --git a/go/gen/sift/remote_files/v1/remote_files_vtproto.pb.go b/go/gen/sift/remote_files/v1/remote_files_vtproto.pb.go index 219cdf9e6..542e258f5 100644 --- a/go/gen/sift/remote_files/v1/remote_files_vtproto.pb.go +++ b/go/gen/sift/remote_files/v1/remote_files_vtproto.pb.go @@ -11,6 +11,7 @@ import ( protohelpers "github.com/planetscale/vtprotobuf/protohelpers" fieldmaskpb1 "github.com/planetscale/vtprotobuf/types/known/fieldmaskpb" timestamppb1 "github.com/planetscale/vtprotobuf/types/known/timestamppb" + v1 "github.com/sift-stack/sift/go/gen/sift/metadata/v1" grpc "google.golang.org/grpc" codes "google.golang.org/grpc/codes" status "google.golang.org/grpc/status" @@ -55,6 +56,17 @@ func (m *RemoteFile) CloneVT() *RemoteFile { if m.Metadata != nil { r.Metadata = m.Metadata.(interface{ CloneVT() isRemoteFile_Metadata }).CloneVT() } + if rhs := m.MetadataValues; rhs != nil { + tmpContainer := make([]*v1.MetadataValue, len(rhs)) + for k, v := range rhs { + if vtpb, ok := interface{}(v).(interface{ CloneVT() *v1.MetadataValue }); ok { + tmpContainer[k] = vtpb.CloneVT() + } else { + tmpContainer[k] = proto.Clone(v).(*v1.MetadataValue) + } + } + r.MetadataValues = tmpContainer + } if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -252,6 +264,17 @@ func (m *CreateRemoteFileRequest) CloneVT() *CreateRemoteFileRequest { tmpVal := *rhs r.CustomUuid = &tmpVal } + if rhs := m.MetadataValues; rhs != nil { + tmpContainer := make([]*v1.MetadataValue, len(rhs)) + for k, v := range rhs { + if vtpb, ok := interface{}(v).(interface{ CloneVT() *v1.MetadataValue }); ok { + tmpContainer[k] = vtpb.CloneVT() + } else { + tmpContainer[k] = proto.Clone(v).(*v1.MetadataValue) + } + } + r.MetadataValues = tmpContainer + } if len(m.unknownFields) > 0 { r.unknownFields = make([]byte, len(m.unknownFields)) copy(r.unknownFields, m.unknownFields) @@ -506,6 +529,27 @@ func (this *RemoteFile) EqualVT(that *RemoteFile) bool { if !(*timestamppb1.Timestamp)(this.ModifiedDate).EqualVT((*timestamppb1.Timestamp)(that.ModifiedDate)) { return false } + if len(this.MetadataValues) != len(that.MetadataValues) { + return false + } + for i, vx := range this.MetadataValues { + vy := that.MetadataValues[i] + if p, q := vx, vy; p != q { + if p == nil { + p = &v1.MetadataValue{} + } + if q == nil { + q = &v1.MetadataValue{} + } + if equal, ok := interface{}(p).(interface{ EqualVT(*v1.MetadataValue) bool }); ok { + if !equal.EqualVT(q) { + return false + } + } else if !proto.Equal(p, q) { + return false + } + } + } return string(this.unknownFields) == string(that.unknownFields) } @@ -810,6 +854,27 @@ func (this *CreateRemoteFileRequest) EqualVT(that *CreateRemoteFileRequest) bool if p, q := this.CustomUuid, that.CustomUuid; (p == nil && q != nil) || (p != nil && (q == nil || *p != *q)) { return false } + if len(this.MetadataValues) != len(that.MetadataValues) { + return false + } + for i, vx := range this.MetadataValues { + vy := that.MetadataValues[i] + if p, q := vx, vy; p != q { + if p == nil { + p = &v1.MetadataValue{} + } + if q == nil { + q = &v1.MetadataValue{} + } + if equal, ok := interface{}(p).(interface{ EqualVT(*v1.MetadataValue) bool }); ok { + if !equal.EqualVT(q) { + return false + } + } else if !proto.Equal(p, q) { + return false + } + } + } return string(this.unknownFields) == string(that.unknownFields) } @@ -1430,6 +1495,32 @@ func (m *RemoteFile) MarshalToSizedBufferVT(dAtA []byte) (int, error) { } i -= size } + if len(m.MetadataValues) > 0 { + for iNdEx := len(m.MetadataValues) - 1; iNdEx >= 0; iNdEx-- { + if vtmsg, ok := interface{}(m.MetadataValues[iNdEx]).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.MetadataValues[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } if m.ModifiedDate != nil { size, err := (*timestamppb1.Timestamp)(m.ModifiedDate).MarshalToSizedBufferVT(dAtA[:i]) if err != nil { @@ -1978,6 +2069,30 @@ func (m *CreateRemoteFileRequest) MarshalToSizedBufferVT(dAtA []byte) (int, erro } i -= size } + if len(m.MetadataValues) > 0 { + for iNdEx := len(m.MetadataValues) - 1; iNdEx >= 0; iNdEx-- { + if vtmsg, ok := interface{}(m.MetadataValues[iNdEx]).(interface { + MarshalToSizedBufferVT([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVT(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.MetadataValues[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x6a + } + } if m.CustomUuid != nil { i -= len(*m.CustomUuid) copy(dAtA[i:], *m.CustomUuid) @@ -2494,6 +2609,32 @@ func (m *RemoteFile) MarshalToSizedBufferVTStrict(dAtA []byte) (int, error) { i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.MetadataValues) > 0 { + for iNdEx := len(m.MetadataValues) - 1; iNdEx >= 0; iNdEx-- { + if vtmsg, ok := interface{}(m.MetadataValues[iNdEx]).(interface { + MarshalToSizedBufferVTStrict([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.MetadataValues[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x1 + i-- + dAtA[i] = 0x92 + } + } if msg, ok := m.Metadata.(*RemoteFile_AudioMetadata); ok { size, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i]) if err != nil { @@ -3054,6 +3195,30 @@ func (m *CreateRemoteFileRequest) MarshalToSizedBufferVTStrict(dAtA []byte) (int i -= len(m.unknownFields) copy(dAtA[i:], m.unknownFields) } + if len(m.MetadataValues) > 0 { + for iNdEx := len(m.MetadataValues) - 1; iNdEx >= 0; iNdEx-- { + if vtmsg, ok := interface{}(m.MetadataValues[iNdEx]).(interface { + MarshalToSizedBufferVTStrict([]byte) (int, error) + }); ok { + size, err := vtmsg.MarshalToSizedBufferVTStrict(dAtA[:i]) + if err != nil { + return 0, err + } + i -= size + i = protohelpers.EncodeVarint(dAtA, i, uint64(size)) + } else { + encoded, err := proto.Marshal(m.MetadataValues[iNdEx]) + if err != nil { + return 0, err + } + i -= len(encoded) + copy(dAtA[i:], encoded) + i = protohelpers.EncodeVarint(dAtA, i, uint64(len(encoded))) + } + i-- + dAtA[i] = 0x6a + } + } if msg, ok := m.Metadata.(*CreateRemoteFileRequest_AudioMetadata); ok { size, err := msg.MarshalToSizedBufferVTStrict(dAtA[:i]) if err != nil { @@ -3624,6 +3789,18 @@ func (m *RemoteFile) SizeVT() (n int) { l = (*timestamppb1.Timestamp)(m.ModifiedDate).SizeVT() n += 2 + l + protohelpers.SizeOfVarint(uint64(l)) } + if len(m.MetadataValues) > 0 { + for _, e := range m.MetadataValues { + if size, ok := interface{}(e).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(e) + } + n += 2 + l + protohelpers.SizeOfVarint(uint64(l)) + } + } n += len(m.unknownFields) return n } @@ -3836,6 +4013,18 @@ func (m *CreateRemoteFileRequest) SizeVT() (n int) { l = len(*m.CustomUuid) n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) } + if len(m.MetadataValues) > 0 { + for _, e := range m.MetadataValues { + if size, ok := interface{}(e).(interface { + SizeVT() int + }); ok { + l = size.SizeVT() + } else { + l = proto.Size(e) + } + n += 1 + l + protohelpers.SizeOfVarint(uint64(l)) + } + } n += len(m.unknownFields) return n } @@ -4583,6 +4772,48 @@ func (m *RemoteFile) UnmarshalVT(dAtA []byte) error { m.Metadata = &RemoteFile_AudioMetadata{AudioMetadata: v} } iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetadataValues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetadataValues = append(m.MetadataValues, &v1.MetadataValue{}) + if unmarshal, ok := interface{}(m.MetadataValues[len(m.MetadataValues)-1]).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.MetadataValues[len(m.MetadataValues)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -5797,6 +6028,48 @@ func (m *CreateRemoteFileRequest) UnmarshalVT(dAtA []byte) error { m.Metadata = &CreateRemoteFileRequest_AudioMetadata{AudioMetadata: v} } iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetadataValues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetadataValues = append(m.MetadataValues, &v1.MetadataValue{}) + if unmarshal, ok := interface{}(m.MetadataValues[len(m.MetadataValues)-1]).(interface { + UnmarshalVT([]byte) error + }); ok { + if err := unmarshal.UnmarshalVT(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.MetadataValues[len(m.MetadataValues)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -7173,6 +7446,48 @@ func (m *RemoteFile) UnmarshalVTUnsafe(dAtA []byte) error { m.Metadata = &RemoteFile_AudioMetadata{AudioMetadata: v} } iNdEx = postIndex + case 18: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetadataValues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetadataValues = append(m.MetadataValues, &v1.MetadataValue{}) + if unmarshal, ok := interface{}(m.MetadataValues[len(m.MetadataValues)-1]).(interface { + UnmarshalVTUnsafe([]byte) error + }); ok { + if err := unmarshal.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.MetadataValues[len(m.MetadataValues)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) @@ -8435,6 +8750,48 @@ func (m *CreateRemoteFileRequest) UnmarshalVTUnsafe(dAtA []byte) error { m.Metadata = &CreateRemoteFileRequest_AudioMetadata{AudioMetadata: v} } iNdEx = postIndex + case 13: + if wireType != 2 { + return fmt.Errorf("proto: wrong wireType = %d for field MetadataValues", wireType) + } + var msglen int + for shift := uint(0); ; shift += 7 { + if shift >= 64 { + return protohelpers.ErrIntOverflow + } + if iNdEx >= l { + return io.ErrUnexpectedEOF + } + b := dAtA[iNdEx] + iNdEx++ + msglen |= int(b&0x7F) << shift + if b < 0x80 { + break + } + } + if msglen < 0 { + return protohelpers.ErrInvalidLength + } + postIndex := iNdEx + msglen + if postIndex < 0 { + return protohelpers.ErrInvalidLength + } + if postIndex > l { + return io.ErrUnexpectedEOF + } + m.MetadataValues = append(m.MetadataValues, &v1.MetadataValue{}) + if unmarshal, ok := interface{}(m.MetadataValues[len(m.MetadataValues)-1]).(interface { + UnmarshalVTUnsafe([]byte) error + }); ok { + if err := unmarshal.UnmarshalVTUnsafe(dAtA[iNdEx:postIndex]); err != nil { + return err + } + } else { + if err := proto.Unmarshal(dAtA[iNdEx:postIndex], m.MetadataValues[len(m.MetadataValues)-1]); err != nil { + return err + } + } + iNdEx = postIndex default: iNdEx = preIndex skippy, err := protohelpers.Skip(dAtA[iNdEx:]) diff --git a/protos/sift/remote_files/v1/remote_files.proto b/protos/sift/remote_files/v1/remote_files.proto index c2f0225bd..b560feaad 100644 --- a/protos/sift/remote_files/v1/remote_files.proto +++ b/protos/sift/remote_files/v1/remote_files.proto @@ -7,6 +7,7 @@ import "google/api/field_behavior.proto"; import "google/protobuf/field_mask.proto"; import "google/protobuf/timestamp.proto"; import "protoc-gen-openapiv2/options/annotations.proto"; +import "sift/metadata/v1/metadata.proto"; option (grpc.gateway.protoc_gen_openapiv2.options.openapiv2_swagger) = { info: {title: "RemoteFile service"} @@ -106,6 +107,7 @@ message RemoteFile { string modified_by_user_id = 14 [(google.api.field_behavior) = REQUIRED]; google.protobuf.Timestamp created_date = 15 [(google.api.field_behavior) = REQUIRED]; google.protobuf.Timestamp modified_date = 16 [(google.api.field_behavior) = REQUIRED]; + repeated sift.metadata.v1.MetadataValue metadata_values = 18 [(google.api.field_behavior) = OPTIONAL]; } message VideoMetadata { @@ -158,7 +160,7 @@ message ListRemoteFilesRequest { string page_token = 2 [(google.api.field_behavior) = OPTIONAL]; // A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string. - // Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, and `file_name`. + // Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, `metadata`, and `file_name`. // For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions). // For more information about the fields used for filtering, please refer to [this definition](/docs/api/grpc/protocol-buffers/remote_files#remotefile). Optional. string filter = 3 [(google.api.field_behavior) = OPTIONAL]; @@ -193,6 +195,9 @@ message CreateRemoteFileRequest { // A custom UUID used to generate the object key. Recommended to be left unset. optional string custom_uuid = 11 [(google.api.field_behavior) = OPTIONAL]; + + // The metadata values associated with this remote file. + repeated sift.metadata.v1.MetadataValue metadata_values = 13 [(google.api.field_behavior) = OPTIONAL]; } // The response for a call to `RemoteFileService_CreateRemoteFile`. @@ -222,7 +227,7 @@ message UpdateRemoteFileRequest { // The remote file to update. RemoteFile remote_file = 1 [(google.api.field_behavior) = REQUIRED]; - // The list of fields to be updated. The fields available to be updated are `description` and `metadata`. + // The list of fields to be updated. The fields available to be updated are `description`, `metadata_values`, and `metadata`. google.protobuf.FieldMask update_mask = 2 [(google.api.field_behavior) = REQUIRED]; } diff --git a/python/lib/sift/remote_files/v1/remote_files_pb2.py b/python/lib/sift/remote_files/v1/remote_files_pb2.py index 6e6e1ddf3..e8e31a40a 100644 --- a/python/lib/sift/remote_files/v1/remote_files_pb2.py +++ b/python/lib/sift/remote_files/v1/remote_files_pb2.py @@ -17,9 +17,10 @@ from google.protobuf import field_mask_pb2 as google_dot_protobuf_dot_field__mask__pb2 from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 from protoc_gen_openapiv2.options import annotations_pb2 as protoc__gen__openapiv2_dot_options_dot_annotations__pb2 +from sift.metadata.v1 import metadata_pb2 as sift_dot_metadata_dot_v1_dot_metadata__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'sift/remote_files/v1/remote_files.proto\x12\x14sift.remote_files.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\"\xce\x07\n\nRemoteFile\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\x12,\n\x0forganization_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\x12 \n\tentity_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x08\x65ntityId\x12\x46\n\x0b\x65ntity_type\x18\x04 \x01(\x0e\x32 .sift.remote_files.v1.EntityTypeB\x03\xe0\x41\x02R\nentityType\x12 \n\tfile_name\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x08\x66ileName\x12)\n\x0e\x66ile_mime_type\x18\x06 \x01(\tB\x03\xe0\x41\x02R\x0c\x66ileMimeType\x12\x37\n\x15\x66ile_content_encoding\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x13\x66ileContentEncoding\x12$\n\x0bstorage_key\x18\x08 \x01(\tB\x03\xe0\x41\x02R\nstorageKey\x12 \n\tfile_size\x18\t \x01(\x04\x42\x03\xe0\x41\x02R\x08\x66ileSize\x12*\n\x0b\x64\x65scription\x18\n \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12Q\n\x0evideo_metadata\x18\x0b \x01(\x0b\x32#.sift.remote_files.v1.VideoMetadataB\x03\xe0\x41\x01H\x00R\rvideoMetadata\x12Q\n\x0eimage_metadata\x18\x0c \x01(\x0b\x32#.sift.remote_files.v1.ImageMetadataB\x03\xe0\x41\x01H\x00R\rimageMetadata\x12Q\n\x0e\x61udio_metadata\x18\x11 \x01(\x0b\x32#.sift.remote_files.v1.AudioMetadataB\x03\xe0\x41\x01H\x00R\raudioMetadata\x12\x30\n\x12\x63reated_by_user_id\x18\r \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x0e \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x42\n\x0c\x63reated_date\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDateB\n\n\x08metadataB\x0e\n\x0c_description\"\xb6\x01\n\rVideoMetadata\x12\x1b\n\x06height\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x06height\x12\x19\n\x05width\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x05width\x12.\n\x10\x64uration_seconds\x18\x03 \x01(\x02\x42\x03\xe0\x41\x01R\x0f\x64urationSeconds\x12=\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\ttimestamp\"G\n\rImageMetadata\x12\x1b\n\x06height\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x06height\x12\x19\n\x05width\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x05width\"~\n\rAudioMetadata\x12.\n\x10\x64uration_seconds\x18\x01 \x01(\x02\x42\x03\xe0\x41\x01R\x0f\x64urationSeconds\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\ttimestamp\"A\n\x14GetRemoteFileRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"_\n\x15GetRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"\xa9\x01\n\x16ListRemoteFilesRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\"\x86\x01\n\x17ListRemoteFilesResponse\x12\x43\n\x0cremote_files\x18\x01 \x03(\x0b\x32 .sift.remote_files.v1.RemoteFileR\x0bremoteFiles\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\xd5\x05\n\x17\x43reateRemoteFileRequest\x12 \n\tfile_name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08\x66ileName\x12 \n\tentity_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08\x65ntityId\x12\x46\n\x0b\x65ntity_type\x18\x03 \x01(\x0e\x32 .sift.remote_files.v1.EntityTypeB\x03\xe0\x41\x02R\nentityType\x12)\n\x0e\x66ile_mime_type\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0c\x66ileMimeType\x12\x37\n\x15\x66ile_content_encoding\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x13\x66ileContentEncoding\x12 \n\tfile_size\x18\x06 \x01(\x04\x42\x03\xe0\x41\x02R\x08\x66ileSize\x12*\n\x0b\x64\x65scription\x18\x07 \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12,\n\x0forganization_id\x18\x08 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12Q\n\x0evideo_metadata\x18\t \x01(\x0b\x32#.sift.remote_files.v1.VideoMetadataB\x03\xe0\x41\x01H\x00R\rvideoMetadata\x12Q\n\x0eimage_metadata\x18\n \x01(\x0b\x32#.sift.remote_files.v1.ImageMetadataB\x03\xe0\x41\x01H\x00R\rimageMetadata\x12Q\n\x0e\x61udio_metadata\x18\x0c \x01(\x0b\x32#.sift.remote_files.v1.AudioMetadataB\x03\xe0\x41\x01H\x00R\raudioMetadata\x12)\n\x0b\x63ustom_uuid\x18\x0b \x01(\tB\x03\xe0\x41\x01H\x02R\ncustomUuid\x88\x01\x01\x42\n\n\x08metadataB\x0e\n\x0c_descriptionB\x0e\n\x0c_custom_uuid\"b\n\x18\x43reateRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"D\n\x17\x44\x65leteRemoteFileRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"\x1a\n\x18\x44\x65leteRemoteFileResponse\"G\n\x1d\x42\x61tchDeleteRemoteFilesRequest\x12&\n\x0fremote_file_ids\x18\x01 \x03(\tR\rremoteFileIds\" \n\x1e\x42\x61tchDeleteRemoteFilesResponse\"\xa3\x01\n\x17UpdateRemoteFileRequest\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\x12@\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02R\nupdateMask\"b\n\x18UpdateRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"L\n\x1fGetRemoteFileDownloadUrlRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"J\n GetRemoteFileDownloadUrlResponse\x12&\n\x0c\x64ownload_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0b\x64ownloadUrl*\xae\x01\n\nEntityType\x12\x1b\n\x17\x45NTITY_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x45NTITY_TYPE_RUN\x10\x01\x12\x1a\n\x16\x45NTITY_TYPE_ANNOTATION\x10\x02\x12\x15\n\x11\x45NTITY_TYPE_ASSET\x10\x03\x12\x1e\n\x1a\x45NTITY_TYPE_ANNOTATION_LOG\x10\x04\x12\x1b\n\x17\x45NTITY_TYPE_TEST_REPORT\x10\x05\x32\xbf\x0c\n\x11RemoteFileService\x12\xc2\x01\n\rGetRemoteFile\x12*.sift.remote_files.v1.GetRemoteFileRequest\x1a+.sift.remote_files.v1.GetRemoteFileResponse\"X\x92\x41(\x12\rGetRemoteFile\x1a\x17Retrieve a remote file.\x82\xd3\xe4\x93\x02\'\x12%/api/v1/remote-files/{remote_file_id}\x12\xbe\x01\n\x10\x43reateRemoteFile\x12-.sift.remote_files.v1.CreateRemoteFileRequest\x1a..sift.remote_files.v1.CreateRemoteFileResponse\"K\x92\x41)\x12\x10\x43reateRemoteFile\x1a\x15\x43reate a remote file.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/remote-files:\x01*\x12\xb4\x01\n\x0fListRemoteFiles\x12,.sift.remote_files.v1.ListRemoteFilesRequest\x1a-.sift.remote_files.v1.ListRemoteFilesResponse\"D\x92\x41%\x12\x0fListRemoteFiles\x1a\x12List remote files.\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/remote-files\x12\x84\x02\n\x10UpdateRemoteFile\x12-.sift.remote_files.v1.UpdateRemoteFileRequest\x1a..sift.remote_files.v1.UpdateRemoteFileResponse\"\x90\x01\x92\x41n\x12\x10UpdateRemoteFile\x1aZUpdates an existing remote file using using the list of fields specified in `update_mask`.\x82\xd3\xe4\x93\x02\x19\x32\x14/api/v1/remote-files:\x01*\x12\xcc\x01\n\x10\x44\x65leteRemoteFile\x12-.sift.remote_files.v1.DeleteRemoteFileRequest\x1a..sift.remote_files.v1.DeleteRemoteFileResponse\"Y\x92\x41)\x12\x10\x44\x65leteRemoteFile\x1a\x15\x44\x65lete a remote file.\x82\xd3\xe4\x93\x02\'*%/api/v1/remote-files/{remote_file_id}\x12\x8f\x02\n\x16\x42\x61tchDeleteRemoteFiles\x12\x33.sift.remote_files.v1.BatchDeleteRemoteFilesRequest\x1a\x34.sift.remote_files.v1.BatchDeleteRemoteFilesResponse\"\x89\x01\x92\x41[\x12\x16\x42\x61tchDeleteRemoteFiles\x1a\x41\x42\x61tch delete remote files. Each batch is limited to 1000 records.\x82\xd3\xe4\x93\x02%\" /api/v1/remote-files:batchDelete:\x01*\x12\x84\x02\n\x18GetRemoteFileDownloadUrl\x12\x35.sift.remote_files.v1.GetRemoteFileDownloadUrlRequest\x1a\x36.sift.remote_files.v1.GetRemoteFileDownloadUrlResponse\"y\x92\x41<\x12\x10GetRemoteFileUrl\x1a(Gets a download URL for the remote file.\x82\xd3\xe4\x93\x02\x34\x12\x32/api/v1/remote-files/{remote_file_id}/download-urlB\xb3\x01\n\x18\x63om.sift.remote_files.v1B\x10RemoteFilesProtoP\x01\xa2\x02\x03SRX\xaa\x02\x13Sift.RemoteFiles.V1\xca\x02\x13Sift\\RemoteFiles\\V1\xe2\x02\x1fSift\\RemoteFiles\\V1\\GPBMetadata\xea\x02\x15Sift::RemoteFiles::V1\x92\x41\x16\x12\x14\n\x12RemoteFile serviceb\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\'sift/remote_files/v1/remote_files.proto\x12\x14sift.remote_files.v1\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/api/field_behavior.proto\x1a google/protobuf/field_mask.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a.protoc-gen-openapiv2/options/annotations.proto\x1a\x1fsift/metadata/v1/metadata.proto\"\x9d\x08\n\nRemoteFile\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\x12,\n\x0forganization_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x0eorganizationId\x12 \n\tentity_id\x18\x03 \x01(\tB\x03\xe0\x41\x02R\x08\x65ntityId\x12\x46\n\x0b\x65ntity_type\x18\x04 \x01(\x0e\x32 .sift.remote_files.v1.EntityTypeB\x03\xe0\x41\x02R\nentityType\x12 \n\tfile_name\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x08\x66ileName\x12)\n\x0e\x66ile_mime_type\x18\x06 \x01(\tB\x03\xe0\x41\x02R\x0c\x66ileMimeType\x12\x37\n\x15\x66ile_content_encoding\x18\x07 \x01(\tB\x03\xe0\x41\x02R\x13\x66ileContentEncoding\x12$\n\x0bstorage_key\x18\x08 \x01(\tB\x03\xe0\x41\x02R\nstorageKey\x12 \n\tfile_size\x18\t \x01(\x04\x42\x03\xe0\x41\x02R\x08\x66ileSize\x12*\n\x0b\x64\x65scription\x18\n \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12Q\n\x0evideo_metadata\x18\x0b \x01(\x0b\x32#.sift.remote_files.v1.VideoMetadataB\x03\xe0\x41\x01H\x00R\rvideoMetadata\x12Q\n\x0eimage_metadata\x18\x0c \x01(\x0b\x32#.sift.remote_files.v1.ImageMetadataB\x03\xe0\x41\x01H\x00R\rimageMetadata\x12Q\n\x0e\x61udio_metadata\x18\x11 \x01(\x0b\x32#.sift.remote_files.v1.AudioMetadataB\x03\xe0\x41\x01H\x00R\raudioMetadata\x12\x30\n\x12\x63reated_by_user_id\x18\r \x01(\tB\x03\xe0\x41\x02R\x0f\x63reatedByUserId\x12\x32\n\x13modified_by_user_id\x18\x0e \x01(\tB\x03\xe0\x41\x02R\x10modifiedByUserId\x12\x42\n\x0c\x63reated_date\x18\x0f \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0b\x63reatedDate\x12\x44\n\rmodified_date\x18\x10 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x02R\x0cmodifiedDate\x12M\n\x0fmetadata_values\x18\x12 \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x0emetadataValuesB\n\n\x08metadataB\x0e\n\x0c_description\"\xb6\x01\n\rVideoMetadata\x12\x1b\n\x06height\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x06height\x12\x19\n\x05width\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x05width\x12.\n\x10\x64uration_seconds\x18\x03 \x01(\x02\x42\x03\xe0\x41\x01R\x0f\x64urationSeconds\x12=\n\ttimestamp\x18\x04 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\ttimestamp\"G\n\rImageMetadata\x12\x1b\n\x06height\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x06height\x12\x19\n\x05width\x18\x02 \x01(\rB\x03\xe0\x41\x01R\x05width\"~\n\rAudioMetadata\x12.\n\x10\x64uration_seconds\x18\x01 \x01(\x02\x42\x03\xe0\x41\x01R\x0f\x64urationSeconds\x12=\n\ttimestamp\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampB\x03\xe0\x41\x01R\ttimestamp\"A\n\x14GetRemoteFileRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"_\n\x15GetRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"\xa9\x01\n\x16ListRemoteFilesRequest\x12 \n\tpage_size\x18\x01 \x01(\rB\x03\xe0\x41\x01R\x08pageSize\x12\"\n\npage_token\x18\x02 \x01(\tB\x03\xe0\x41\x01R\tpageToken\x12\x1b\n\x06\x66ilter\x18\x03 \x01(\tB\x03\xe0\x41\x01R\x06\x66ilter\x12,\n\x0forganization_id\x18\x04 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\"\x86\x01\n\x17ListRemoteFilesResponse\x12\x43\n\x0cremote_files\x18\x01 \x03(\x0b\x32 .sift.remote_files.v1.RemoteFileR\x0bremoteFiles\x12&\n\x0fnext_page_token\x18\x02 \x01(\tR\rnextPageToken\"\xa4\x06\n\x17\x43reateRemoteFileRequest\x12 \n\tfile_name\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x08\x66ileName\x12 \n\tentity_id\x18\x02 \x01(\tB\x03\xe0\x41\x02R\x08\x65ntityId\x12\x46\n\x0b\x65ntity_type\x18\x03 \x01(\x0e\x32 .sift.remote_files.v1.EntityTypeB\x03\xe0\x41\x02R\nentityType\x12)\n\x0e\x66ile_mime_type\x18\x04 \x01(\tB\x03\xe0\x41\x02R\x0c\x66ileMimeType\x12\x37\n\x15\x66ile_content_encoding\x18\x05 \x01(\tB\x03\xe0\x41\x02R\x13\x66ileContentEncoding\x12 \n\tfile_size\x18\x06 \x01(\x04\x42\x03\xe0\x41\x02R\x08\x66ileSize\x12*\n\x0b\x64\x65scription\x18\x07 \x01(\tB\x03\xe0\x41\x01H\x01R\x0b\x64\x65scription\x88\x01\x01\x12,\n\x0forganization_id\x18\x08 \x01(\tB\x03\xe0\x41\x01R\x0eorganizationId\x12Q\n\x0evideo_metadata\x18\t \x01(\x0b\x32#.sift.remote_files.v1.VideoMetadataB\x03\xe0\x41\x01H\x00R\rvideoMetadata\x12Q\n\x0eimage_metadata\x18\n \x01(\x0b\x32#.sift.remote_files.v1.ImageMetadataB\x03\xe0\x41\x01H\x00R\rimageMetadata\x12Q\n\x0e\x61udio_metadata\x18\x0c \x01(\x0b\x32#.sift.remote_files.v1.AudioMetadataB\x03\xe0\x41\x01H\x00R\raudioMetadata\x12)\n\x0b\x63ustom_uuid\x18\x0b \x01(\tB\x03\xe0\x41\x01H\x02R\ncustomUuid\x88\x01\x01\x12M\n\x0fmetadata_values\x18\r \x03(\x0b\x32\x1f.sift.metadata.v1.MetadataValueB\x03\xe0\x41\x01R\x0emetadataValuesB\n\n\x08metadataB\x0e\n\x0c_descriptionB\x0e\n\x0c_custom_uuid\"b\n\x18\x43reateRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"D\n\x17\x44\x65leteRemoteFileRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"\x1a\n\x18\x44\x65leteRemoteFileResponse\"G\n\x1d\x42\x61tchDeleteRemoteFilesRequest\x12&\n\x0fremote_file_ids\x18\x01 \x03(\tR\rremoteFileIds\" \n\x1e\x42\x61tchDeleteRemoteFilesResponse\"\xa3\x01\n\x17UpdateRemoteFileRequest\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\x12@\n\x0bupdate_mask\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.FieldMaskB\x03\xe0\x41\x02R\nupdateMask\"b\n\x18UpdateRemoteFileResponse\x12\x46\n\x0bremote_file\x18\x01 \x01(\x0b\x32 .sift.remote_files.v1.RemoteFileB\x03\xe0\x41\x02R\nremoteFile\"L\n\x1fGetRemoteFileDownloadUrlRequest\x12)\n\x0eremote_file_id\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0cremoteFileId\"J\n GetRemoteFileDownloadUrlResponse\x12&\n\x0c\x64ownload_url\x18\x01 \x01(\tB\x03\xe0\x41\x02R\x0b\x64ownloadUrl*\xae\x01\n\nEntityType\x12\x1b\n\x17\x45NTITY_TYPE_UNSPECIFIED\x10\x00\x12\x13\n\x0f\x45NTITY_TYPE_RUN\x10\x01\x12\x1a\n\x16\x45NTITY_TYPE_ANNOTATION\x10\x02\x12\x15\n\x11\x45NTITY_TYPE_ASSET\x10\x03\x12\x1e\n\x1a\x45NTITY_TYPE_ANNOTATION_LOG\x10\x04\x12\x1b\n\x17\x45NTITY_TYPE_TEST_REPORT\x10\x05\x32\xbf\x0c\n\x11RemoteFileService\x12\xc2\x01\n\rGetRemoteFile\x12*.sift.remote_files.v1.GetRemoteFileRequest\x1a+.sift.remote_files.v1.GetRemoteFileResponse\"X\x92\x41(\x12\rGetRemoteFile\x1a\x17Retrieve a remote file.\x82\xd3\xe4\x93\x02\'\x12%/api/v1/remote-files/{remote_file_id}\x12\xbe\x01\n\x10\x43reateRemoteFile\x12-.sift.remote_files.v1.CreateRemoteFileRequest\x1a..sift.remote_files.v1.CreateRemoteFileResponse\"K\x92\x41)\x12\x10\x43reateRemoteFile\x1a\x15\x43reate a remote file.\x82\xd3\xe4\x93\x02\x19\"\x14/api/v1/remote-files:\x01*\x12\xb4\x01\n\x0fListRemoteFiles\x12,.sift.remote_files.v1.ListRemoteFilesRequest\x1a-.sift.remote_files.v1.ListRemoteFilesResponse\"D\x92\x41%\x12\x0fListRemoteFiles\x1a\x12List remote files.\x82\xd3\xe4\x93\x02\x16\x12\x14/api/v1/remote-files\x12\x84\x02\n\x10UpdateRemoteFile\x12-.sift.remote_files.v1.UpdateRemoteFileRequest\x1a..sift.remote_files.v1.UpdateRemoteFileResponse\"\x90\x01\x92\x41n\x12\x10UpdateRemoteFile\x1aZUpdates an existing remote file using using the list of fields specified in `update_mask`.\x82\xd3\xe4\x93\x02\x19\x32\x14/api/v1/remote-files:\x01*\x12\xcc\x01\n\x10\x44\x65leteRemoteFile\x12-.sift.remote_files.v1.DeleteRemoteFileRequest\x1a..sift.remote_files.v1.DeleteRemoteFileResponse\"Y\x92\x41)\x12\x10\x44\x65leteRemoteFile\x1a\x15\x44\x65lete a remote file.\x82\xd3\xe4\x93\x02\'*%/api/v1/remote-files/{remote_file_id}\x12\x8f\x02\n\x16\x42\x61tchDeleteRemoteFiles\x12\x33.sift.remote_files.v1.BatchDeleteRemoteFilesRequest\x1a\x34.sift.remote_files.v1.BatchDeleteRemoteFilesResponse\"\x89\x01\x92\x41[\x12\x16\x42\x61tchDeleteRemoteFiles\x1a\x41\x42\x61tch delete remote files. Each batch is limited to 1000 records.\x82\xd3\xe4\x93\x02%\" /api/v1/remote-files:batchDelete:\x01*\x12\x84\x02\n\x18GetRemoteFileDownloadUrl\x12\x35.sift.remote_files.v1.GetRemoteFileDownloadUrlRequest\x1a\x36.sift.remote_files.v1.GetRemoteFileDownloadUrlResponse\"y\x92\x41<\x12\x10GetRemoteFileUrl\x1a(Gets a download URL for the remote file.\x82\xd3\xe4\x93\x02\x34\x12\x32/api/v1/remote-files/{remote_file_id}/download-urlB\xb3\x01\n\x18\x63om.sift.remote_files.v1B\x10RemoteFilesProtoP\x01\xa2\x02\x03SRX\xaa\x02\x13Sift.RemoteFiles.V1\xca\x02\x13Sift\\RemoteFiles\\V1\xe2\x02\x1fSift\\RemoteFiles\\V1\\GPBMetadata\xea\x02\x15Sift::RemoteFiles::V1\x92\x41\x16\x12\x14\n\x12RemoteFile serviceb\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -61,6 +62,8 @@ _globals['_REMOTEFILE'].fields_by_name['created_date']._serialized_options = b'\340A\002' _globals['_REMOTEFILE'].fields_by_name['modified_date']._loaded_options = None _globals['_REMOTEFILE'].fields_by_name['modified_date']._serialized_options = b'\340A\002' + _globals['_REMOTEFILE'].fields_by_name['metadata_values']._loaded_options = None + _globals['_REMOTEFILE'].fields_by_name['metadata_values']._serialized_options = b'\340A\001' _globals['_VIDEOMETADATA'].fields_by_name['height']._loaded_options = None _globals['_VIDEOMETADATA'].fields_by_name['height']._serialized_options = b'\340A\001' _globals['_VIDEOMETADATA'].fields_by_name['width']._loaded_options = None @@ -113,6 +116,8 @@ _globals['_CREATEREMOTEFILEREQUEST'].fields_by_name['audio_metadata']._serialized_options = b'\340A\001' _globals['_CREATEREMOTEFILEREQUEST'].fields_by_name['custom_uuid']._loaded_options = None _globals['_CREATEREMOTEFILEREQUEST'].fields_by_name['custom_uuid']._serialized_options = b'\340A\001' + _globals['_CREATEREMOTEFILEREQUEST'].fields_by_name['metadata_values']._loaded_options = None + _globals['_CREATEREMOTEFILEREQUEST'].fields_by_name['metadata_values']._serialized_options = b'\340A\001' _globals['_CREATEREMOTEFILERESPONSE'].fields_by_name['remote_file']._loaded_options = None _globals['_CREATEREMOTEFILERESPONSE'].fields_by_name['remote_file']._serialized_options = b'\340A\002' _globals['_DELETEREMOTEFILEREQUEST'].fields_by_name['remote_file_id']._loaded_options = None @@ -141,44 +146,44 @@ _globals['_REMOTEFILESERVICE'].methods_by_name['BatchDeleteRemoteFiles']._serialized_options = b'\222A[\022\026BatchDeleteRemoteFiles\032ABatch delete remote files. Each batch is limited to 1000 records.\202\323\344\223\002%\" /api/v1/remote-files:batchDelete:\001*' _globals['_REMOTEFILESERVICE'].methods_by_name['GetRemoteFileDownloadUrl']._loaded_options = None _globals['_REMOTEFILESERVICE'].methods_by_name['GetRemoteFileDownloadUrl']._serialized_options = b'\222A<\022\020GetRemoteFileUrl\032(Gets a download URL for the remote file.\202\323\344\223\0024\0222/api/v1/remote-files/{remote_file_id}/download-url' - _globals['_ENTITYTYPE']._serialized_start=3533 - _globals['_ENTITYTYPE']._serialized_end=3707 - _globals['_REMOTEFILE']._serialized_start=244 - _globals['_REMOTEFILE']._serialized_end=1218 - _globals['_VIDEOMETADATA']._serialized_start=1221 - _globals['_VIDEOMETADATA']._serialized_end=1403 - _globals['_IMAGEMETADATA']._serialized_start=1405 - _globals['_IMAGEMETADATA']._serialized_end=1476 - _globals['_AUDIOMETADATA']._serialized_start=1478 - _globals['_AUDIOMETADATA']._serialized_end=1604 - _globals['_GETREMOTEFILEREQUEST']._serialized_start=1606 - _globals['_GETREMOTEFILEREQUEST']._serialized_end=1671 - _globals['_GETREMOTEFILERESPONSE']._serialized_start=1673 - _globals['_GETREMOTEFILERESPONSE']._serialized_end=1768 - _globals['_LISTREMOTEFILESREQUEST']._serialized_start=1771 - _globals['_LISTREMOTEFILESREQUEST']._serialized_end=1940 - _globals['_LISTREMOTEFILESRESPONSE']._serialized_start=1943 - _globals['_LISTREMOTEFILESRESPONSE']._serialized_end=2077 - _globals['_CREATEREMOTEFILEREQUEST']._serialized_start=2080 - _globals['_CREATEREMOTEFILEREQUEST']._serialized_end=2805 - _globals['_CREATEREMOTEFILERESPONSE']._serialized_start=2807 - _globals['_CREATEREMOTEFILERESPONSE']._serialized_end=2905 - _globals['_DELETEREMOTEFILEREQUEST']._serialized_start=2907 - _globals['_DELETEREMOTEFILEREQUEST']._serialized_end=2975 - _globals['_DELETEREMOTEFILERESPONSE']._serialized_start=2977 - _globals['_DELETEREMOTEFILERESPONSE']._serialized_end=3003 - _globals['_BATCHDELETEREMOTEFILESREQUEST']._serialized_start=3005 - _globals['_BATCHDELETEREMOTEFILESREQUEST']._serialized_end=3076 - _globals['_BATCHDELETEREMOTEFILESRESPONSE']._serialized_start=3078 - _globals['_BATCHDELETEREMOTEFILESRESPONSE']._serialized_end=3110 - _globals['_UPDATEREMOTEFILEREQUEST']._serialized_start=3113 - _globals['_UPDATEREMOTEFILEREQUEST']._serialized_end=3276 - _globals['_UPDATEREMOTEFILERESPONSE']._serialized_start=3278 - _globals['_UPDATEREMOTEFILERESPONSE']._serialized_end=3376 - _globals['_GETREMOTEFILEDOWNLOADURLREQUEST']._serialized_start=3378 - _globals['_GETREMOTEFILEDOWNLOADURLREQUEST']._serialized_end=3454 - _globals['_GETREMOTEFILEDOWNLOADURLRESPONSE']._serialized_start=3456 - _globals['_GETREMOTEFILEDOWNLOADURLRESPONSE']._serialized_end=3530 - _globals['_REMOTEFILESERVICE']._serialized_start=3710 - _globals['_REMOTEFILESERVICE']._serialized_end=5309 + _globals['_ENTITYTYPE']._serialized_start=3724 + _globals['_ENTITYTYPE']._serialized_end=3898 + _globals['_REMOTEFILE']._serialized_start=277 + _globals['_REMOTEFILE']._serialized_end=1330 + _globals['_VIDEOMETADATA']._serialized_start=1333 + _globals['_VIDEOMETADATA']._serialized_end=1515 + _globals['_IMAGEMETADATA']._serialized_start=1517 + _globals['_IMAGEMETADATA']._serialized_end=1588 + _globals['_AUDIOMETADATA']._serialized_start=1590 + _globals['_AUDIOMETADATA']._serialized_end=1716 + _globals['_GETREMOTEFILEREQUEST']._serialized_start=1718 + _globals['_GETREMOTEFILEREQUEST']._serialized_end=1783 + _globals['_GETREMOTEFILERESPONSE']._serialized_start=1785 + _globals['_GETREMOTEFILERESPONSE']._serialized_end=1880 + _globals['_LISTREMOTEFILESREQUEST']._serialized_start=1883 + _globals['_LISTREMOTEFILESREQUEST']._serialized_end=2052 + _globals['_LISTREMOTEFILESRESPONSE']._serialized_start=2055 + _globals['_LISTREMOTEFILESRESPONSE']._serialized_end=2189 + _globals['_CREATEREMOTEFILEREQUEST']._serialized_start=2192 + _globals['_CREATEREMOTEFILEREQUEST']._serialized_end=2996 + _globals['_CREATEREMOTEFILERESPONSE']._serialized_start=2998 + _globals['_CREATEREMOTEFILERESPONSE']._serialized_end=3096 + _globals['_DELETEREMOTEFILEREQUEST']._serialized_start=3098 + _globals['_DELETEREMOTEFILEREQUEST']._serialized_end=3166 + _globals['_DELETEREMOTEFILERESPONSE']._serialized_start=3168 + _globals['_DELETEREMOTEFILERESPONSE']._serialized_end=3194 + _globals['_BATCHDELETEREMOTEFILESREQUEST']._serialized_start=3196 + _globals['_BATCHDELETEREMOTEFILESREQUEST']._serialized_end=3267 + _globals['_BATCHDELETEREMOTEFILESRESPONSE']._serialized_start=3269 + _globals['_BATCHDELETEREMOTEFILESRESPONSE']._serialized_end=3301 + _globals['_UPDATEREMOTEFILEREQUEST']._serialized_start=3304 + _globals['_UPDATEREMOTEFILEREQUEST']._serialized_end=3467 + _globals['_UPDATEREMOTEFILERESPONSE']._serialized_start=3469 + _globals['_UPDATEREMOTEFILERESPONSE']._serialized_end=3567 + _globals['_GETREMOTEFILEDOWNLOADURLREQUEST']._serialized_start=3569 + _globals['_GETREMOTEFILEDOWNLOADURLREQUEST']._serialized_end=3645 + _globals['_GETREMOTEFILEDOWNLOADURLRESPONSE']._serialized_start=3647 + _globals['_GETREMOTEFILEDOWNLOADURLRESPONSE']._serialized_end=3721 + _globals['_REMOTEFILESERVICE']._serialized_start=3901 + _globals['_REMOTEFILESERVICE']._serialized_end=5500 # @@protoc_insertion_point(module_scope) diff --git a/python/lib/sift/remote_files/v1/remote_files_pb2.pyi b/python/lib/sift/remote_files/v1/remote_files_pb2.pyi index b6fd98b1c..96afb55a1 100644 --- a/python/lib/sift/remote_files/v1/remote_files_pb2.pyi +++ b/python/lib/sift/remote_files/v1/remote_files_pb2.pyi @@ -11,6 +11,7 @@ import google.protobuf.internal.containers import google.protobuf.internal.enum_type_wrapper import google.protobuf.message import google.protobuf.timestamp_pb2 +import sift.metadata.v1.metadata_pb2 import sys import typing @@ -65,6 +66,7 @@ class RemoteFile(google.protobuf.message.Message): MODIFIED_BY_USER_ID_FIELD_NUMBER: builtins.int CREATED_DATE_FIELD_NUMBER: builtins.int MODIFIED_DATE_FIELD_NUMBER: builtins.int + METADATA_VALUES_FIELD_NUMBER: builtins.int remote_file_id: builtins.str organization_id: builtins.str entity_id: builtins.str @@ -87,6 +89,8 @@ class RemoteFile(google.protobuf.message.Message): def created_date(self) -> google.protobuf.timestamp_pb2.Timestamp: ... @property def modified_date(self) -> google.protobuf.timestamp_pb2.Timestamp: ... + @property + def metadata_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[sift.metadata.v1.metadata_pb2.MetadataValue]: ... def __init__( self, *, @@ -107,9 +111,10 @@ class RemoteFile(google.protobuf.message.Message): modified_by_user_id: builtins.str = ..., created_date: google.protobuf.timestamp_pb2.Timestamp | None = ..., modified_date: google.protobuf.timestamp_pb2.Timestamp | None = ..., + metadata_values: collections.abc.Iterable[sift.metadata.v1.metadata_pb2.MetadataValue] | None = ..., ) -> None: ... def HasField(self, field_name: typing.Literal["_description", b"_description", "audio_metadata", b"audio_metadata", "created_date", b"created_date", "description", b"description", "image_metadata", b"image_metadata", "metadata", b"metadata", "modified_date", b"modified_date", "video_metadata", b"video_metadata"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_description", b"_description", "audio_metadata", b"audio_metadata", "created_by_user_id", b"created_by_user_id", "created_date", b"created_date", "description", b"description", "entity_id", b"entity_id", "entity_type", b"entity_type", "file_content_encoding", b"file_content_encoding", "file_mime_type", b"file_mime_type", "file_name", b"file_name", "file_size", b"file_size", "image_metadata", b"image_metadata", "metadata", b"metadata", "modified_by_user_id", b"modified_by_user_id", "modified_date", b"modified_date", "organization_id", b"organization_id", "remote_file_id", b"remote_file_id", "storage_key", b"storage_key", "video_metadata", b"video_metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["_description", b"_description", "audio_metadata", b"audio_metadata", "created_by_user_id", b"created_by_user_id", "created_date", b"created_date", "description", b"description", "entity_id", b"entity_id", "entity_type", b"entity_type", "file_content_encoding", b"file_content_encoding", "file_mime_type", b"file_mime_type", "file_name", b"file_name", "file_size", b"file_size", "image_metadata", b"image_metadata", "metadata", b"metadata", "metadata_values", b"metadata_values", "modified_by_user_id", b"modified_by_user_id", "modified_date", b"modified_date", "organization_id", b"organization_id", "remote_file_id", b"remote_file_id", "storage_key", b"storage_key", "video_metadata", b"video_metadata"]) -> None: ... @typing.overload def WhichOneof(self, oneof_group: typing.Literal["_description", b"_description"]) -> typing.Literal["description"] | None: ... @typing.overload @@ -240,7 +245,7 @@ class ListRemoteFilesRequest(google.protobuf.message.Message): """ filter: builtins.str """A [Common Expression Language (CEL)](https://github.com/google/cel-spec) filter string. - Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, and `file_name`. + Available fields to filter by are `remote_file_id`, `entity_id`, `entity_type`, `metadata`, and `file_name`. For further information about how to use CELs, please refer to [this guide](https://github.com/google/cel-spec/blob/master/doc/langdef.md#standard-definitions). For more information about the fields used for filtering, please refer to [this definition](/docs/api/grpc/protocol-buffers/remote_files#remotefile). Optional. """ @@ -297,6 +302,7 @@ class CreateRemoteFileRequest(google.protobuf.message.Message): IMAGE_METADATA_FIELD_NUMBER: builtins.int AUDIO_METADATA_FIELD_NUMBER: builtins.int CUSTOM_UUID_FIELD_NUMBER: builtins.int + METADATA_VALUES_FIELD_NUMBER: builtins.int file_name: builtins.str entity_id: builtins.str entity_type: global___EntityType.ValueType @@ -314,6 +320,10 @@ class CreateRemoteFileRequest(google.protobuf.message.Message): def image_metadata(self) -> global___ImageMetadata: ... @property def audio_metadata(self) -> global___AudioMetadata: ... + @property + def metadata_values(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[sift.metadata.v1.metadata_pb2.MetadataValue]: + """The metadata values associated with this remote file.""" + def __init__( self, *, @@ -329,9 +339,10 @@ class CreateRemoteFileRequest(google.protobuf.message.Message): image_metadata: global___ImageMetadata | None = ..., audio_metadata: global___AudioMetadata | None = ..., custom_uuid: builtins.str | None = ..., + metadata_values: collections.abc.Iterable[sift.metadata.v1.metadata_pb2.MetadataValue] | None = ..., ) -> None: ... def HasField(self, field_name: typing.Literal["_custom_uuid", b"_custom_uuid", "_description", b"_description", "audio_metadata", b"audio_metadata", "custom_uuid", b"custom_uuid", "description", b"description", "image_metadata", b"image_metadata", "metadata", b"metadata", "video_metadata", b"video_metadata"]) -> builtins.bool: ... - def ClearField(self, field_name: typing.Literal["_custom_uuid", b"_custom_uuid", "_description", b"_description", "audio_metadata", b"audio_metadata", "custom_uuid", b"custom_uuid", "description", b"description", "entity_id", b"entity_id", "entity_type", b"entity_type", "file_content_encoding", b"file_content_encoding", "file_mime_type", b"file_mime_type", "file_name", b"file_name", "file_size", b"file_size", "image_metadata", b"image_metadata", "metadata", b"metadata", "organization_id", b"organization_id", "video_metadata", b"video_metadata"]) -> None: ... + def ClearField(self, field_name: typing.Literal["_custom_uuid", b"_custom_uuid", "_description", b"_description", "audio_metadata", b"audio_metadata", "custom_uuid", b"custom_uuid", "description", b"description", "entity_id", b"entity_id", "entity_type", b"entity_type", "file_content_encoding", b"file_content_encoding", "file_mime_type", b"file_mime_type", "file_name", b"file_name", "file_size", b"file_size", "image_metadata", b"image_metadata", "metadata", b"metadata", "metadata_values", b"metadata_values", "organization_id", b"organization_id", "video_metadata", b"video_metadata"]) -> None: ... @typing.overload def WhichOneof(self, oneof_group: typing.Literal["_custom_uuid", b"_custom_uuid"]) -> typing.Literal["custom_uuid"] | None: ... @typing.overload @@ -435,7 +446,7 @@ class UpdateRemoteFileRequest(google.protobuf.message.Message): @property def update_mask(self) -> google.protobuf.field_mask_pb2.FieldMask: - """The list of fields to be updated. The fields available to be updated are `description` and `metadata`.""" + """The list of fields to be updated. The fields available to be updated are `description`, `metadata_values`, and `metadata`.""" def __init__( self, diff --git a/rust/crates/sift_rs/src/gen/sift.remote_files.v1.rs b/rust/crates/sift_rs/src/gen/sift.remote_files.v1.rs index 938a742d6..dd159331a 100644 --- a/rust/crates/sift_rs/src/gen/sift.remote_files.v1.rs +++ b/rust/crates/sift_rs/src/gen/sift.remote_files.v1.rs @@ -31,6 +31,8 @@ pub struct RemoteFile { pub created_date: ::core::option::Option<::pbjson_types::Timestamp>, #[prost(message, optional, tag="16")] pub modified_date: ::core::option::Option<::pbjson_types::Timestamp>, + #[prost(message, repeated, tag="18")] + pub metadata_values: ::prost::alloc::vec::Vec, #[prost(oneof="remote_file::Metadata", tags="11, 12, 17")] pub metadata: ::core::option::Option, } @@ -128,6 +130,8 @@ pub struct CreateRemoteFileRequest { pub organization_id: ::prost::alloc::string::String, #[prost(string, optional, tag="11")] pub custom_uuid: ::core::option::Option<::prost::alloc::string::String>, + #[prost(message, repeated, tag="13")] + pub metadata_values: ::prost::alloc::vec::Vec, #[prost(oneof="create_remote_file_request::Metadata", tags="9, 10, 12")] pub metadata: ::core::option::Option, } diff --git a/rust/crates/sift_rs/src/gen/sift.remote_files.v1.serde.rs b/rust/crates/sift_rs/src/gen/sift.remote_files.v1.serde.rs index 151c9d353..05ebc236a 100644 --- a/rust/crates/sift_rs/src/gen/sift.remote_files.v1.serde.rs +++ b/rust/crates/sift_rs/src/gen/sift.remote_files.v1.serde.rs @@ -308,6 +308,9 @@ impl serde::Serialize for CreateRemoteFileRequest { if self.custom_uuid.is_some() { len += 1; } + if !self.metadata_values.is_empty() { + len += 1; + } if self.metadata.is_some() { len += 1; } @@ -342,6 +345,9 @@ impl serde::Serialize for CreateRemoteFileRequest { if let Some(v) = self.custom_uuid.as_ref() { struct_ser.serialize_field("customUuid", v)?; } + if !self.metadata_values.is_empty() { + struct_ser.serialize_field("metadataValues", &self.metadata_values)?; + } if let Some(v) = self.metadata.as_ref() { match v { create_remote_file_request::Metadata::VideoMetadata(v) => { @@ -382,6 +388,8 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { "organizationId", "custom_uuid", "customUuid", + "metadata_values", + "metadataValues", "video_metadata", "videoMetadata", "image_metadata", @@ -401,6 +409,7 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { Description, OrganizationId, CustomUuid, + MetadataValues, VideoMetadata, ImageMetadata, AudioMetadata, @@ -434,6 +443,7 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { "description" => Ok(GeneratedField::Description), "organizationId" | "organization_id" => Ok(GeneratedField::OrganizationId), "customUuid" | "custom_uuid" => Ok(GeneratedField::CustomUuid), + "metadataValues" | "metadata_values" => Ok(GeneratedField::MetadataValues), "videoMetadata" | "video_metadata" => Ok(GeneratedField::VideoMetadata), "imageMetadata" | "image_metadata" => Ok(GeneratedField::ImageMetadata), "audioMetadata" | "audio_metadata" => Ok(GeneratedField::AudioMetadata), @@ -465,6 +475,7 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { let mut description__ = None; let mut organization_id__ = None; let mut custom_uuid__ = None; + let mut metadata_values__ = None; let mut metadata__ = None; while let Some(k) = map_.next_key()? { match k { @@ -524,6 +535,12 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { } custom_uuid__ = map_.next_value()?; } + GeneratedField::MetadataValues => { + if metadata_values__.is_some() { + return Err(serde::de::Error::duplicate_field("metadataValues")); + } + metadata_values__ = Some(map_.next_value()?); + } GeneratedField::VideoMetadata => { if metadata__.is_some() { return Err(serde::de::Error::duplicate_field("videoMetadata")); @@ -557,6 +574,7 @@ impl<'de> serde::Deserialize<'de> for CreateRemoteFileRequest { description: description__, organization_id: organization_id__.unwrap_or_default(), custom_uuid: custom_uuid__, + metadata_values: metadata_values__.unwrap_or_default(), metadata: metadata__, }) } @@ -1689,6 +1707,9 @@ impl serde::Serialize for RemoteFile { if self.modified_date.is_some() { len += 1; } + if !self.metadata_values.is_empty() { + len += 1; + } if self.metadata.is_some() { len += 1; } @@ -1738,6 +1759,9 @@ impl serde::Serialize for RemoteFile { if let Some(v) = self.modified_date.as_ref() { struct_ser.serialize_field("modifiedDate", v)?; } + if !self.metadata_values.is_empty() { + struct_ser.serialize_field("metadataValues", &self.metadata_values)?; + } if let Some(v) = self.metadata.as_ref() { match v { remote_file::Metadata::VideoMetadata(v) => { @@ -1788,6 +1812,8 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { "createdDate", "modified_date", "modifiedDate", + "metadata_values", + "metadataValues", "video_metadata", "videoMetadata", "image_metadata", @@ -1812,6 +1838,7 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { ModifiedByUserId, CreatedDate, ModifiedDate, + MetadataValues, VideoMetadata, ImageMetadata, AudioMetadata, @@ -1850,6 +1877,7 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { "modifiedByUserId" | "modified_by_user_id" => Ok(GeneratedField::ModifiedByUserId), "createdDate" | "created_date" => Ok(GeneratedField::CreatedDate), "modifiedDate" | "modified_date" => Ok(GeneratedField::ModifiedDate), + "metadataValues" | "metadata_values" => Ok(GeneratedField::MetadataValues), "videoMetadata" | "video_metadata" => Ok(GeneratedField::VideoMetadata), "imageMetadata" | "image_metadata" => Ok(GeneratedField::ImageMetadata), "audioMetadata" | "audio_metadata" => Ok(GeneratedField::AudioMetadata), @@ -1886,6 +1914,7 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { let mut modified_by_user_id__ = None; let mut created_date__ = None; let mut modified_date__ = None; + let mut metadata_values__ = None; let mut metadata__ = None; while let Some(k) = map_.next_key()? { match k { @@ -1975,6 +2004,12 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { } modified_date__ = map_.next_value()?; } + GeneratedField::MetadataValues => { + if metadata_values__.is_some() { + return Err(serde::de::Error::duplicate_field("metadataValues")); + } + metadata_values__ = Some(map_.next_value()?); + } GeneratedField::VideoMetadata => { if metadata__.is_some() { return Err(serde::de::Error::duplicate_field("videoMetadata")); @@ -2013,6 +2048,7 @@ impl<'de> serde::Deserialize<'de> for RemoteFile { modified_by_user_id: modified_by_user_id__.unwrap_or_default(), created_date: created_date__, modified_date: modified_date__, + metadata_values: metadata_values__.unwrap_or_default(), metadata: metadata__, }) } diff --git a/rust/crates/sift_rs/src/gen/sift.test_reports.v1.tonic.rs b/rust/crates/sift_rs/src/gen/sift.test_reports.v1.tonic.rs index 57f06574b..6a9028f3a 100644 --- a/rust/crates/sift_rs/src/gen/sift.test_reports.v1.tonic.rs +++ b/rust/crates/sift_rs/src/gen/sift.test_reports.v1.tonic.rs @@ -85,8 +85,6 @@ pub mod test_report_service_client { self.inner = self.inner.max_encoding_message_size(limit); self } - /** Imports a test report from an already-uploaded file -*/ pub async fn import_test_report( &mut self, request: impl tonic::IntoRequest, @@ -437,8 +435,6 @@ pub mod test_report_service_client { ); self.inner.unary(req, path, codec).await } - /** Creates multiple test measurements in a single request -*/ pub async fn create_test_measurements( &mut self, request: impl tonic::IntoRequest, @@ -628,8 +624,6 @@ pub mod test_report_service_server { /// Generated trait containing gRPC methods that should be implemented for use with TestReportServiceServer. #[async_trait] pub trait TestReportService: Send + Sync + 'static { - /** Imports a test report from an already-uploaded file -*/ async fn import_test_report( &self, request: tonic::Request, @@ -727,8 +721,6 @@ pub mod test_report_service_server { tonic::Response, tonic::Status, >; - /** Creates multiple test measurements in a single request -*/ async fn create_test_measurements( &self, request: tonic::Request,