diff --git a/buf.lock b/buf.lock index 90dff704..bd9dd975 100644 --- a/buf.lock +++ b/buf.lock @@ -2,8 +2,8 @@ version: v2 deps: - name: buf.build/bufbuild/protovalidate - commit: 297b8109523d411790e18419c7c17443 - digest: b5:826b8be86c1bc691afb751fb33c513cb90a9b9d03699b366a7812737e72fe06132d13ca4b2f5fdb9c5784594b0f65b20b850003349a556e8f020b84ce6787bd1 + commit: fd99550722dc46c68721a651bad4db05 + digest: b5:4ced782025d095feff578a5c47f192302ed629d72389019c0b29b2dfe23495e8cf26ad27e9ead6108d488e4f7e85397b3b536718a270693857fba4b6445fef73 - name: buf.build/common/protos commit: 8e61745a05234b5ca6985e15b97c61fd digest: b5:8acdce29fe0c82245aee65361d7400aaa6b95df4a65ded8ff2465cafc09928039ab846ceff30b14bad7678c53a1d7554c76b868afde31d919f7b10f9e3c2898c diff --git a/gen/go/qdrant/cloud/iam/v1/iam.pb.go b/gen/go/qdrant/cloud/iam/v1/iam.pb.go index e39342e5..33196279 100644 --- a/gen/go/qdrant/cloud/iam/v1/iam.pb.go +++ b/gen/go/qdrant/cloud/iam/v1/iam.pb.go @@ -82,6 +82,122 @@ func (UserStatus) EnumDescriptor() ([]byte, []int) { return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{0} } +// LegalDocumentType specifies the type of a legal document. +type LegalDocumentType int32 + +const ( + // Unspecified document type. + LegalDocumentType_LEGAL_DOCUMENT_TYPE_UNSPECIFIED LegalDocumentType = 0 + // Terms of Service document. + LegalDocumentType_LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE LegalDocumentType = 1 + // Privacy Policy document. + LegalDocumentType_LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY LegalDocumentType = 2 + // Service Level Agreement document. + LegalDocumentType_LEGAL_DOCUMENT_TYPE_SLA LegalDocumentType = 3 +) + +// Enum value maps for LegalDocumentType. +var ( + LegalDocumentType_name = map[int32]string{ + 0: "LEGAL_DOCUMENT_TYPE_UNSPECIFIED", + 1: "LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE", + 2: "LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY", + 3: "LEGAL_DOCUMENT_TYPE_SLA", + } + LegalDocumentType_value = map[string]int32{ + "LEGAL_DOCUMENT_TYPE_UNSPECIFIED": 0, + "LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE": 1, + "LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY": 2, + "LEGAL_DOCUMENT_TYPE_SLA": 3, + } +) + +func (x LegalDocumentType) Enum() *LegalDocumentType { + p := new(LegalDocumentType) + *p = x + return p +} + +func (x LegalDocumentType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (LegalDocumentType) Descriptor() protoreflect.EnumDescriptor { + return file_qdrant_cloud_iam_v1_iam_proto_enumTypes[1].Descriptor() +} + +func (LegalDocumentType) Type() protoreflect.EnumType { + return &file_qdrant_cloud_iam_v1_iam_proto_enumTypes[1] +} + +func (x LegalDocumentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use LegalDocumentType.Descriptor instead. +func (LegalDocumentType) EnumDescriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{1} +} + +// UserConsentStatus specifies the status from an user for a consent. +type UserConsentStatus int32 + +const ( + // Unspecified consent status. + UserConsentStatus_USER_CONSENT_STATUS_UNSPECIFIED UserConsentStatus = 0 + // The user accepted the consent. + UserConsentStatus_USER_CONSENT_STATUS_ACCEPTED UserConsentStatus = 1 + // The user revoked the consent. + UserConsentStatus_USER_CONSENT_STATUS_REVOKED UserConsentStatus = 2 + // The consent is pending action from the user. + // Pending consent means that the user got notified about the new version of the document. After a certain + // period of time, we auto accept pending consents depending on the document type. + UserConsentStatus_USER_CONSENT_STATUS_PENDING UserConsentStatus = 3 +) + +// Enum value maps for UserConsentStatus. +var ( + UserConsentStatus_name = map[int32]string{ + 0: "USER_CONSENT_STATUS_UNSPECIFIED", + 1: "USER_CONSENT_STATUS_ACCEPTED", + 2: "USER_CONSENT_STATUS_REVOKED", + 3: "USER_CONSENT_STATUS_PENDING", + } + UserConsentStatus_value = map[string]int32{ + "USER_CONSENT_STATUS_UNSPECIFIED": 0, + "USER_CONSENT_STATUS_ACCEPTED": 1, + "USER_CONSENT_STATUS_REVOKED": 2, + "USER_CONSENT_STATUS_PENDING": 3, + } +) + +func (x UserConsentStatus) Enum() *UserConsentStatus { + p := new(UserConsentStatus) + *p = x + return p +} + +func (x UserConsentStatus) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (UserConsentStatus) Descriptor() protoreflect.EnumDescriptor { + return file_qdrant_cloud_iam_v1_iam_proto_enumTypes[2].Descriptor() +} + +func (UserConsentStatus) Type() protoreflect.EnumType { + return &file_qdrant_cloud_iam_v1_iam_proto_enumTypes[2] +} + +func (x UserConsentStatus) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use UserConsentStatus.Descriptor instead. +func (UserConsentStatus) EnumDescriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{2} +} + // RoleType specified the type of the role type RoleType int32 @@ -120,11 +236,11 @@ func (x RoleType) String() string { } func (RoleType) Descriptor() protoreflect.EnumDescriptor { - return file_qdrant_cloud_iam_v1_iam_proto_enumTypes[1].Descriptor() + return file_qdrant_cloud_iam_v1_iam_proto_enumTypes[3].Descriptor() } func (RoleType) Type() protoreflect.EnumType { - return &file_qdrant_cloud_iam_v1_iam_proto_enumTypes[1] + return &file_qdrant_cloud_iam_v1_iam_proto_enumTypes[3] } func (x RoleType) Number() protoreflect.EnumNumber { @@ -133,7 +249,7 @@ func (x RoleType) Number() protoreflect.EnumNumber { // Deprecated: Use RoleType.Descriptor instead. func (RoleType) EnumDescriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{1} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{3} } // GetAuthenticatedUserRequest is the request for the GetAuthenticatedUser function @@ -311,6 +427,223 @@ func (x *UpdateUserResponse) GetUser() *User { return nil } +// GetUserConsentRequest is the request for the GetUserConsent function. +type GetUserConsentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The type of the legal document. + // This is a required field and cannot be UNSPECIFIED. + DocumentType LegalDocumentType `protobuf:"varint,1,opt,name=document_type,json=documentType,proto3,enum=qdrant.cloud.iam.v1.LegalDocumentType" json:"document_type,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetUserConsentRequest) Reset() { + *x = GetUserConsentRequest{} + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetUserConsentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserConsentRequest) ProtoMessage() {} + +func (x *GetUserConsentRequest) ProtoReflect() protoreflect.Message { + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserConsentRequest.ProtoReflect.Descriptor instead. +func (*GetUserConsentRequest) Descriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{4} +} + +func (x *GetUserConsentRequest) GetDocumentType() LegalDocumentType { + if x != nil { + return x.DocumentType + } + return LegalDocumentType_LEGAL_DOCUMENT_TYPE_UNSPECIFIED +} + +// GetUserConsentResponse is the response from the GetUserConsent function. +type GetUserConsentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The type of the legal document for which consent status is reported. + DocumentType LegalDocumentType `protobuf:"varint,1,opt,name=document_type,json=documentType,proto3,enum=qdrant.cloud.iam.v1.LegalDocumentType" json:"document_type,omitempty"` + // The latest consent status recorded from the user for this document type. + // Will be USER_CONSENT_STATUS_UNSPECIFIED if no status update has been recorded. + Status UserConsentStatus `protobuf:"varint,2,opt,name=status,proto3,enum=qdrant.cloud.iam.v1.UserConsentStatus" json:"status,omitempty"` + // Timestamp of the most recent status update. + // Unset if no status update has been recorded. + LastModifiedAt *timestamppb.Timestamp `protobuf:"bytes,3,opt,name=last_modified_at,json=lastModifiedAt,proto3,oneof" json:"last_modified_at,omitempty"` + // A convenience field indicating if the current status is an acceptance. + // True if status is USER_CONSENT_STATUS_ACCEPTED, false otherwise. + IsAccepted bool `protobuf:"varint,4,opt,name=is_accepted,json=isAccepted,proto3" json:"is_accepted,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *GetUserConsentResponse) Reset() { + *x = GetUserConsentResponse{} + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *GetUserConsentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetUserConsentResponse) ProtoMessage() {} + +func (x *GetUserConsentResponse) ProtoReflect() protoreflect.Message { + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetUserConsentResponse.ProtoReflect.Descriptor instead. +func (*GetUserConsentResponse) Descriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{5} +} + +func (x *GetUserConsentResponse) GetDocumentType() LegalDocumentType { + if x != nil { + return x.DocumentType + } + return LegalDocumentType_LEGAL_DOCUMENT_TYPE_UNSPECIFIED +} + +func (x *GetUserConsentResponse) GetStatus() UserConsentStatus { + if x != nil { + return x.Status + } + return UserConsentStatus_USER_CONSENT_STATUS_UNSPECIFIED +} + +func (x *GetUserConsentResponse) GetLastModifiedAt() *timestamppb.Timestamp { + if x != nil { + return x.LastModifiedAt + } + return nil +} + +func (x *GetUserConsentResponse) GetIsAccepted() bool { + if x != nil { + return x.IsAccepted + } + return false +} + +// RecordUserConsentRequest is the request for the RecordUserConsent function. +type RecordUserConsentRequest struct { + state protoimpl.MessageState `protogen:"open.v1"` + // The type of the legal document. + // This is a required field and cannot be UNSPECIFIED. + DocumentType LegalDocumentType `protobuf:"varint,1,opt,name=document_type,json=documentType,proto3,enum=qdrant.cloud.iam.v1.LegalDocumentType" json:"document_type,omitempty"` + // The status update initiated by the user. + // This is a required field and cannot be UNSPECIFIED or PENDING. + StatusUpdate UserConsentStatus `protobuf:"varint,2,opt,name=status_update,json=statusUpdate,proto3,enum=qdrant.cloud.iam.v1.UserConsentStatus" json:"status_update,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecordUserConsentRequest) Reset() { + *x = RecordUserConsentRequest{} + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecordUserConsentRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecordUserConsentRequest) ProtoMessage() {} + +func (x *RecordUserConsentRequest) ProtoReflect() protoreflect.Message { + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecordUserConsentRequest.ProtoReflect.Descriptor instead. +func (*RecordUserConsentRequest) Descriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{6} +} + +func (x *RecordUserConsentRequest) GetDocumentType() LegalDocumentType { + if x != nil { + return x.DocumentType + } + return LegalDocumentType_LEGAL_DOCUMENT_TYPE_UNSPECIFIED +} + +func (x *RecordUserConsentRequest) GetStatusUpdate() UserConsentStatus { + if x != nil { + return x.StatusUpdate + } + return UserConsentStatus_USER_CONSENT_STATUS_UNSPECIFIED +} + +// RecordUserConsentResponse is the response from the RecordUserConsent function. +type RecordUserConsentResponse struct { + state protoimpl.MessageState `protogen:"open.v1"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *RecordUserConsentResponse) Reset() { + *x = RecordUserConsentResponse{} + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *RecordUserConsentResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*RecordUserConsentResponse) ProtoMessage() {} + +func (x *RecordUserConsentResponse) ProtoReflect() protoreflect.Message { + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use RecordUserConsentResponse.ProtoReflect.Descriptor instead. +func (*RecordUserConsentResponse) Descriptor() ([]byte, []int) { + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{7} +} + // ListPermissionsRequest is the request for the ListPermissions function type ListPermissionsRequest struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -323,7 +656,7 @@ type ListPermissionsRequest struct { func (x *ListPermissionsRequest) Reset() { *x = ListPermissionsRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[4] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -335,7 +668,7 @@ func (x *ListPermissionsRequest) String() string { func (*ListPermissionsRequest) ProtoMessage() {} func (x *ListPermissionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[4] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -348,7 +681,7 @@ func (x *ListPermissionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPermissionsRequest.ProtoReflect.Descriptor instead. func (*ListPermissionsRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{4} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{8} } func (x *ListPermissionsRequest) GetAccountId() string { @@ -369,7 +702,7 @@ type ListPermissionsResponse struct { func (x *ListPermissionsResponse) Reset() { *x = ListPermissionsResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[5] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -381,7 +714,7 @@ func (x *ListPermissionsResponse) String() string { func (*ListPermissionsResponse) ProtoMessage() {} func (x *ListPermissionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[5] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -394,7 +727,7 @@ func (x *ListPermissionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListPermissionsResponse.ProtoReflect.Descriptor instead. func (*ListPermissionsResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{5} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{9} } func (x *ListPermissionsResponse) GetPermissions() []string { @@ -416,7 +749,7 @@ type ListRolesRequest struct { func (x *ListRolesRequest) Reset() { *x = ListRolesRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[6] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -428,7 +761,7 @@ func (x *ListRolesRequest) String() string { func (*ListRolesRequest) ProtoMessage() {} func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[6] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -441,7 +774,7 @@ func (x *ListRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesRequest.ProtoReflect.Descriptor instead. func (*ListRolesRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{6} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{10} } func (x *ListRolesRequest) GetAccountId() string { @@ -462,7 +795,7 @@ type ListRolesResponse struct { func (x *ListRolesResponse) Reset() { *x = ListRolesResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[7] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -474,7 +807,7 @@ func (x *ListRolesResponse) String() string { func (*ListRolesResponse) ProtoMessage() {} func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[7] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -487,7 +820,7 @@ func (x *ListRolesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListRolesResponse.ProtoReflect.Descriptor instead. func (*ListRolesResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{7} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{11} } func (x *ListRolesResponse) GetItems() []*Role { @@ -512,7 +845,7 @@ type GetRoleRequest struct { func (x *GetRoleRequest) Reset() { *x = GetRoleRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[8] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -524,7 +857,7 @@ func (x *GetRoleRequest) String() string { func (*GetRoleRequest) ProtoMessage() {} func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[8] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -537,7 +870,7 @@ func (x *GetRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleRequest.ProtoReflect.Descriptor instead. func (*GetRoleRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{8} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{12} } func (x *GetRoleRequest) GetAccountId() string { @@ -565,7 +898,7 @@ type GetRoleResponse struct { func (x *GetRoleResponse) Reset() { *x = GetRoleResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[9] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -577,7 +910,7 @@ func (x *GetRoleResponse) String() string { func (*GetRoleResponse) ProtoMessage() {} func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[9] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -590,7 +923,7 @@ func (x *GetRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetRoleResponse.ProtoReflect.Descriptor instead. func (*GetRoleResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{9} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{13} } func (x *GetRoleResponse) GetRole() *Role { @@ -611,7 +944,7 @@ type CreateRoleRequest struct { func (x *CreateRoleRequest) Reset() { *x = CreateRoleRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[10] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -623,7 +956,7 @@ func (x *CreateRoleRequest) String() string { func (*CreateRoleRequest) ProtoMessage() {} func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[10] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -636,7 +969,7 @@ func (x *CreateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleRequest.ProtoReflect.Descriptor instead. func (*CreateRoleRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{10} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{14} } func (x *CreateRoleRequest) GetRole() *Role { @@ -657,7 +990,7 @@ type CreateRoleResponse struct { func (x *CreateRoleResponse) Reset() { *x = CreateRoleResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[11] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -669,7 +1002,7 @@ func (x *CreateRoleResponse) String() string { func (*CreateRoleResponse) ProtoMessage() {} func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[11] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -682,7 +1015,7 @@ func (x *CreateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use CreateRoleResponse.ProtoReflect.Descriptor instead. func (*CreateRoleResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{11} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{15} } func (x *CreateRoleResponse) GetRole() *Role { @@ -703,7 +1036,7 @@ type UpdateRoleRequest struct { func (x *UpdateRoleRequest) Reset() { *x = UpdateRoleRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[12] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -715,7 +1048,7 @@ func (x *UpdateRoleRequest) String() string { func (*UpdateRoleRequest) ProtoMessage() {} func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[12] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -728,7 +1061,7 @@ func (x *UpdateRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleRequest.ProtoReflect.Descriptor instead. func (*UpdateRoleRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{12} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{16} } func (x *UpdateRoleRequest) GetRole() *Role { @@ -749,7 +1082,7 @@ type UpdateRoleResponse struct { func (x *UpdateRoleResponse) Reset() { *x = UpdateRoleResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[13] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -761,7 +1094,7 @@ func (x *UpdateRoleResponse) String() string { func (*UpdateRoleResponse) ProtoMessage() {} func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[13] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -774,7 +1107,7 @@ func (x *UpdateRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpdateRoleResponse.ProtoReflect.Descriptor instead. func (*UpdateRoleResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{13} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{17} } func (x *UpdateRoleResponse) GetRole() *Role { @@ -799,7 +1132,7 @@ type DeleteRoleRequest struct { func (x *DeleteRoleRequest) Reset() { *x = DeleteRoleRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[14] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -811,7 +1144,7 @@ func (x *DeleteRoleRequest) String() string { func (*DeleteRoleRequest) ProtoMessage() {} func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[14] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -824,7 +1157,7 @@ func (x *DeleteRoleRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleRequest.ProtoReflect.Descriptor instead. func (*DeleteRoleRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{14} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{18} } func (x *DeleteRoleRequest) GetAccountId() string { @@ -850,7 +1183,7 @@ type DeleteRoleResponse struct { func (x *DeleteRoleResponse) Reset() { *x = DeleteRoleResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[15] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -862,7 +1195,7 @@ func (x *DeleteRoleResponse) String() string { func (*DeleteRoleResponse) ProtoMessage() {} func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[15] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -875,7 +1208,7 @@ func (x *DeleteRoleResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use DeleteRoleResponse.ProtoReflect.Descriptor instead. func (*DeleteRoleResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{15} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{19} } // ListEffectivePermissionsRequest is the request for the ListEffectivePermissions function @@ -890,7 +1223,7 @@ type ListEffectivePermissionsRequest struct { func (x *ListEffectivePermissionsRequest) Reset() { *x = ListEffectivePermissionsRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[16] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -902,7 +1235,7 @@ func (x *ListEffectivePermissionsRequest) String() string { func (*ListEffectivePermissionsRequest) ProtoMessage() {} func (x *ListEffectivePermissionsRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[16] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -915,7 +1248,7 @@ func (x *ListEffectivePermissionsRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEffectivePermissionsRequest.ProtoReflect.Descriptor instead. func (*ListEffectivePermissionsRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{16} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{20} } func (x *ListEffectivePermissionsRequest) GetAccountId() string { @@ -936,7 +1269,7 @@ type ListEffectivePermissionsResponse struct { func (x *ListEffectivePermissionsResponse) Reset() { *x = ListEffectivePermissionsResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[17] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -948,7 +1281,7 @@ func (x *ListEffectivePermissionsResponse) String() string { func (*ListEffectivePermissionsResponse) ProtoMessage() {} func (x *ListEffectivePermissionsResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[17] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -961,7 +1294,7 @@ func (x *ListEffectivePermissionsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListEffectivePermissionsResponse.ProtoReflect.Descriptor instead. func (*ListEffectivePermissionsResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{17} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{21} } func (x *ListEffectivePermissionsResponse) GetPermissions() []string { @@ -993,7 +1326,7 @@ type AssignUserRolesRequest struct { func (x *AssignUserRolesRequest) Reset() { *x = AssignUserRolesRequest{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[18] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1005,7 +1338,7 @@ func (x *AssignUserRolesRequest) String() string { func (*AssignUserRolesRequest) ProtoMessage() {} func (x *AssignUserRolesRequest) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[18] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1018,7 +1351,7 @@ func (x *AssignUserRolesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignUserRolesRequest.ProtoReflect.Descriptor instead. func (*AssignUserRolesRequest) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{18} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{22} } func (x *AssignUserRolesRequest) GetAccountId() string { @@ -1058,7 +1391,7 @@ type AssignUserRolesResponse struct { func (x *AssignUserRolesResponse) Reset() { *x = AssignUserRolesResponse{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[19] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1070,7 +1403,7 @@ func (x *AssignUserRolesResponse) String() string { func (*AssignUserRolesResponse) ProtoMessage() {} func (x *AssignUserRolesResponse) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[19] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1083,7 +1416,7 @@ func (x *AssignUserRolesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use AssignUserRolesResponse.ProtoReflect.Descriptor instead. func (*AssignUserRolesResponse) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{19} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{23} } // A User represents a user in the Qdrant cloud. @@ -1114,7 +1447,7 @@ type User struct { func (x *User) Reset() { *x = User{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[20] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[24] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1126,7 +1459,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[20] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[24] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1139,7 +1472,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{20} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{24} } func (x *User) GetId() string { @@ -1222,7 +1555,7 @@ type Role struct { func (x *Role) Reset() { *x = Role{} - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[21] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[25] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1234,7 +1567,7 @@ func (x *Role) String() string { func (*Role) ProtoMessage() {} func (x *Role) ProtoReflect() protoreflect.Message { - mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[21] + mi := &file_qdrant_cloud_iam_v1_iam_proto_msgTypes[25] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1247,7 +1580,7 @@ func (x *Role) ProtoReflect() protoreflect.Message { // Deprecated: Use Role.ProtoReflect.Descriptor instead. func (*Role) Descriptor() ([]byte, []int) { - return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{21} + return file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP(), []int{25} } func (x *Role) GetId() string { @@ -1335,105 +1668,125 @@ var file_qdrant_cloud_iam_v1_iam_proto_rawDesc = string([]byte{ 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x41, 0x0a, 0x16, - 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, - 0x3b, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x10, - 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x4c, 0x69, 0x73, - 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, - 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, - 0x5c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, - 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, - 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x72, 0x6f, - 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, - 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, - 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, - 0x42, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, - 0x6f, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x12, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, + 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x70, 0x0a, 0x15, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, + 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x71, + 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x54, 0x79, 0x70, 0x65, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, + 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x22, 0xa6, + 0x02, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, + 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x4b, 0x0a, 0x0d, 0x64, 0x6f, 0x63, + 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, + 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, + 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x3e, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, + 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, + 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x49, 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, + 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 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, 0x48, 0x00, 0x52, 0x0e, + 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x88, 0x01, + 0x01, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x65, 0x64, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x69, 0x73, 0x41, 0x63, 0x63, 0x65, 0x70, 0x74, + 0x65, 0x64, 0x42, 0x13, 0x0a, 0x11, 0x5f, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, + 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x22, 0xce, 0x01, 0x0a, 0x18, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x57, 0x0a, 0x0d, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, + 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x2e, 0x4c, 0x65, 0x67, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, + 0x79, 0x70, 0x65, 0x42, 0x0a, 0xba, 0x48, 0x07, 0x82, 0x01, 0x04, 0x10, 0x01, 0x20, 0x00, 0x52, + 0x0c, 0x64, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x59, 0x0a, + 0x0d, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x42, 0x0c, 0xba, 0x48, + 0x09, 0x82, 0x01, 0x06, 0x10, 0x01, 0x20, 0x00, 0x20, 0x03, 0x52, 0x0c, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x22, 0x1b, 0x0a, 0x19, 0x52, 0x65, 0x63, 0x6f, + 0x72, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x41, 0x0a, 0x16, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x3b, 0x0a, 0x17, 0x4c, 0x69, 0x73, 0x74, + 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, + 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0x3b, 0x0a, 0x10, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, + 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, + 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x49, 0x64, 0x22, 0x44, 0x0a, 0x11, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2f, 0x0a, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, + 0x65, 0x52, 0x05, 0x69, 0x74, 0x65, 0x6d, 0x73, 0x22, 0x5c, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x06, + 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, - 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x42, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, + 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x42, 0x0a, 0x11, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x12, - 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, - 0x65, 0x22, 0x5f, 0x0a, 0x11, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, - 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, - 0x21, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, - 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, - 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, - 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x22, 0x44, 0x0a, 0x20, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, - 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, - 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, - 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x16, 0x41, - 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, - 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, - 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, - 0x64, 0x12, 0x34, 0x0a, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, - 0x5f, 0x61, 0x64, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0x92, - 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x49, - 0x64, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, 0x12, 0x3a, 0x0a, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x04, 0x20, + 0x65, 0x22, 0x42, 0x0a, 0x11, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2d, 0x0a, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, + 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x52, + 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x43, 0x0a, 0x12, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x2d, 0x0a, 0x04, 0x72, + 0x6f, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x6f, 0x6c, 0x65, 0x22, 0x5f, 0x0a, 0x11, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, + 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, + 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x72, 0x6f, 0x6c, 0x65, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, + 0xb0, 0x01, 0x01, 0x52, 0x06, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x44, + 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x4a, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, + 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0x44, 0x0a, + 0x20, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, + 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, + 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, + 0x6f, 0x6e, 0x73, 0x22, 0xd6, 0x01, 0x0a, 0x16, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, + 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x27, + 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x21, 0x0a, 0x07, 0x75, 0x73, 0x65, 0x72, 0x5f, + 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, + 0x01, 0x01, 0x52, 0x06, 0x75, 0x73, 0x65, 0x72, 0x49, 0x64, 0x12, 0x34, 0x0a, 0x0f, 0x72, 0x6f, + 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, 0x61, 0x64, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0xb0, - 0x01, 0x01, 0x52, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x54, 0x6f, 0x44, 0x65, 0x6c, - 0x65, 0x74, 0x65, 0x22, 0x19, 0x0a, 0x17, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, - 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd0, - 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, - 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x44, 0x0a, 0x10, - 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, - 0x18, 0x03, 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, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, - 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, - 0x6c, 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, 0x02, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1f, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, - 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x36, 0x0a, 0x12, 0x64, 0x65, 0x66, - 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, - 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, - 0x64, 0x22, 0xa8, 0x04, 0x0a, 0x04, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, + 0x01, 0x01, 0x52, 0x0c, 0x72, 0x6f, 0x6c, 0x65, 0x49, 0x64, 0x73, 0x54, 0x6f, 0x41, 0x64, 0x64, + 0x12, 0x3a, 0x0a, 0x12, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x73, 0x5f, 0x74, 0x6f, 0x5f, + 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x42, 0x0d, 0xba, 0x48, + 0x0a, 0x92, 0x01, 0x07, 0x22, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x0f, 0x72, 0x6f, 0x6c, + 0x65, 0x49, 0x64, 0x73, 0x54, 0x6f, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x22, 0x19, 0x0a, 0x17, + 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0xd0, 0x02, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x18, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, + 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, @@ -1441,173 +1794,234 @@ var file_qdrant_cloud_iam_v1_iam_proto_rawDesc = string([]byte{ 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x03, 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, 0x52, 0x0e, 0x6c, 0x61, 0x73, - 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, - 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, - 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, 0x72, 0x16, 0x10, 0x04, 0x18, 0x40, 0x32, 0x10, 0x5e, - 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, - 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x3a, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, - 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x71, 0x64, 0x72, - 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, - 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, - 0x08, 0x01, 0x52, 0x0b, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, - 0xaa, 0x01, 0xba, 0x48, 0xa6, 0x01, 0x1a, 0xa3, 0x01, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, - 0x65, 0x72, 0x2e, 0x69, 0x64, 0x12, 0x1a, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, - 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, - 0x44, 0x1a, 0x79, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x69, 0x64, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, - 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, - 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, - 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, - 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, - 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, - 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, - 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x29, 0x2a, 0x73, 0x0a, 0x0a, - 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, - 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, - 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x16, 0x0a, 0x12, 0x55, 0x53, 0x45, 0x52, 0x5f, - 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, - 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, - 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, 0x02, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, - 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, - 0x03, 0x2a, 0x51, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, 0x0a, - 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, - 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, 0x4c, 0x45, - 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, 0x12, 0x14, - 0x0a, 0x10, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, 0x53, 0x54, - 0x4f, 0x4d, 0x10, 0x02, 0x32, 0x92, 0x0e, 0x0a, 0x0a, 0x49, 0x41, 0x4d, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, - 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, + 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x41, 0x74, 0x12, 0x1d, 0x0a, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x07, 0xba, 0x48, 0x04, 0x72, + 0x02, 0x60, 0x01, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1d, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x09, 0xba, 0x48, 0x06, 0x72, 0x04, 0x10, + 0x02, 0x18, 0x40, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x37, 0x0a, 0x06, 0x73, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, + 0x75, 0x73, 0x12, 0x36, 0x0a, 0x12, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x5f, 0x61, 0x63, + 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, + 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, 0x01, 0x01, 0x52, 0x10, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, + 0x74, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x22, 0xa8, 0x04, 0x0a, 0x04, 0x52, + 0x6f, 0x6c, 0x65, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 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, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x44, + 0x0a, 0x10, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x6d, 0x6f, 0x64, 0x69, 0x66, 0x69, 0x65, 0x64, 0x5f, + 0x61, 0x74, 0x18, 0x03, 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, 0x52, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x4d, 0x6f, 0x64, 0x69, 0x66, 0x69, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x27, 0x0a, 0x0a, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, + 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x72, 0x03, 0xb0, + 0x01, 0x01, 0x52, 0x09, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x49, 0x64, 0x12, 0x2f, 0x0a, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x42, 0x1b, 0xba, 0x48, 0x18, + 0x72, 0x16, 0x10, 0x04, 0x18, 0x40, 0x32, 0x10, 0x5e, 0x5b, 0x61, 0x2d, 0x7a, 0x41, 0x2d, 0x5a, + 0x30, 0x2d, 0x39, 0x2d, 0x5f, 0x5d, 0x2b, 0x24, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x20, + 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x12, 0x3a, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x1d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x6f, 0x6c, 0x65, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x08, 0x72, 0x6f, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, 0x2a, 0x0a, 0x0b, + 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x08, 0x20, 0x03, 0x28, + 0x09, 0x42, 0x08, 0xba, 0x48, 0x05, 0x92, 0x01, 0x02, 0x08, 0x01, 0x52, 0x0b, 0x70, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x3a, 0xaa, 0x01, 0xba, 0x48, 0xa6, 0x01, 0x1a, + 0xa3, 0x01, 0x0a, 0x0a, 0x63, 0x6c, 0x75, 0x73, 0x74, 0x65, 0x72, 0x2e, 0x69, 0x64, 0x12, 0x1a, + 0x76, 0x61, 0x6c, 0x75, 0x65, 0x20, 0x6d, 0x75, 0x73, 0x74, 0x20, 0x62, 0x65, 0x20, 0x61, 0x20, + 0x76, 0x61, 0x6c, 0x69, 0x64, 0x20, 0x55, 0x55, 0x49, 0x44, 0x1a, 0x79, 0x74, 0x68, 0x69, 0x73, + 0x2e, 0x69, 0x64, 0x2e, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x73, 0x28, 0x27, 0x5e, 0x5b, 0x30, + 0x2d, 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x38, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, + 0x39, 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, + 0x61, 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, + 0x2d, 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x34, 0x7d, 0x2d, 0x5b, 0x30, 0x2d, 0x39, 0x61, 0x2d, + 0x66, 0x41, 0x2d, 0x46, 0x5d, 0x7b, 0x31, 0x32, 0x7d, 0x24, 0x27, 0x29, 0x20, 0x7c, 0x7c, 0x20, + 0x21, 0x68, 0x61, 0x73, 0x28, 0x74, 0x68, 0x69, 0x73, 0x2e, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x29, 0x2a, 0x73, 0x0a, 0x0a, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, + 0x74, 0x75, 0x73, 0x12, 0x1b, 0x0a, 0x17, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, + 0x55, 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, + 0x12, 0x16, 0x0a, 0x12, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, + 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x01, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, + 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x42, 0x4c, 0x4f, 0x43, 0x4b, 0x45, 0x44, 0x10, + 0x02, 0x12, 0x17, 0x0a, 0x13, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, + 0x5f, 0x44, 0x45, 0x4c, 0x45, 0x54, 0x45, 0x44, 0x10, 0x03, 0x2a, 0xa7, 0x01, 0x0a, 0x11, 0x4c, + 0x65, 0x67, 0x61, 0x6c, 0x44, 0x6f, 0x63, 0x75, 0x6d, 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x23, 0x0a, 0x1f, 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, + 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, + 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x28, 0x0a, 0x24, 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x5f, 0x44, + 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x54, 0x45, 0x52, + 0x4d, 0x53, 0x5f, 0x4f, 0x46, 0x5f, 0x53, 0x45, 0x52, 0x56, 0x49, 0x43, 0x45, 0x10, 0x01, 0x12, + 0x26, 0x0a, 0x22, 0x4c, 0x45, 0x47, 0x41, 0x4c, 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, + 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x50, 0x52, 0x49, 0x56, 0x41, 0x43, 0x59, 0x5f, 0x50, + 0x4f, 0x4c, 0x49, 0x43, 0x59, 0x10, 0x02, 0x12, 0x1b, 0x0a, 0x17, 0x4c, 0x45, 0x47, 0x41, 0x4c, + 0x5f, 0x44, 0x4f, 0x43, 0x55, 0x4d, 0x45, 0x4e, 0x54, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, + 0x4c, 0x41, 0x10, 0x03, 0x2a, 0x9c, 0x01, 0x0a, 0x11, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, + 0x73, 0x65, 0x6e, 0x74, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x23, 0x0a, 0x1f, 0x55, 0x53, + 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, + 0x53, 0x5f, 0x55, 0x4e, 0x53, 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, + 0x20, 0x0a, 0x1c, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, 0x54, 0x5f, + 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x41, 0x43, 0x43, 0x45, 0x50, 0x54, 0x45, 0x44, 0x10, + 0x01, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, 0x4e, + 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x52, 0x45, 0x56, 0x4f, 0x4b, 0x45, 0x44, + 0x10, 0x02, 0x12, 0x1f, 0x0a, 0x1b, 0x55, 0x53, 0x45, 0x52, 0x5f, 0x43, 0x4f, 0x4e, 0x53, 0x45, + 0x4e, 0x54, 0x5f, 0x53, 0x54, 0x41, 0x54, 0x55, 0x53, 0x5f, 0x50, 0x45, 0x4e, 0x44, 0x49, 0x4e, + 0x47, 0x10, 0x03, 0x2a, 0x51, 0x0a, 0x08, 0x52, 0x6f, 0x6c, 0x65, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x19, 0x0a, 0x15, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x55, 0x4e, 0x53, + 0x50, 0x45, 0x43, 0x49, 0x46, 0x49, 0x45, 0x44, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, + 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x53, 0x59, 0x53, 0x54, 0x45, 0x4d, 0x10, 0x01, + 0x12, 0x14, 0x0a, 0x10, 0x52, 0x4f, 0x4c, 0x45, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x5f, 0x43, 0x55, + 0x53, 0x54, 0x4f, 0x4d, 0x10, 0x02, 0x32, 0xdc, 0x10, 0x0a, 0x0a, 0x49, 0x41, 0x4d, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xa1, 0x01, 0x0a, 0x14, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, + 0x68, 0x65, 0x6e, 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x30, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, 0x74, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x24, 0x8a, 0xb5, 0x18, 0x00, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, - 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, + 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x31, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x41, 0x75, 0x74, 0x68, 0x65, 0x6e, + 0x74, 0x69, 0x63, 0x61, 0x74, 0x65, 0x64, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x24, 0x8a, 0xb5, 0x18, 0x00, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x16, 0x12, 0x14, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, + 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x12, 0x97, 0x01, 0x0a, 0x0a, 0x55, 0x70, + 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, + 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x1a, 0x27, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, + 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, + 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x8a, 0xb5, 0x18, 0x0a, 0x77, + 0x72, 0x69, 0x74, 0x65, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, + 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x2e, + 0x69, 0x64, 0x7d, 0x12, 0x97, 0x01, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x43, + 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x12, 0x2a, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x2c, 0x8a, 0xb5, 0x18, 0x00, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1e, 0x12, + 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x12, 0xad, 0x01, + 0x0a, 0x11, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, + 0x65, 0x6e, 0x74, 0x12, 0x2d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, + 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, + 0x55, 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x2e, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x52, 0x65, 0x63, 0x6f, 0x72, 0x64, 0x55, + 0x73, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, + 0x73, 0x65, 0x22, 0x39, 0x8a, 0xb5, 0x18, 0x0a, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x75, 0x73, + 0x65, 0x72, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x21, 0x3a, 0x01, 0x2a, 0x22, + 0x1c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2f, 0x6d, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x73, 0x65, 0x6e, 0x74, 0x12, 0xb1, 0x01, + 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, + 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x38, 0x8a, 0xb5, 0x18, 0x0a, 0x77, 0x72, 0x69, - 0x74, 0x65, 0x3a, 0x75, 0x73, 0x65, 0x72, 0x92, 0xb5, 0x18, 0x00, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x20, 0x3a, 0x01, 0x2a, 0x1a, 0x1b, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, - 0x31, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x69, 0x64, - 0x7d, 0x12, 0xb1, 0x01, 0x0a, 0x0f, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, - 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x43, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, - 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, - 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x99, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x12, 0x25, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, - 0x6c, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x71, 0x64, 0x72, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0x8a, 0xb5, + 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, + 0x02, 0x2f, 0x12, 0x2d, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, + 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, + 0x73, 0x12, 0x99, 0x01, 0x0a, 0x09, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, + 0x25, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, + 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3d, + 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, + 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, + 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, + 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xb0, 0x01, + 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, 0x2e, 0x71, 0x64, 0x72, 0x61, + 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, + 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x24, + 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, + 0x6f, 0x6c, 0x65, 0x73, 0x92, 0xb5, 0x18, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, + 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x12, 0x31, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, + 0x12, 0xb8, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, + 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x59, 0x8a, 0xb5, 0x18, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x72, 0x6f, 0x6c, 0x65, + 0x73, 0x92, 0xb5, 0x18, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, 0x2a, 0x22, 0x2c, 0x2f, + 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, + 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, + 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0xc2, 0x01, 0x0a, 0x0a, + 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, - 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, - 0x73, 0x65, 0x22, 0x3d, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, - 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x29, 0x12, 0x27, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, + 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, + 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x63, 0x8a, 0xb5, 0x18, + 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x92, 0xb5, 0x18, 0x0f, + 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, + 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, + 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, + 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x69, 0x64, 0x7d, + 0x12, 0xa8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, + 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, + 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x49, 0x8a, 0xb5, 0x18, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x3a, 0x72, 0x6f, 0x6c, + 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, - 0x73, 0x12, 0xb0, 0x01, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x23, 0x2e, - 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, - 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x24, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x52, 0x6f, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x5a, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, - 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x92, 0xb5, 0x18, 0x0f, 0x72, 0x6f, 0x6c, 0x65, - 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, - 0x33, 0x12, 0x31, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, - 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xb8, 0x01, 0x0a, 0x0a, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x59, 0x8a, 0xb5, 0x18, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, - 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x92, 0xb5, 0x18, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x31, 0x3a, 0x01, - 0x2a, 0x22, 0x2c, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, - 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x12, - 0xc2, 0x01, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x12, 0x26, + 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, 0xd6, 0x01, 0x0a, 0x18, + 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, + 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, + 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, + 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, - 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, - 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, - 0x61, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x63, 0x8a, 0xb5, 0x18, 0x0b, 0x77, 0x72, 0x69, 0x74, 0x65, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, - 0x92, 0xb5, 0x18, 0x0f, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3b, 0x3a, 0x01, 0x2a, 0x1a, 0x36, 0x2f, 0x61, - 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x2e, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, - 0x2e, 0x69, 0x64, 0x7d, 0x12, 0xa8, 0x01, 0x0a, 0x0a, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, - 0x6f, 0x6c, 0x65, 0x12, 0x26, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, - 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x52, 0x6f, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0x8a, 0xb5, 0x18, 0x0c, 0x64, 0x65, 0x6c, 0x65, 0x74, 0x65, - 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x33, 0x2a, 0x31, 0x2f, 0x61, + 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, + 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, 0x37, 0x2f, 0x61, 0x70, + 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, + 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, 0x65, + 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2d, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, + 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x0f, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, + 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, + 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, + 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, + 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x50, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, + 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, 0x22, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, 0x64, 0x7d, 0x2f, - 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x2f, 0x7b, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x69, 0x64, 0x7d, 0x12, - 0xd6, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, - 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0x34, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, - 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x35, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x45, 0x66, 0x66, - 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x50, 0x65, 0x72, 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4d, 0x8a, 0xb5, 0x18, 0x0a, 0x72, - 0x65, 0x61, 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, - 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, 0x69, - 0x64, 0x7d, 0x2f, 0x65, 0x66, 0x66, 0x65, 0x63, 0x74, 0x69, 0x76, 0x65, 0x2d, 0x70, 0x65, 0x72, - 0x6d, 0x69, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x73, 0x12, 0xbe, 0x01, 0x0a, 0x0f, 0x41, 0x73, 0x73, - 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x12, 0x2b, 0x2e, 0x71, - 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, - 0x76, 0x31, 0x2e, 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, - 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2c, 0x2e, 0x71, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x2e, - 0x41, 0x73, 0x73, 0x69, 0x67, 0x6e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x6f, 0x6c, 0x65, 0x73, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x50, 0x8a, 0xb5, 0x18, 0x0a, 0x72, 0x65, 0x61, - 0x64, 0x3a, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x3c, 0x3a, 0x01, 0x2a, - 0x22, 0x37, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x2f, 0x7b, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, - 0x69, 0x64, 0x7d, 0x2f, 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0xde, 0x01, 0x0a, 0x17, 0x63, 0x6f, - 0x6d, 0x2e, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, - 0x61, 0x6d, 0x2e, 0x76, 0x31, 0x42, 0x08, 0x49, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, - 0x01, 0x5a, 0x4a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x64, - 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, 0x6c, 0x6f, 0x75, - 0x64, 0x2d, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, - 0x2f, 0x67, 0x6f, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, - 0x2f, 0x69, 0x61, 0x6d, 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x61, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, - 0x51, 0x43, 0x49, 0xaa, 0x02, 0x13, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, - 0x75, 0x64, 0x2e, 0x49, 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x51, 0x64, 0x72, 0x61, - 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x49, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xe2, - 0x02, 0x1f, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x49, - 0x61, 0x6d, 0x5c, 0x56, 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0xea, 0x02, 0x16, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, - 0x64, 0x3a, 0x3a, 0x49, 0x61, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x2f, 0x7b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x69, 0x64, 0x7d, 0x2f, + 0x72, 0x6f, 0x6c, 0x65, 0x73, 0x42, 0xde, 0x01, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x71, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x69, 0x61, 0x6d, 0x2e, 0x76, + 0x31, 0x42, 0x08, 0x49, 0x61, 0x6d, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x50, 0x01, 0x5a, 0x4a, 0x67, + 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, + 0x2f, 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2d, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2d, 0x70, 0x75, + 0x62, 0x6c, 0x69, 0x63, 0x2d, 0x61, 0x70, 0x69, 0x2f, 0x67, 0x65, 0x6e, 0x2f, 0x67, 0x6f, 0x2f, + 0x71, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2f, 0x63, 0x6c, 0x6f, 0x75, 0x64, 0x2f, 0x69, 0x61, 0x6d, + 0x2f, 0x76, 0x31, 0x3b, 0x69, 0x61, 0x6d, 0x76, 0x31, 0xa2, 0x02, 0x03, 0x51, 0x43, 0x49, 0xaa, + 0x02, 0x13, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x2e, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x2e, 0x49, + 0x61, 0x6d, 0x2e, 0x56, 0x31, 0xca, 0x02, 0x13, 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, + 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x49, 0x61, 0x6d, 0x5c, 0x56, 0x31, 0xe2, 0x02, 0x1f, 0x51, 0x64, + 0x72, 0x61, 0x6e, 0x74, 0x5c, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x5c, 0x49, 0x61, 0x6d, 0x5c, 0x56, + 0x31, 0x5c, 0x47, 0x50, 0x42, 0x4d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0xea, 0x02, 0x16, + 0x51, 0x64, 0x72, 0x61, 0x6e, 0x74, 0x3a, 0x3a, 0x43, 0x6c, 0x6f, 0x75, 0x64, 0x3a, 0x3a, 0x49, + 0x61, 0x6d, 0x3a, 0x3a, 0x56, 0x31, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, }) var ( @@ -1622,76 +2036,92 @@ func file_qdrant_cloud_iam_v1_iam_proto_rawDescGZIP() []byte { return file_qdrant_cloud_iam_v1_iam_proto_rawDescData } -var file_qdrant_cloud_iam_v1_iam_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_qdrant_cloud_iam_v1_iam_proto_msgTypes = make([]protoimpl.MessageInfo, 22) +var file_qdrant_cloud_iam_v1_iam_proto_enumTypes = make([]protoimpl.EnumInfo, 4) +var file_qdrant_cloud_iam_v1_iam_proto_msgTypes = make([]protoimpl.MessageInfo, 26) var file_qdrant_cloud_iam_v1_iam_proto_goTypes = []any{ (UserStatus)(0), // 0: qdrant.cloud.iam.v1.UserStatus - (RoleType)(0), // 1: qdrant.cloud.iam.v1.RoleType - (*GetAuthenticatedUserRequest)(nil), // 2: qdrant.cloud.iam.v1.GetAuthenticatedUserRequest - (*GetAuthenticatedUserResponse)(nil), // 3: qdrant.cloud.iam.v1.GetAuthenticatedUserResponse - (*UpdateUserRequest)(nil), // 4: qdrant.cloud.iam.v1.UpdateUserRequest - (*UpdateUserResponse)(nil), // 5: qdrant.cloud.iam.v1.UpdateUserResponse - (*ListPermissionsRequest)(nil), // 6: qdrant.cloud.iam.v1.ListPermissionsRequest - (*ListPermissionsResponse)(nil), // 7: qdrant.cloud.iam.v1.ListPermissionsResponse - (*ListRolesRequest)(nil), // 8: qdrant.cloud.iam.v1.ListRolesRequest - (*ListRolesResponse)(nil), // 9: qdrant.cloud.iam.v1.ListRolesResponse - (*GetRoleRequest)(nil), // 10: qdrant.cloud.iam.v1.GetRoleRequest - (*GetRoleResponse)(nil), // 11: qdrant.cloud.iam.v1.GetRoleResponse - (*CreateRoleRequest)(nil), // 12: qdrant.cloud.iam.v1.CreateRoleRequest - (*CreateRoleResponse)(nil), // 13: qdrant.cloud.iam.v1.CreateRoleResponse - (*UpdateRoleRequest)(nil), // 14: qdrant.cloud.iam.v1.UpdateRoleRequest - (*UpdateRoleResponse)(nil), // 15: qdrant.cloud.iam.v1.UpdateRoleResponse - (*DeleteRoleRequest)(nil), // 16: qdrant.cloud.iam.v1.DeleteRoleRequest - (*DeleteRoleResponse)(nil), // 17: qdrant.cloud.iam.v1.DeleteRoleResponse - (*ListEffectivePermissionsRequest)(nil), // 18: qdrant.cloud.iam.v1.ListEffectivePermissionsRequest - (*ListEffectivePermissionsResponse)(nil), // 19: qdrant.cloud.iam.v1.ListEffectivePermissionsResponse - (*AssignUserRolesRequest)(nil), // 20: qdrant.cloud.iam.v1.AssignUserRolesRequest - (*AssignUserRolesResponse)(nil), // 21: qdrant.cloud.iam.v1.AssignUserRolesResponse - (*User)(nil), // 22: qdrant.cloud.iam.v1.User - (*Role)(nil), // 23: qdrant.cloud.iam.v1.Role - (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (LegalDocumentType)(0), // 1: qdrant.cloud.iam.v1.LegalDocumentType + (UserConsentStatus)(0), // 2: qdrant.cloud.iam.v1.UserConsentStatus + (RoleType)(0), // 3: qdrant.cloud.iam.v1.RoleType + (*GetAuthenticatedUserRequest)(nil), // 4: qdrant.cloud.iam.v1.GetAuthenticatedUserRequest + (*GetAuthenticatedUserResponse)(nil), // 5: qdrant.cloud.iam.v1.GetAuthenticatedUserResponse + (*UpdateUserRequest)(nil), // 6: qdrant.cloud.iam.v1.UpdateUserRequest + (*UpdateUserResponse)(nil), // 7: qdrant.cloud.iam.v1.UpdateUserResponse + (*GetUserConsentRequest)(nil), // 8: qdrant.cloud.iam.v1.GetUserConsentRequest + (*GetUserConsentResponse)(nil), // 9: qdrant.cloud.iam.v1.GetUserConsentResponse + (*RecordUserConsentRequest)(nil), // 10: qdrant.cloud.iam.v1.RecordUserConsentRequest + (*RecordUserConsentResponse)(nil), // 11: qdrant.cloud.iam.v1.RecordUserConsentResponse + (*ListPermissionsRequest)(nil), // 12: qdrant.cloud.iam.v1.ListPermissionsRequest + (*ListPermissionsResponse)(nil), // 13: qdrant.cloud.iam.v1.ListPermissionsResponse + (*ListRolesRequest)(nil), // 14: qdrant.cloud.iam.v1.ListRolesRequest + (*ListRolesResponse)(nil), // 15: qdrant.cloud.iam.v1.ListRolesResponse + (*GetRoleRequest)(nil), // 16: qdrant.cloud.iam.v1.GetRoleRequest + (*GetRoleResponse)(nil), // 17: qdrant.cloud.iam.v1.GetRoleResponse + (*CreateRoleRequest)(nil), // 18: qdrant.cloud.iam.v1.CreateRoleRequest + (*CreateRoleResponse)(nil), // 19: qdrant.cloud.iam.v1.CreateRoleResponse + (*UpdateRoleRequest)(nil), // 20: qdrant.cloud.iam.v1.UpdateRoleRequest + (*UpdateRoleResponse)(nil), // 21: qdrant.cloud.iam.v1.UpdateRoleResponse + (*DeleteRoleRequest)(nil), // 22: qdrant.cloud.iam.v1.DeleteRoleRequest + (*DeleteRoleResponse)(nil), // 23: qdrant.cloud.iam.v1.DeleteRoleResponse + (*ListEffectivePermissionsRequest)(nil), // 24: qdrant.cloud.iam.v1.ListEffectivePermissionsRequest + (*ListEffectivePermissionsResponse)(nil), // 25: qdrant.cloud.iam.v1.ListEffectivePermissionsResponse + (*AssignUserRolesRequest)(nil), // 26: qdrant.cloud.iam.v1.AssignUserRolesRequest + (*AssignUserRolesResponse)(nil), // 27: qdrant.cloud.iam.v1.AssignUserRolesResponse + (*User)(nil), // 28: qdrant.cloud.iam.v1.User + (*Role)(nil), // 29: qdrant.cloud.iam.v1.Role + (*timestamppb.Timestamp)(nil), // 30: google.protobuf.Timestamp } var file_qdrant_cloud_iam_v1_iam_proto_depIdxs = []int32{ - 22, // 0: qdrant.cloud.iam.v1.GetAuthenticatedUserResponse.user:type_name -> qdrant.cloud.iam.v1.User - 22, // 1: qdrant.cloud.iam.v1.UpdateUserRequest.user:type_name -> qdrant.cloud.iam.v1.User - 22, // 2: qdrant.cloud.iam.v1.UpdateUserResponse.user:type_name -> qdrant.cloud.iam.v1.User - 23, // 3: qdrant.cloud.iam.v1.ListRolesResponse.items:type_name -> qdrant.cloud.iam.v1.Role - 23, // 4: qdrant.cloud.iam.v1.GetRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role - 23, // 5: qdrant.cloud.iam.v1.CreateRoleRequest.role:type_name -> qdrant.cloud.iam.v1.Role - 23, // 6: qdrant.cloud.iam.v1.CreateRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role - 23, // 7: qdrant.cloud.iam.v1.UpdateRoleRequest.role:type_name -> qdrant.cloud.iam.v1.Role - 23, // 8: qdrant.cloud.iam.v1.UpdateRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role - 24, // 9: qdrant.cloud.iam.v1.User.created_at:type_name -> google.protobuf.Timestamp - 24, // 10: qdrant.cloud.iam.v1.User.last_modified_at:type_name -> google.protobuf.Timestamp - 0, // 11: qdrant.cloud.iam.v1.User.status:type_name -> qdrant.cloud.iam.v1.UserStatus - 24, // 12: qdrant.cloud.iam.v1.Role.created_at:type_name -> google.protobuf.Timestamp - 24, // 13: qdrant.cloud.iam.v1.Role.last_modified_at:type_name -> google.protobuf.Timestamp - 1, // 14: qdrant.cloud.iam.v1.Role.role_type:type_name -> qdrant.cloud.iam.v1.RoleType - 2, // 15: qdrant.cloud.iam.v1.IAMService.GetAuthenticatedUser:input_type -> qdrant.cloud.iam.v1.GetAuthenticatedUserRequest - 4, // 16: qdrant.cloud.iam.v1.IAMService.UpdateUser:input_type -> qdrant.cloud.iam.v1.UpdateUserRequest - 6, // 17: qdrant.cloud.iam.v1.IAMService.ListPermissions:input_type -> qdrant.cloud.iam.v1.ListPermissionsRequest - 8, // 18: qdrant.cloud.iam.v1.IAMService.ListRoles:input_type -> qdrant.cloud.iam.v1.ListRolesRequest - 10, // 19: qdrant.cloud.iam.v1.IAMService.GetRole:input_type -> qdrant.cloud.iam.v1.GetRoleRequest - 12, // 20: qdrant.cloud.iam.v1.IAMService.CreateRole:input_type -> qdrant.cloud.iam.v1.CreateRoleRequest - 14, // 21: qdrant.cloud.iam.v1.IAMService.UpdateRole:input_type -> qdrant.cloud.iam.v1.UpdateRoleRequest - 16, // 22: qdrant.cloud.iam.v1.IAMService.DeleteRole:input_type -> qdrant.cloud.iam.v1.DeleteRoleRequest - 18, // 23: qdrant.cloud.iam.v1.IAMService.ListEffectivePermissions:input_type -> qdrant.cloud.iam.v1.ListEffectivePermissionsRequest - 20, // 24: qdrant.cloud.iam.v1.IAMService.AssignUserRoles:input_type -> qdrant.cloud.iam.v1.AssignUserRolesRequest - 3, // 25: qdrant.cloud.iam.v1.IAMService.GetAuthenticatedUser:output_type -> qdrant.cloud.iam.v1.GetAuthenticatedUserResponse - 5, // 26: qdrant.cloud.iam.v1.IAMService.UpdateUser:output_type -> qdrant.cloud.iam.v1.UpdateUserResponse - 7, // 27: qdrant.cloud.iam.v1.IAMService.ListPermissions:output_type -> qdrant.cloud.iam.v1.ListPermissionsResponse - 9, // 28: qdrant.cloud.iam.v1.IAMService.ListRoles:output_type -> qdrant.cloud.iam.v1.ListRolesResponse - 11, // 29: qdrant.cloud.iam.v1.IAMService.GetRole:output_type -> qdrant.cloud.iam.v1.GetRoleResponse - 13, // 30: qdrant.cloud.iam.v1.IAMService.CreateRole:output_type -> qdrant.cloud.iam.v1.CreateRoleResponse - 15, // 31: qdrant.cloud.iam.v1.IAMService.UpdateRole:output_type -> qdrant.cloud.iam.v1.UpdateRoleResponse - 17, // 32: qdrant.cloud.iam.v1.IAMService.DeleteRole:output_type -> qdrant.cloud.iam.v1.DeleteRoleResponse - 19, // 33: qdrant.cloud.iam.v1.IAMService.ListEffectivePermissions:output_type -> qdrant.cloud.iam.v1.ListEffectivePermissionsResponse - 21, // 34: qdrant.cloud.iam.v1.IAMService.AssignUserRoles:output_type -> qdrant.cloud.iam.v1.AssignUserRolesResponse - 25, // [25:35] is the sub-list for method output_type - 15, // [15:25] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name + 28, // 0: qdrant.cloud.iam.v1.GetAuthenticatedUserResponse.user:type_name -> qdrant.cloud.iam.v1.User + 28, // 1: qdrant.cloud.iam.v1.UpdateUserRequest.user:type_name -> qdrant.cloud.iam.v1.User + 28, // 2: qdrant.cloud.iam.v1.UpdateUserResponse.user:type_name -> qdrant.cloud.iam.v1.User + 1, // 3: qdrant.cloud.iam.v1.GetUserConsentRequest.document_type:type_name -> qdrant.cloud.iam.v1.LegalDocumentType + 1, // 4: qdrant.cloud.iam.v1.GetUserConsentResponse.document_type:type_name -> qdrant.cloud.iam.v1.LegalDocumentType + 2, // 5: qdrant.cloud.iam.v1.GetUserConsentResponse.status:type_name -> qdrant.cloud.iam.v1.UserConsentStatus + 30, // 6: qdrant.cloud.iam.v1.GetUserConsentResponse.last_modified_at:type_name -> google.protobuf.Timestamp + 1, // 7: qdrant.cloud.iam.v1.RecordUserConsentRequest.document_type:type_name -> qdrant.cloud.iam.v1.LegalDocumentType + 2, // 8: qdrant.cloud.iam.v1.RecordUserConsentRequest.status_update:type_name -> qdrant.cloud.iam.v1.UserConsentStatus + 29, // 9: qdrant.cloud.iam.v1.ListRolesResponse.items:type_name -> qdrant.cloud.iam.v1.Role + 29, // 10: qdrant.cloud.iam.v1.GetRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role + 29, // 11: qdrant.cloud.iam.v1.CreateRoleRequest.role:type_name -> qdrant.cloud.iam.v1.Role + 29, // 12: qdrant.cloud.iam.v1.CreateRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role + 29, // 13: qdrant.cloud.iam.v1.UpdateRoleRequest.role:type_name -> qdrant.cloud.iam.v1.Role + 29, // 14: qdrant.cloud.iam.v1.UpdateRoleResponse.role:type_name -> qdrant.cloud.iam.v1.Role + 30, // 15: qdrant.cloud.iam.v1.User.created_at:type_name -> google.protobuf.Timestamp + 30, // 16: qdrant.cloud.iam.v1.User.last_modified_at:type_name -> google.protobuf.Timestamp + 0, // 17: qdrant.cloud.iam.v1.User.status:type_name -> qdrant.cloud.iam.v1.UserStatus + 30, // 18: qdrant.cloud.iam.v1.Role.created_at:type_name -> google.protobuf.Timestamp + 30, // 19: qdrant.cloud.iam.v1.Role.last_modified_at:type_name -> google.protobuf.Timestamp + 3, // 20: qdrant.cloud.iam.v1.Role.role_type:type_name -> qdrant.cloud.iam.v1.RoleType + 4, // 21: qdrant.cloud.iam.v1.IAMService.GetAuthenticatedUser:input_type -> qdrant.cloud.iam.v1.GetAuthenticatedUserRequest + 6, // 22: qdrant.cloud.iam.v1.IAMService.UpdateUser:input_type -> qdrant.cloud.iam.v1.UpdateUserRequest + 8, // 23: qdrant.cloud.iam.v1.IAMService.GetUserConsent:input_type -> qdrant.cloud.iam.v1.GetUserConsentRequest + 10, // 24: qdrant.cloud.iam.v1.IAMService.RecordUserConsent:input_type -> qdrant.cloud.iam.v1.RecordUserConsentRequest + 12, // 25: qdrant.cloud.iam.v1.IAMService.ListPermissions:input_type -> qdrant.cloud.iam.v1.ListPermissionsRequest + 14, // 26: qdrant.cloud.iam.v1.IAMService.ListRoles:input_type -> qdrant.cloud.iam.v1.ListRolesRequest + 16, // 27: qdrant.cloud.iam.v1.IAMService.GetRole:input_type -> qdrant.cloud.iam.v1.GetRoleRequest + 18, // 28: qdrant.cloud.iam.v1.IAMService.CreateRole:input_type -> qdrant.cloud.iam.v1.CreateRoleRequest + 20, // 29: qdrant.cloud.iam.v1.IAMService.UpdateRole:input_type -> qdrant.cloud.iam.v1.UpdateRoleRequest + 22, // 30: qdrant.cloud.iam.v1.IAMService.DeleteRole:input_type -> qdrant.cloud.iam.v1.DeleteRoleRequest + 24, // 31: qdrant.cloud.iam.v1.IAMService.ListEffectivePermissions:input_type -> qdrant.cloud.iam.v1.ListEffectivePermissionsRequest + 26, // 32: qdrant.cloud.iam.v1.IAMService.AssignUserRoles:input_type -> qdrant.cloud.iam.v1.AssignUserRolesRequest + 5, // 33: qdrant.cloud.iam.v1.IAMService.GetAuthenticatedUser:output_type -> qdrant.cloud.iam.v1.GetAuthenticatedUserResponse + 7, // 34: qdrant.cloud.iam.v1.IAMService.UpdateUser:output_type -> qdrant.cloud.iam.v1.UpdateUserResponse + 9, // 35: qdrant.cloud.iam.v1.IAMService.GetUserConsent:output_type -> qdrant.cloud.iam.v1.GetUserConsentResponse + 11, // 36: qdrant.cloud.iam.v1.IAMService.RecordUserConsent:output_type -> qdrant.cloud.iam.v1.RecordUserConsentResponse + 13, // 37: qdrant.cloud.iam.v1.IAMService.ListPermissions:output_type -> qdrant.cloud.iam.v1.ListPermissionsResponse + 15, // 38: qdrant.cloud.iam.v1.IAMService.ListRoles:output_type -> qdrant.cloud.iam.v1.ListRolesResponse + 17, // 39: qdrant.cloud.iam.v1.IAMService.GetRole:output_type -> qdrant.cloud.iam.v1.GetRoleResponse + 19, // 40: qdrant.cloud.iam.v1.IAMService.CreateRole:output_type -> qdrant.cloud.iam.v1.CreateRoleResponse + 21, // 41: qdrant.cloud.iam.v1.IAMService.UpdateRole:output_type -> qdrant.cloud.iam.v1.UpdateRoleResponse + 23, // 42: qdrant.cloud.iam.v1.IAMService.DeleteRole:output_type -> qdrant.cloud.iam.v1.DeleteRoleResponse + 25, // 43: qdrant.cloud.iam.v1.IAMService.ListEffectivePermissions:output_type -> qdrant.cloud.iam.v1.ListEffectivePermissionsResponse + 27, // 44: qdrant.cloud.iam.v1.IAMService.AssignUserRoles:output_type -> qdrant.cloud.iam.v1.AssignUserRolesResponse + 33, // [33:45] is the sub-list for method output_type + 21, // [21:33] is the sub-list for method input_type + 21, // [21:21] is the sub-list for extension type_name + 21, // [21:21] is the sub-list for extension extendee + 0, // [0:21] is the sub-list for field type_name } func init() { file_qdrant_cloud_iam_v1_iam_proto_init() } @@ -1699,13 +2129,14 @@ func file_qdrant_cloud_iam_v1_iam_proto_init() { if File_qdrant_cloud_iam_v1_iam_proto != nil { return } + file_qdrant_cloud_iam_v1_iam_proto_msgTypes[5].OneofWrappers = []any{} type x struct{} out := protoimpl.TypeBuilder{ File: protoimpl.DescBuilder{ GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_qdrant_cloud_iam_v1_iam_proto_rawDesc), len(file_qdrant_cloud_iam_v1_iam_proto_rawDesc)), - NumEnums: 2, - NumMessages: 22, + NumEnums: 4, + NumMessages: 26, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/go/qdrant/cloud/iam/v1/iam_grpc.pb.go b/gen/go/qdrant/cloud/iam/v1/iam_grpc.pb.go index 7f96a3b9..263a0127 100644 --- a/gen/go/qdrant/cloud/iam/v1/iam_grpc.pb.go +++ b/gen/go/qdrant/cloud/iam/v1/iam_grpc.pb.go @@ -21,6 +21,8 @@ const _ = grpc.SupportPackageIsVersion9 const ( IAMService_GetAuthenticatedUser_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/GetAuthenticatedUser" IAMService_UpdateUser_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/UpdateUser" + IAMService_GetUserConsent_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/GetUserConsent" + IAMService_RecordUserConsent_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/RecordUserConsent" IAMService_ListPermissions_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/ListPermissions" IAMService_ListRoles_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/ListRoles" IAMService_GetRole_FullMethodName = "/qdrant.cloud.iam.v1.IAMService/GetRole" @@ -45,6 +47,14 @@ type IAMServiceClient interface { // Required permissions: // - write:user UpdateUser(ctx context.Context, in *UpdateUserRequest, opts ...grpc.CallOption) (*UpdateUserResponse, error) + // Fetches the authenticated user's consent status for a specific legal document. + // Required permissions: + // - None (authenticated only) + GetUserConsent(ctx context.Context, in *GetUserConsentRequest, opts ...grpc.CallOption) (*GetUserConsentResponse, error) + // Records the authenticated user's consent for a legal document. + // Required permissions: + // - write:user + RecordUserConsent(ctx context.Context, in *RecordUserConsentRequest, opts ...grpc.CallOption) (*RecordUserConsentResponse, error) // Fetch all permissions known in the system for the provided account. // Note: If you want to get a list of permissions available for you, please use GetEffectivePermissions instead. // Required permissions: @@ -111,6 +121,26 @@ func (c *iAMServiceClient) UpdateUser(ctx context.Context, in *UpdateUserRequest return out, nil } +func (c *iAMServiceClient) GetUserConsent(ctx context.Context, in *GetUserConsentRequest, opts ...grpc.CallOption) (*GetUserConsentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(GetUserConsentResponse) + err := c.cc.Invoke(ctx, IAMService_GetUserConsent_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *iAMServiceClient) RecordUserConsent(ctx context.Context, in *RecordUserConsentRequest, opts ...grpc.CallOption) (*RecordUserConsentResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(RecordUserConsentResponse) + err := c.cc.Invoke(ctx, IAMService_RecordUserConsent_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *iAMServiceClient) ListPermissions(ctx context.Context, in *ListPermissionsRequest, opts ...grpc.CallOption) (*ListPermissionsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(ListPermissionsResponse) @@ -205,6 +235,14 @@ type IAMServiceServer interface { // Required permissions: // - write:user UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) + // Fetches the authenticated user's consent status for a specific legal document. + // Required permissions: + // - None (authenticated only) + GetUserConsent(context.Context, *GetUserConsentRequest) (*GetUserConsentResponse, error) + // Records the authenticated user's consent for a legal document. + // Required permissions: + // - write:user + RecordUserConsent(context.Context, *RecordUserConsentRequest) (*RecordUserConsentResponse, error) // Fetch all permissions known in the system for the provided account. // Note: If you want to get a list of permissions available for you, please use GetEffectivePermissions instead. // Required permissions: @@ -257,6 +295,12 @@ func (UnimplementedIAMServiceServer) GetAuthenticatedUser(context.Context, *GetA func (UnimplementedIAMServiceServer) UpdateUser(context.Context, *UpdateUserRequest) (*UpdateUserResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") } +func (UnimplementedIAMServiceServer) GetUserConsent(context.Context, *GetUserConsentRequest) (*GetUserConsentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserConsent not implemented") +} +func (UnimplementedIAMServiceServer) RecordUserConsent(context.Context, *RecordUserConsentRequest) (*RecordUserConsentResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method RecordUserConsent not implemented") +} func (UnimplementedIAMServiceServer) ListPermissions(context.Context, *ListPermissionsRequest) (*ListPermissionsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method ListPermissions not implemented") } @@ -338,6 +382,42 @@ func _IAMService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec fu return interceptor(ctx, in, info, handler) } +func _IAMService_GetUserConsent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetUserConsentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IAMServiceServer).GetUserConsent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IAMService_GetUserConsent_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IAMServiceServer).GetUserConsent(ctx, req.(*GetUserConsentRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _IAMService_RecordUserConsent_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(RecordUserConsentRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(IAMServiceServer).RecordUserConsent(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: IAMService_RecordUserConsent_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(IAMServiceServer).RecordUserConsent(ctx, req.(*RecordUserConsentRequest)) + } + return interceptor(ctx, in, info, handler) +} + func _IAMService_ListPermissions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(ListPermissionsRequest) if err := dec(in); err != nil { @@ -497,6 +577,14 @@ var IAMService_ServiceDesc = grpc.ServiceDesc{ MethodName: "UpdateUser", Handler: _IAMService_UpdateUser_Handler, }, + { + MethodName: "GetUserConsent", + Handler: _IAMService_GetUserConsent_Handler, + }, + { + MethodName: "RecordUserConsent", + Handler: _IAMService_RecordUserConsent_Handler, + }, { MethodName: "ListPermissions", Handler: _IAMService_ListPermissions_Handler, diff --git a/gen/openapiv2/qdrant/cloud/iam/v1/iam.swagger.json b/gen/openapiv2/qdrant/cloud/iam/v1/iam.swagger.json index 89f0593e..f7f38576 100644 --- a/gen/openapiv2/qdrant/cloud/iam/v1/iam.swagger.json +++ b/gen/openapiv2/qdrant/cloud/iam/v1/iam.swagger.json @@ -345,6 +345,77 @@ ] } }, + "/api/iam/v1/users/me/consent": { + "get": { + "summary": "Fetches the authenticated user's consent status for a specific legal document.\nRequired permissions:\n- None (authenticated only)", + "operationId": "IAMService_GetUserConsent", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1GetUserConsentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "documentType", + "description": "The type of the legal document.\nThis is a required field and cannot be UNSPECIFIED.\n\n - LEGAL_DOCUMENT_TYPE_UNSPECIFIED: Unspecified document type.\n - LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE: Terms of Service document.\n - LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY: Privacy Policy document.\n - LEGAL_DOCUMENT_TYPE_SLA: Service Level Agreement document.", + "in": "query", + "required": false, + "type": "string", + "enum": [ + "LEGAL_DOCUMENT_TYPE_UNSPECIFIED", + "LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE", + "LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY", + "LEGAL_DOCUMENT_TYPE_SLA" + ], + "default": "LEGAL_DOCUMENT_TYPE_UNSPECIFIED" + } + ], + "tags": [ + "IAMService" + ] + }, + "post": { + "summary": "Records the authenticated user's consent for a legal document.\nRequired permissions:\n- write:user", + "operationId": "IAMService_RecordUserConsent", + "responses": { + "200": { + "description": "A successful response.", + "schema": { + "$ref": "#/definitions/v1RecordUserConsentResponse" + } + }, + "default": { + "description": "An unexpected error response.", + "schema": { + "$ref": "#/definitions/googlerpcStatus" + } + } + }, + "parameters": [ + { + "name": "body", + "description": "RecordUserConsentRequest is the request for the RecordUserConsent function.", + "in": "body", + "required": true, + "schema": { + "$ref": "#/definitions/v1RecordUserConsentRequest" + } + } + ], + "tags": [ + "IAMService" + ] + } + }, "/api/iam/v1/users/{user.id}": { "put": { "summary": "Update the user identified by the given ID.\nRequired permissions:\n- write:user", @@ -601,6 +672,40 @@ }, "title": "GetRoleResponse is the response from the GetRole function" }, + "v1GetUserConsentResponse": { + "type": "object", + "properties": { + "documentType": { + "$ref": "#/definitions/v1LegalDocumentType", + "description": "The type of the legal document for which consent status is reported." + }, + "status": { + "$ref": "#/definitions/v1UserConsentStatus", + "description": "The latest consent status recorded from the user for this document type.\nWill be USER_CONSENT_STATUS_UNSPECIFIED if no status update has been recorded." + }, + "lastModifiedAt": { + "type": "string", + "format": "date-time", + "description": "Timestamp of the most recent status update.\nUnset if no status update has been recorded." + }, + "isAccepted": { + "type": "boolean", + "description": "A convenience field indicating if the current status is an acceptance.\nTrue if status is USER_CONSENT_STATUS_ACCEPTED, false otherwise." + } + }, + "description": "GetUserConsentResponse is the response from the GetUserConsent function." + }, + "v1LegalDocumentType": { + "type": "string", + "enum": [ + "LEGAL_DOCUMENT_TYPE_UNSPECIFIED", + "LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE", + "LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY", + "LEGAL_DOCUMENT_TYPE_SLA" + ], + "default": "LEGAL_DOCUMENT_TYPE_UNSPECIFIED", + "description": "LegalDocumentType specifies the type of a legal document.\n\n - LEGAL_DOCUMENT_TYPE_UNSPECIFIED: Unspecified document type.\n - LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE: Terms of Service document.\n - LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY: Privacy Policy document.\n - LEGAL_DOCUMENT_TYPE_SLA: Service Level Agreement document." + }, "v1ListEffectivePermissionsResponse": { "type": "object", "properties": { @@ -641,6 +746,24 @@ }, "title": "ListRolesResponse is the response from the ListRoles function" }, + "v1RecordUserConsentRequest": { + "type": "object", + "properties": { + "documentType": { + "$ref": "#/definitions/v1LegalDocumentType", + "description": "The type of the legal document.\nThis is a required field and cannot be UNSPECIFIED." + }, + "statusUpdate": { + "$ref": "#/definitions/v1UserConsentStatus", + "description": "The status update initiated by the user.\nThis is a required field and cannot be UNSPECIFIED or PENDING." + } + }, + "description": "RecordUserConsentRequest is the request for the RecordUserConsent function." + }, + "v1RecordUserConsentResponse": { + "type": "object", + "description": "RecordUserConsentResponse is the response from the RecordUserConsent function.\n\nEmpty" + }, "v1Role": { "type": "object", "properties": { @@ -751,6 +874,17 @@ }, "title": "A User represents a user in the Qdrant cloud.\nbuf:lint:ignore QDRANT_CLOUD_REQUIRED_ENTITY_FIELDS" }, + "v1UserConsentStatus": { + "type": "string", + "enum": [ + "USER_CONSENT_STATUS_UNSPECIFIED", + "USER_CONSENT_STATUS_ACCEPTED", + "USER_CONSENT_STATUS_REVOKED", + "USER_CONSENT_STATUS_PENDING" + ], + "default": "USER_CONSENT_STATUS_UNSPECIFIED", + "description": "UserConsentStatus specifies the status from an user for a consent.\n\n - USER_CONSENT_STATUS_UNSPECIFIED: Unspecified consent status.\n - USER_CONSENT_STATUS_ACCEPTED: The user accepted the consent.\n - USER_CONSENT_STATUS_REVOKED: The user revoked the consent.\n - USER_CONSENT_STATUS_PENDING: The consent is pending action from the user.\nPending consent means that the user got notified about the new version of the document. After a certain\nperiod of time, we auto accept pending consents depending on the document type." + }, "v1UserStatus": { "type": "string", "enum": [ diff --git a/gen/python/qdrant/cloud/iam/v1/iam_pb2.py b/gen/python/qdrant/cloud/iam/v1/iam_pb2.py index a324bd85..7d5c012b 100644 --- a/gen/python/qdrant/cloud/iam/v1/iam_pb2.py +++ b/gen/python/qdrant/cloud/iam/v1/iam_pb2.py @@ -28,7 +28,7 @@ from qdrant.cloud.common.v1 import common_pb2 as qdrant_dot_cloud_dot_common_dot_v1_dot_common__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dqdrant/cloud/iam/v1/iam.proto\x12\x13qdrant.cloud.iam.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"\x1d\n\x1bGetAuthenticatedUserRequest\"M\n\x1cGetAuthenticatedUserResponse\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"B\n\x11UpdateUserRequest\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"C\n\x12UpdateUserResponse\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"A\n\x16ListPermissionsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\";\n\x17ListPermissionsResponse\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\";\n\x10ListRolesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"D\n\x11ListRolesResponse\x12/\n\x05items\x18\x01 \x03(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x05items\"\\\n\x0eGetRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07role_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06roleId\"@\n\x0fGetRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"B\n\x11\x43reateRoleRequest\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"C\n\x12\x43reateRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"B\n\x11UpdateRoleRequest\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"C\n\x12UpdateRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"_\n\x11\x44\x65leteRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07role_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06roleId\"\x14\n\x12\x44\x65leteRoleResponse\"J\n\x1fListEffectivePermissionsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"D\n ListEffectivePermissionsResponse\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\"\xd6\x01\n\x16\x41ssignUserRolesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07user_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12\x34\n\x0frole_ids_to_add\x18\x03 \x03(\tB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xb0\x01\x01R\x0croleIdsToAdd\x12:\n\x12role_ids_to_delete\x18\x04 \x03(\tB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xb0\x01\x01R\x0froleIdsToDelete\"\x19\n\x17\x41ssignUserRolesResponse\"\xd0\x02\n\x04User\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x44\n\x10last_modified_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\x1d\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01R\x05\x65mail\x12\x1d\n\x04name\x18\x05 \x01(\tB\t\xbaH\x06r\x04\x10\x02\x18@R\x04name\x12\x37\n\x06status\x18\x06 \x01(\x0e\x32\x1f.qdrant.cloud.iam.v1.UserStatusR\x06status\x12\x36\n\x12\x64\x65\x66\x61ult_account_id\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x10\x64\x65\x66\x61ultAccountId\"\xa8\x04\n\x04Role\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x44\n\x10last_modified_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\'\n\naccount_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12/\n\x04name\x18\x05 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12 \n\x0b\x64\x65scription\x18\x06 \x01(\tR\x0b\x64\x65scription\x12:\n\trole_type\x18\x07 \x01(\x0e\x32\x1d.qdrant.cloud.iam.v1.RoleTypeR\x08roleType\x12*\n\x0bpermissions\x18\x08 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bpermissions:\xaa\x01\xbaH\xa6\x01\x1a\xa3\x01\n\ncluster.id\x12\x1avalue must be a valid UUID\x1aythis.id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || !has(this.created_at)*s\n\nUserStatus\x12\x1b\n\x17USER_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12USER_STATUS_ACTIVE\x10\x01\x12\x17\n\x13USER_STATUS_BLOCKED\x10\x02\x12\x17\n\x13USER_STATUS_DELETED\x10\x03*Q\n\x08RoleType\x12\x19\n\x15ROLE_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10ROLE_TYPE_SYSTEM\x10\x01\x12\x14\n\x10ROLE_TYPE_CUSTOM\x10\x02\x32\x92\x0e\n\nIAMService\x12\xa1\x01\n\x14GetAuthenticatedUser\x12\x30.qdrant.cloud.iam.v1.GetAuthenticatedUserRequest\x1a\x31.qdrant.cloud.iam.v1.GetAuthenticatedUserResponse\"$\x8a\xb5\x18\x00\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02\x16\x12\x14/api/iam/v1/users/me\x12\x97\x01\n\nUpdateUser\x12&.qdrant.cloud.iam.v1.UpdateUserRequest\x1a\'.qdrant.cloud.iam.v1.UpdateUserResponse\"8\x8a\xb5\x18\nwrite:user\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02 \x1a\x1b/api/iam/v1/users/{user.id}:\x01*\x12\xb1\x01\n\x0fListPermissions\x12+.qdrant.cloud.iam.v1.ListPermissionsRequest\x1a,.qdrant.cloud.iam.v1.ListPermissionsResponse\"C\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02/\x12-/api/iam/v1/accounts/{account_id}/permissions\x12\x99\x01\n\tListRoles\x12%.qdrant.cloud.iam.v1.ListRolesRequest\x1a&.qdrant.cloud.iam.v1.ListRolesResponse\"=\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02)\x12\'/api/iam/v1/accounts/{account_id}/roles\x12\xb0\x01\n\x07GetRole\x12#.qdrant.cloud.iam.v1.GetRoleRequest\x1a$.qdrant.cloud.iam.v1.GetRoleResponse\"Z\x8a\xb5\x18\nread:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02\x33\x12\x31/api/iam/v1/accounts/{account_id}/roles/{role_id}\x12\xb8\x01\n\nCreateRole\x12&.qdrant.cloud.iam.v1.CreateRoleRequest\x1a\'.qdrant.cloud.iam.v1.CreateRoleResponse\"Y\x8a\xb5\x18\x0bwrite:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02\x31\",/api/iam/v1/accounts/{role.account_id}/roles:\x01*\x12\xc2\x01\n\nUpdateRole\x12&.qdrant.cloud.iam.v1.UpdateRoleRequest\x1a\'.qdrant.cloud.iam.v1.UpdateRoleResponse\"c\x8a\xb5\x18\x0bwrite:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02;\x1a\x36/api/iam/v1/accounts/{role.account_id}/roles/{role.id}:\x01*\x12\xa8\x01\n\nDeleteRole\x12&.qdrant.cloud.iam.v1.DeleteRoleRequest\x1a\'.qdrant.cloud.iam.v1.DeleteRoleResponse\"I\x8a\xb5\x18\x0c\x64\x65lete:roles\x82\xd3\xe4\x93\x02\x33*1/api/iam/v1/accounts/{account_id}/roles/{role_id}\x12\xd6\x01\n\x18ListEffectivePermissions\x12\x34.qdrant.cloud.iam.v1.ListEffectivePermissionsRequest\x1a\x35.qdrant.cloud.iam.v1.ListEffectivePermissionsResponse\"M\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02\x39\x12\x37/api/iam/v1/accounts/{account_id}/effective-permissions\x12\xbe\x01\n\x0f\x41ssignUserRoles\x12+.qdrant.cloud.iam.v1.AssignUserRolesRequest\x1a,.qdrant.cloud.iam.v1.AssignUserRolesResponse\"P\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02<\"7/api/iam/v1/accounts/{account_id}/users/{user_id}/roles:\x01*B\xde\x01\n\x17\x63om.qdrant.cloud.iam.v1B\x08IamProtoP\x01ZJgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/iam/v1;iamv1\xa2\x02\x03QCI\xaa\x02\x13Qdrant.Cloud.Iam.V1\xca\x02\x13Qdrant\\Cloud\\Iam\\V1\xe2\x02\x1fQdrant\\Cloud\\Iam\\V1\\GPBMetadata\xea\x02\x16Qdrant::Cloud::Iam::V1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n\x1dqdrant/cloud/iam/v1/iam.proto\x12\x13qdrant.cloud.iam.v1\x1a\x1b\x62uf/validate/validate.proto\x1a\x1cgoogle/api/annotations.proto\x1a\x1fgoogle/protobuf/timestamp.proto\x1a#qdrant/cloud/common/v1/common.proto\"\x1d\n\x1bGetAuthenticatedUserRequest\"M\n\x1cGetAuthenticatedUserResponse\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"B\n\x11UpdateUserRequest\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"C\n\x12UpdateUserResponse\x12-\n\x04user\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.UserR\x04user\"p\n\x15GetUserConsentRequest\x12W\n\rdocument_type\x18\x01 \x01(\x0e\x32&.qdrant.cloud.iam.v1.LegalDocumentTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x0c\x64ocumentType\"\xa6\x02\n\x16GetUserConsentResponse\x12K\n\rdocument_type\x18\x01 \x01(\x0e\x32&.qdrant.cloud.iam.v1.LegalDocumentTypeR\x0c\x64ocumentType\x12>\n\x06status\x18\x02 \x01(\x0e\x32&.qdrant.cloud.iam.v1.UserConsentStatusR\x06status\x12I\n\x10last_modified_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampH\x00R\x0elastModifiedAt\x88\x01\x01\x12\x1f\n\x0bis_accepted\x18\x04 \x01(\x08R\nisAcceptedB\x13\n\x11_last_modified_at\"\xce\x01\n\x18RecordUserConsentRequest\x12W\n\rdocument_type\x18\x01 \x01(\x0e\x32&.qdrant.cloud.iam.v1.LegalDocumentTypeB\n\xbaH\x07\x82\x01\x04\x10\x01 \x00R\x0c\x64ocumentType\x12Y\n\rstatus_update\x18\x02 \x01(\x0e\x32&.qdrant.cloud.iam.v1.UserConsentStatusB\x0c\xbaH\t\x82\x01\x06\x10\x01 \x00 \x03R\x0cstatusUpdate\"\x1b\n\x19RecordUserConsentResponse\"A\n\x16ListPermissionsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\";\n\x17ListPermissionsResponse\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\";\n\x10ListRolesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"D\n\x11ListRolesResponse\x12/\n\x05items\x18\x01 \x03(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x05items\"\\\n\x0eGetRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07role_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06roleId\"@\n\x0fGetRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"B\n\x11\x43reateRoleRequest\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"C\n\x12\x43reateRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"B\n\x11UpdateRoleRequest\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"C\n\x12UpdateRoleResponse\x12-\n\x04role\x18\x01 \x01(\x0b\x32\x19.qdrant.cloud.iam.v1.RoleR\x04role\"_\n\x11\x44\x65leteRoleRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07role_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06roleId\"\x14\n\x12\x44\x65leteRoleResponse\"J\n\x1fListEffectivePermissionsRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\"D\n ListEffectivePermissionsResponse\x12 \n\x0bpermissions\x18\x01 \x03(\tR\x0bpermissions\"\xd6\x01\n\x16\x41ssignUserRolesRequest\x12\'\n\naccount_id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12!\n\x07user_id\x18\x02 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x06userId\x12\x34\n\x0frole_ids_to_add\x18\x03 \x03(\tB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xb0\x01\x01R\x0croleIdsToAdd\x12:\n\x12role_ids_to_delete\x18\x04 \x03(\tB\r\xbaH\n\x92\x01\x07\"\x05r\x03\xb0\x01\x01R\x0froleIdsToDelete\"\x19\n\x17\x41ssignUserRolesResponse\"\xd0\x02\n\x04User\x12\x18\n\x02id\x18\x01 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x44\n\x10last_modified_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\x1d\n\x05\x65mail\x18\x04 \x01(\tB\x07\xbaH\x04r\x02`\x01R\x05\x65mail\x12\x1d\n\x04name\x18\x05 \x01(\tB\t\xbaH\x06r\x04\x10\x02\x18@R\x04name\x12\x37\n\x06status\x18\x06 \x01(\x0e\x32\x1f.qdrant.cloud.iam.v1.UserStatusR\x06status\x12\x36\n\x12\x64\x65\x66\x61ult_account_id\x18\x07 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\x10\x64\x65\x66\x61ultAccountId\"\xa8\x04\n\x04Role\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12\x39\n\ncreated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tcreatedAt\x12\x44\n\x10last_modified_at\x18\x03 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0elastModifiedAt\x12\'\n\naccount_id\x18\x04 \x01(\tB\x08\xbaH\x05r\x03\xb0\x01\x01R\taccountId\x12/\n\x04name\x18\x05 \x01(\tB\x1b\xbaH\x18r\x16\x10\x04\x18@2\x10^[a-zA-Z0-9-_]+$R\x04name\x12 \n\x0b\x64\x65scription\x18\x06 \x01(\tR\x0b\x64\x65scription\x12:\n\trole_type\x18\x07 \x01(\x0e\x32\x1d.qdrant.cloud.iam.v1.RoleTypeR\x08roleType\x12*\n\x0bpermissions\x18\x08 \x03(\tB\x08\xbaH\x05\x92\x01\x02\x08\x01R\x0bpermissions:\xaa\x01\xbaH\xa6\x01\x1a\xa3\x01\n\ncluster.id\x12\x1avalue must be a valid UUID\x1aythis.id.matches(\'^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$\') || !has(this.created_at)*s\n\nUserStatus\x12\x1b\n\x17USER_STATUS_UNSPECIFIED\x10\x00\x12\x16\n\x12USER_STATUS_ACTIVE\x10\x01\x12\x17\n\x13USER_STATUS_BLOCKED\x10\x02\x12\x17\n\x13USER_STATUS_DELETED\x10\x03*\xa7\x01\n\x11LegalDocumentType\x12#\n\x1fLEGAL_DOCUMENT_TYPE_UNSPECIFIED\x10\x00\x12(\n$LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE\x10\x01\x12&\n\"LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY\x10\x02\x12\x1b\n\x17LEGAL_DOCUMENT_TYPE_SLA\x10\x03*\x9c\x01\n\x11UserConsentStatus\x12#\n\x1fUSER_CONSENT_STATUS_UNSPECIFIED\x10\x00\x12 \n\x1cUSER_CONSENT_STATUS_ACCEPTED\x10\x01\x12\x1f\n\x1bUSER_CONSENT_STATUS_REVOKED\x10\x02\x12\x1f\n\x1bUSER_CONSENT_STATUS_PENDING\x10\x03*Q\n\x08RoleType\x12\x19\n\x15ROLE_TYPE_UNSPECIFIED\x10\x00\x12\x14\n\x10ROLE_TYPE_SYSTEM\x10\x01\x12\x14\n\x10ROLE_TYPE_CUSTOM\x10\x02\x32\xdc\x10\n\nIAMService\x12\xa1\x01\n\x14GetAuthenticatedUser\x12\x30.qdrant.cloud.iam.v1.GetAuthenticatedUserRequest\x1a\x31.qdrant.cloud.iam.v1.GetAuthenticatedUserResponse\"$\x8a\xb5\x18\x00\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02\x16\x12\x14/api/iam/v1/users/me\x12\x97\x01\n\nUpdateUser\x12&.qdrant.cloud.iam.v1.UpdateUserRequest\x1a\'.qdrant.cloud.iam.v1.UpdateUserResponse\"8\x8a\xb5\x18\nwrite:user\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02 \x1a\x1b/api/iam/v1/users/{user.id}:\x01*\x12\x97\x01\n\x0eGetUserConsent\x12*.qdrant.cloud.iam.v1.GetUserConsentRequest\x1a+.qdrant.cloud.iam.v1.GetUserConsentResponse\",\x8a\xb5\x18\x00\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02\x1e\x12\x1c/api/iam/v1/users/me/consent\x12\xad\x01\n\x11RecordUserConsent\x12-.qdrant.cloud.iam.v1.RecordUserConsentRequest\x1a..qdrant.cloud.iam.v1.RecordUserConsentResponse\"9\x8a\xb5\x18\nwrite:user\x92\xb5\x18\x00\x82\xd3\xe4\x93\x02!\"\x1c/api/iam/v1/users/me/consent:\x01*\x12\xb1\x01\n\x0fListPermissions\x12+.qdrant.cloud.iam.v1.ListPermissionsRequest\x1a,.qdrant.cloud.iam.v1.ListPermissionsResponse\"C\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02/\x12-/api/iam/v1/accounts/{account_id}/permissions\x12\x99\x01\n\tListRoles\x12%.qdrant.cloud.iam.v1.ListRolesRequest\x1a&.qdrant.cloud.iam.v1.ListRolesResponse\"=\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02)\x12\'/api/iam/v1/accounts/{account_id}/roles\x12\xb0\x01\n\x07GetRole\x12#.qdrant.cloud.iam.v1.GetRoleRequest\x1a$.qdrant.cloud.iam.v1.GetRoleResponse\"Z\x8a\xb5\x18\nread:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02\x33\x12\x31/api/iam/v1/accounts/{account_id}/roles/{role_id}\x12\xb8\x01\n\nCreateRole\x12&.qdrant.cloud.iam.v1.CreateRoleRequest\x1a\'.qdrant.cloud.iam.v1.CreateRoleResponse\"Y\x8a\xb5\x18\x0bwrite:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02\x31\",/api/iam/v1/accounts/{role.account_id}/roles:\x01*\x12\xc2\x01\n\nUpdateRole\x12&.qdrant.cloud.iam.v1.UpdateRoleRequest\x1a\'.qdrant.cloud.iam.v1.UpdateRoleResponse\"c\x8a\xb5\x18\x0bwrite:roles\x92\xb5\x18\x0frole.account_id\x82\xd3\xe4\x93\x02;\x1a\x36/api/iam/v1/accounts/{role.account_id}/roles/{role.id}:\x01*\x12\xa8\x01\n\nDeleteRole\x12&.qdrant.cloud.iam.v1.DeleteRoleRequest\x1a\'.qdrant.cloud.iam.v1.DeleteRoleResponse\"I\x8a\xb5\x18\x0c\x64\x65lete:roles\x82\xd3\xe4\x93\x02\x33*1/api/iam/v1/accounts/{account_id}/roles/{role_id}\x12\xd6\x01\n\x18ListEffectivePermissions\x12\x34.qdrant.cloud.iam.v1.ListEffectivePermissionsRequest\x1a\x35.qdrant.cloud.iam.v1.ListEffectivePermissionsResponse\"M\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02\x39\x12\x37/api/iam/v1/accounts/{account_id}/effective-permissions\x12\xbe\x01\n\x0f\x41ssignUserRoles\x12+.qdrant.cloud.iam.v1.AssignUserRolesRequest\x1a,.qdrant.cloud.iam.v1.AssignUserRolesResponse\"P\x8a\xb5\x18\nread:roles\x82\xd3\xe4\x93\x02<\"7/api/iam/v1/accounts/{account_id}/users/{user_id}/roles:\x01*B\xde\x01\n\x17\x63om.qdrant.cloud.iam.v1B\x08IamProtoP\x01ZJgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/iam/v1;iamv1\xa2\x02\x03QCI\xaa\x02\x13Qdrant.Cloud.Iam.V1\xca\x02\x13Qdrant\\Cloud\\Iam\\V1\xe2\x02\x1fQdrant\\Cloud\\Iam\\V1\\GPBMetadata\xea\x02\x16Qdrant::Cloud::Iam::V1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -36,6 +36,12 @@ if not _descriptor._USE_C_DESCRIPTORS: _globals['DESCRIPTOR']._loaded_options = None _globals['DESCRIPTOR']._serialized_options = b'\n\027com.qdrant.cloud.iam.v1B\010IamProtoP\001ZJgithub.com/qdrant/qdrant-cloud-public-api/gen/go/qdrant/cloud/iam/v1;iamv1\242\002\003QCI\252\002\023Qdrant.Cloud.Iam.V1\312\002\023Qdrant\\Cloud\\Iam\\V1\342\002\037Qdrant\\Cloud\\Iam\\V1\\GPBMetadata\352\002\026Qdrant::Cloud::Iam::V1' + _globals['_GETUSERCONSENTREQUEST'].fields_by_name['document_type']._loaded_options = None + _globals['_GETUSERCONSENTREQUEST'].fields_by_name['document_type']._serialized_options = b'\272H\007\202\001\004\020\001 \000' + _globals['_RECORDUSERCONSENTREQUEST'].fields_by_name['document_type']._loaded_options = None + _globals['_RECORDUSERCONSENTREQUEST'].fields_by_name['document_type']._serialized_options = b'\272H\007\202\001\004\020\001 \000' + _globals['_RECORDUSERCONSENTREQUEST'].fields_by_name['status_update']._loaded_options = None + _globals['_RECORDUSERCONSENTREQUEST'].fields_by_name['status_update']._serialized_options = b'\272H\t\202\001\006\020\001 \000 \003' _globals['_LISTPERMISSIONSREQUEST'].fields_by_name['account_id']._loaded_options = None _globals['_LISTPERMISSIONSREQUEST'].fields_by_name['account_id']._serialized_options = b'\272H\005r\003\260\001\001' _globals['_LISTROLESREQUEST'].fields_by_name['account_id']._loaded_options = None @@ -78,6 +84,10 @@ _globals['_IAMSERVICE'].methods_by_name['GetAuthenticatedUser']._serialized_options = b'\212\265\030\000\222\265\030\000\202\323\344\223\002\026\022\024/api/iam/v1/users/me' _globals['_IAMSERVICE'].methods_by_name['UpdateUser']._loaded_options = None _globals['_IAMSERVICE'].methods_by_name['UpdateUser']._serialized_options = b'\212\265\030\nwrite:user\222\265\030\000\202\323\344\223\002 \032\033/api/iam/v1/users/{user.id}:\001*' + _globals['_IAMSERVICE'].methods_by_name['GetUserConsent']._loaded_options = None + _globals['_IAMSERVICE'].methods_by_name['GetUserConsent']._serialized_options = b'\212\265\030\000\222\265\030\000\202\323\344\223\002\036\022\034/api/iam/v1/users/me/consent' + _globals['_IAMSERVICE'].methods_by_name['RecordUserConsent']._loaded_options = None + _globals['_IAMSERVICE'].methods_by_name['RecordUserConsent']._serialized_options = b'\212\265\030\nwrite:user\222\265\030\000\202\323\344\223\002!\"\034/api/iam/v1/users/me/consent:\001*' _globals['_IAMSERVICE'].methods_by_name['ListPermissions']._loaded_options = None _globals['_IAMSERVICE'].methods_by_name['ListPermissions']._serialized_options = b'\212\265\030\nread:roles\202\323\344\223\002/\022-/api/iam/v1/accounts/{account_id}/permissions' _globals['_IAMSERVICE'].methods_by_name['ListRoles']._loaded_options = None @@ -94,10 +104,14 @@ _globals['_IAMSERVICE'].methods_by_name['ListEffectivePermissions']._serialized_options = b'\212\265\030\nread:roles\202\323\344\223\0029\0227/api/iam/v1/accounts/{account_id}/effective-permissions' _globals['_IAMSERVICE'].methods_by_name['AssignUserRoles']._loaded_options = None _globals['_IAMSERVICE'].methods_by_name['AssignUserRoles']._serialized_options = b'\212\265\030\nread:roles\202\323\344\223\002<\"7/api/iam/v1/accounts/{account_id}/users/{user_id}/roles:\001*' - _globals['_USERSTATUS']._serialized_start=2526 - _globals['_USERSTATUS']._serialized_end=2641 - _globals['_ROLETYPE']._serialized_start=2643 - _globals['_ROLETYPE']._serialized_end=2724 + _globals['_USERSTATUS']._serialized_start=3175 + _globals['_USERSTATUS']._serialized_end=3290 + _globals['_LEGALDOCUMENTTYPE']._serialized_start=3293 + _globals['_LEGALDOCUMENTTYPE']._serialized_end=3460 + _globals['_USERCONSENTSTATUS']._serialized_start=3463 + _globals['_USERCONSENTSTATUS']._serialized_end=3619 + _globals['_ROLETYPE']._serialized_start=3621 + _globals['_ROLETYPE']._serialized_end=3702 _globals['_GETAUTHENTICATEDUSERREQUEST']._serialized_start=183 _globals['_GETAUTHENTICATEDUSERREQUEST']._serialized_end=212 _globals['_GETAUTHENTICATEDUSERRESPONSE']._serialized_start=214 @@ -106,42 +120,50 @@ _globals['_UPDATEUSERREQUEST']._serialized_end=359 _globals['_UPDATEUSERRESPONSE']._serialized_start=361 _globals['_UPDATEUSERRESPONSE']._serialized_end=428 - _globals['_LISTPERMISSIONSREQUEST']._serialized_start=430 - _globals['_LISTPERMISSIONSREQUEST']._serialized_end=495 - _globals['_LISTPERMISSIONSRESPONSE']._serialized_start=497 - _globals['_LISTPERMISSIONSRESPONSE']._serialized_end=556 - _globals['_LISTROLESREQUEST']._serialized_start=558 - _globals['_LISTROLESREQUEST']._serialized_end=617 - _globals['_LISTROLESRESPONSE']._serialized_start=619 - _globals['_LISTROLESRESPONSE']._serialized_end=687 - _globals['_GETROLEREQUEST']._serialized_start=689 - _globals['_GETROLEREQUEST']._serialized_end=781 - _globals['_GETROLERESPONSE']._serialized_start=783 - _globals['_GETROLERESPONSE']._serialized_end=847 - _globals['_CREATEROLEREQUEST']._serialized_start=849 - _globals['_CREATEROLEREQUEST']._serialized_end=915 - _globals['_CREATEROLERESPONSE']._serialized_start=917 - _globals['_CREATEROLERESPONSE']._serialized_end=984 - _globals['_UPDATEROLEREQUEST']._serialized_start=986 - _globals['_UPDATEROLEREQUEST']._serialized_end=1052 - _globals['_UPDATEROLERESPONSE']._serialized_start=1054 - _globals['_UPDATEROLERESPONSE']._serialized_end=1121 - _globals['_DELETEROLEREQUEST']._serialized_start=1123 - _globals['_DELETEROLEREQUEST']._serialized_end=1218 - _globals['_DELETEROLERESPONSE']._serialized_start=1220 - _globals['_DELETEROLERESPONSE']._serialized_end=1240 - _globals['_LISTEFFECTIVEPERMISSIONSREQUEST']._serialized_start=1242 - _globals['_LISTEFFECTIVEPERMISSIONSREQUEST']._serialized_end=1316 - _globals['_LISTEFFECTIVEPERMISSIONSRESPONSE']._serialized_start=1318 - _globals['_LISTEFFECTIVEPERMISSIONSRESPONSE']._serialized_end=1386 - _globals['_ASSIGNUSERROLESREQUEST']._serialized_start=1389 - _globals['_ASSIGNUSERROLESREQUEST']._serialized_end=1603 - _globals['_ASSIGNUSERROLESRESPONSE']._serialized_start=1605 - _globals['_ASSIGNUSERROLESRESPONSE']._serialized_end=1630 - _globals['_USER']._serialized_start=1633 - _globals['_USER']._serialized_end=1969 - _globals['_ROLE']._serialized_start=1972 - _globals['_ROLE']._serialized_end=2524 - _globals['_IAMSERVICE']._serialized_start=2727 - _globals['_IAMSERVICE']._serialized_end=4537 + _globals['_GETUSERCONSENTREQUEST']._serialized_start=430 + _globals['_GETUSERCONSENTREQUEST']._serialized_end=542 + _globals['_GETUSERCONSENTRESPONSE']._serialized_start=545 + _globals['_GETUSERCONSENTRESPONSE']._serialized_end=839 + _globals['_RECORDUSERCONSENTREQUEST']._serialized_start=842 + _globals['_RECORDUSERCONSENTREQUEST']._serialized_end=1048 + _globals['_RECORDUSERCONSENTRESPONSE']._serialized_start=1050 + _globals['_RECORDUSERCONSENTRESPONSE']._serialized_end=1077 + _globals['_LISTPERMISSIONSREQUEST']._serialized_start=1079 + _globals['_LISTPERMISSIONSREQUEST']._serialized_end=1144 + _globals['_LISTPERMISSIONSRESPONSE']._serialized_start=1146 + _globals['_LISTPERMISSIONSRESPONSE']._serialized_end=1205 + _globals['_LISTROLESREQUEST']._serialized_start=1207 + _globals['_LISTROLESREQUEST']._serialized_end=1266 + _globals['_LISTROLESRESPONSE']._serialized_start=1268 + _globals['_LISTROLESRESPONSE']._serialized_end=1336 + _globals['_GETROLEREQUEST']._serialized_start=1338 + _globals['_GETROLEREQUEST']._serialized_end=1430 + _globals['_GETROLERESPONSE']._serialized_start=1432 + _globals['_GETROLERESPONSE']._serialized_end=1496 + _globals['_CREATEROLEREQUEST']._serialized_start=1498 + _globals['_CREATEROLEREQUEST']._serialized_end=1564 + _globals['_CREATEROLERESPONSE']._serialized_start=1566 + _globals['_CREATEROLERESPONSE']._serialized_end=1633 + _globals['_UPDATEROLEREQUEST']._serialized_start=1635 + _globals['_UPDATEROLEREQUEST']._serialized_end=1701 + _globals['_UPDATEROLERESPONSE']._serialized_start=1703 + _globals['_UPDATEROLERESPONSE']._serialized_end=1770 + _globals['_DELETEROLEREQUEST']._serialized_start=1772 + _globals['_DELETEROLEREQUEST']._serialized_end=1867 + _globals['_DELETEROLERESPONSE']._serialized_start=1869 + _globals['_DELETEROLERESPONSE']._serialized_end=1889 + _globals['_LISTEFFECTIVEPERMISSIONSREQUEST']._serialized_start=1891 + _globals['_LISTEFFECTIVEPERMISSIONSREQUEST']._serialized_end=1965 + _globals['_LISTEFFECTIVEPERMISSIONSRESPONSE']._serialized_start=1967 + _globals['_LISTEFFECTIVEPERMISSIONSRESPONSE']._serialized_end=2035 + _globals['_ASSIGNUSERROLESREQUEST']._serialized_start=2038 + _globals['_ASSIGNUSERROLESREQUEST']._serialized_end=2252 + _globals['_ASSIGNUSERROLESRESPONSE']._serialized_start=2254 + _globals['_ASSIGNUSERROLESRESPONSE']._serialized_end=2279 + _globals['_USER']._serialized_start=2282 + _globals['_USER']._serialized_end=2618 + _globals['_ROLE']._serialized_start=2621 + _globals['_ROLE']._serialized_end=3173 + _globals['_IAMSERVICE']._serialized_start=3705 + _globals['_IAMSERVICE']._serialized_end=5845 # @@protoc_insertion_point(module_scope) diff --git a/gen/python/qdrant/cloud/iam/v1/iam_pb2.pyi b/gen/python/qdrant/cloud/iam/v1/iam_pb2.pyi index e1359c22..f1c1acf2 100644 --- a/gen/python/qdrant/cloud/iam/v1/iam_pb2.pyi +++ b/gen/python/qdrant/cloud/iam/v1/iam_pb2.pyi @@ -17,6 +17,20 @@ class UserStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): USER_STATUS_BLOCKED: _ClassVar[UserStatus] USER_STATUS_DELETED: _ClassVar[UserStatus] +class LegalDocumentType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + LEGAL_DOCUMENT_TYPE_UNSPECIFIED: _ClassVar[LegalDocumentType] + LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE: _ClassVar[LegalDocumentType] + LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY: _ClassVar[LegalDocumentType] + LEGAL_DOCUMENT_TYPE_SLA: _ClassVar[LegalDocumentType] + +class UserConsentStatus(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): + __slots__ = () + USER_CONSENT_STATUS_UNSPECIFIED: _ClassVar[UserConsentStatus] + USER_CONSENT_STATUS_ACCEPTED: _ClassVar[UserConsentStatus] + USER_CONSENT_STATUS_REVOKED: _ClassVar[UserConsentStatus] + USER_CONSENT_STATUS_PENDING: _ClassVar[UserConsentStatus] + class RoleType(int, metaclass=_enum_type_wrapper.EnumTypeWrapper): __slots__ = () ROLE_TYPE_UNSPECIFIED: _ClassVar[RoleType] @@ -26,6 +40,14 @@ USER_STATUS_UNSPECIFIED: UserStatus USER_STATUS_ACTIVE: UserStatus USER_STATUS_BLOCKED: UserStatus USER_STATUS_DELETED: UserStatus +LEGAL_DOCUMENT_TYPE_UNSPECIFIED: LegalDocumentType +LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE: LegalDocumentType +LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY: LegalDocumentType +LEGAL_DOCUMENT_TYPE_SLA: LegalDocumentType +USER_CONSENT_STATUS_UNSPECIFIED: UserConsentStatus +USER_CONSENT_STATUS_ACCEPTED: UserConsentStatus +USER_CONSENT_STATUS_REVOKED: UserConsentStatus +USER_CONSENT_STATUS_PENDING: UserConsentStatus ROLE_TYPE_UNSPECIFIED: RoleType ROLE_TYPE_SYSTEM: RoleType ROLE_TYPE_CUSTOM: RoleType @@ -52,6 +74,36 @@ class UpdateUserResponse(_message.Message): user: User def __init__(self, user: _Optional[_Union[User, _Mapping]] = ...) -> None: ... +class GetUserConsentRequest(_message.Message): + __slots__ = ("document_type",) + DOCUMENT_TYPE_FIELD_NUMBER: _ClassVar[int] + document_type: LegalDocumentType + def __init__(self, document_type: _Optional[_Union[LegalDocumentType, str]] = ...) -> None: ... + +class GetUserConsentResponse(_message.Message): + __slots__ = ("document_type", "status", "last_modified_at", "is_accepted") + DOCUMENT_TYPE_FIELD_NUMBER: _ClassVar[int] + STATUS_FIELD_NUMBER: _ClassVar[int] + LAST_MODIFIED_AT_FIELD_NUMBER: _ClassVar[int] + IS_ACCEPTED_FIELD_NUMBER: _ClassVar[int] + document_type: LegalDocumentType + status: UserConsentStatus + last_modified_at: _timestamp_pb2.Timestamp + is_accepted: bool + def __init__(self, document_type: _Optional[_Union[LegalDocumentType, str]] = ..., status: _Optional[_Union[UserConsentStatus, str]] = ..., last_modified_at: _Optional[_Union[_timestamp_pb2.Timestamp, _Mapping]] = ..., is_accepted: bool = ...) -> None: ... + +class RecordUserConsentRequest(_message.Message): + __slots__ = ("document_type", "status_update") + DOCUMENT_TYPE_FIELD_NUMBER: _ClassVar[int] + STATUS_UPDATE_FIELD_NUMBER: _ClassVar[int] + document_type: LegalDocumentType + status_update: UserConsentStatus + def __init__(self, document_type: _Optional[_Union[LegalDocumentType, str]] = ..., status_update: _Optional[_Union[UserConsentStatus, str]] = ...) -> None: ... + +class RecordUserConsentResponse(_message.Message): + __slots__ = () + def __init__(self) -> None: ... + class ListPermissionsRequest(_message.Message): __slots__ = ("account_id",) ACCOUNT_ID_FIELD_NUMBER: _ClassVar[int] diff --git a/gen/python/qdrant/cloud/iam/v1/iam_pb2_grpc.py b/gen/python/qdrant/cloud/iam/v1/iam_pb2_grpc.py index 38bbee9c..9d8cfb99 100644 --- a/gen/python/qdrant/cloud/iam/v1/iam_pb2_grpc.py +++ b/gen/python/qdrant/cloud/iam/v1/iam_pb2_grpc.py @@ -25,6 +25,16 @@ def __init__(self, channel): request_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.UpdateUserRequest.SerializeToString, response_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.UpdateUserResponse.FromString, _registered_method=True) + self.GetUserConsent = channel.unary_unary( + '/qdrant.cloud.iam.v1.IAMService/GetUserConsent', + request_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentRequest.SerializeToString, + response_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentResponse.FromString, + _registered_method=True) + self.RecordUserConsent = channel.unary_unary( + '/qdrant.cloud.iam.v1.IAMService/RecordUserConsent', + request_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentRequest.SerializeToString, + response_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentResponse.FromString, + _registered_method=True) self.ListPermissions = channel.unary_unary( '/qdrant.cloud.iam.v1.IAMService/ListPermissions', request_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.ListPermissionsRequest.SerializeToString, @@ -89,6 +99,24 @@ def UpdateUser(self, request, context): context.set_details('Method not implemented!') raise NotImplementedError('Method not implemented!') + def GetUserConsent(self, request, context): + """Fetches the authenticated user's consent status for a specific legal document. + Required permissions: + - None (authenticated only) + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + + def RecordUserConsent(self, request, context): + """Records the authenticated user's consent for a legal document. + Required permissions: + - write:user + """ + context.set_code(grpc.StatusCode.UNIMPLEMENTED) + context.set_details('Method not implemented!') + raise NotImplementedError('Method not implemented!') + def ListPermissions(self, request, context): """Fetch all permissions known in the system for the provided account. Note: If you want to get a list of permissions available for you, please use GetEffectivePermissions instead. @@ -178,6 +206,16 @@ def add_IAMServiceServicer_to_server(servicer, server): request_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.UpdateUserRequest.FromString, response_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.UpdateUserResponse.SerializeToString, ), + 'GetUserConsent': grpc.unary_unary_rpc_method_handler( + servicer.GetUserConsent, + request_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentRequest.FromString, + response_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentResponse.SerializeToString, + ), + 'RecordUserConsent': grpc.unary_unary_rpc_method_handler( + servicer.RecordUserConsent, + request_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentRequest.FromString, + response_serializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentResponse.SerializeToString, + ), 'ListPermissions': grpc.unary_unary_rpc_method_handler( servicer.ListPermissions, request_deserializer=qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.ListPermissionsRequest.FromString, @@ -284,6 +322,60 @@ def UpdateUser(request, metadata, _registered_method=True) + @staticmethod + def GetUserConsent(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/qdrant.cloud.iam.v1.IAMService/GetUserConsent', + qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentRequest.SerializeToString, + qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.GetUserConsentResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + + @staticmethod + def RecordUserConsent(request, + target, + options=(), + channel_credentials=None, + call_credentials=None, + insecure=False, + compression=None, + wait_for_ready=None, + timeout=None, + metadata=None): + return grpc.experimental.unary_unary( + request, + target, + '/qdrant.cloud.iam.v1.IAMService/RecordUserConsent', + qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentRequest.SerializeToString, + qdrant_dot_cloud_dot_iam_dot_v1_dot_iam__pb2.RecordUserConsentResponse.FromString, + options, + channel_credentials, + insecure, + call_credentials, + compression, + wait_for_ready, + timeout, + metadata, + _registered_method=True) + @staticmethod def ListPermissions(request, target, diff --git a/gen/typescript/buf/validate/validate_pb.d.ts b/gen/typescript/buf/validate/validate_pb.d.ts index 74488ce5..a76f1758 100644 --- a/gen/typescript/buf/validate/validate_pb.d.ts +++ b/gen/typescript/buf/validate/validate_pb.d.ts @@ -137,17 +137,20 @@ export declare type MessageRules = Message<"buf.validate.MessageRules"> & { * fields have explicit presence. This means that, for the purpose of determining * how many fields are set, explicitly setting such a field to its zero value is * effectively the same as not setting it at all. - * 3. This will generate validation errors when unmarshalling, even from the binary - * format. With a Protobuf oneof, if multiple fields are present in the serialized - * form, earlier values are usually silently ignored when unmarshalling, with only - * the last field being present when unmarshalling completes. + * 3. This will always generate validation errors for a message unmarshalled from + * serialized data that sets more than one field. With a Protobuf oneof, when + * multiple fields are present in the serialized form, earlier values are usually + * silently ignored when unmarshalling, with only the last field being set when + * unmarshalling completes. * + * Note that adding a field to a `oneof` will also set the IGNORE_IF_UNPOPULATED on the fields. This means + * only the field that os set will be validated and the unset fields are not validated according to the field rules. * * ```proto * message MyMessage { * // Only one of `field1` or `field2` _can_ be present in this message. * option (buf.validate.message).oneof = { fields: ["field1", "field2"] }; - * // Only one of `field3` or `field4` _must_ be present in this message. + * // Exactly one of `field3` or `field4` _must_ be present in this message. * option (buf.validate.message).oneof = { fields: ["field3", "field4"], required: true }; * string field1 = 1; * bytes field2 = 2; @@ -173,7 +176,8 @@ export declare const MessageRulesSchema: GenMessage; export declare type MessageOneofRule = Message<"buf.validate.MessageOneofRule"> & { /** * A list of field names to include in the oneof. All field names must be - * defined in the message. + * defined in the message. At least one field must be specified, and + * duplicates are not permitted. * * @generated from field: repeated string fields = 1; */ diff --git a/gen/typescript/qdrant/cloud/iam/v1/iam_pb.d.ts b/gen/typescript/qdrant/cloud/iam/v1/iam_pb.d.ts index dd197fab..7fed5495 100644 --- a/gen/typescript/qdrant/cloud/iam/v1/iam_pb.d.ts +++ b/gen/typescript/qdrant/cloud/iam/v1/iam_pb.d.ts @@ -87,6 +87,116 @@ export declare type UpdateUserResponse = Message<"qdrant.cloud.iam.v1.UpdateUser */ export declare const UpdateUserResponseSchema: GenMessage; +/** + * GetUserConsentRequest is the request for the GetUserConsent function. + * + * @generated from message qdrant.cloud.iam.v1.GetUserConsentRequest + */ +export declare type GetUserConsentRequest = Message<"qdrant.cloud.iam.v1.GetUserConsentRequest"> & { + /** + * The type of the legal document. + * This is a required field and cannot be UNSPECIFIED. + * + * @generated from field: qdrant.cloud.iam.v1.LegalDocumentType document_type = 1; + */ + documentType: LegalDocumentType; +}; + +/** + * Describes the message qdrant.cloud.iam.v1.GetUserConsentRequest. + * Use `create(GetUserConsentRequestSchema)` to create a new message. + */ +export declare const GetUserConsentRequestSchema: GenMessage; + +/** + * GetUserConsentResponse is the response from the GetUserConsent function. + * + * @generated from message qdrant.cloud.iam.v1.GetUserConsentResponse + */ +export declare type GetUserConsentResponse = Message<"qdrant.cloud.iam.v1.GetUserConsentResponse"> & { + /** + * The type of the legal document for which consent status is reported. + * + * @generated from field: qdrant.cloud.iam.v1.LegalDocumentType document_type = 1; + */ + documentType: LegalDocumentType; + + /** + * The latest consent status recorded from the user for this document type. + * Will be USER_CONSENT_STATUS_UNSPECIFIED if no status update has been recorded. + * + * @generated from field: qdrant.cloud.iam.v1.UserConsentStatus status = 2; + */ + status: UserConsentStatus; + + /** + * Timestamp of the most recent status update. + * Unset if no status update has been recorded. + * + * @generated from field: optional google.protobuf.Timestamp last_modified_at = 3; + */ + lastModifiedAt?: Timestamp; + + /** + * A convenience field indicating if the current status is an acceptance. + * True if status is USER_CONSENT_STATUS_ACCEPTED, false otherwise. + * + * @generated from field: bool is_accepted = 4; + */ + isAccepted: boolean; +}; + +/** + * Describes the message qdrant.cloud.iam.v1.GetUserConsentResponse. + * Use `create(GetUserConsentResponseSchema)` to create a new message. + */ +export declare const GetUserConsentResponseSchema: GenMessage; + +/** + * RecordUserConsentRequest is the request for the RecordUserConsent function. + * + * @generated from message qdrant.cloud.iam.v1.RecordUserConsentRequest + */ +export declare type RecordUserConsentRequest = Message<"qdrant.cloud.iam.v1.RecordUserConsentRequest"> & { + /** + * The type of the legal document. + * This is a required field and cannot be UNSPECIFIED. + * + * @generated from field: qdrant.cloud.iam.v1.LegalDocumentType document_type = 1; + */ + documentType: LegalDocumentType; + + /** + * The status update initiated by the user. + * This is a required field and cannot be UNSPECIFIED or PENDING. + * + * @generated from field: qdrant.cloud.iam.v1.UserConsentStatus status_update = 2; + */ + statusUpdate: UserConsentStatus; +}; + +/** + * Describes the message qdrant.cloud.iam.v1.RecordUserConsentRequest. + * Use `create(RecordUserConsentRequestSchema)` to create a new message. + */ +export declare const RecordUserConsentRequestSchema: GenMessage; + +/** + * RecordUserConsentResponse is the response from the RecordUserConsent function. + * + * Empty + * + * @generated from message qdrant.cloud.iam.v1.RecordUserConsentResponse + */ +export declare type RecordUserConsentResponse = Message<"qdrant.cloud.iam.v1.RecordUserConsentResponse"> & { +}; + +/** + * Describes the message qdrant.cloud.iam.v1.RecordUserConsentResponse. + * Use `create(RecordUserConsentResponseSchema)` to create a new message. + */ +export declare const RecordUserConsentResponseSchema: GenMessage; + /** * ListPermissionsRequest is the request for the ListPermissions function * @@ -628,6 +738,88 @@ export enum UserStatus { */ export declare const UserStatusSchema: GenEnum; +/** + * LegalDocumentType specifies the type of a legal document. + * + * @generated from enum qdrant.cloud.iam.v1.LegalDocumentType + */ +export enum LegalDocumentType { + /** + * Unspecified document type. + * + * @generated from enum value: LEGAL_DOCUMENT_TYPE_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * Terms of Service document. + * + * @generated from enum value: LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE = 1; + */ + TERMS_OF_SERVICE = 1, + + /** + * Privacy Policy document. + * + * @generated from enum value: LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY = 2; + */ + PRIVACY_POLICY = 2, + + /** + * Service Level Agreement document. + * + * @generated from enum value: LEGAL_DOCUMENT_TYPE_SLA = 3; + */ + SLA = 3, +} + +/** + * Describes the enum qdrant.cloud.iam.v1.LegalDocumentType. + */ +export declare const LegalDocumentTypeSchema: GenEnum; + +/** + * UserConsentStatus specifies the status from an user for a consent. + * + * @generated from enum qdrant.cloud.iam.v1.UserConsentStatus + */ +export enum UserConsentStatus { + /** + * Unspecified consent status. + * + * @generated from enum value: USER_CONSENT_STATUS_UNSPECIFIED = 0; + */ + UNSPECIFIED = 0, + + /** + * The user accepted the consent. + * + * @generated from enum value: USER_CONSENT_STATUS_ACCEPTED = 1; + */ + ACCEPTED = 1, + + /** + * The user revoked the consent. + * + * @generated from enum value: USER_CONSENT_STATUS_REVOKED = 2; + */ + REVOKED = 2, + + /** + * The consent is pending action from the user. + * Pending consent means that the user got notified about the new version of the document. After a certain + * period of time, we auto accept pending consents depending on the document type. + * + * @generated from enum value: USER_CONSENT_STATUS_PENDING = 3; + */ + PENDING = 3, +} + +/** + * Describes the enum qdrant.cloud.iam.v1.UserConsentStatus. + */ +export declare const UserConsentStatusSchema: GenEnum; + /** * RoleType specified the type of the role * @@ -692,6 +884,30 @@ export declare const IAMService: GenService<{ input: typeof UpdateUserRequestSchema; output: typeof UpdateUserResponseSchema; }, + /** + * Fetches the authenticated user's consent status for a specific legal document. + * Required permissions: + * - None (authenticated only) + * + * @generated from rpc qdrant.cloud.iam.v1.IAMService.GetUserConsent + */ + getUserConsent: { + methodKind: "unary"; + input: typeof GetUserConsentRequestSchema; + output: typeof GetUserConsentResponseSchema; + }, + /** + * Records the authenticated user's consent for a legal document. + * Required permissions: + * - write:user + * + * @generated from rpc qdrant.cloud.iam.v1.IAMService.RecordUserConsent + */ + recordUserConsent: { + methodKind: "unary"; + input: typeof RecordUserConsentRequestSchema; + output: typeof RecordUserConsentResponseSchema; + }, /** * Fetch all permissions known in the system for the provided account. * Note: If you want to get a list of permissions available for you, please use GetEffectivePermissions instead. diff --git a/gen/typescript/qdrant/cloud/iam/v1/iam_pb.js b/gen/typescript/qdrant/cloud/iam/v1/iam_pb.js index cfd308a6..df164727 100644 --- a/gen/typescript/qdrant/cloud/iam/v1/iam_pb.js +++ b/gen/typescript/qdrant/cloud/iam/v1/iam_pb.js @@ -12,7 +12,7 @@ import { file_qdrant_cloud_common_v1_common } from "../../common/v1/common_pb.js * Describes the file qdrant/cloud/iam/v1/iam.proto. */ export const file_qdrant_cloud_iam_v1_iam = /*@__PURE__*/ - fileDesc("Ch1xZHJhbnQvY2xvdWQvaWFtL3YxL2lhbS5wcm90bxITcWRyYW50LmNsb3VkLmlhbS52MSIdChtHZXRBdXRoZW50aWNhdGVkVXNlclJlcXVlc3QiRwocR2V0QXV0aGVudGljYXRlZFVzZXJSZXNwb25zZRInCgR1c2VyGAEgASgLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Vc2VyIjwKEVVwZGF0ZVVzZXJSZXF1ZXN0EicKBHVzZXIYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXIiPQoSVXBkYXRlVXNlclJlc3BvbnNlEicKBHVzZXIYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXIiNgoWTGlzdFBlcm1pc3Npb25zUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASIuChdMaXN0UGVybWlzc2lvbnNSZXNwb25zZRITCgtwZXJtaXNzaW9ucxgBIAMoCSIwChBMaXN0Um9sZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIj0KEUxpc3RSb2xlc1Jlc3BvbnNlEigKBWl0ZW1zGAEgAygLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Sb2xlIkkKDkdldFJvbGVSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhkKB3JvbGVfaWQYAiABKAlCCLpIBXIDsAEBIjoKD0dldFJvbGVSZXNwb25zZRInCgRyb2xlGAEgASgLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Sb2xlIjwKEUNyZWF0ZVJvbGVSZXF1ZXN0EicKBHJvbGUYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlJvbGUiPQoSQ3JlYXRlUm9sZVJlc3BvbnNlEicKBHJvbGUYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlJvbGUiPAoRVXBkYXRlUm9sZVJlcXVlc3QSJwoEcm9sZRgBIAEoCzIZLnFkcmFudC5jbG91ZC5pYW0udjEuUm9sZSI9ChJVcGRhdGVSb2xlUmVzcG9uc2USJwoEcm9sZRgBIAEoCzIZLnFkcmFudC5jbG91ZC5pYW0udjEuUm9sZSJMChFEZWxldGVSb2xlUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIZCgdyb2xlX2lkGAIgASgJQgi6SAVyA7ABASIUChJEZWxldGVSb2xlUmVzcG9uc2UiPwofTGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABASI3CiBMaXN0RWZmZWN0aXZlUGVybWlzc2lvbnNSZXNwb25zZRITCgtwZXJtaXNzaW9ucxgBIAMoCSKkAQoWQXNzaWduVXNlclJvbGVzUmVxdWVzdBIcCgphY2NvdW50X2lkGAEgASgJQgi6SAVyA7ABARIZCgd1c2VyX2lkGAIgASgJQgi6SAVyA7ABARImCg9yb2xlX2lkc190b19hZGQYAyADKAlCDbpICpIBByIFcgOwAQESKQoScm9sZV9pZHNfdG9fZGVsZXRlGAQgAygJQg26SAqSAQciBXIDsAEBIhkKF0Fzc2lnblVzZXJSb2xlc1Jlc3BvbnNlIooCCgRVc2VyEhQKAmlkGAEgASgJQgi6SAVyA7ABARIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0ChBsYXN0X21vZGlmaWVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIWCgVlbWFpbBgEIAEoCUIHukgEcgJgARIXCgRuYW1lGAUgASgJQgm6SAZyBBACGEASLwoGc3RhdHVzGAYgASgOMh8ucWRyYW50LmNsb3VkLmlhbS52MS5Vc2VyU3RhdHVzEiQKEmRlZmF1bHRfYWNjb3VudF9pZBgHIAEoCUIIukgFcgOwAQEi1AMKBFJvbGUSCgoCaWQYASABKAkSLgoKY3JlYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASNAoQbGFzdF9tb2RpZmllZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASHAoKYWNjb3VudF9pZBgEIAEoCUIIukgFcgOwAQESKQoEbmFtZRgFIAEoCUIbukgYchYQBBhAMhBeW2EtekEtWjAtOS1fXSskEhMKC2Rlc2NyaXB0aW9uGAYgASgJEjAKCXJvbGVfdHlwZRgHIAEoDjIdLnFkcmFudC5jbG91ZC5pYW0udjEuUm9sZVR5cGUSHQoLcGVybWlzc2lvbnMYCCADKAlCCLpIBZIBAggBOqoBukimARqjAQoKY2x1c3Rlci5pZBIadmFsdWUgbXVzdCBiZSBhIHZhbGlkIFVVSUQaeXRoaXMuaWQubWF0Y2hlcygnXlswLTlhLWZBLUZdezh9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezR9LVswLTlhLWZBLUZdezEyfSQnKSB8fCAhaGFzKHRoaXMuY3JlYXRlZF9hdCkqcwoKVXNlclN0YXR1cxIbChdVU0VSX1NUQVRVU19VTlNQRUNJRklFRBAAEhYKElVTRVJfU1RBVFVTX0FDVElWRRABEhcKE1VTRVJfU1RBVFVTX0JMT0NLRUQQAhIXChNVU0VSX1NUQVRVU19ERUxFVEVEEAMqUQoIUm9sZVR5cGUSGQoVUk9MRV9UWVBFX1VOU1BFQ0lGSUVEEAASFAoQUk9MRV9UWVBFX1NZU1RFTRABEhQKEFJPTEVfVFlQRV9DVVNUT00QAjKSDgoKSUFNU2VydmljZRKhAQoUR2V0QXV0aGVudGljYXRlZFVzZXISMC5xZHJhbnQuY2xvdWQuaWFtLnYxLkdldEF1dGhlbnRpY2F0ZWRVc2VyUmVxdWVzdBoxLnFkcmFudC5jbG91ZC5pYW0udjEuR2V0QXV0aGVudGljYXRlZFVzZXJSZXNwb25zZSIkirUYAJK1GACC0+STAhYSFC9hcGkvaWFtL3YxL3VzZXJzL21lEpcBCgpVcGRhdGVVc2VyEiYucWRyYW50LmNsb3VkLmlhbS52MS5VcGRhdGVVc2VyUmVxdWVzdBonLnFkcmFudC5jbG91ZC5pYW0udjEuVXBkYXRlVXNlclJlc3BvbnNlIjiKtRgKd3JpdGU6dXNlcpK1GACC0+STAiA6ASoaGy9hcGkvaWFtL3YxL3VzZXJzL3t1c2VyLmlkfRKxAQoPTGlzdFBlcm1pc3Npb25zEisucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0UGVybWlzc2lvbnNSZXF1ZXN0GiwucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0UGVybWlzc2lvbnNSZXNwb25zZSJDirUYCnJlYWQ6cm9sZXOC0+STAi8SLS9hcGkvaWFtL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9wZXJtaXNzaW9ucxKZAQoJTGlzdFJvbGVzEiUucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0Um9sZXNSZXF1ZXN0GiYucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0Um9sZXNSZXNwb25zZSI9irUYCnJlYWQ6cm9sZXOC0+STAikSJy9hcGkvaWFtL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9yb2xlcxKwAQoHR2V0Um9sZRIjLnFkcmFudC5jbG91ZC5pYW0udjEuR2V0Um9sZVJlcXVlc3QaJC5xZHJhbnQuY2xvdWQuaWFtLnYxLkdldFJvbGVSZXNwb25zZSJairUYCnJlYWQ6cm9sZXOStRgPcm9sZS5hY2NvdW50X2lkgtPkkwIzEjEvYXBpL2lhbS92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcm9sZXMve3JvbGVfaWR9ErgBCgpDcmVhdGVSb2xlEiYucWRyYW50LmNsb3VkLmlhbS52MS5DcmVhdGVSb2xlUmVxdWVzdBonLnFkcmFudC5jbG91ZC5pYW0udjEuQ3JlYXRlUm9sZVJlc3BvbnNlIlmKtRgLd3JpdGU6cm9sZXOStRgPcm9sZS5hY2NvdW50X2lkgtPkkwIxOgEqIiwvYXBpL2lhbS92MS9hY2NvdW50cy97cm9sZS5hY2NvdW50X2lkfS9yb2xlcxLCAQoKVXBkYXRlUm9sZRImLnFkcmFudC5jbG91ZC5pYW0udjEuVXBkYXRlUm9sZVJlcXVlc3QaJy5xZHJhbnQuY2xvdWQuaWFtLnYxLlVwZGF0ZVJvbGVSZXNwb25zZSJjirUYC3dyaXRlOnJvbGVzkrUYD3JvbGUuYWNjb3VudF9pZILT5JMCOzoBKho2L2FwaS9pYW0vdjEvYWNjb3VudHMve3JvbGUuYWNjb3VudF9pZH0vcm9sZXMve3JvbGUuaWR9EqgBCgpEZWxldGVSb2xlEiYucWRyYW50LmNsb3VkLmlhbS52MS5EZWxldGVSb2xlUmVxdWVzdBonLnFkcmFudC5jbG91ZC5pYW0udjEuRGVsZXRlUm9sZVJlc3BvbnNlIkmKtRgMZGVsZXRlOnJvbGVzgtPkkwIzKjEvYXBpL2lhbS92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcm9sZXMve3JvbGVfaWR9EtYBChhMaXN0RWZmZWN0aXZlUGVybWlzc2lvbnMSNC5xZHJhbnQuY2xvdWQuaWFtLnYxLkxpc3RFZmZlY3RpdmVQZXJtaXNzaW9uc1JlcXVlc3QaNS5xZHJhbnQuY2xvdWQuaWFtLnYxLkxpc3RFZmZlY3RpdmVQZXJtaXNzaW9uc1Jlc3BvbnNlIk2KtRgKcmVhZDpyb2xlc4LT5JMCORI3L2FwaS9pYW0vdjEvYWNjb3VudHMve2FjY291bnRfaWR9L2VmZmVjdGl2ZS1wZXJtaXNzaW9ucxK+AQoPQXNzaWduVXNlclJvbGVzEisucWRyYW50LmNsb3VkLmlhbS52MS5Bc3NpZ25Vc2VyUm9sZXNSZXF1ZXN0GiwucWRyYW50LmNsb3VkLmlhbS52MS5Bc3NpZ25Vc2VyUm9sZXNSZXNwb25zZSJQirUYCnJlYWQ6cm9sZXOC0+STAjw6ASoiNy9hcGkvaWFtL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS91c2Vycy97dXNlcl9pZH0vcm9sZXNC3gEKF2NvbS5xZHJhbnQuY2xvdWQuaWFtLnYxQghJYW1Qcm90b1ABWkpnaXRodWIuY29tL3FkcmFudC9xZHJhbnQtY2xvdWQtcHVibGljLWFwaS9nZW4vZ28vcWRyYW50L2Nsb3VkL2lhbS92MTtpYW12MaICA1FDSaoCE1FkcmFudC5DbG91ZC5JYW0uVjHKAhNRZHJhbnRcQ2xvdWRcSWFtXFYx4gIfUWRyYW50XENsb3VkXElhbVxWMVxHUEJNZXRhZGF0YeoCFlFkcmFudDo6Q2xvdWQ6OklhbTo6VjFiBnByb3RvMw", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); + fileDesc("Ch1xZHJhbnQvY2xvdWQvaWFtL3YxL2lhbS5wcm90bxITcWRyYW50LmNsb3VkLmlhbS52MSIdChtHZXRBdXRoZW50aWNhdGVkVXNlclJlcXVlc3QiRwocR2V0QXV0aGVudGljYXRlZFVzZXJSZXNwb25zZRInCgR1c2VyGAEgASgLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Vc2VyIjwKEVVwZGF0ZVVzZXJSZXF1ZXN0EicKBHVzZXIYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXIiPQoSVXBkYXRlVXNlclJlc3BvbnNlEicKBHVzZXIYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXIiYgoVR2V0VXNlckNvbnNlbnRSZXF1ZXN0EkkKDWRvY3VtZW50X3R5cGUYASABKA4yJi5xZHJhbnQuY2xvdWQuaWFtLnYxLkxlZ2FsRG9jdW1lbnRUeXBlQgq6SAeCAQQQASAAIvQBChZHZXRVc2VyQ29uc2VudFJlc3BvbnNlEj0KDWRvY3VtZW50X3R5cGUYASABKA4yJi5xZHJhbnQuY2xvdWQuaWFtLnYxLkxlZ2FsRG9jdW1lbnRUeXBlEjYKBnN0YXR1cxgCIAEoDjImLnFkcmFudC5jbG91ZC5pYW0udjEuVXNlckNvbnNlbnRTdGF0dXMSOQoQbGFzdF9tb2RpZmllZF9hdBgDIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXBIAIgBARITCgtpc19hY2NlcHRlZBgEIAEoCEITChFfbGFzdF9tb2RpZmllZF9hdCKyAQoYUmVjb3JkVXNlckNvbnNlbnRSZXF1ZXN0EkkKDWRvY3VtZW50X3R5cGUYASABKA4yJi5xZHJhbnQuY2xvdWQuaWFtLnYxLkxlZ2FsRG9jdW1lbnRUeXBlQgq6SAeCAQQQASAAEksKDXN0YXR1c191cGRhdGUYAiABKA4yJi5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXJDb25zZW50U3RhdHVzQgy6SAmCAQYQASAAIAMiGwoZUmVjb3JkVXNlckNvbnNlbnRSZXNwb25zZSI2ChZMaXN0UGVybWlzc2lvbnNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIi4KF0xpc3RQZXJtaXNzaW9uc1Jlc3BvbnNlEhMKC3Blcm1pc3Npb25zGAEgAygJIjAKEExpc3RSb2xlc1JlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQEiPQoRTGlzdFJvbGVzUmVzcG9uc2USKAoFaXRlbXMYASADKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlJvbGUiSQoOR2V0Um9sZVJlcXVlc3QSHAoKYWNjb3VudF9pZBgBIAEoCUIIukgFcgOwAQESGQoHcm9sZV9pZBgCIAEoCUIIukgFcgOwAQEiOgoPR2V0Um9sZVJlc3BvbnNlEicKBHJvbGUYASABKAsyGS5xZHJhbnQuY2xvdWQuaWFtLnYxLlJvbGUiPAoRQ3JlYXRlUm9sZVJlcXVlc3QSJwoEcm9sZRgBIAEoCzIZLnFkcmFudC5jbG91ZC5pYW0udjEuUm9sZSI9ChJDcmVhdGVSb2xlUmVzcG9uc2USJwoEcm9sZRgBIAEoCzIZLnFkcmFudC5jbG91ZC5pYW0udjEuUm9sZSI8ChFVcGRhdGVSb2xlUmVxdWVzdBInCgRyb2xlGAEgASgLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Sb2xlIj0KElVwZGF0ZVJvbGVSZXNwb25zZRInCgRyb2xlGAEgASgLMhkucWRyYW50LmNsb3VkLmlhbS52MS5Sb2xlIkwKEURlbGV0ZVJvbGVSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhkKB3JvbGVfaWQYAiABKAlCCLpIBXIDsAEBIhQKEkRlbGV0ZVJvbGVSZXNwb25zZSI/Ch9MaXN0RWZmZWN0aXZlUGVybWlzc2lvbnNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBIjcKIExpc3RFZmZlY3RpdmVQZXJtaXNzaW9uc1Jlc3BvbnNlEhMKC3Blcm1pc3Npb25zGAEgAygJIqQBChZBc3NpZ25Vc2VyUm9sZXNSZXF1ZXN0EhwKCmFjY291bnRfaWQYASABKAlCCLpIBXIDsAEBEhkKB3VzZXJfaWQYAiABKAlCCLpIBXIDsAEBEiYKD3JvbGVfaWRzX3RvX2FkZBgDIAMoCUINukgKkgEHIgVyA7ABARIpChJyb2xlX2lkc190b19kZWxldGUYBCADKAlCDbpICpIBByIFcgOwAQEiGQoXQXNzaWduVXNlclJvbGVzUmVzcG9uc2UiigIKBFVzZXISFAoCaWQYASABKAlCCLpIBXIDsAEBEi4KCmNyZWF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjQKEGxhc3RfbW9kaWZpZWRfYXQYAyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhYKBWVtYWlsGAQgASgJQge6SARyAmABEhcKBG5hbWUYBSABKAlCCbpIBnIEEAIYQBIvCgZzdGF0dXMYBiABKA4yHy5xZHJhbnQuY2xvdWQuaWFtLnYxLlVzZXJTdGF0dXMSJAoSZGVmYXVsdF9hY2NvdW50X2lkGAcgASgJQgi6SAVyA7ABASLUAwoEUm9sZRIKCgJpZBgBIAEoCRIuCgpjcmVhdGVkX2F0GAIgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBI0ChBsYXN0X21vZGlmaWVkX2F0GAMgASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIcCgphY2NvdW50X2lkGAQgASgJQgi6SAVyA7ABARIpCgRuYW1lGAUgASgJQhu6SBhyFhAEGEAyEF5bYS16QS1aMC05LV9dKyQSEwoLZGVzY3JpcHRpb24YBiABKAkSMAoJcm9sZV90eXBlGAcgASgOMh0ucWRyYW50LmNsb3VkLmlhbS52MS5Sb2xlVHlwZRIdCgtwZXJtaXNzaW9ucxgIIAMoCUIIukgFkgECCAE6qgG6SKYBGqMBCgpjbHVzdGVyLmlkEhp2YWx1ZSBtdXN0IGJlIGEgdmFsaWQgVVVJRBp5dGhpcy5pZC5tYXRjaGVzKCdeWzAtOWEtZkEtRl17OH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17NH0tWzAtOWEtZkEtRl17MTJ9JCcpIHx8ICFoYXModGhpcy5jcmVhdGVkX2F0KSpzCgpVc2VyU3RhdHVzEhsKF1VTRVJfU1RBVFVTX1VOU1BFQ0lGSUVEEAASFgoSVVNFUl9TVEFUVVNfQUNUSVZFEAESFwoTVVNFUl9TVEFUVVNfQkxPQ0tFRBACEhcKE1VTRVJfU1RBVFVTX0RFTEVURUQQAyqnAQoRTGVnYWxEb2N1bWVudFR5cGUSIwofTEVHQUxfRE9DVU1FTlRfVFlQRV9VTlNQRUNJRklFRBAAEigKJExFR0FMX0RPQ1VNRU5UX1RZUEVfVEVSTVNfT0ZfU0VSVklDRRABEiYKIkxFR0FMX0RPQ1VNRU5UX1RZUEVfUFJJVkFDWV9QT0xJQ1kQAhIbChdMRUdBTF9ET0NVTUVOVF9UWVBFX1NMQRADKpwBChFVc2VyQ29uc2VudFN0YXR1cxIjCh9VU0VSX0NPTlNFTlRfU1RBVFVTX1VOU1BFQ0lGSUVEEAASIAocVVNFUl9DT05TRU5UX1NUQVRVU19BQ0NFUFRFRBABEh8KG1VTRVJfQ09OU0VOVF9TVEFUVVNfUkVWT0tFRBACEh8KG1VTRVJfQ09OU0VOVF9TVEFUVVNfUEVORElORxADKlEKCFJvbGVUeXBlEhkKFVJPTEVfVFlQRV9VTlNQRUNJRklFRBAAEhQKEFJPTEVfVFlQRV9TWVNURU0QARIUChBST0xFX1RZUEVfQ1VTVE9NEAIy3BAKCklBTVNlcnZpY2USoQEKFEdldEF1dGhlbnRpY2F0ZWRVc2VyEjAucWRyYW50LmNsb3VkLmlhbS52MS5HZXRBdXRoZW50aWNhdGVkVXNlclJlcXVlc3QaMS5xZHJhbnQuY2xvdWQuaWFtLnYxLkdldEF1dGhlbnRpY2F0ZWRVc2VyUmVzcG9uc2UiJIq1GACStRgAgtPkkwIWEhQvYXBpL2lhbS92MS91c2Vycy9tZRKXAQoKVXBkYXRlVXNlchImLnFkcmFudC5jbG91ZC5pYW0udjEuVXBkYXRlVXNlclJlcXVlc3QaJy5xZHJhbnQuY2xvdWQuaWFtLnYxLlVwZGF0ZVVzZXJSZXNwb25zZSI4irUYCndyaXRlOnVzZXKStRgAgtPkkwIgOgEqGhsvYXBpL2lhbS92MS91c2Vycy97dXNlci5pZH0SlwEKDkdldFVzZXJDb25zZW50EioucWRyYW50LmNsb3VkLmlhbS52MS5HZXRVc2VyQ29uc2VudFJlcXVlc3QaKy5xZHJhbnQuY2xvdWQuaWFtLnYxLkdldFVzZXJDb25zZW50UmVzcG9uc2UiLIq1GACStRgAgtPkkwIeEhwvYXBpL2lhbS92MS91c2Vycy9tZS9jb25zZW50Eq0BChFSZWNvcmRVc2VyQ29uc2VudBItLnFkcmFudC5jbG91ZC5pYW0udjEuUmVjb3JkVXNlckNvbnNlbnRSZXF1ZXN0Gi4ucWRyYW50LmNsb3VkLmlhbS52MS5SZWNvcmRVc2VyQ29uc2VudFJlc3BvbnNlIjmKtRgKd3JpdGU6dXNlcpK1GACC0+STAiE6ASoiHC9hcGkvaWFtL3YxL3VzZXJzL21lL2NvbnNlbnQSsQEKD0xpc3RQZXJtaXNzaW9ucxIrLnFkcmFudC5jbG91ZC5pYW0udjEuTGlzdFBlcm1pc3Npb25zUmVxdWVzdBosLnFkcmFudC5jbG91ZC5pYW0udjEuTGlzdFBlcm1pc3Npb25zUmVzcG9uc2UiQ4q1GApyZWFkOnJvbGVzgtPkkwIvEi0vYXBpL2lhbS92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcGVybWlzc2lvbnMSmQEKCUxpc3RSb2xlcxIlLnFkcmFudC5jbG91ZC5pYW0udjEuTGlzdFJvbGVzUmVxdWVzdBomLnFkcmFudC5jbG91ZC5pYW0udjEuTGlzdFJvbGVzUmVzcG9uc2UiPYq1GApyZWFkOnJvbGVzgtPkkwIpEicvYXBpL2lhbS92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vcm9sZXMSsAEKB0dldFJvbGUSIy5xZHJhbnQuY2xvdWQuaWFtLnYxLkdldFJvbGVSZXF1ZXN0GiQucWRyYW50LmNsb3VkLmlhbS52MS5HZXRSb2xlUmVzcG9uc2UiWoq1GApyZWFkOnJvbGVzkrUYD3JvbGUuYWNjb3VudF9pZILT5JMCMxIxL2FwaS9pYW0vdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3JvbGVzL3tyb2xlX2lkfRK4AQoKQ3JlYXRlUm9sZRImLnFkcmFudC5jbG91ZC5pYW0udjEuQ3JlYXRlUm9sZVJlcXVlc3QaJy5xZHJhbnQuY2xvdWQuaWFtLnYxLkNyZWF0ZVJvbGVSZXNwb25zZSJZirUYC3dyaXRlOnJvbGVzkrUYD3JvbGUuYWNjb3VudF9pZILT5JMCMToBKiIsL2FwaS9pYW0vdjEvYWNjb3VudHMve3JvbGUuYWNjb3VudF9pZH0vcm9sZXMSwgEKClVwZGF0ZVJvbGUSJi5xZHJhbnQuY2xvdWQuaWFtLnYxLlVwZGF0ZVJvbGVSZXF1ZXN0GicucWRyYW50LmNsb3VkLmlhbS52MS5VcGRhdGVSb2xlUmVzcG9uc2UiY4q1GAt3cml0ZTpyb2xlc5K1GA9yb2xlLmFjY291bnRfaWSC0+STAjs6ASoaNi9hcGkvaWFtL3YxL2FjY291bnRzL3tyb2xlLmFjY291bnRfaWR9L3JvbGVzL3tyb2xlLmlkfRKoAQoKRGVsZXRlUm9sZRImLnFkcmFudC5jbG91ZC5pYW0udjEuRGVsZXRlUm9sZVJlcXVlc3QaJy5xZHJhbnQuY2xvdWQuaWFtLnYxLkRlbGV0ZVJvbGVSZXNwb25zZSJJirUYDGRlbGV0ZTpyb2xlc4LT5JMCMyoxL2FwaS9pYW0vdjEvYWNjb3VudHMve2FjY291bnRfaWR9L3JvbGVzL3tyb2xlX2lkfRLWAQoYTGlzdEVmZmVjdGl2ZVBlcm1pc3Npb25zEjQucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0RWZmZWN0aXZlUGVybWlzc2lvbnNSZXF1ZXN0GjUucWRyYW50LmNsb3VkLmlhbS52MS5MaXN0RWZmZWN0aXZlUGVybWlzc2lvbnNSZXNwb25zZSJNirUYCnJlYWQ6cm9sZXOC0+STAjkSNy9hcGkvaWFtL3YxL2FjY291bnRzL3thY2NvdW50X2lkfS9lZmZlY3RpdmUtcGVybWlzc2lvbnMSvgEKD0Fzc2lnblVzZXJSb2xlcxIrLnFkcmFudC5jbG91ZC5pYW0udjEuQXNzaWduVXNlclJvbGVzUmVxdWVzdBosLnFkcmFudC5jbG91ZC5pYW0udjEuQXNzaWduVXNlclJvbGVzUmVzcG9uc2UiUIq1GApyZWFkOnJvbGVzgtPkkwI8OgEqIjcvYXBpL2lhbS92MS9hY2NvdW50cy97YWNjb3VudF9pZH0vdXNlcnMve3VzZXJfaWR9L3JvbGVzQt4BChdjb20ucWRyYW50LmNsb3VkLmlhbS52MUIISWFtUHJvdG9QAVpKZ2l0aHViLmNvbS9xZHJhbnQvcWRyYW50LWNsb3VkLXB1YmxpYy1hcGkvZ2VuL2dvL3FkcmFudC9jbG91ZC9pYW0vdjE7aWFtdjGiAgNRQ0mqAhNRZHJhbnQuQ2xvdWQuSWFtLlYxygITUWRyYW50XENsb3VkXElhbVxWMeICH1FkcmFudFxDbG91ZFxJYW1cVjFcR1BCTWV0YWRhdGHqAhZRZHJhbnQ6OkNsb3VkOjpJYW06OlYxYgZwcm90bzM", [file_buf_validate_validate, file_google_api_annotations, file_google_protobuf_timestamp, file_qdrant_cloud_common_v1_common]); /** * Describes the message qdrant.cloud.iam.v1.GetAuthenticatedUserRequest. @@ -42,131 +42,159 @@ export const UpdateUserRequestSchema = /*@__PURE__*/ export const UpdateUserResponseSchema = /*@__PURE__*/ messageDesc(file_qdrant_cloud_iam_v1_iam, 3); +/** + * Describes the message qdrant.cloud.iam.v1.GetUserConsentRequest. + * Use `create(GetUserConsentRequestSchema)` to create a new message. + */ +export const GetUserConsentRequestSchema = /*@__PURE__*/ + messageDesc(file_qdrant_cloud_iam_v1_iam, 4); + +/** + * Describes the message qdrant.cloud.iam.v1.GetUserConsentResponse. + * Use `create(GetUserConsentResponseSchema)` to create a new message. + */ +export const GetUserConsentResponseSchema = /*@__PURE__*/ + messageDesc(file_qdrant_cloud_iam_v1_iam, 5); + +/** + * Describes the message qdrant.cloud.iam.v1.RecordUserConsentRequest. + * Use `create(RecordUserConsentRequestSchema)` to create a new message. + */ +export const RecordUserConsentRequestSchema = /*@__PURE__*/ + messageDesc(file_qdrant_cloud_iam_v1_iam, 6); + +/** + * Describes the message qdrant.cloud.iam.v1.RecordUserConsentResponse. + * Use `create(RecordUserConsentResponseSchema)` to create a new message. + */ +export const RecordUserConsentResponseSchema = /*@__PURE__*/ + messageDesc(file_qdrant_cloud_iam_v1_iam, 7); + /** * Describes the message qdrant.cloud.iam.v1.ListPermissionsRequest. * Use `create(ListPermissionsRequestSchema)` to create a new message. */ export const ListPermissionsRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 4); + messageDesc(file_qdrant_cloud_iam_v1_iam, 8); /** * Describes the message qdrant.cloud.iam.v1.ListPermissionsResponse. * Use `create(ListPermissionsResponseSchema)` to create a new message. */ export const ListPermissionsResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 5); + messageDesc(file_qdrant_cloud_iam_v1_iam, 9); /** * Describes the message qdrant.cloud.iam.v1.ListRolesRequest. * Use `create(ListRolesRequestSchema)` to create a new message. */ export const ListRolesRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 6); + messageDesc(file_qdrant_cloud_iam_v1_iam, 10); /** * Describes the message qdrant.cloud.iam.v1.ListRolesResponse. * Use `create(ListRolesResponseSchema)` to create a new message. */ export const ListRolesResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 7); + messageDesc(file_qdrant_cloud_iam_v1_iam, 11); /** * Describes the message qdrant.cloud.iam.v1.GetRoleRequest. * Use `create(GetRoleRequestSchema)` to create a new message. */ export const GetRoleRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 8); + messageDesc(file_qdrant_cloud_iam_v1_iam, 12); /** * Describes the message qdrant.cloud.iam.v1.GetRoleResponse. * Use `create(GetRoleResponseSchema)` to create a new message. */ export const GetRoleResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 9); + messageDesc(file_qdrant_cloud_iam_v1_iam, 13); /** * Describes the message qdrant.cloud.iam.v1.CreateRoleRequest. * Use `create(CreateRoleRequestSchema)` to create a new message. */ export const CreateRoleRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 10); + messageDesc(file_qdrant_cloud_iam_v1_iam, 14); /** * Describes the message qdrant.cloud.iam.v1.CreateRoleResponse. * Use `create(CreateRoleResponseSchema)` to create a new message. */ export const CreateRoleResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 11); + messageDesc(file_qdrant_cloud_iam_v1_iam, 15); /** * Describes the message qdrant.cloud.iam.v1.UpdateRoleRequest. * Use `create(UpdateRoleRequestSchema)` to create a new message. */ export const UpdateRoleRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 12); + messageDesc(file_qdrant_cloud_iam_v1_iam, 16); /** * Describes the message qdrant.cloud.iam.v1.UpdateRoleResponse. * Use `create(UpdateRoleResponseSchema)` to create a new message. */ export const UpdateRoleResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 13); + messageDesc(file_qdrant_cloud_iam_v1_iam, 17); /** * Describes the message qdrant.cloud.iam.v1.DeleteRoleRequest. * Use `create(DeleteRoleRequestSchema)` to create a new message. */ export const DeleteRoleRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 14); + messageDesc(file_qdrant_cloud_iam_v1_iam, 18); /** * Describes the message qdrant.cloud.iam.v1.DeleteRoleResponse. * Use `create(DeleteRoleResponseSchema)` to create a new message. */ export const DeleteRoleResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 15); + messageDesc(file_qdrant_cloud_iam_v1_iam, 19); /** * Describes the message qdrant.cloud.iam.v1.ListEffectivePermissionsRequest. * Use `create(ListEffectivePermissionsRequestSchema)` to create a new message. */ export const ListEffectivePermissionsRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 16); + messageDesc(file_qdrant_cloud_iam_v1_iam, 20); /** * Describes the message qdrant.cloud.iam.v1.ListEffectivePermissionsResponse. * Use `create(ListEffectivePermissionsResponseSchema)` to create a new message. */ export const ListEffectivePermissionsResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 17); + messageDesc(file_qdrant_cloud_iam_v1_iam, 21); /** * Describes the message qdrant.cloud.iam.v1.AssignUserRolesRequest. * Use `create(AssignUserRolesRequestSchema)` to create a new message. */ export const AssignUserRolesRequestSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 18); + messageDesc(file_qdrant_cloud_iam_v1_iam, 22); /** * Describes the message qdrant.cloud.iam.v1.AssignUserRolesResponse. * Use `create(AssignUserRolesResponseSchema)` to create a new message. */ export const AssignUserRolesResponseSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 19); + messageDesc(file_qdrant_cloud_iam_v1_iam, 23); /** * Describes the message qdrant.cloud.iam.v1.User. * Use `create(UserSchema)` to create a new message. */ export const UserSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 20); + messageDesc(file_qdrant_cloud_iam_v1_iam, 24); /** * Describes the message qdrant.cloud.iam.v1.Role. * Use `create(RoleSchema)` to create a new message. */ export const RoleSchema = /*@__PURE__*/ - messageDesc(file_qdrant_cloud_iam_v1_iam, 21); + messageDesc(file_qdrant_cloud_iam_v1_iam, 25); /** * Describes the enum qdrant.cloud.iam.v1.UserStatus. @@ -182,11 +210,39 @@ export const UserStatusSchema = /*@__PURE__*/ export const UserStatus = /*@__PURE__*/ tsEnum(UserStatusSchema); +/** + * Describes the enum qdrant.cloud.iam.v1.LegalDocumentType. + */ +export const LegalDocumentTypeSchema = /*@__PURE__*/ + enumDesc(file_qdrant_cloud_iam_v1_iam, 1); + +/** + * LegalDocumentType specifies the type of a legal document. + * + * @generated from enum qdrant.cloud.iam.v1.LegalDocumentType + */ +export const LegalDocumentType = /*@__PURE__*/ + tsEnum(LegalDocumentTypeSchema); + +/** + * Describes the enum qdrant.cloud.iam.v1.UserConsentStatus. + */ +export const UserConsentStatusSchema = /*@__PURE__*/ + enumDesc(file_qdrant_cloud_iam_v1_iam, 2); + +/** + * UserConsentStatus specifies the status from an user for a consent. + * + * @generated from enum qdrant.cloud.iam.v1.UserConsentStatus + */ +export const UserConsentStatus = /*@__PURE__*/ + tsEnum(UserConsentStatusSchema); + /** * Describes the enum qdrant.cloud.iam.v1.RoleType. */ export const RoleTypeSchema = /*@__PURE__*/ - enumDesc(file_qdrant_cloud_iam_v1_iam, 1); + enumDesc(file_qdrant_cloud_iam_v1_iam, 3); /** * RoleType specified the type of the role diff --git a/proto/qdrant/cloud/iam/v1/iam.proto b/proto/qdrant/cloud/iam/v1/iam.proto index fe4f0fe3..f55e5405 100644 --- a/proto/qdrant/cloud/iam/v1/iam.proto +++ b/proto/qdrant/cloud/iam/v1/iam.proto @@ -34,6 +34,31 @@ service IAMService { body: "*" }; } + // Fetches the authenticated user's consent status for a specific legal document. + // Required permissions: + // - None (authenticated only) + rpc GetUserConsent(GetUserConsentRequest) returns (GetUserConsentResponse) { + // permissions + option (common.v1.permissions) = ""; + // custom account-id expression + option (qdrant.cloud.common.v1.account_id_expression) = ""; + // gRPC Gateway REST call + option (google.api.http) = {get: "/api/iam/v1/users/me/consent"}; + } + // Records the authenticated user's consent for a legal document. + // Required permissions: + // - write:user + rpc RecordUserConsent(RecordUserConsentRequest) returns (RecordUserConsentResponse) { + // permissions + option (common.v1.permissions) = "write:user"; + // custom account-id expression + option (qdrant.cloud.common.v1.account_id_expression) = ""; + // gRPC Gateway REST call + option (google.api.http) = { + post: "/api/iam/v1/users/me/consent" + body: "*" + }; + } // Fetch all permissions known in the system for the provided account. // Note: If you want to get a list of permissions available for you, please use GetEffectivePermissions instead. // Required permissions: @@ -152,6 +177,56 @@ message UpdateUserResponse { User user = 1; } +// GetUserConsentRequest is the request for the GetUserConsent function. +// buf:lint:ignore QDRANT_CLOUD_REQUIRED_REQUEST_FIELDS +message GetUserConsentRequest { + // The type of the legal document. + // This is a required field and cannot be UNSPECIFIED. + LegalDocumentType document_type = 1 [(buf.validate.field).enum = { + defined_only: true + not_in: [0] + }]; +} + +// GetUserConsentResponse is the response from the GetUserConsent function. +message GetUserConsentResponse { + // The type of the legal document for which consent status is reported. + LegalDocumentType document_type = 1; + // The latest consent status recorded from the user for this document type. + // Will be USER_CONSENT_STATUS_UNSPECIFIED if no status update has been recorded. + UserConsentStatus status = 2; + // Timestamp of the most recent status update. + // Unset if no status update has been recorded. + optional google.protobuf.Timestamp last_modified_at = 3; + // A convenience field indicating if the current status is an acceptance. + // True if status is USER_CONSENT_STATUS_ACCEPTED, false otherwise. + bool is_accepted = 4; +} + +// RecordUserConsentRequest is the request for the RecordUserConsent function. +message RecordUserConsentRequest { + // The type of the legal document. + // This is a required field and cannot be UNSPECIFIED. + LegalDocumentType document_type = 1 [(buf.validate.field).enum = { + defined_only: true + not_in: [0] + }]; + // The status update initiated by the user. + // This is a required field and cannot be UNSPECIFIED or PENDING. + UserConsentStatus status_update = 2 [(buf.validate.field).enum = { + defined_only: true + not_in: [ + 0, + 3 + ] + }]; +} + +// RecordUserConsentResponse is the response from the RecordUserConsent function. +message RecordUserConsentResponse { + // Empty +} + // ListPermissionsRequest is the request for the ListPermissions function message ListPermissionsRequest { // The identifier of the account (in GUID format). @@ -307,6 +382,32 @@ enum UserStatus { USER_STATUS_DELETED = 3; } +// LegalDocumentType specifies the type of a legal document. +enum LegalDocumentType { + // Unspecified document type. + LEGAL_DOCUMENT_TYPE_UNSPECIFIED = 0; + // Terms of Service document. + LEGAL_DOCUMENT_TYPE_TERMS_OF_SERVICE = 1; + // Privacy Policy document. + LEGAL_DOCUMENT_TYPE_PRIVACY_POLICY = 2; + // Service Level Agreement document. + LEGAL_DOCUMENT_TYPE_SLA = 3; +} + +// UserConsentStatus specifies the status from an user for a consent. +enum UserConsentStatus { + // Unspecified consent status. + USER_CONSENT_STATUS_UNSPECIFIED = 0; + // The user accepted the consent. + USER_CONSENT_STATUS_ACCEPTED = 1; + // The user revoked the consent. + USER_CONSENT_STATUS_REVOKED = 2; + // The consent is pending action from the user. + // Pending consent means that the user got notified about the new version of the document. After a certain + // period of time, we auto accept pending consents depending on the document type. + USER_CONSENT_STATUS_PENDING = 3; +} + // A Role represents a role in the Qdrant cloud. message Role { // Unique identifier for the role (in GUID format).