diff --git a/api/kessel/relations/v1beta1/relation_tuples.pb.go b/api/kessel/relations/v1beta1/relation_tuples.pb.go index 88ad91f..b132cee 100644 --- a/api/kessel/relations/v1beta1/relation_tuples.pb.go +++ b/api/kessel/relations/v1beta1/relation_tuples.pb.go @@ -22,6 +22,100 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) +type ImportBulkTuplesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Tuples []*Relationship `protobuf:"bytes,1,rep,name=tuples,proto3" json:"tuples,omitempty"` +} + +func (x *ImportBulkTuplesRequest) Reset() { + *x = ImportBulkTuplesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportBulkTuplesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportBulkTuplesRequest) ProtoMessage() {} + +func (x *ImportBulkTuplesRequest) ProtoReflect() protoreflect.Message { + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportBulkTuplesRequest.ProtoReflect.Descriptor instead. +func (*ImportBulkTuplesRequest) Descriptor() ([]byte, []int) { + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{0} +} + +func (x *ImportBulkTuplesRequest) GetTuples() []*Relationship { + if x != nil { + return x.Tuples + } + return nil +} + +type ImportBulkTuplesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NumLoaded uint64 `protobuf:"varint,1,opt,name=num_loaded,json=numLoaded,proto3" json:"num_loaded,omitempty"` +} + +func (x *ImportBulkTuplesResponse) Reset() { + *x = ImportBulkTuplesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ImportBulkTuplesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ImportBulkTuplesResponse) ProtoMessage() {} + +func (x *ImportBulkTuplesResponse) ProtoReflect() protoreflect.Message { + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ImportBulkTuplesResponse.ProtoReflect.Descriptor instead. +func (*ImportBulkTuplesResponse) Descriptor() ([]byte, []int) { + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{1} +} + +func (x *ImportBulkTuplesResponse) GetNumLoaded() uint64 { + if x != nil { + return x.NumLoaded + } + return 0 +} + type CreateTuplesRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -38,7 +132,7 @@ type CreateTuplesRequest struct { func (x *CreateTuplesRequest) Reset() { *x = CreateTuplesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[0] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -51,7 +145,7 @@ func (x *CreateTuplesRequest) String() string { func (*CreateTuplesRequest) ProtoMessage() {} func (x *CreateTuplesRequest) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[0] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -64,7 +158,7 @@ func (x *CreateTuplesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTuplesRequest.ProtoReflect.Descriptor instead. func (*CreateTuplesRequest) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{0} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{2} } func (x *CreateTuplesRequest) GetUpsert() bool { @@ -90,7 +184,7 @@ type CreateTuplesResponse struct { func (x *CreateTuplesResponse) Reset() { *x = CreateTuplesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[1] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[3] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -103,7 +197,7 @@ func (x *CreateTuplesResponse) String() string { func (*CreateTuplesResponse) ProtoMessage() {} func (x *CreateTuplesResponse) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[1] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[3] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -116,7 +210,7 @@ func (x *CreateTuplesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateTuplesResponse.ProtoReflect.Descriptor instead. func (*CreateTuplesResponse) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{1} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{3} } type ReadTuplesRequest struct { @@ -131,7 +225,7 @@ type ReadTuplesRequest struct { func (x *ReadTuplesRequest) Reset() { *x = ReadTuplesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -144,7 +238,7 @@ func (x *ReadTuplesRequest) String() string { func (*ReadTuplesRequest) ProtoMessage() {} func (x *ReadTuplesRequest) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -157,7 +251,7 @@ func (x *ReadTuplesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadTuplesRequest.ProtoReflect.Descriptor instead. func (*ReadTuplesRequest) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{2} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{4} } func (x *ReadTuplesRequest) GetFilter() *RelationTupleFilter { @@ -186,7 +280,7 @@ type ReadTuplesResponse struct { func (x *ReadTuplesResponse) Reset() { *x = ReadTuplesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[3] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -199,7 +293,7 @@ func (x *ReadTuplesResponse) String() string { func (*ReadTuplesResponse) ProtoMessage() {} func (x *ReadTuplesResponse) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[3] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[5] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -212,7 +306,7 @@ func (x *ReadTuplesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ReadTuplesResponse.ProtoReflect.Descriptor instead. func (*ReadTuplesResponse) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{3} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{5} } func (x *ReadTuplesResponse) GetTuple() *Relationship { @@ -240,7 +334,7 @@ type DeleteTuplesRequest struct { func (x *DeleteTuplesRequest) Reset() { *x = DeleteTuplesRequest{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -253,7 +347,7 @@ func (x *DeleteTuplesRequest) String() string { func (*DeleteTuplesRequest) ProtoMessage() {} func (x *DeleteTuplesRequest) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -266,7 +360,7 @@ func (x *DeleteTuplesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTuplesRequest.ProtoReflect.Descriptor instead. func (*DeleteTuplesRequest) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{4} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{6} } func (x *DeleteTuplesRequest) GetFilter() *RelationTupleFilter { @@ -285,7 +379,7 @@ type DeleteTuplesResponse struct { func (x *DeleteTuplesResponse) Reset() { *x = DeleteTuplesResponse{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[5] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -298,7 +392,7 @@ func (x *DeleteTuplesResponse) String() string { func (*DeleteTuplesResponse) ProtoMessage() {} func (x *DeleteTuplesResponse) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[5] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -311,7 +405,7 @@ func (x *DeleteTuplesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteTuplesResponse.ProtoReflect.Descriptor instead. func (*DeleteTuplesResponse) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{5} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{7} } // RelationTupleFilter is used to filter tuples based on their resource, relation, and subject. @@ -332,7 +426,7 @@ type RelationTupleFilter struct { func (x *RelationTupleFilter) Reset() { *x = RelationTupleFilter{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -345,7 +439,7 @@ func (x *RelationTupleFilter) String() string { func (*RelationTupleFilter) ProtoMessage() {} func (x *RelationTupleFilter) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[8] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -358,7 +452,7 @@ func (x *RelationTupleFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use RelationTupleFilter.ProtoReflect.Descriptor instead. func (*RelationTupleFilter) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{6} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{8} } func (x *RelationTupleFilter) GetResourceNamespace() string { @@ -410,7 +504,7 @@ type SubjectFilter struct { func (x *SubjectFilter) Reset() { *x = SubjectFilter{} if protoimpl.UnsafeEnabled { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -423,7 +517,7 @@ func (x *SubjectFilter) String() string { func (*SubjectFilter) ProtoMessage() {} func (x *SubjectFilter) ProtoReflect() protoreflect.Message { - mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7] + mi := &file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[9] if protoimpl.UnsafeEnabled && x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -436,7 +530,7 @@ func (x *SubjectFilter) ProtoReflect() protoreflect.Message { // Deprecated: Use SubjectFilter.ProtoReflect.Descriptor instead. func (*SubjectFilter) Descriptor() ([]byte, []int) { - return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{7} + return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP(), []int{9} } func (x *SubjectFilter) GetSubjectNamespace() string { @@ -480,119 +574,139 @@ var file_kessel_relations_v1beta1_relation_tuples_proto_rawDesc = []byte{ 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1b, 0x62, 0x75, 0x66, 0x2f, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2f, 0x76, 0x61, - 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6d, 0x0a, 0x13, - 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x74, - 0x75, 0x70, 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x65, - 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x68, 0x69, 0x70, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, - 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, - 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, + 0x6c, 0x69, 0x64, 0x61, 0x74, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x61, 0x0a, 0x17, + 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x46, 0x0a, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x42, + 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, + 0x39, 0x0a, 0x18, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6e, + 0x75, 0x6d, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x09, 0x6e, 0x75, 0x6d, 0x4c, 0x6f, 0x61, 0x64, 0x65, 0x64, 0x22, 0x6d, 0x0a, 0x13, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x08, 0x52, 0x06, 0x75, 0x70, 0x73, 0x65, 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x06, 0x74, 0x75, 0x70, + 0x6c, 0x65, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x26, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, - 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, - 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, - 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6b, - 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, - 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, - 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x12, 0x52, 0x65, - 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x3c, 0x0a, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x26, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x4c, - 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x13, - 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x02, 0x0a, 0x13, 0x52, - 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, - 0x65, 0x72, 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, - 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, - 0x52, 0x11, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, - 0x0c, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, - 0x12, 0x24, 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x27, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x04, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, - 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, - 0x61, 0x63, 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, - 0x63, 0x65, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, - 0x69, 0x6c, 0x74, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, - 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x48, 0x00, 0x52, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, - 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x75, 0x62, - 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, - 0x01, 0x52, 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, - 0x01, 0x12, 0x22, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, - 0x49, 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, - 0x63, 0x74, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, - 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, - 0x0b, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, - 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xae, 0x03, 0x0a, 0x12, 0x4b, 0x65, - 0x73, 0x73, 0x65, 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x89, 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, - 0x73, 0x12, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, - 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, - 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x1a, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x76, 0x31, - 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x82, 0x01, 0x0a, - 0x0a, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x6b, 0x65, - 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, - 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, - 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x30, - 0x01, 0x12, 0x86, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, - 0x65, 0x73, 0x12, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x68, 0x69, + 0x70, 0x52, 0x06, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x43, 0x72, 0x65, + 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0xc3, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, + 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, + 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, + 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, 0x6c, 0x65, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, + 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x50, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x6b, 0x65, 0x73, + 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, + 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x50, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x48, 0x00, 0x52, 0x0a, 0x70, 0x61, 0x67, 0x69, 0x6e, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x70, 0x61, 0x67, + 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0xa0, 0x01, 0x0a, 0x12, 0x52, 0x65, 0x61, 0x64, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x3c, + 0x0a, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, + 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x68, 0x69, 0x70, 0x52, 0x05, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x12, 0x4c, 0x0a, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x2c, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x50, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0a, + 0x70, 0x61, 0x67, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x64, 0x0a, 0x13, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x1a, 0x2e, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x2a, 0x0f, 0x2f, 0x76, 0x31, 0x62, 0x65, - 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x42, 0x72, 0x0a, 0x28, 0x6f, 0x72, - 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, - 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, - 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, 0x6b, 0x65, 0x73, - 0x73, 0x65, 0x6c, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2d, 0x61, 0x70, - 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2f, 0x72, 0x65, 0x6c, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x74, 0x12, 0x4d, 0x0a, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x42, 0x06, 0xba, 0x48, 0x03, 0xc8, 0x01, 0x01, 0x52, 0x06, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x22, 0x16, 0x0a, 0x14, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xe8, 0x02, 0x0a, 0x13, 0x52, 0x65, 0x6c, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, + 0x12, 0x32, 0x0a, 0x12, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, + 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x11, + 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x88, 0x01, 0x01, 0x12, 0x28, 0x0a, 0x0d, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, 0x0c, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, 0x24, + 0x0a, 0x0b, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x0a, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, + 0x64, 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x12, 0x53, 0x0a, 0x0e, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, + 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x48, 0x04, 0x52, 0x0d, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, + 0x74, 0x46, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x88, 0x01, 0x01, 0x42, 0x15, 0x0a, 0x13, 0x5f, 0x72, + 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, + 0x65, 0x42, 0x10, 0x0a, 0x0e, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x74, + 0x79, 0x70, 0x65, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x72, 0x65, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x42, 0x11, 0x0a, 0x0f, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x66, 0x69, 0x6c, + 0x74, 0x65, 0x72, 0x22, 0xf1, 0x01, 0x0a, 0x0d, 0x53, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x46, + 0x69, 0x6c, 0x74, 0x65, 0x72, 0x12, 0x30, 0x0a, 0x11, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x48, 0x00, 0x52, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x4e, 0x61, 0x6d, 0x65, 0x73, + 0x70, 0x61, 0x63, 0x65, 0x88, 0x01, 0x01, 0x12, 0x26, 0x0a, 0x0c, 0x73, 0x75, 0x62, 0x6a, 0x65, + 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x01, 0x52, + 0x0b, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x54, 0x79, 0x70, 0x65, 0x88, 0x01, 0x01, 0x12, + 0x22, 0x0a, 0x0a, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x09, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x49, 0x64, + 0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x08, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x88, 0x01, 0x01, 0x42, 0x14, 0x0a, 0x12, 0x5f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, + 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x70, 0x61, 0x63, 0x65, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x73, + 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, + 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x69, 0x64, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x72, + 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x32, 0xd3, 0x04, 0x0a, 0x12, 0x4b, 0x65, 0x73, 0x73, + 0x65, 0x6c, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x89, + 0x01, 0x0a, 0x0c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, + 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, + 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2e, + 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x1a, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x14, 0x3a, 0x01, 0x2a, 0x22, 0x0f, 0x2f, 0x76, 0x31, 0x62, 0x65, + 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x82, 0x01, 0x0a, 0x0a, 0x52, + 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x6b, 0x65, 0x73, 0x73, + 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, + 0x65, 0x74, 0x61, 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2e, 0x52, 0x65, 0x61, 0x64, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x12, 0x0f, 0x2f, 0x76, + 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x30, 0x01, 0x12, + 0x86, 0x01, 0x0a, 0x0c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x12, 0x2d, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x2e, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, + 0x65, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x17, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x11, 0x2a, 0x0f, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0xa2, 0x01, 0x0a, 0x10, 0x49, 0x6d, 0x70, + 0x6f, 0x72, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x12, 0x31, 0x2e, + 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x42, + 0x75, 0x6c, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x32, 0x2e, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2e, 0x49, 0x6d, 0x70, 0x6f, + 0x72, 0x74, 0x42, 0x75, 0x6c, 0x6b, 0x54, 0x75, 0x70, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x25, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x3a, 0x01, 0x2a, 0x22, + 0x1a, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x2f, 0x74, 0x75, 0x70, 0x6c, 0x65, 0x73, + 0x2f, 0x62, 0x75, 0x6c, 0x6b, 0x69, 0x6d, 0x70, 0x6f, 0x72, 0x74, 0x28, 0x01, 0x42, 0x72, 0x0a, + 0x28, 0x6f, 0x72, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x73, + 0x73, 0x65, 0x6c, 0x2e, 0x61, 0x70, 0x69, 0x2e, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, 0x31, 0x50, 0x01, 0x5a, 0x44, 0x67, 0x69, 0x74, + 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x70, 0x72, 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x2d, + 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2f, 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, + 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x6b, 0x65, 0x73, 0x73, 0x65, 0x6c, 0x2f, + 0x72, 0x65, 0x6c, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x76, 0x31, 0x62, 0x65, 0x74, 0x61, + 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -607,39 +721,44 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_rawDescGZIP() []byte { return file_kessel_relations_v1beta1_relation_tuples_proto_rawDescData } -var file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes = make([]protoimpl.MessageInfo, 8) +var file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes = make([]protoimpl.MessageInfo, 10) var file_kessel_relations_v1beta1_relation_tuples_proto_goTypes = []any{ - (*CreateTuplesRequest)(nil), // 0: kessel.relations.v1beta1.CreateTuplesRequest - (*CreateTuplesResponse)(nil), // 1: kessel.relations.v1beta1.CreateTuplesResponse - (*ReadTuplesRequest)(nil), // 2: kessel.relations.v1beta1.ReadTuplesRequest - (*ReadTuplesResponse)(nil), // 3: kessel.relations.v1beta1.ReadTuplesResponse - (*DeleteTuplesRequest)(nil), // 4: kessel.relations.v1beta1.DeleteTuplesRequest - (*DeleteTuplesResponse)(nil), // 5: kessel.relations.v1beta1.DeleteTuplesResponse - (*RelationTupleFilter)(nil), // 6: kessel.relations.v1beta1.RelationTupleFilter - (*SubjectFilter)(nil), // 7: kessel.relations.v1beta1.SubjectFilter - (*Relationship)(nil), // 8: kessel.relations.v1beta1.Relationship - (*RequestPagination)(nil), // 9: kessel.relations.v1beta1.RequestPagination - (*ResponsePagination)(nil), // 10: kessel.relations.v1beta1.ResponsePagination + (*ImportBulkTuplesRequest)(nil), // 0: kessel.relations.v1beta1.ImportBulkTuplesRequest + (*ImportBulkTuplesResponse)(nil), // 1: kessel.relations.v1beta1.ImportBulkTuplesResponse + (*CreateTuplesRequest)(nil), // 2: kessel.relations.v1beta1.CreateTuplesRequest + (*CreateTuplesResponse)(nil), // 3: kessel.relations.v1beta1.CreateTuplesResponse + (*ReadTuplesRequest)(nil), // 4: kessel.relations.v1beta1.ReadTuplesRequest + (*ReadTuplesResponse)(nil), // 5: kessel.relations.v1beta1.ReadTuplesResponse + (*DeleteTuplesRequest)(nil), // 6: kessel.relations.v1beta1.DeleteTuplesRequest + (*DeleteTuplesResponse)(nil), // 7: kessel.relations.v1beta1.DeleteTuplesResponse + (*RelationTupleFilter)(nil), // 8: kessel.relations.v1beta1.RelationTupleFilter + (*SubjectFilter)(nil), // 9: kessel.relations.v1beta1.SubjectFilter + (*Relationship)(nil), // 10: kessel.relations.v1beta1.Relationship + (*RequestPagination)(nil), // 11: kessel.relations.v1beta1.RequestPagination + (*ResponsePagination)(nil), // 12: kessel.relations.v1beta1.ResponsePagination } var file_kessel_relations_v1beta1_relation_tuples_proto_depIdxs = []int32{ - 8, // 0: kessel.relations.v1beta1.CreateTuplesRequest.tuples:type_name -> kessel.relations.v1beta1.Relationship - 6, // 1: kessel.relations.v1beta1.ReadTuplesRequest.filter:type_name -> kessel.relations.v1beta1.RelationTupleFilter - 9, // 2: kessel.relations.v1beta1.ReadTuplesRequest.pagination:type_name -> kessel.relations.v1beta1.RequestPagination - 8, // 3: kessel.relations.v1beta1.ReadTuplesResponse.tuple:type_name -> kessel.relations.v1beta1.Relationship - 10, // 4: kessel.relations.v1beta1.ReadTuplesResponse.pagination:type_name -> kessel.relations.v1beta1.ResponsePagination - 6, // 5: kessel.relations.v1beta1.DeleteTuplesRequest.filter:type_name -> kessel.relations.v1beta1.RelationTupleFilter - 7, // 6: kessel.relations.v1beta1.RelationTupleFilter.subject_filter:type_name -> kessel.relations.v1beta1.SubjectFilter - 0, // 7: kessel.relations.v1beta1.KesselTupleService.CreateTuples:input_type -> kessel.relations.v1beta1.CreateTuplesRequest - 2, // 8: kessel.relations.v1beta1.KesselTupleService.ReadTuples:input_type -> kessel.relations.v1beta1.ReadTuplesRequest - 4, // 9: kessel.relations.v1beta1.KesselTupleService.DeleteTuples:input_type -> kessel.relations.v1beta1.DeleteTuplesRequest - 1, // 10: kessel.relations.v1beta1.KesselTupleService.CreateTuples:output_type -> kessel.relations.v1beta1.CreateTuplesResponse - 3, // 11: kessel.relations.v1beta1.KesselTupleService.ReadTuples:output_type -> kessel.relations.v1beta1.ReadTuplesResponse - 5, // 12: kessel.relations.v1beta1.KesselTupleService.DeleteTuples:output_type -> kessel.relations.v1beta1.DeleteTuplesResponse - 10, // [10:13] is the sub-list for method output_type - 7, // [7:10] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 10, // 0: kessel.relations.v1beta1.ImportBulkTuplesRequest.tuples:type_name -> kessel.relations.v1beta1.Relationship + 10, // 1: kessel.relations.v1beta1.CreateTuplesRequest.tuples:type_name -> kessel.relations.v1beta1.Relationship + 8, // 2: kessel.relations.v1beta1.ReadTuplesRequest.filter:type_name -> kessel.relations.v1beta1.RelationTupleFilter + 11, // 3: kessel.relations.v1beta1.ReadTuplesRequest.pagination:type_name -> kessel.relations.v1beta1.RequestPagination + 10, // 4: kessel.relations.v1beta1.ReadTuplesResponse.tuple:type_name -> kessel.relations.v1beta1.Relationship + 12, // 5: kessel.relations.v1beta1.ReadTuplesResponse.pagination:type_name -> kessel.relations.v1beta1.ResponsePagination + 8, // 6: kessel.relations.v1beta1.DeleteTuplesRequest.filter:type_name -> kessel.relations.v1beta1.RelationTupleFilter + 9, // 7: kessel.relations.v1beta1.RelationTupleFilter.subject_filter:type_name -> kessel.relations.v1beta1.SubjectFilter + 2, // 8: kessel.relations.v1beta1.KesselTupleService.CreateTuples:input_type -> kessel.relations.v1beta1.CreateTuplesRequest + 4, // 9: kessel.relations.v1beta1.KesselTupleService.ReadTuples:input_type -> kessel.relations.v1beta1.ReadTuplesRequest + 6, // 10: kessel.relations.v1beta1.KesselTupleService.DeleteTuples:input_type -> kessel.relations.v1beta1.DeleteTuplesRequest + 0, // 11: kessel.relations.v1beta1.KesselTupleService.ImportBulkTuples:input_type -> kessel.relations.v1beta1.ImportBulkTuplesRequest + 3, // 12: kessel.relations.v1beta1.KesselTupleService.CreateTuples:output_type -> kessel.relations.v1beta1.CreateTuplesResponse + 5, // 13: kessel.relations.v1beta1.KesselTupleService.ReadTuples:output_type -> kessel.relations.v1beta1.ReadTuplesResponse + 7, // 14: kessel.relations.v1beta1.KesselTupleService.DeleteTuples:output_type -> kessel.relations.v1beta1.DeleteTuplesResponse + 1, // 15: kessel.relations.v1beta1.KesselTupleService.ImportBulkTuples:output_type -> kessel.relations.v1beta1.ImportBulkTuplesResponse + 12, // [12:16] is the sub-list for method output_type + 8, // [8:12] is the sub-list for method input_type + 8, // [8:8] is the sub-list for extension type_name + 8, // [8:8] is the sub-list for extension extendee + 0, // [0:8] is the sub-list for field type_name } func init() { file_kessel_relations_v1beta1_relation_tuples_proto_init() } @@ -650,7 +769,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { file_kessel_relations_v1beta1_common_proto_init() if !protoimpl.UnsafeEnabled { file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[0].Exporter = func(v any, i int) any { - switch v := v.(*CreateTuplesRequest); i { + switch v := v.(*ImportBulkTuplesRequest); i { case 0: return &v.state case 1: @@ -662,7 +781,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[1].Exporter = func(v any, i int) any { - switch v := v.(*CreateTuplesResponse); i { + switch v := v.(*ImportBulkTuplesResponse); i { case 0: return &v.state case 1: @@ -674,7 +793,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2].Exporter = func(v any, i int) any { - switch v := v.(*ReadTuplesRequest); i { + switch v := v.(*CreateTuplesRequest); i { case 0: return &v.state case 1: @@ -686,7 +805,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[3].Exporter = func(v any, i int) any { - switch v := v.(*ReadTuplesResponse); i { + switch v := v.(*CreateTuplesResponse); i { case 0: return &v.state case 1: @@ -698,7 +817,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4].Exporter = func(v any, i int) any { - switch v := v.(*DeleteTuplesRequest); i { + switch v := v.(*ReadTuplesRequest); i { case 0: return &v.state case 1: @@ -710,7 +829,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[5].Exporter = func(v any, i int) any { - switch v := v.(*DeleteTuplesResponse); i { + switch v := v.(*ReadTuplesResponse); i { case 0: return &v.state case 1: @@ -722,7 +841,7 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6].Exporter = func(v any, i int) any { - switch v := v.(*RelationTupleFilter); i { + switch v := v.(*DeleteTuplesRequest); i { case 0: return &v.state case 1: @@ -734,6 +853,30 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7].Exporter = func(v any, i int) any { + switch v := v.(*DeleteTuplesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[8].Exporter = func(v any, i int) any { + switch v := v.(*RelationTupleFilter); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[9].Exporter = func(v any, i int) any { switch v := v.(*SubjectFilter); i { case 0: return &v.state @@ -746,16 +889,16 @@ func file_kessel_relations_v1beta1_relation_tuples_proto_init() { } } } - file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[2].OneofWrappers = []any{} - file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[6].OneofWrappers = []any{} - file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[7].OneofWrappers = []any{} + file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[4].OneofWrappers = []any{} + file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[8].OneofWrappers = []any{} + file_kessel_relations_v1beta1_relation_tuples_proto_msgTypes[9].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_kessel_relations_v1beta1_relation_tuples_proto_rawDesc, NumEnums: 0, - NumMessages: 8, + NumMessages: 10, NumExtensions: 0, NumServices: 1, }, diff --git a/api/kessel/relations/v1beta1/relation_tuples.proto b/api/kessel/relations/v1beta1/relation_tuples.proto index d55703a..83e97c2 100644 --- a/api/kessel/relations/v1beta1/relation_tuples.proto +++ b/api/kessel/relations/v1beta1/relation_tuples.proto @@ -34,12 +34,27 @@ service KesselTupleService { delete: "/v1beta1/tuples" }; }; + rpc ImportBulkTuples (stream + ImportBulkTuplesRequest) returns (ImportBulkTuplesResponse) { + option (google.api.http) = { + post: "/v1beta1/tuples/bulkimport" + body: "*" + }; + }; +} + +message ImportBulkTuplesRequest { + repeated Relationship tuples = 1 [(buf.validate.field).required = true]; +} + +message ImportBulkTuplesResponse { + uint64 num_loaded = 1; } message CreateTuplesRequest { // Whether or not the request should ignore existing tuples (`true`), // or if the request should fail if the same tuple already exists (`false`). - // + // // Defaults to `false`. bool upsert = 1; repeated Relationship tuples = 2; diff --git a/api/kessel/relations/v1beta1/relation_tuples_grpc.pb.go b/api/kessel/relations/v1beta1/relation_tuples_grpc.pb.go index c0a9814..b060202 100644 --- a/api/kessel/relations/v1beta1/relation_tuples_grpc.pb.go +++ b/api/kessel/relations/v1beta1/relation_tuples_grpc.pb.go @@ -19,9 +19,10 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - KesselTupleService_CreateTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/CreateTuples" - KesselTupleService_ReadTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/ReadTuples" - KesselTupleService_DeleteTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/DeleteTuples" + KesselTupleService_CreateTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/CreateTuples" + KesselTupleService_ReadTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/ReadTuples" + KesselTupleService_DeleteTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/DeleteTuples" + KesselTupleService_ImportBulkTuples_FullMethodName = "/kessel.relations.v1beta1.KesselTupleService/ImportBulkTuples" ) // KesselTupleServiceClient is the client API for KesselTupleService service. @@ -39,6 +40,7 @@ type KesselTupleServiceClient interface { CreateTuples(ctx context.Context, in *CreateTuplesRequest, opts ...grpc.CallOption) (*CreateTuplesResponse, error) ReadTuples(ctx context.Context, in *ReadTuplesRequest, opts ...grpc.CallOption) (grpc.ServerStreamingClient[ReadTuplesResponse], error) DeleteTuples(ctx context.Context, in *DeleteTuplesRequest, opts ...grpc.CallOption) (*DeleteTuplesResponse, error) + ImportBulkTuples(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ImportBulkTuplesRequest, ImportBulkTuplesResponse], error) } type kesselTupleServiceClient struct { @@ -88,6 +90,19 @@ func (c *kesselTupleServiceClient) DeleteTuples(ctx context.Context, in *DeleteT return out, nil } +func (c *kesselTupleServiceClient) ImportBulkTuples(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[ImportBulkTuplesRequest, ImportBulkTuplesResponse], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &KesselTupleService_ServiceDesc.Streams[1], KesselTupleService_ImportBulkTuples_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[ImportBulkTuplesRequest, ImportBulkTuplesResponse]{ClientStream: stream} + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type KesselTupleService_ImportBulkTuplesClient = grpc.ClientStreamingClient[ImportBulkTuplesRequest, ImportBulkTuplesResponse] + // KesselTupleServiceServer is the server API for KesselTupleService service. // All implementations must embed UnimplementedKesselTupleServiceServer // for forward compatibility. @@ -103,6 +118,7 @@ type KesselTupleServiceServer interface { CreateTuples(context.Context, *CreateTuplesRequest) (*CreateTuplesResponse, error) ReadTuples(*ReadTuplesRequest, grpc.ServerStreamingServer[ReadTuplesResponse]) error DeleteTuples(context.Context, *DeleteTuplesRequest) (*DeleteTuplesResponse, error) + ImportBulkTuples(grpc.ClientStreamingServer[ImportBulkTuplesRequest, ImportBulkTuplesResponse]) error mustEmbedUnimplementedKesselTupleServiceServer() } @@ -122,6 +138,9 @@ func (UnimplementedKesselTupleServiceServer) ReadTuples(*ReadTuplesRequest, grpc func (UnimplementedKesselTupleServiceServer) DeleteTuples(context.Context, *DeleteTuplesRequest) (*DeleteTuplesResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method DeleteTuples not implemented") } +func (UnimplementedKesselTupleServiceServer) ImportBulkTuples(grpc.ClientStreamingServer[ImportBulkTuplesRequest, ImportBulkTuplesResponse]) error { + return status.Errorf(codes.Unimplemented, "method ImportBulkTuples not implemented") +} func (UnimplementedKesselTupleServiceServer) mustEmbedUnimplementedKesselTupleServiceServer() {} func (UnimplementedKesselTupleServiceServer) testEmbeddedByValue() {} @@ -190,6 +209,13 @@ func _KesselTupleService_DeleteTuples_Handler(srv interface{}, ctx context.Conte return interceptor(ctx, in, info, handler) } +func _KesselTupleService_ImportBulkTuples_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(KesselTupleServiceServer).ImportBulkTuples(&grpc.GenericServerStream[ImportBulkTuplesRequest, ImportBulkTuplesResponse]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type KesselTupleService_ImportBulkTuplesServer = grpc.ClientStreamingServer[ImportBulkTuplesRequest, ImportBulkTuplesResponse] + // KesselTupleService_ServiceDesc is the grpc.ServiceDesc for KesselTupleService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -212,6 +238,11 @@ var KesselTupleService_ServiceDesc = grpc.ServiceDesc{ Handler: _KesselTupleService_ReadTuples_Handler, ServerStreams: true, }, + { + StreamName: "ImportBulkTuples", + Handler: _KesselTupleService_ImportBulkTuples_Handler, + ClientStreams: true, + }, }, Metadata: "kessel/relations/v1beta1/relation_tuples.proto", } diff --git a/openapi.yaml b/openapi.yaml index 08097b1..9aa1e5c 100644 --- a/openapi.yaml +++ b/openapi.yaml @@ -267,6 +267,24 @@ paths: application/json: schema: $ref: '#/components/schemas/kessel.relations.v1beta1.DeleteTuplesResponse' + /v1beta1/tuples/bulkimport: + post: + tags: + - KesselTupleService + operationId: KesselTupleService_ImportBulkTuples + requestBody: + content: + application/json: + schema: + $ref: '#/components/schemas/kessel.relations.v1beta1.ImportBulkTuplesRequest' + required: true + responses: + "200": + description: OK + content: + application/json: + schema: + $ref: '#/components/schemas/kessel.relations.v1beta1.ImportBulkTuplesResponse' components: schemas: kessel.relations.v1.GetLivezResponse: @@ -305,7 +323,11 @@ components: properties: upsert: type: boolean - description: "Whether or not the request should ignore existing tuples (`true`),\n or if the request should fail if the same tuple already exists (`false`).\n \n Defaults to `false`." + description: |- + Whether or not the request should ignore existing tuples (`true`), + or if the request should fail if the same tuple already exists (`false`). + + Defaults to `false`. tuples: type: array items: @@ -316,6 +338,18 @@ components: kessel.relations.v1beta1.DeleteTuplesResponse: type: object properties: {} + kessel.relations.v1beta1.ImportBulkTuplesRequest: + type: object + properties: + tuples: + type: array + items: + $ref: '#/components/schemas/kessel.relations.v1beta1.Relationship' + kessel.relations.v1beta1.ImportBulkTuplesResponse: + type: object + properties: + numLoaded: + type: string kessel.relations.v1beta1.LookupResourcesResponse: type: object properties: