From 9f0c1e7b5f515110d37e71124d8911b6e2d4adc8 Mon Sep 17 00:00:00 2001 From: Jonathan Haas Date: Wed, 15 Apr 2026 09:37:52 -0700 Subject: [PATCH] Add notification digest preferences to contract --- gen/go/notifications/v1/notifications.pb.go | 371 +++++++++++------- .../notifications/v1/notifications_pb2.py | 110 +++--- gen/ts/notifications/v1/notifications_pb.ts | 82 +++- proto/notifications/v1/notifications.proto | 10 + 4 files changed, 360 insertions(+), 213 deletions(-) diff --git a/gen/go/notifications/v1/notifications.pb.go b/gen/go/notifications/v1/notifications.pb.go index 08d90cf..6a92007 100644 --- a/gen/go/notifications/v1/notifications.pb.go +++ b/gen/go/notifications/v1/notifications.pb.go @@ -212,6 +212,7 @@ const ( DeliveryStatus_DELIVERY_STATUS_DELIVERED DeliveryStatus = 3 DeliveryStatus_DELIVERY_STATUS_FAILED DeliveryStatus = 4 DeliveryStatus_DELIVERY_STATUS_BOUNCED DeliveryStatus = 5 + DeliveryStatus_DELIVERY_STATUS_QUEUED DeliveryStatus = 6 ) // Enum value maps for DeliveryStatus. @@ -223,6 +224,7 @@ var ( 3: "DELIVERY_STATUS_DELIVERED", 4: "DELIVERY_STATUS_FAILED", 5: "DELIVERY_STATUS_BOUNCED", + 6: "DELIVERY_STATUS_QUEUED", } DeliveryStatus_value = map[string]int32{ "DELIVERY_STATUS_UNSPECIFIED": 0, @@ -231,6 +233,7 @@ var ( "DELIVERY_STATUS_DELIVERED": 3, "DELIVERY_STATUS_FAILED": 4, "DELIVERY_STATUS_BOUNCED": 5, + "DELIVERY_STATUS_QUEUED": 6, } ) @@ -457,16 +460,17 @@ func (x *EscalationRule) GetEscalateToChannel() DeliveryChannel { // NotificationPreferences stores a user's notification settings. type NotificationPreferences struct { - state protoimpl.MessageState `protogen:"open.v1"` - UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` - WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` - DefaultChannel DeliveryChannel `protobuf:"varint,3,opt,name=default_channel,json=defaultChannel,proto3,enum=notifications.v1.DeliveryChannel" json:"default_channel,omitempty"` - QuietHoursStart string `protobuf:"bytes,4,opt,name=quiet_hours_start,json=quietHoursStart,proto3" json:"quiet_hours_start,omitempty"` - QuietHoursEnd string `protobuf:"bytes,5,opt,name=quiet_hours_end,json=quietHoursEnd,proto3" json:"quiet_hours_end,omitempty"` - EscalationRules []*EscalationRule `protobuf:"bytes,6,rep,name=escalation_rules,json=escalationRules,proto3" json:"escalation_rules,omitempty"` - CategoryChannels []*CategoryChannelPreference `protobuf:"bytes,7,rep,name=category_channels,json=categoryChannels,proto3" json:"category_channels,omitempty"` - unknownFields protoimpl.UnknownFields - sizeCache protoimpl.SizeCache + state protoimpl.MessageState `protogen:"open.v1"` + UserId string `protobuf:"bytes,1,opt,name=user_id,json=userId,proto3" json:"user_id,omitempty"` + WorkspaceId string `protobuf:"bytes,2,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` + DefaultChannel DeliveryChannel `protobuf:"varint,3,opt,name=default_channel,json=defaultChannel,proto3,enum=notifications.v1.DeliveryChannel" json:"default_channel,omitempty"` + QuietHoursStart string `protobuf:"bytes,4,opt,name=quiet_hours_start,json=quietHoursStart,proto3" json:"quiet_hours_start,omitempty"` + QuietHoursEnd string `protobuf:"bytes,5,opt,name=quiet_hours_end,json=quietHoursEnd,proto3" json:"quiet_hours_end,omitempty"` + EscalationRules []*EscalationRule `protobuf:"bytes,6,rep,name=escalation_rules,json=escalationRules,proto3" json:"escalation_rules,omitempty"` + CategoryChannels []*CategoryChannelPreference `protobuf:"bytes,7,rep,name=category_channels,json=categoryChannels,proto3" json:"category_channels,omitempty"` + DigestPreferences []*DigestPreference `protobuf:"bytes,8,rep,name=digest_preferences,json=digestPreferences,proto3" json:"digest_preferences,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache } func (x *NotificationPreferences) Reset() { @@ -548,6 +552,13 @@ func (x *NotificationPreferences) GetCategoryChannels() []*CategoryChannelPrefer return nil } +func (x *NotificationPreferences) GetDigestPreferences() []*DigestPreference { + if x != nil { + return x.DigestPreferences + } + return nil +} + // CategoryChannelPreference overrides delivery routing for a specific category. type CategoryChannelPreference struct { state protoimpl.MessageState `protogen:"open.v1"` @@ -718,6 +729,75 @@ func (x *NotificationTemplate) GetUpdatedAt() *timestamppb.Timestamp { return nil } +// DigestPreference controls batching for a category/channel pair. +type DigestPreference struct { + state protoimpl.MessageState `protogen:"open.v1"` + Category NotificationCategory `protobuf:"varint,1,opt,name=category,proto3,enum=notifications.v1.NotificationCategory" json:"category,omitempty"` + Channel DeliveryChannel `protobuf:"varint,2,opt,name=channel,proto3,enum=notifications.v1.DeliveryChannel" json:"channel,omitempty"` + WindowSeconds int32 `protobuf:"varint,3,opt,name=window_seconds,json=windowSeconds,proto3" json:"window_seconds,omitempty"` + Enabled bool `protobuf:"varint,4,opt,name=enabled,proto3" json:"enabled,omitempty"` + unknownFields protoimpl.UnknownFields + sizeCache protoimpl.SizeCache +} + +func (x *DigestPreference) Reset() { + *x = DigestPreference{} + mi := &file_notifications_v1_notifications_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *DigestPreference) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DigestPreference) ProtoMessage() {} + +func (x *DigestPreference) ProtoReflect() protoreflect.Message { + mi := &file_notifications_v1_notifications_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 DigestPreference.ProtoReflect.Descriptor instead. +func (*DigestPreference) Descriptor() ([]byte, []int) { + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{5} +} + +func (x *DigestPreference) GetCategory() NotificationCategory { + if x != nil { + return x.Category + } + return NotificationCategory_NOTIFICATION_CATEGORY_UNSPECIFIED +} + +func (x *DigestPreference) GetChannel() DeliveryChannel { + if x != nil { + return x.Channel + } + return DeliveryChannel_DELIVERY_CHANNEL_UNSPECIFIED +} + +func (x *DigestPreference) GetWindowSeconds() int32 { + if x != nil { + return x.WindowSeconds + } + return 0 +} + +func (x *DigestPreference) GetEnabled() bool { + if x != nil { + return x.Enabled + } + return false +} + type SendRequest struct { state protoimpl.MessageState `protogen:"open.v1"` WorkspaceId string `protobuf:"bytes,1,opt,name=workspace_id,json=workspaceId,proto3" json:"workspace_id,omitempty"` @@ -738,7 +818,7 @@ type SendRequest struct { func (x *SendRequest) Reset() { *x = SendRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[5] + mi := &file_notifications_v1_notifications_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -750,7 +830,7 @@ func (x *SendRequest) String() string { func (*SendRequest) ProtoMessage() {} func (x *SendRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[5] + mi := &file_notifications_v1_notifications_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -763,7 +843,7 @@ func (x *SendRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendRequest.ProtoReflect.Descriptor instead. func (*SendRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{5} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{6} } func (x *SendRequest) GetWorkspaceId() string { @@ -845,7 +925,7 @@ type SendResponse struct { func (x *SendResponse) Reset() { *x = SendResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[6] + mi := &file_notifications_v1_notifications_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -857,7 +937,7 @@ func (x *SendResponse) String() string { func (*SendResponse) ProtoMessage() {} func (x *SendResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[6] + mi := &file_notifications_v1_notifications_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -870,7 +950,7 @@ func (x *SendResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendResponse.ProtoReflect.Descriptor instead. func (*SendResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{6} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{7} } func (x *SendResponse) GetNotification() *Notification { @@ -889,7 +969,7 @@ type SendBatchRequest struct { func (x *SendBatchRequest) Reset() { *x = SendBatchRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[7] + mi := &file_notifications_v1_notifications_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -901,7 +981,7 @@ func (x *SendBatchRequest) String() string { func (*SendBatchRequest) ProtoMessage() {} func (x *SendBatchRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[7] + mi := &file_notifications_v1_notifications_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -914,7 +994,7 @@ func (x *SendBatchRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SendBatchRequest.ProtoReflect.Descriptor instead. func (*SendBatchRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{7} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{8} } func (x *SendBatchRequest) GetNotifications() []*SendRequest { @@ -934,7 +1014,7 @@ type SendBatchResponse struct { func (x *SendBatchResponse) Reset() { *x = SendBatchResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[8] + mi := &file_notifications_v1_notifications_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -946,7 +1026,7 @@ func (x *SendBatchResponse) String() string { func (*SendBatchResponse) ProtoMessage() {} func (x *SendBatchResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[8] + mi := &file_notifications_v1_notifications_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -959,7 +1039,7 @@ func (x *SendBatchResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SendBatchResponse.ProtoReflect.Descriptor instead. func (*SendBatchResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{8} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{9} } func (x *SendBatchResponse) GetNotifications() []*Notification { @@ -986,7 +1066,7 @@ type GetPreferencesRequest struct { func (x *GetPreferencesRequest) Reset() { *x = GetPreferencesRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[9] + mi := &file_notifications_v1_notifications_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -998,7 +1078,7 @@ func (x *GetPreferencesRequest) String() string { func (*GetPreferencesRequest) ProtoMessage() {} func (x *GetPreferencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[9] + mi := &file_notifications_v1_notifications_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1011,7 +1091,7 @@ func (x *GetPreferencesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPreferencesRequest.ProtoReflect.Descriptor instead. func (*GetPreferencesRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{9} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{10} } func (x *GetPreferencesRequest) GetUserId() string { @@ -1037,7 +1117,7 @@ type GetPreferencesResponse struct { func (x *GetPreferencesResponse) Reset() { *x = GetPreferencesResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[10] + mi := &file_notifications_v1_notifications_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1049,7 +1129,7 @@ func (x *GetPreferencesResponse) String() string { func (*GetPreferencesResponse) ProtoMessage() {} func (x *GetPreferencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[10] + mi := &file_notifications_v1_notifications_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1062,7 +1142,7 @@ func (x *GetPreferencesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetPreferencesResponse.ProtoReflect.Descriptor instead. func (*GetPreferencesResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{10} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{11} } func (x *GetPreferencesResponse) GetPreferences() *NotificationPreferences { @@ -1081,7 +1161,7 @@ type SetPreferencesRequest struct { func (x *SetPreferencesRequest) Reset() { *x = SetPreferencesRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[11] + mi := &file_notifications_v1_notifications_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1093,7 +1173,7 @@ func (x *SetPreferencesRequest) String() string { func (*SetPreferencesRequest) ProtoMessage() {} func (x *SetPreferencesRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[11] + mi := &file_notifications_v1_notifications_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1106,7 +1186,7 @@ func (x *SetPreferencesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPreferencesRequest.ProtoReflect.Descriptor instead. func (*SetPreferencesRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{11} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{12} } func (x *SetPreferencesRequest) GetPreferences() *NotificationPreferences { @@ -1125,7 +1205,7 @@ type SetPreferencesResponse struct { func (x *SetPreferencesResponse) Reset() { *x = SetPreferencesResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[12] + mi := &file_notifications_v1_notifications_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1137,7 +1217,7 @@ func (x *SetPreferencesResponse) String() string { func (*SetPreferencesResponse) ProtoMessage() {} func (x *SetPreferencesResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[12] + mi := &file_notifications_v1_notifications_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1150,7 +1230,7 @@ func (x *SetPreferencesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SetPreferencesResponse.ProtoReflect.Descriptor instead. func (*SetPreferencesResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{12} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{13} } func (x *SetPreferencesResponse) GetPreferences() *NotificationPreferences { @@ -1172,7 +1252,7 @@ type ListHistoryRequest struct { func (x *ListHistoryRequest) Reset() { *x = ListHistoryRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[13] + mi := &file_notifications_v1_notifications_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1184,7 +1264,7 @@ func (x *ListHistoryRequest) String() string { func (*ListHistoryRequest) ProtoMessage() {} func (x *ListHistoryRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[13] + mi := &file_notifications_v1_notifications_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1197,7 +1277,7 @@ func (x *ListHistoryRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListHistoryRequest.ProtoReflect.Descriptor instead. func (*ListHistoryRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{13} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{14} } func (x *ListHistoryRequest) GetWorkspaceId() string { @@ -1238,7 +1318,7 @@ type ListHistoryResponse struct { func (x *ListHistoryResponse) Reset() { *x = ListHistoryResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[14] + mi := &file_notifications_v1_notifications_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1250,7 +1330,7 @@ func (x *ListHistoryResponse) String() string { func (*ListHistoryResponse) ProtoMessage() {} func (x *ListHistoryResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[14] + mi := &file_notifications_v1_notifications_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1263,7 +1343,7 @@ func (x *ListHistoryResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListHistoryResponse.ProtoReflect.Descriptor instead. func (*ListHistoryResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{14} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{15} } func (x *ListHistoryResponse) GetNotifications() []*Notification { @@ -1291,7 +1371,7 @@ type RegisterChannelRequest struct { func (x *RegisterChannelRequest) Reset() { *x = RegisterChannelRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[15] + mi := &file_notifications_v1_notifications_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1303,7 +1383,7 @@ func (x *RegisterChannelRequest) String() string { func (*RegisterChannelRequest) ProtoMessage() {} func (x *RegisterChannelRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[15] + mi := &file_notifications_v1_notifications_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1316,7 +1396,7 @@ func (x *RegisterChannelRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterChannelRequest.ProtoReflect.Descriptor instead. func (*RegisterChannelRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{15} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{16} } func (x *RegisterChannelRequest) GetWorkspaceId() string { @@ -1349,7 +1429,7 @@ type RegisterChannelResponse struct { func (x *RegisterChannelResponse) Reset() { *x = RegisterChannelResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[16] + mi := &file_notifications_v1_notifications_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1361,7 +1441,7 @@ func (x *RegisterChannelResponse) String() string { func (*RegisterChannelResponse) ProtoMessage() {} func (x *RegisterChannelResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[16] + mi := &file_notifications_v1_notifications_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1374,7 +1454,7 @@ func (x *RegisterChannelResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use RegisterChannelResponse.ProtoReflect.Descriptor instead. func (*RegisterChannelResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{16} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{17} } func (x *RegisterChannelResponse) GetSuccess() bool { @@ -1393,7 +1473,7 @@ type GetDeliveryStatusRequest struct { func (x *GetDeliveryStatusRequest) Reset() { *x = GetDeliveryStatusRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[17] + mi := &file_notifications_v1_notifications_proto_msgTypes[18] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1405,7 +1485,7 @@ func (x *GetDeliveryStatusRequest) String() string { func (*GetDeliveryStatusRequest) ProtoMessage() {} func (x *GetDeliveryStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[17] + mi := &file_notifications_v1_notifications_proto_msgTypes[18] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1418,7 +1498,7 @@ func (x *GetDeliveryStatusRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeliveryStatusRequest.ProtoReflect.Descriptor instead. func (*GetDeliveryStatusRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{17} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{18} } func (x *GetDeliveryStatusRequest) GetNotificationId() string { @@ -1439,7 +1519,7 @@ type GetDeliveryStatusResponse struct { func (x *GetDeliveryStatusResponse) Reset() { *x = GetDeliveryStatusResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[18] + mi := &file_notifications_v1_notifications_proto_msgTypes[19] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1451,7 +1531,7 @@ func (x *GetDeliveryStatusResponse) String() string { func (*GetDeliveryStatusResponse) ProtoMessage() {} func (x *GetDeliveryStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[18] + mi := &file_notifications_v1_notifications_proto_msgTypes[19] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1464,7 +1544,7 @@ func (x *GetDeliveryStatusResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use GetDeliveryStatusResponse.ProtoReflect.Descriptor instead. func (*GetDeliveryStatusResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{18} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{19} } func (x *GetDeliveryStatusResponse) GetStatus() DeliveryStatus { @@ -1497,7 +1577,7 @@ type UpsertTemplateRequest struct { func (x *UpsertTemplateRequest) Reset() { *x = UpsertTemplateRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[19] + mi := &file_notifications_v1_notifications_proto_msgTypes[20] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1509,7 +1589,7 @@ func (x *UpsertTemplateRequest) String() string { func (*UpsertTemplateRequest) ProtoMessage() {} func (x *UpsertTemplateRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[19] + mi := &file_notifications_v1_notifications_proto_msgTypes[20] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1522,7 +1602,7 @@ func (x *UpsertTemplateRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertTemplateRequest.ProtoReflect.Descriptor instead. func (*UpsertTemplateRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{19} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{20} } func (x *UpsertTemplateRequest) GetTemplate() *NotificationTemplate { @@ -1541,7 +1621,7 @@ type UpsertTemplateResponse struct { func (x *UpsertTemplateResponse) Reset() { *x = UpsertTemplateResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[20] + mi := &file_notifications_v1_notifications_proto_msgTypes[21] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1553,7 +1633,7 @@ func (x *UpsertTemplateResponse) String() string { func (*UpsertTemplateResponse) ProtoMessage() {} func (x *UpsertTemplateResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[20] + mi := &file_notifications_v1_notifications_proto_msgTypes[21] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1566,7 +1646,7 @@ func (x *UpsertTemplateResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use UpsertTemplateResponse.ProtoReflect.Descriptor instead. func (*UpsertTemplateResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{20} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{21} } func (x *UpsertTemplateResponse) GetTemplate() *NotificationTemplate { @@ -1588,7 +1668,7 @@ type ListTemplatesRequest struct { func (x *ListTemplatesRequest) Reset() { *x = ListTemplatesRequest{} - mi := &file_notifications_v1_notifications_proto_msgTypes[21] + mi := &file_notifications_v1_notifications_proto_msgTypes[22] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1600,7 +1680,7 @@ func (x *ListTemplatesRequest) String() string { func (*ListTemplatesRequest) ProtoMessage() {} func (x *ListTemplatesRequest) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[21] + mi := &file_notifications_v1_notifications_proto_msgTypes[22] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1613,7 +1693,7 @@ func (x *ListTemplatesRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplatesRequest.ProtoReflect.Descriptor instead. func (*ListTemplatesRequest) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{21} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{22} } func (x *ListTemplatesRequest) GetWorkspaceId() string { @@ -1653,7 +1733,7 @@ type ListTemplatesResponse struct { func (x *ListTemplatesResponse) Reset() { *x = ListTemplatesResponse{} - mi := &file_notifications_v1_notifications_proto_msgTypes[22] + mi := &file_notifications_v1_notifications_proto_msgTypes[23] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1665,7 +1745,7 @@ func (x *ListTemplatesResponse) String() string { func (*ListTemplatesResponse) ProtoMessage() {} func (x *ListTemplatesResponse) ProtoReflect() protoreflect.Message { - mi := &file_notifications_v1_notifications_proto_msgTypes[22] + mi := &file_notifications_v1_notifications_proto_msgTypes[23] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1678,7 +1758,7 @@ func (x *ListTemplatesResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use ListTemplatesResponse.ProtoReflect.Descriptor instead. func (*ListTemplatesResponse) Descriptor() ([]byte, []int) { - return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{22} + return file_notifications_v1_notifications_proto_rawDescGZIP(), []int{23} } func (x *ListTemplatesResponse) GetTemplates() []*NotificationTemplate { @@ -1710,7 +1790,7 @@ const file_notifications_v1_notifications_proto_rawDesc = "" + "\rtemplate_name\x18\r \x01(\tR\ftemplateName\"\xaa\x01\n" + "\x0eEscalationRule\x12E\n" + "\x1fif_unacknowledged_after_seconds\x18\x01 \x01(\x05R\x1cifUnacknowledgedAfterSeconds\x12Q\n" + - "\x13escalate_to_channel\x18\x02 \x01(\x0e2!.notifications.v1.DeliveryChannelR\x11escalateToChannel\"\x9c\x03\n" + + "\x13escalate_to_channel\x18\x02 \x01(\x0e2!.notifications.v1.DeliveryChannelR\x11escalateToChannel\"\xef\x03\n" + "\x17NotificationPreferences\x12\x17\n" + "\auser_id\x18\x01 \x01(\tR\x06userId\x12!\n" + "\fworkspace_id\x18\x02 \x01(\tR\vworkspaceId\x12J\n" + @@ -1718,7 +1798,8 @@ const file_notifications_v1_notifications_proto_rawDesc = "" + "\x11quiet_hours_start\x18\x04 \x01(\tR\x0fquietHoursStart\x12&\n" + "\x0fquiet_hours_end\x18\x05 \x01(\tR\rquietHoursEnd\x12K\n" + "\x10escalation_rules\x18\x06 \x03(\v2 .notifications.v1.EscalationRuleR\x0fescalationRules\x12X\n" + - "\x11category_channels\x18\a \x03(\v2+.notifications.v1.CategoryChannelPreferenceR\x10categoryChannels\"\x9c\x01\n" + + "\x11category_channels\x18\a \x03(\v2+.notifications.v1.CategoryChannelPreferenceR\x10categoryChannels\x12Q\n" + + "\x12digest_preferences\x18\b \x03(\v2\".notifications.v1.DigestPreferenceR\x11digestPreferences\"\x9c\x01\n" + "\x19CategoryChannelPreference\x12B\n" + "\bcategory\x18\x01 \x01(\x0e2&.notifications.v1.NotificationCategoryR\bcategory\x12;\n" + "\achannel\x18\x02 \x01(\x0e2!.notifications.v1.DeliveryChannelR\achannel\"\xb3\x03\n" + @@ -1734,7 +1815,12 @@ const file_notifications_v1_notifications_proto_rawDesc = "" + "\bbuilt_in\x18\t \x01(\bR\abuiltIn\x129\n" + "\n" + "updated_at\x18\n" + - " \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xbc\x03\n" + + " \x01(\v2\x1a.google.protobuf.TimestampR\tupdatedAt\"\xd4\x01\n" + + "\x10DigestPreference\x12B\n" + + "\bcategory\x18\x01 \x01(\x0e2&.notifications.v1.NotificationCategoryR\bcategory\x12;\n" + + "\achannel\x18\x02 \x01(\x0e2!.notifications.v1.DeliveryChannelR\achannel\x12%\n" + + "\x0ewindow_seconds\x18\x03 \x01(\x05R\rwindowSeconds\x12\x18\n" + + "\aenabled\x18\x04 \x01(\bR\aenabled\"\xbc\x03\n" + "\vSendRequest\x12!\n" + "\fworkspace_id\x18\x01 \x01(\tR\vworkspaceId\x12!\n" + "\frecipient_id\x18\x02 \x01(\tR\vrecipientId\x12;\n" + @@ -1818,14 +1904,15 @@ const file_notifications_v1_notifications_proto_rawDesc = "" + "\x1cNOTIFICATION_CATEGORY_REPORT\x10\x05\x12%\n" + "!NOTIFICATION_CATEGORY_INTEGRATION\x10\x06\x12 \n" + "\x1cNOTIFICATION_CATEGORY_DIGEST\x10\a\x12!\n" + - "\x1dNOTIFICATION_CATEGORY_GENERAL\x10\b*\xc0\x01\n" + + "\x1dNOTIFICATION_CATEGORY_GENERAL\x10\b*\xdc\x01\n" + "\x0eDeliveryStatus\x12\x1f\n" + "\x1bDELIVERY_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n" + "\x17DELIVERY_STATUS_PENDING\x10\x01\x12\x18\n" + "\x14DELIVERY_STATUS_SENT\x10\x02\x12\x1d\n" + "\x19DELIVERY_STATUS_DELIVERED\x10\x03\x12\x1a\n" + "\x16DELIVERY_STATUS_FAILED\x10\x04\x12\x1b\n" + - "\x17DELIVERY_STATUS_BOUNCED\x10\x052\xf5\x06\n" + + "\x17DELIVERY_STATUS_BOUNCED\x10\x05\x12\x1a\n" + + "\x16DELIVERY_STATUS_QUEUED\x10\x062\xf5\x06\n" + "\x13NotificationService\x12E\n" + "\x04Send\x12\x1d.notifications.v1.SendRequest\x1a\x1e.notifications.v1.SendResponse\x12T\n" + "\tSendBatch\x12\".notifications.v1.SendBatchRequest\x1a#.notifications.v1.SendBatchResponse\x12c\n" + @@ -1850,7 +1937,7 @@ func file_notifications_v1_notifications_proto_rawDescGZIP() []byte { } var file_notifications_v1_notifications_proto_enumTypes = make([]protoimpl.EnumInfo, 4) -var file_notifications_v1_notifications_proto_msgTypes = make([]protoimpl.MessageInfo, 24) +var file_notifications_v1_notifications_proto_msgTypes = make([]protoimpl.MessageInfo, 25) var file_notifications_v1_notifications_proto_goTypes = []any{ (DeliveryChannel)(0), // 0: notifications.v1.DeliveryChannel (Priority)(0), // 1: notifications.v1.Priority @@ -1861,85 +1948,89 @@ var file_notifications_v1_notifications_proto_goTypes = []any{ (*NotificationPreferences)(nil), // 6: notifications.v1.NotificationPreferences (*CategoryChannelPreference)(nil), // 7: notifications.v1.CategoryChannelPreference (*NotificationTemplate)(nil), // 8: notifications.v1.NotificationTemplate - (*SendRequest)(nil), // 9: notifications.v1.SendRequest - (*SendResponse)(nil), // 10: notifications.v1.SendResponse - (*SendBatchRequest)(nil), // 11: notifications.v1.SendBatchRequest - (*SendBatchResponse)(nil), // 12: notifications.v1.SendBatchResponse - (*GetPreferencesRequest)(nil), // 13: notifications.v1.GetPreferencesRequest - (*GetPreferencesResponse)(nil), // 14: notifications.v1.GetPreferencesResponse - (*SetPreferencesRequest)(nil), // 15: notifications.v1.SetPreferencesRequest - (*SetPreferencesResponse)(nil), // 16: notifications.v1.SetPreferencesResponse - (*ListHistoryRequest)(nil), // 17: notifications.v1.ListHistoryRequest - (*ListHistoryResponse)(nil), // 18: notifications.v1.ListHistoryResponse - (*RegisterChannelRequest)(nil), // 19: notifications.v1.RegisterChannelRequest - (*RegisterChannelResponse)(nil), // 20: notifications.v1.RegisterChannelResponse - (*GetDeliveryStatusRequest)(nil), // 21: notifications.v1.GetDeliveryStatusRequest - (*GetDeliveryStatusResponse)(nil), // 22: notifications.v1.GetDeliveryStatusResponse - (*UpsertTemplateRequest)(nil), // 23: notifications.v1.UpsertTemplateRequest - (*UpsertTemplateResponse)(nil), // 24: notifications.v1.UpsertTemplateResponse - (*ListTemplatesRequest)(nil), // 25: notifications.v1.ListTemplatesRequest - (*ListTemplatesResponse)(nil), // 26: notifications.v1.ListTemplatesResponse - nil, // 27: notifications.v1.RegisterChannelRequest.ConfigEntry - (*timestamppb.Timestamp)(nil), // 28: google.protobuf.Timestamp + (*DigestPreference)(nil), // 9: notifications.v1.DigestPreference + (*SendRequest)(nil), // 10: notifications.v1.SendRequest + (*SendResponse)(nil), // 11: notifications.v1.SendResponse + (*SendBatchRequest)(nil), // 12: notifications.v1.SendBatchRequest + (*SendBatchResponse)(nil), // 13: notifications.v1.SendBatchResponse + (*GetPreferencesRequest)(nil), // 14: notifications.v1.GetPreferencesRequest + (*GetPreferencesResponse)(nil), // 15: notifications.v1.GetPreferencesResponse + (*SetPreferencesRequest)(nil), // 16: notifications.v1.SetPreferencesRequest + (*SetPreferencesResponse)(nil), // 17: notifications.v1.SetPreferencesResponse + (*ListHistoryRequest)(nil), // 18: notifications.v1.ListHistoryRequest + (*ListHistoryResponse)(nil), // 19: notifications.v1.ListHistoryResponse + (*RegisterChannelRequest)(nil), // 20: notifications.v1.RegisterChannelRequest + (*RegisterChannelResponse)(nil), // 21: notifications.v1.RegisterChannelResponse + (*GetDeliveryStatusRequest)(nil), // 22: notifications.v1.GetDeliveryStatusRequest + (*GetDeliveryStatusResponse)(nil), // 23: notifications.v1.GetDeliveryStatusResponse + (*UpsertTemplateRequest)(nil), // 24: notifications.v1.UpsertTemplateRequest + (*UpsertTemplateResponse)(nil), // 25: notifications.v1.UpsertTemplateResponse + (*ListTemplatesRequest)(nil), // 26: notifications.v1.ListTemplatesRequest + (*ListTemplatesResponse)(nil), // 27: notifications.v1.ListTemplatesResponse + nil, // 28: notifications.v1.RegisterChannelRequest.ConfigEntry + (*timestamppb.Timestamp)(nil), // 29: google.protobuf.Timestamp } var file_notifications_v1_notifications_proto_depIdxs = []int32{ 0, // 0: notifications.v1.Notification.channel:type_name -> notifications.v1.DeliveryChannel 1, // 1: notifications.v1.Notification.priority:type_name -> notifications.v1.Priority 3, // 2: notifications.v1.Notification.delivery_status:type_name -> notifications.v1.DeliveryStatus - 28, // 3: notifications.v1.Notification.sent_at:type_name -> google.protobuf.Timestamp - 28, // 4: notifications.v1.Notification.delivered_at:type_name -> google.protobuf.Timestamp + 29, // 3: notifications.v1.Notification.sent_at:type_name -> google.protobuf.Timestamp + 29, // 4: notifications.v1.Notification.delivered_at:type_name -> google.protobuf.Timestamp 2, // 5: notifications.v1.Notification.category:type_name -> notifications.v1.NotificationCategory 0, // 6: notifications.v1.EscalationRule.escalate_to_channel:type_name -> notifications.v1.DeliveryChannel 0, // 7: notifications.v1.NotificationPreferences.default_channel:type_name -> notifications.v1.DeliveryChannel 5, // 8: notifications.v1.NotificationPreferences.escalation_rules:type_name -> notifications.v1.EscalationRule 7, // 9: notifications.v1.NotificationPreferences.category_channels:type_name -> notifications.v1.CategoryChannelPreference - 2, // 10: notifications.v1.CategoryChannelPreference.category:type_name -> notifications.v1.NotificationCategory - 0, // 11: notifications.v1.CategoryChannelPreference.channel:type_name -> notifications.v1.DeliveryChannel - 2, // 12: notifications.v1.NotificationTemplate.category:type_name -> notifications.v1.NotificationCategory - 0, // 13: notifications.v1.NotificationTemplate.channel:type_name -> notifications.v1.DeliveryChannel - 28, // 14: notifications.v1.NotificationTemplate.updated_at:type_name -> google.protobuf.Timestamp - 0, // 15: notifications.v1.SendRequest.channel:type_name -> notifications.v1.DeliveryChannel - 1, // 16: notifications.v1.SendRequest.priority:type_name -> notifications.v1.Priority - 2, // 17: notifications.v1.SendRequest.category:type_name -> notifications.v1.NotificationCategory - 4, // 18: notifications.v1.SendResponse.notification:type_name -> notifications.v1.Notification - 9, // 19: notifications.v1.SendBatchRequest.notifications:type_name -> notifications.v1.SendRequest - 4, // 20: notifications.v1.SendBatchResponse.notifications:type_name -> notifications.v1.Notification - 6, // 21: notifications.v1.GetPreferencesResponse.preferences:type_name -> notifications.v1.NotificationPreferences - 6, // 22: notifications.v1.SetPreferencesRequest.preferences:type_name -> notifications.v1.NotificationPreferences - 6, // 23: notifications.v1.SetPreferencesResponse.preferences:type_name -> notifications.v1.NotificationPreferences - 4, // 24: notifications.v1.ListHistoryResponse.notifications:type_name -> notifications.v1.Notification - 0, // 25: notifications.v1.RegisterChannelRequest.channel:type_name -> notifications.v1.DeliveryChannel - 27, // 26: notifications.v1.RegisterChannelRequest.config:type_name -> notifications.v1.RegisterChannelRequest.ConfigEntry - 3, // 27: notifications.v1.GetDeliveryStatusResponse.status:type_name -> notifications.v1.DeliveryStatus - 28, // 28: notifications.v1.GetDeliveryStatusResponse.last_updated_at:type_name -> google.protobuf.Timestamp - 8, // 29: notifications.v1.UpsertTemplateRequest.template:type_name -> notifications.v1.NotificationTemplate - 8, // 30: notifications.v1.UpsertTemplateResponse.template:type_name -> notifications.v1.NotificationTemplate - 2, // 31: notifications.v1.ListTemplatesRequest.category:type_name -> notifications.v1.NotificationCategory - 0, // 32: notifications.v1.ListTemplatesRequest.channel:type_name -> notifications.v1.DeliveryChannel - 8, // 33: notifications.v1.ListTemplatesResponse.templates:type_name -> notifications.v1.NotificationTemplate - 9, // 34: notifications.v1.NotificationService.Send:input_type -> notifications.v1.SendRequest - 11, // 35: notifications.v1.NotificationService.SendBatch:input_type -> notifications.v1.SendBatchRequest - 13, // 36: notifications.v1.NotificationService.GetPreferences:input_type -> notifications.v1.GetPreferencesRequest - 15, // 37: notifications.v1.NotificationService.SetPreferences:input_type -> notifications.v1.SetPreferencesRequest - 17, // 38: notifications.v1.NotificationService.ListHistory:input_type -> notifications.v1.ListHistoryRequest - 19, // 39: notifications.v1.NotificationService.RegisterChannel:input_type -> notifications.v1.RegisterChannelRequest - 21, // 40: notifications.v1.NotificationService.GetDeliveryStatus:input_type -> notifications.v1.GetDeliveryStatusRequest - 23, // 41: notifications.v1.NotificationService.UpsertTemplate:input_type -> notifications.v1.UpsertTemplateRequest - 25, // 42: notifications.v1.NotificationService.ListTemplates:input_type -> notifications.v1.ListTemplatesRequest - 10, // 43: notifications.v1.NotificationService.Send:output_type -> notifications.v1.SendResponse - 12, // 44: notifications.v1.NotificationService.SendBatch:output_type -> notifications.v1.SendBatchResponse - 14, // 45: notifications.v1.NotificationService.GetPreferences:output_type -> notifications.v1.GetPreferencesResponse - 16, // 46: notifications.v1.NotificationService.SetPreferences:output_type -> notifications.v1.SetPreferencesResponse - 18, // 47: notifications.v1.NotificationService.ListHistory:output_type -> notifications.v1.ListHistoryResponse - 20, // 48: notifications.v1.NotificationService.RegisterChannel:output_type -> notifications.v1.RegisterChannelResponse - 22, // 49: notifications.v1.NotificationService.GetDeliveryStatus:output_type -> notifications.v1.GetDeliveryStatusResponse - 24, // 50: notifications.v1.NotificationService.UpsertTemplate:output_type -> notifications.v1.UpsertTemplateResponse - 26, // 51: notifications.v1.NotificationService.ListTemplates:output_type -> notifications.v1.ListTemplatesResponse - 43, // [43:52] is the sub-list for method output_type - 34, // [34:43] is the sub-list for method input_type - 34, // [34:34] is the sub-list for extension type_name - 34, // [34:34] is the sub-list for extension extendee - 0, // [0:34] is the sub-list for field type_name + 9, // 10: notifications.v1.NotificationPreferences.digest_preferences:type_name -> notifications.v1.DigestPreference + 2, // 11: notifications.v1.CategoryChannelPreference.category:type_name -> notifications.v1.NotificationCategory + 0, // 12: notifications.v1.CategoryChannelPreference.channel:type_name -> notifications.v1.DeliveryChannel + 2, // 13: notifications.v1.NotificationTemplate.category:type_name -> notifications.v1.NotificationCategory + 0, // 14: notifications.v1.NotificationTemplate.channel:type_name -> notifications.v1.DeliveryChannel + 29, // 15: notifications.v1.NotificationTemplate.updated_at:type_name -> google.protobuf.Timestamp + 2, // 16: notifications.v1.DigestPreference.category:type_name -> notifications.v1.NotificationCategory + 0, // 17: notifications.v1.DigestPreference.channel:type_name -> notifications.v1.DeliveryChannel + 0, // 18: notifications.v1.SendRequest.channel:type_name -> notifications.v1.DeliveryChannel + 1, // 19: notifications.v1.SendRequest.priority:type_name -> notifications.v1.Priority + 2, // 20: notifications.v1.SendRequest.category:type_name -> notifications.v1.NotificationCategory + 4, // 21: notifications.v1.SendResponse.notification:type_name -> notifications.v1.Notification + 10, // 22: notifications.v1.SendBatchRequest.notifications:type_name -> notifications.v1.SendRequest + 4, // 23: notifications.v1.SendBatchResponse.notifications:type_name -> notifications.v1.Notification + 6, // 24: notifications.v1.GetPreferencesResponse.preferences:type_name -> notifications.v1.NotificationPreferences + 6, // 25: notifications.v1.SetPreferencesRequest.preferences:type_name -> notifications.v1.NotificationPreferences + 6, // 26: notifications.v1.SetPreferencesResponse.preferences:type_name -> notifications.v1.NotificationPreferences + 4, // 27: notifications.v1.ListHistoryResponse.notifications:type_name -> notifications.v1.Notification + 0, // 28: notifications.v1.RegisterChannelRequest.channel:type_name -> notifications.v1.DeliveryChannel + 28, // 29: notifications.v1.RegisterChannelRequest.config:type_name -> notifications.v1.RegisterChannelRequest.ConfigEntry + 3, // 30: notifications.v1.GetDeliveryStatusResponse.status:type_name -> notifications.v1.DeliveryStatus + 29, // 31: notifications.v1.GetDeliveryStatusResponse.last_updated_at:type_name -> google.protobuf.Timestamp + 8, // 32: notifications.v1.UpsertTemplateRequest.template:type_name -> notifications.v1.NotificationTemplate + 8, // 33: notifications.v1.UpsertTemplateResponse.template:type_name -> notifications.v1.NotificationTemplate + 2, // 34: notifications.v1.ListTemplatesRequest.category:type_name -> notifications.v1.NotificationCategory + 0, // 35: notifications.v1.ListTemplatesRequest.channel:type_name -> notifications.v1.DeliveryChannel + 8, // 36: notifications.v1.ListTemplatesResponse.templates:type_name -> notifications.v1.NotificationTemplate + 10, // 37: notifications.v1.NotificationService.Send:input_type -> notifications.v1.SendRequest + 12, // 38: notifications.v1.NotificationService.SendBatch:input_type -> notifications.v1.SendBatchRequest + 14, // 39: notifications.v1.NotificationService.GetPreferences:input_type -> notifications.v1.GetPreferencesRequest + 16, // 40: notifications.v1.NotificationService.SetPreferences:input_type -> notifications.v1.SetPreferencesRequest + 18, // 41: notifications.v1.NotificationService.ListHistory:input_type -> notifications.v1.ListHistoryRequest + 20, // 42: notifications.v1.NotificationService.RegisterChannel:input_type -> notifications.v1.RegisterChannelRequest + 22, // 43: notifications.v1.NotificationService.GetDeliveryStatus:input_type -> notifications.v1.GetDeliveryStatusRequest + 24, // 44: notifications.v1.NotificationService.UpsertTemplate:input_type -> notifications.v1.UpsertTemplateRequest + 26, // 45: notifications.v1.NotificationService.ListTemplates:input_type -> notifications.v1.ListTemplatesRequest + 11, // 46: notifications.v1.NotificationService.Send:output_type -> notifications.v1.SendResponse + 13, // 47: notifications.v1.NotificationService.SendBatch:output_type -> notifications.v1.SendBatchResponse + 15, // 48: notifications.v1.NotificationService.GetPreferences:output_type -> notifications.v1.GetPreferencesResponse + 17, // 49: notifications.v1.NotificationService.SetPreferences:output_type -> notifications.v1.SetPreferencesResponse + 19, // 50: notifications.v1.NotificationService.ListHistory:output_type -> notifications.v1.ListHistoryResponse + 21, // 51: notifications.v1.NotificationService.RegisterChannel:output_type -> notifications.v1.RegisterChannelResponse + 23, // 52: notifications.v1.NotificationService.GetDeliveryStatus:output_type -> notifications.v1.GetDeliveryStatusResponse + 25, // 53: notifications.v1.NotificationService.UpsertTemplate:output_type -> notifications.v1.UpsertTemplateResponse + 27, // 54: notifications.v1.NotificationService.ListTemplates:output_type -> notifications.v1.ListTemplatesResponse + 46, // [46:55] is the sub-list for method output_type + 37, // [37:46] is the sub-list for method input_type + 37, // [37:37] is the sub-list for extension type_name + 37, // [37:37] is the sub-list for extension extendee + 0, // [0:37] is the sub-list for field type_name } func init() { file_notifications_v1_notifications_proto_init() } @@ -1953,7 +2044,7 @@ func file_notifications_v1_notifications_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: unsafe.Slice(unsafe.StringData(file_notifications_v1_notifications_proto_rawDesc), len(file_notifications_v1_notifications_proto_rawDesc)), NumEnums: 4, - NumMessages: 24, + NumMessages: 25, NumExtensions: 0, NumServices: 1, }, diff --git a/gen/python/notifications/v1/notifications_pb2.py b/gen/python/notifications/v1/notifications_pb2.py index b82d221..1b0fb40 100644 --- a/gen/python/notifications/v1/notifications_pb2.py +++ b/gen/python/notifications/v1/notifications_pb2.py @@ -25,7 +25,7 @@ from google.protobuf import timestamp_pb2 as google_dot_protobuf_dot_timestamp__pb2 -DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$notifications/v1/notifications.proto\x12\x10notifications.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd4\x04\n\x0cNotification\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x03 \x01(\tR\x0brecipientId\x12;\n\x07\x63hannel\x18\x04 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12\x36\n\x08priority\x18\x05 \x01(\x0e\x32\x1a.notifications.v1.PriorityR\x08priority\x12\x18\n\x07subject\x18\x06 \x01(\tR\x07subject\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rmetadata_json\x18\x08 \x01(\tR\x0cmetadataJson\x12I\n\x0f\x64\x65livery_status\x18\t \x01(\x0e\x32 .notifications.v1.DeliveryStatusR\x0e\x64\x65liveryStatus\x12\x33\n\x07sent_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x06sentAt\x12=\n\x0c\x64\x65livered_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x64\x65liveredAt\x12\x42\n\x08\x63\x61tegory\x18\x0c \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12#\n\rtemplate_name\x18\r \x01(\tR\x0ctemplateName\"\xaa\x01\n\x0e\x45scalationRule\x12\x45\n\x1fif_unacknowledged_after_seconds\x18\x01 \x01(\x05R\x1cifUnacknowledgedAfterSeconds\x12Q\n\x13\x65scalate_to_channel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x11\x65scalateToChannel\"\x9c\x03\n\x17NotificationPreferences\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12J\n\x0f\x64\x65\x66\x61ult_channel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x0e\x64\x65\x66\x61ultChannel\x12*\n\x11quiet_hours_start\x18\x04 \x01(\tR\x0fquietHoursStart\x12&\n\x0fquiet_hours_end\x18\x05 \x01(\tR\rquietHoursEnd\x12K\n\x10\x65scalation_rules\x18\x06 \x03(\x0b\x32 .notifications.v1.EscalationRuleR\x0f\x65scalationRules\x12X\n\x11\x63\x61tegory_channels\x18\x07 \x03(\x0b\x32+.notifications.v1.CategoryChannelPreferenceR\x10\x63\x61tegoryChannels\"\x9c\x01\n\x19\x43\x61tegoryChannelPreference\x12\x42\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\"\xb3\x03\n\x14NotificationTemplate\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x42\n\x08\x63\x61tegory\x18\x04 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x05 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12)\n\x10subject_template\x18\x06 \x01(\tR\x0fsubjectTemplate\x12#\n\rbody_template\x18\x07 \x01(\tR\x0c\x62odyTemplate\x12-\n\x12required_variables\x18\x08 \x03(\tR\x11requiredVariables\x12\x19\n\x08\x62uilt_in\x18\t \x01(\x08R\x07\x62uiltIn\x12\x39\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"\xbc\x03\n\x0bSendRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x02 \x01(\tR\x0brecipientId\x12;\n\x07\x63hannel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12\x36\n\x08priority\x18\x04 \x01(\x0e\x32\x1a.notifications.v1.PriorityR\x08priority\x12\x18\n\x07subject\x18\x05 \x01(\tR\x07subject\x12\x12\n\x04\x62ody\x18\x06 \x01(\tR\x04\x62ody\x12#\n\rmetadata_json\x18\x07 \x01(\tR\x0cmetadataJson\x12\x42\n\x08\x63\x61tegory\x18\x08 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12#\n\rtemplate_name\x18\t \x01(\tR\x0ctemplateName\x12\x36\n\x17template_variables_json\x18\n \x01(\tR\x15templateVariablesJson\"R\n\x0cSendResponse\x12\x42\n\x0cnotification\x18\x01 \x01(\x0b\x32\x1e.notifications.v1.NotificationR\x0cnotification\"W\n\x10SendBatchRequest\x12\x43\n\rnotifications\x18\x01 \x03(\x0b\x32\x1d.notifications.v1.SendRequestR\rnotifications\"|\n\x11SendBatchResponse\x12\x44\n\rnotifications\x18\x01 \x03(\x0b\x32\x1e.notifications.v1.NotificationR\rnotifications\x12!\n\x0c\x66\x61iled_count\x18\x02 \x01(\x05R\x0b\x66\x61iledCount\"S\n\x15GetPreferencesRequest\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\"e\n\x16GetPreferencesResponse\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"d\n\x15SetPreferencesRequest\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"e\n\x16SetPreferencesResponse\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"\x88\x01\n\x12ListHistoryRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x02 \x01(\tR\x0brecipientId\x12\x14\n\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x04 \x01(\x05R\x06offset\"q\n\x13ListHistoryResponse\x12\x44\n\rnotifications\x18\x01 \x03(\x0b\x32\x1e.notifications.v1.NotificationR\rnotifications\x12\x14\n\x05total\x18\x02 \x01(\x05R\x05total\"\x81\x02\n\x16RegisterChannelRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12;\n\x07\x63hannel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12L\n\x06\x63onfig\x18\x03 \x03(\x0b\x32\x34.notifications.v1.RegisterChannelRequest.ConfigEntryR\x06\x63onfig\x1a\x39\n\x0b\x43onfigEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"3\n\x17RegisterChannelResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\"C\n\x18GetDeliveryStatusRequest\x12\'\n\x0fnotification_id\x18\x01 \x01(\tR\x0enotificationId\"\xbe\x01\n\x19GetDeliveryStatusResponse\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32 .notifications.v1.DeliveryStatusR\x06status\x12\x42\n\x0flast_updated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastUpdatedAt\x12#\n\rerror_message\x18\x03 \x01(\tR\x0c\x65rrorMessage\"[\n\x15UpsertTemplateRequest\x12\x42\n\x08template\x18\x01 \x01(\x0b\x32&.notifications.v1.NotificationTemplateR\x08template\"\\\n\x16UpsertTemplateResponse\x12\x42\n\x08template\x18\x01 \x01(\x0b\x32&.notifications.v1.NotificationTemplateR\x08template\"\xe4\x01\n\x14ListTemplatesRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12\x42\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12(\n\x10include_built_in\x18\x04 \x01(\x08R\x0eincludeBuiltIn\"]\n\x15ListTemplatesResponse\x12\x44\n\ttemplates\x18\x01 \x03(\x0b\x32&.notifications.v1.NotificationTemplateR\ttemplates*\xa6\x01\n\x0f\x44\x65liveryChannel\x12 \n\x1c\x44\x45LIVERY_CHANNEL_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x44\x45LIVERY_CHANNEL_SLACK\x10\x01\x12\x1a\n\x16\x44\x45LIVERY_CHANNEL_EMAIL\x10\x02\x12\x1c\n\x18\x44\x45LIVERY_CHANNEL_WEBHOOK\x10\x03\x12\x1b\n\x17\x44\x45LIVERY_CHANNEL_IN_APP\x10\x04*s\n\x08Priority\x12\x18\n\x14PRIORITY_UNSPECIFIED\x10\x00\x12\x10\n\x0cPRIORITY_LOW\x10\x01\x12\x13\n\x0fPRIORITY_NORMAL\x10\x02\x12\x11\n\rPRIORITY_HIGH\x10\x03\x12\x13\n\x0fPRIORITY_URGENT\x10\x04*\xec\x02\n\x14NotificationCategory\x12%\n!NOTIFICATION_CATEGORY_UNSPECIFIED\x10\x00\x12*\n&NOTIFICATION_CATEGORY_APPROVAL_REQUEST\x10\x01\x12&\n\"NOTIFICATION_CATEGORY_BUDGET_ALERT\x10\x02\x12\'\n#NOTIFICATION_CATEGORY_PII_DETECTION\x10\x03\x12\"\n\x1eNOTIFICATION_CATEGORY_INCIDENT\x10\x04\x12 \n\x1cNOTIFICATION_CATEGORY_REPORT\x10\x05\x12%\n!NOTIFICATION_CATEGORY_INTEGRATION\x10\x06\x12 \n\x1cNOTIFICATION_CATEGORY_DIGEST\x10\x07\x12!\n\x1dNOTIFICATION_CATEGORY_GENERAL\x10\x08*\xc0\x01\n\x0e\x44\x65liveryStatus\x12\x1f\n\x1b\x44\x45LIVERY_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x44\x45LIVERY_STATUS_PENDING\x10\x01\x12\x18\n\x14\x44\x45LIVERY_STATUS_SENT\x10\x02\x12\x1d\n\x19\x44\x45LIVERY_STATUS_DELIVERED\x10\x03\x12\x1a\n\x16\x44\x45LIVERY_STATUS_FAILED\x10\x04\x12\x1b\n\x17\x44\x45LIVERY_STATUS_BOUNCED\x10\x05\x32\xf5\x06\n\x13NotificationService\x12\x45\n\x04Send\x12\x1d.notifications.v1.SendRequest\x1a\x1e.notifications.v1.SendResponse\x12T\n\tSendBatch\x12\".notifications.v1.SendBatchRequest\x1a#.notifications.v1.SendBatchResponse\x12\x63\n\x0eGetPreferences\x12\'.notifications.v1.GetPreferencesRequest\x1a(.notifications.v1.GetPreferencesResponse\x12\x63\n\x0eSetPreferences\x12\'.notifications.v1.SetPreferencesRequest\x1a(.notifications.v1.SetPreferencesResponse\x12Z\n\x0bListHistory\x12$.notifications.v1.ListHistoryRequest\x1a%.notifications.v1.ListHistoryResponse\x12\x66\n\x0fRegisterChannel\x12(.notifications.v1.RegisterChannelRequest\x1a).notifications.v1.RegisterChannelResponse\x12l\n\x11GetDeliveryStatus\x12*.notifications.v1.GetDeliveryStatusRequest\x1a+.notifications.v1.GetDeliveryStatusResponse\x12\x63\n\x0eUpsertTemplate\x12\'.notifications.v1.UpsertTemplateRequest\x1a(.notifications.v1.UpsertTemplateResponse\x12`\n\rListTemplates\x12&.notifications.v1.ListTemplatesRequest\x1a\'.notifications.v1.ListTemplatesResponseBBZ@github.com/evalops/proto/gen/go/notifications/v1;notificationsv1b\x06proto3') +DESCRIPTOR = _descriptor_pool.Default().AddSerializedFile(b'\n$notifications/v1/notifications.proto\x12\x10notifications.v1\x1a\x1fgoogle/protobuf/timestamp.proto\"\xd4\x04\n\x0cNotification\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x03 \x01(\tR\x0brecipientId\x12;\n\x07\x63hannel\x18\x04 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12\x36\n\x08priority\x18\x05 \x01(\x0e\x32\x1a.notifications.v1.PriorityR\x08priority\x12\x18\n\x07subject\x18\x06 \x01(\tR\x07subject\x12\x12\n\x04\x62ody\x18\x07 \x01(\tR\x04\x62ody\x12#\n\rmetadata_json\x18\x08 \x01(\tR\x0cmetadataJson\x12I\n\x0f\x64\x65livery_status\x18\t \x01(\x0e\x32 .notifications.v1.DeliveryStatusR\x0e\x64\x65liveryStatus\x12\x33\n\x07sent_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x06sentAt\x12=\n\x0c\x64\x65livered_at\x18\x0b \x01(\x0b\x32\x1a.google.protobuf.TimestampR\x0b\x64\x65liveredAt\x12\x42\n\x08\x63\x61tegory\x18\x0c \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12#\n\rtemplate_name\x18\r \x01(\tR\x0ctemplateName\"\xaa\x01\n\x0e\x45scalationRule\x12\x45\n\x1fif_unacknowledged_after_seconds\x18\x01 \x01(\x05R\x1cifUnacknowledgedAfterSeconds\x12Q\n\x13\x65scalate_to_channel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x11\x65scalateToChannel\"\xef\x03\n\x17NotificationPreferences\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12J\n\x0f\x64\x65\x66\x61ult_channel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x0e\x64\x65\x66\x61ultChannel\x12*\n\x11quiet_hours_start\x18\x04 \x01(\tR\x0fquietHoursStart\x12&\n\x0fquiet_hours_end\x18\x05 \x01(\tR\rquietHoursEnd\x12K\n\x10\x65scalation_rules\x18\x06 \x03(\x0b\x32 .notifications.v1.EscalationRuleR\x0f\x65scalationRules\x12X\n\x11\x63\x61tegory_channels\x18\x07 \x03(\x0b\x32+.notifications.v1.CategoryChannelPreferenceR\x10\x63\x61tegoryChannels\x12Q\n\x12\x64igest_preferences\x18\x08 \x03(\x0b\x32\".notifications.v1.DigestPreferenceR\x11\x64igestPreferences\"\x9c\x01\n\x19\x43\x61tegoryChannelPreference\x12\x42\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\"\xb3\x03\n\x14NotificationTemplate\x12\x0e\n\x02id\x18\x01 \x01(\tR\x02id\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\x12\x12\n\x04name\x18\x03 \x01(\tR\x04name\x12\x42\n\x08\x63\x61tegory\x18\x04 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x05 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12)\n\x10subject_template\x18\x06 \x01(\tR\x0fsubjectTemplate\x12#\n\rbody_template\x18\x07 \x01(\tR\x0c\x62odyTemplate\x12-\n\x12required_variables\x18\x08 \x03(\tR\x11requiredVariables\x12\x19\n\x08\x62uilt_in\x18\t \x01(\x08R\x07\x62uiltIn\x12\x39\n\nupdated_at\x18\n \x01(\x0b\x32\x1a.google.protobuf.TimestampR\tupdatedAt\"\xd4\x01\n\x10\x44igestPreference\x12\x42\n\x08\x63\x61tegory\x18\x01 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12%\n\x0ewindow_seconds\x18\x03 \x01(\x05R\rwindowSeconds\x12\x18\n\x07\x65nabled\x18\x04 \x01(\x08R\x07\x65nabled\"\xbc\x03\n\x0bSendRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x02 \x01(\tR\x0brecipientId\x12;\n\x07\x63hannel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12\x36\n\x08priority\x18\x04 \x01(\x0e\x32\x1a.notifications.v1.PriorityR\x08priority\x12\x18\n\x07subject\x18\x05 \x01(\tR\x07subject\x12\x12\n\x04\x62ody\x18\x06 \x01(\tR\x04\x62ody\x12#\n\rmetadata_json\x18\x07 \x01(\tR\x0cmetadataJson\x12\x42\n\x08\x63\x61tegory\x18\x08 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12#\n\rtemplate_name\x18\t \x01(\tR\x0ctemplateName\x12\x36\n\x17template_variables_json\x18\n \x01(\tR\x15templateVariablesJson\"R\n\x0cSendResponse\x12\x42\n\x0cnotification\x18\x01 \x01(\x0b\x32\x1e.notifications.v1.NotificationR\x0cnotification\"W\n\x10SendBatchRequest\x12\x43\n\rnotifications\x18\x01 \x03(\x0b\x32\x1d.notifications.v1.SendRequestR\rnotifications\"|\n\x11SendBatchResponse\x12\x44\n\rnotifications\x18\x01 \x03(\x0b\x32\x1e.notifications.v1.NotificationR\rnotifications\x12!\n\x0c\x66\x61iled_count\x18\x02 \x01(\x05R\x0b\x66\x61iledCount\"S\n\x15GetPreferencesRequest\x12\x17\n\x07user_id\x18\x01 \x01(\tR\x06userId\x12!\n\x0cworkspace_id\x18\x02 \x01(\tR\x0bworkspaceId\"e\n\x16GetPreferencesResponse\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"d\n\x15SetPreferencesRequest\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"e\n\x16SetPreferencesResponse\x12K\n\x0bpreferences\x18\x01 \x01(\x0b\x32).notifications.v1.NotificationPreferencesR\x0bpreferences\"\x88\x01\n\x12ListHistoryRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12!\n\x0crecipient_id\x18\x02 \x01(\tR\x0brecipientId\x12\x14\n\x05limit\x18\x03 \x01(\x05R\x05limit\x12\x16\n\x06offset\x18\x04 \x01(\x05R\x06offset\"q\n\x13ListHistoryResponse\x12\x44\n\rnotifications\x18\x01 \x03(\x0b\x32\x1e.notifications.v1.NotificationR\rnotifications\x12\x14\n\x05total\x18\x02 \x01(\x05R\x05total\"\x81\x02\n\x16RegisterChannelRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12;\n\x07\x63hannel\x18\x02 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12L\n\x06\x63onfig\x18\x03 \x03(\x0b\x32\x34.notifications.v1.RegisterChannelRequest.ConfigEntryR\x06\x63onfig\x1a\x39\n\x0b\x43onfigEntry\x12\x10\n\x03key\x18\x01 \x01(\tR\x03key\x12\x14\n\x05value\x18\x02 \x01(\tR\x05value:\x02\x38\x01\"3\n\x17RegisterChannelResponse\x12\x18\n\x07success\x18\x01 \x01(\x08R\x07success\"C\n\x18GetDeliveryStatusRequest\x12\'\n\x0fnotification_id\x18\x01 \x01(\tR\x0enotificationId\"\xbe\x01\n\x19GetDeliveryStatusResponse\x12\x38\n\x06status\x18\x01 \x01(\x0e\x32 .notifications.v1.DeliveryStatusR\x06status\x12\x42\n\x0flast_updated_at\x18\x02 \x01(\x0b\x32\x1a.google.protobuf.TimestampR\rlastUpdatedAt\x12#\n\rerror_message\x18\x03 \x01(\tR\x0c\x65rrorMessage\"[\n\x15UpsertTemplateRequest\x12\x42\n\x08template\x18\x01 \x01(\x0b\x32&.notifications.v1.NotificationTemplateR\x08template\"\\\n\x16UpsertTemplateResponse\x12\x42\n\x08template\x18\x01 \x01(\x0b\x32&.notifications.v1.NotificationTemplateR\x08template\"\xe4\x01\n\x14ListTemplatesRequest\x12!\n\x0cworkspace_id\x18\x01 \x01(\tR\x0bworkspaceId\x12\x42\n\x08\x63\x61tegory\x18\x02 \x01(\x0e\x32&.notifications.v1.NotificationCategoryR\x08\x63\x61tegory\x12;\n\x07\x63hannel\x18\x03 \x01(\x0e\x32!.notifications.v1.DeliveryChannelR\x07\x63hannel\x12(\n\x10include_built_in\x18\x04 \x01(\x08R\x0eincludeBuiltIn\"]\n\x15ListTemplatesResponse\x12\x44\n\ttemplates\x18\x01 \x03(\x0b\x32&.notifications.v1.NotificationTemplateR\ttemplates*\xa6\x01\n\x0f\x44\x65liveryChannel\x12 \n\x1c\x44\x45LIVERY_CHANNEL_UNSPECIFIED\x10\x00\x12\x1a\n\x16\x44\x45LIVERY_CHANNEL_SLACK\x10\x01\x12\x1a\n\x16\x44\x45LIVERY_CHANNEL_EMAIL\x10\x02\x12\x1c\n\x18\x44\x45LIVERY_CHANNEL_WEBHOOK\x10\x03\x12\x1b\n\x17\x44\x45LIVERY_CHANNEL_IN_APP\x10\x04*s\n\x08Priority\x12\x18\n\x14PRIORITY_UNSPECIFIED\x10\x00\x12\x10\n\x0cPRIORITY_LOW\x10\x01\x12\x13\n\x0fPRIORITY_NORMAL\x10\x02\x12\x11\n\rPRIORITY_HIGH\x10\x03\x12\x13\n\x0fPRIORITY_URGENT\x10\x04*\xec\x02\n\x14NotificationCategory\x12%\n!NOTIFICATION_CATEGORY_UNSPECIFIED\x10\x00\x12*\n&NOTIFICATION_CATEGORY_APPROVAL_REQUEST\x10\x01\x12&\n\"NOTIFICATION_CATEGORY_BUDGET_ALERT\x10\x02\x12\'\n#NOTIFICATION_CATEGORY_PII_DETECTION\x10\x03\x12\"\n\x1eNOTIFICATION_CATEGORY_INCIDENT\x10\x04\x12 \n\x1cNOTIFICATION_CATEGORY_REPORT\x10\x05\x12%\n!NOTIFICATION_CATEGORY_INTEGRATION\x10\x06\x12 \n\x1cNOTIFICATION_CATEGORY_DIGEST\x10\x07\x12!\n\x1dNOTIFICATION_CATEGORY_GENERAL\x10\x08*\xdc\x01\n\x0e\x44\x65liveryStatus\x12\x1f\n\x1b\x44\x45LIVERY_STATUS_UNSPECIFIED\x10\x00\x12\x1b\n\x17\x44\x45LIVERY_STATUS_PENDING\x10\x01\x12\x18\n\x14\x44\x45LIVERY_STATUS_SENT\x10\x02\x12\x1d\n\x19\x44\x45LIVERY_STATUS_DELIVERED\x10\x03\x12\x1a\n\x16\x44\x45LIVERY_STATUS_FAILED\x10\x04\x12\x1b\n\x17\x44\x45LIVERY_STATUS_BOUNCED\x10\x05\x12\x1a\n\x16\x44\x45LIVERY_STATUS_QUEUED\x10\x06\x32\xf5\x06\n\x13NotificationService\x12\x45\n\x04Send\x12\x1d.notifications.v1.SendRequest\x1a\x1e.notifications.v1.SendResponse\x12T\n\tSendBatch\x12\".notifications.v1.SendBatchRequest\x1a#.notifications.v1.SendBatchResponse\x12\x63\n\x0eGetPreferences\x12\'.notifications.v1.GetPreferencesRequest\x1a(.notifications.v1.GetPreferencesResponse\x12\x63\n\x0eSetPreferences\x12\'.notifications.v1.SetPreferencesRequest\x1a(.notifications.v1.SetPreferencesResponse\x12Z\n\x0bListHistory\x12$.notifications.v1.ListHistoryRequest\x1a%.notifications.v1.ListHistoryResponse\x12\x66\n\x0fRegisterChannel\x12(.notifications.v1.RegisterChannelRequest\x1a).notifications.v1.RegisterChannelResponse\x12l\n\x11GetDeliveryStatus\x12*.notifications.v1.GetDeliveryStatusRequest\x1a+.notifications.v1.GetDeliveryStatusResponse\x12\x63\n\x0eUpsertTemplate\x12\'.notifications.v1.UpsertTemplateRequest\x1a(.notifications.v1.UpsertTemplateResponse\x12`\n\rListTemplates\x12&.notifications.v1.ListTemplatesRequest\x1a\'.notifications.v1.ListTemplatesResponseBBZ@github.com/evalops/proto/gen/go/notifications/v1;notificationsv1b\x06proto3') _globals = globals() _builder.BuildMessageAndEnumDescriptors(DESCRIPTOR, _globals) @@ -35,62 +35,64 @@ _globals['DESCRIPTOR']._serialized_options = b'Z@github.com/evalops/proto/gen/go/notifications/v1;notificationsv1' _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._loaded_options = None _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._serialized_options = b'8\001' - _globals['_DELIVERYCHANNEL']._serialized_start=4357 - _globals['_DELIVERYCHANNEL']._serialized_end=4523 - _globals['_PRIORITY']._serialized_start=4525 - _globals['_PRIORITY']._serialized_end=4640 - _globals['_NOTIFICATIONCATEGORY']._serialized_start=4643 - _globals['_NOTIFICATIONCATEGORY']._serialized_end=5007 - _globals['_DELIVERYSTATUS']._serialized_start=5010 - _globals['_DELIVERYSTATUS']._serialized_end=5202 + _globals['_DELIVERYCHANNEL']._serialized_start=4655 + _globals['_DELIVERYCHANNEL']._serialized_end=4821 + _globals['_PRIORITY']._serialized_start=4823 + _globals['_PRIORITY']._serialized_end=4938 + _globals['_NOTIFICATIONCATEGORY']._serialized_start=4941 + _globals['_NOTIFICATIONCATEGORY']._serialized_end=5305 + _globals['_DELIVERYSTATUS']._serialized_start=5308 + _globals['_DELIVERYSTATUS']._serialized_end=5528 _globals['_NOTIFICATION']._serialized_start=92 _globals['_NOTIFICATION']._serialized_end=688 _globals['_ESCALATIONRULE']._serialized_start=691 _globals['_ESCALATIONRULE']._serialized_end=861 _globals['_NOTIFICATIONPREFERENCES']._serialized_start=864 - _globals['_NOTIFICATIONPREFERENCES']._serialized_end=1276 - _globals['_CATEGORYCHANNELPREFERENCE']._serialized_start=1279 - _globals['_CATEGORYCHANNELPREFERENCE']._serialized_end=1435 - _globals['_NOTIFICATIONTEMPLATE']._serialized_start=1438 - _globals['_NOTIFICATIONTEMPLATE']._serialized_end=1873 - _globals['_SENDREQUEST']._serialized_start=1876 - _globals['_SENDREQUEST']._serialized_end=2320 - _globals['_SENDRESPONSE']._serialized_start=2322 - _globals['_SENDRESPONSE']._serialized_end=2404 - _globals['_SENDBATCHREQUEST']._serialized_start=2406 - _globals['_SENDBATCHREQUEST']._serialized_end=2493 - _globals['_SENDBATCHRESPONSE']._serialized_start=2495 - _globals['_SENDBATCHRESPONSE']._serialized_end=2619 - _globals['_GETPREFERENCESREQUEST']._serialized_start=2621 - _globals['_GETPREFERENCESREQUEST']._serialized_end=2704 - _globals['_GETPREFERENCESRESPONSE']._serialized_start=2706 - _globals['_GETPREFERENCESRESPONSE']._serialized_end=2807 - _globals['_SETPREFERENCESREQUEST']._serialized_start=2809 - _globals['_SETPREFERENCESREQUEST']._serialized_end=2909 - _globals['_SETPREFERENCESRESPONSE']._serialized_start=2911 - _globals['_SETPREFERENCESRESPONSE']._serialized_end=3012 - _globals['_LISTHISTORYREQUEST']._serialized_start=3015 - _globals['_LISTHISTORYREQUEST']._serialized_end=3151 - _globals['_LISTHISTORYRESPONSE']._serialized_start=3153 - _globals['_LISTHISTORYRESPONSE']._serialized_end=3266 - _globals['_REGISTERCHANNELREQUEST']._serialized_start=3269 - _globals['_REGISTERCHANNELREQUEST']._serialized_end=3526 - _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._serialized_start=3469 - _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._serialized_end=3526 - _globals['_REGISTERCHANNELRESPONSE']._serialized_start=3528 - _globals['_REGISTERCHANNELRESPONSE']._serialized_end=3579 - _globals['_GETDELIVERYSTATUSREQUEST']._serialized_start=3581 - _globals['_GETDELIVERYSTATUSREQUEST']._serialized_end=3648 - _globals['_GETDELIVERYSTATUSRESPONSE']._serialized_start=3651 - _globals['_GETDELIVERYSTATUSRESPONSE']._serialized_end=3841 - _globals['_UPSERTTEMPLATEREQUEST']._serialized_start=3843 - _globals['_UPSERTTEMPLATEREQUEST']._serialized_end=3934 - _globals['_UPSERTTEMPLATERESPONSE']._serialized_start=3936 - _globals['_UPSERTTEMPLATERESPONSE']._serialized_end=4028 - _globals['_LISTTEMPLATESREQUEST']._serialized_start=4031 - _globals['_LISTTEMPLATESREQUEST']._serialized_end=4259 - _globals['_LISTTEMPLATESRESPONSE']._serialized_start=4261 - _globals['_LISTTEMPLATESRESPONSE']._serialized_end=4354 - _globals['_NOTIFICATIONSERVICE']._serialized_start=5205 - _globals['_NOTIFICATIONSERVICE']._serialized_end=6090 + _globals['_NOTIFICATIONPREFERENCES']._serialized_end=1359 + _globals['_CATEGORYCHANNELPREFERENCE']._serialized_start=1362 + _globals['_CATEGORYCHANNELPREFERENCE']._serialized_end=1518 + _globals['_NOTIFICATIONTEMPLATE']._serialized_start=1521 + _globals['_NOTIFICATIONTEMPLATE']._serialized_end=1956 + _globals['_DIGESTPREFERENCE']._serialized_start=1959 + _globals['_DIGESTPREFERENCE']._serialized_end=2171 + _globals['_SENDREQUEST']._serialized_start=2174 + _globals['_SENDREQUEST']._serialized_end=2618 + _globals['_SENDRESPONSE']._serialized_start=2620 + _globals['_SENDRESPONSE']._serialized_end=2702 + _globals['_SENDBATCHREQUEST']._serialized_start=2704 + _globals['_SENDBATCHREQUEST']._serialized_end=2791 + _globals['_SENDBATCHRESPONSE']._serialized_start=2793 + _globals['_SENDBATCHRESPONSE']._serialized_end=2917 + _globals['_GETPREFERENCESREQUEST']._serialized_start=2919 + _globals['_GETPREFERENCESREQUEST']._serialized_end=3002 + _globals['_GETPREFERENCESRESPONSE']._serialized_start=3004 + _globals['_GETPREFERENCESRESPONSE']._serialized_end=3105 + _globals['_SETPREFERENCESREQUEST']._serialized_start=3107 + _globals['_SETPREFERENCESREQUEST']._serialized_end=3207 + _globals['_SETPREFERENCESRESPONSE']._serialized_start=3209 + _globals['_SETPREFERENCESRESPONSE']._serialized_end=3310 + _globals['_LISTHISTORYREQUEST']._serialized_start=3313 + _globals['_LISTHISTORYREQUEST']._serialized_end=3449 + _globals['_LISTHISTORYRESPONSE']._serialized_start=3451 + _globals['_LISTHISTORYRESPONSE']._serialized_end=3564 + _globals['_REGISTERCHANNELREQUEST']._serialized_start=3567 + _globals['_REGISTERCHANNELREQUEST']._serialized_end=3824 + _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._serialized_start=3767 + _globals['_REGISTERCHANNELREQUEST_CONFIGENTRY']._serialized_end=3824 + _globals['_REGISTERCHANNELRESPONSE']._serialized_start=3826 + _globals['_REGISTERCHANNELRESPONSE']._serialized_end=3877 + _globals['_GETDELIVERYSTATUSREQUEST']._serialized_start=3879 + _globals['_GETDELIVERYSTATUSREQUEST']._serialized_end=3946 + _globals['_GETDELIVERYSTATUSRESPONSE']._serialized_start=3949 + _globals['_GETDELIVERYSTATUSRESPONSE']._serialized_end=4139 + _globals['_UPSERTTEMPLATEREQUEST']._serialized_start=4141 + _globals['_UPSERTTEMPLATEREQUEST']._serialized_end=4232 + _globals['_UPSERTTEMPLATERESPONSE']._serialized_start=4234 + _globals['_UPSERTTEMPLATERESPONSE']._serialized_end=4326 + _globals['_LISTTEMPLATESREQUEST']._serialized_start=4329 + _globals['_LISTTEMPLATESREQUEST']._serialized_end=4557 + _globals['_LISTTEMPLATESRESPONSE']._serialized_start=4559 + _globals['_LISTTEMPLATESRESPONSE']._serialized_end=4652 + _globals['_NOTIFICATIONSERVICE']._serialized_start=5531 + _globals['_NOTIFICATIONSERVICE']._serialized_end=6416 # @@protoc_insertion_point(module_scope) diff --git a/gen/ts/notifications/v1/notifications_pb.ts b/gen/ts/notifications/v1/notifications_pb.ts index 02971fe..9e8511b 100644 --- a/gen/ts/notifications/v1/notifications_pb.ts +++ b/gen/ts/notifications/v1/notifications_pb.ts @@ -12,7 +12,7 @@ import type { Message } from "@bufbuild/protobuf"; * Describes the file notifications/v1/notifications.proto. */ export const file_notifications_v1_notifications: GenFile = /*@__PURE__*/ - fileDesc("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEiyQMKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSFAoMcmVjaXBpZW50X2lkGAMgASgJEjIKB2NoYW5uZWwYBCABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIsCghwcmlvcml0eRgFIAEoDjIaLm5vdGlmaWNhdGlvbnMudjEuUHJpb3JpdHkSDwoHc3ViamVjdBgGIAEoCRIMCgRib2R5GAcgASgJEhUKDW1ldGFkYXRhX2pzb24YCCABKAkSOQoPZGVsaXZlcnlfc3RhdHVzGAkgASgOMiAubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeVN0YXR1cxIrCgdzZW50X2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxkZWxpdmVyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCGNhdGVnb3J5GAwgASgOMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRIVCg10ZW1wbGF0ZV9uYW1lGA0gASgJInkKDkVzY2FsYXRpb25SdWxlEicKH2lmX3VuYWNrbm93bGVkZ2VkX2FmdGVyX3NlY29uZHMYASABKAUSPgoTZXNjYWxhdGVfdG9fY2hhbm5lbBgCIAEoDjIhLm5vdGlmaWNhdGlvbnMudjEuRGVsaXZlcnlDaGFubmVsIrQCChdOb3RpZmljYXRpb25QcmVmZXJlbmNlcxIPCgd1c2VyX2lkGAEgASgJEhQKDHdvcmtzcGFjZV9pZBgCIAEoCRI6Cg9kZWZhdWx0X2NoYW5uZWwYAyABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIZChFxdWlldF9ob3Vyc19zdGFydBgEIAEoCRIXCg9xdWlldF9ob3Vyc19lbmQYBSABKAkSOgoQZXNjYWxhdGlvbl9ydWxlcxgGIAMoCzIgLm5vdGlmaWNhdGlvbnMudjEuRXNjYWxhdGlvblJ1bGUSRgoRY2F0ZWdvcnlfY2hhbm5lbHMYByADKAsyKy5ub3RpZmljYXRpb25zLnYxLkNhdGVnb3J5Q2hhbm5lbFByZWZlcmVuY2UiiQEKGUNhdGVnb3J5Q2hhbm5lbFByZWZlcmVuY2USOAoIY2F0ZWdvcnkYASABKA4yJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5EjIKB2NoYW5uZWwYAiABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbCLDAgoUTm90aWZpY2F0aW9uVGVtcGxhdGUSCgoCaWQYASABKAkSFAoMd29ya3NwYWNlX2lkGAIgASgJEgwKBG5hbWUYAyABKAkSOAoIY2F0ZWdvcnkYBCABKA4yJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5EjIKB2NoYW5uZWwYBSABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIYChBzdWJqZWN0X3RlbXBsYXRlGAYgASgJEhUKDWJvZHlfdGVtcGxhdGUYByABKAkSGgoScmVxdWlyZWRfdmFyaWFibGVzGAggAygJEhAKCGJ1aWx0X2luGAkgASgIEi4KCnVwZGF0ZWRfYXQYCiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wIsMCCgtTZW5kUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSFAoMcmVjaXBpZW50X2lkGAIgASgJEjIKB2NoYW5uZWwYAyABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIsCghwcmlvcml0eRgEIAEoDjIaLm5vdGlmaWNhdGlvbnMudjEuUHJpb3JpdHkSDwoHc3ViamVjdBgFIAEoCRIMCgRib2R5GAYgASgJEhUKDW1ldGFkYXRhX2pzb24YByABKAkSOAoIY2F0ZWdvcnkYCCABKA4yJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5EhUKDXRlbXBsYXRlX25hbWUYCSABKAkSHwoXdGVtcGxhdGVfdmFyaWFibGVzX2pzb24YCiABKAkiRAoMU2VuZFJlc3BvbnNlEjQKDG5vdGlmaWNhdGlvbhgBIAEoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uIkgKEFNlbmRCYXRjaFJlcXVlc3QSNAoNbm90aWZpY2F0aW9ucxgBIAMoCzIdLm5vdGlmaWNhdGlvbnMudjEuU2VuZFJlcXVlc3QiYAoRU2VuZEJhdGNoUmVzcG9uc2USNQoNbm90aWZpY2F0aW9ucxgBIAMoCzIeLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uEhQKDGZhaWxlZF9jb3VudBgCIAEoBSI+ChVHZXRQcmVmZXJlbmNlc1JlcXVlc3QSDwoHdXNlcl9pZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkiWAoWR2V0UHJlZmVyZW5jZXNSZXNwb25zZRI+CgtwcmVmZXJlbmNlcxgBIAEoCzIpLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uUHJlZmVyZW5jZXMiVwoVU2V0UHJlZmVyZW5jZXNSZXF1ZXN0Ej4KC3ByZWZlcmVuY2VzGAEgASgLMikubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlcyJYChZTZXRQcmVmZXJlbmNlc1Jlc3BvbnNlEj4KC3ByZWZlcmVuY2VzGAEgASgLMikubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlcyJfChJMaXN0SGlzdG9yeVJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEhQKDHJlY2lwaWVudF9pZBgCIAEoCRINCgVsaW1pdBgDIAEoBRIOCgZvZmZzZXQYBCABKAUiWwoTTGlzdEhpc3RvcnlSZXNwb25zZRI1Cg1ub3RpZmljYXRpb25zGAEgAygLMh4ubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb24SDQoFdG90YWwYAiABKAUi1wEKFlJlZ2lzdGVyQ2hhbm5lbFJlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEjIKB2NoYW5uZWwYAiABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBJECgZjb25maWcYAyADKAsyNC5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyQ2hhbm5lbFJlcXVlc3QuQ29uZmlnRW50cnkaLQoLQ29uZmlnRW50cnkSCwoDa2V5GAEgASgJEg0KBXZhbHVlGAIgASgJOgI4ASIqChdSZWdpc3RlckNoYW5uZWxSZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIIjMKGEdldERlbGl2ZXJ5U3RhdHVzUmVxdWVzdBIXCg9ub3RpZmljYXRpb25faWQYASABKAkimQEKGUdldERlbGl2ZXJ5U3RhdHVzUmVzcG9uc2USMAoGc3RhdHVzGAEgASgOMiAubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeVN0YXR1cxIzCg9sYXN0X3VwZGF0ZWRfYXQYAiABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEhUKDWVycm9yX21lc3NhZ2UYAyABKAkiUQoVVXBzZXJ0VGVtcGxhdGVSZXF1ZXN0EjgKCHRlbXBsYXRlGAEgASgLMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UZW1wbGF0ZSJSChZVcHNlcnRUZW1wbGF0ZVJlc3BvbnNlEjgKCHRlbXBsYXRlGAEgASgLMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UZW1wbGF0ZSK0AQoUTGlzdFRlbXBsYXRlc1JlcXVlc3QSFAoMd29ya3NwYWNlX2lkGAEgASgJEjgKCGNhdGVnb3J5GAIgASgOMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRIyCgdjaGFubmVsGAMgASgOMiEubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeUNoYW5uZWwSGAoQaW5jbHVkZV9idWlsdF9pbhgEIAEoCCJSChVMaXN0VGVtcGxhdGVzUmVzcG9uc2USOQoJdGVtcGxhdGVzGAEgAygLMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25UZW1wbGF0ZSqmAQoPRGVsaXZlcnlDaGFubmVsEiAKHERFTElWRVJZX0NIQU5ORUxfVU5TUEVDSUZJRUQQABIaChZERUxJVkVSWV9DSEFOTkVMX1NMQUNLEAESGgoWREVMSVZFUllfQ0hBTk5FTF9FTUFJTBACEhwKGERFTElWRVJZX0NIQU5ORUxfV0VCSE9PSxADEhsKF0RFTElWRVJZX0NIQU5ORUxfSU5fQVBQEAQqcwoIUHJpb3JpdHkSGAoUUFJJT1JJVFlfVU5TUEVDSUZJRUQQABIQCgxQUklPUklUWV9MT1cQARITCg9QUklPUklUWV9OT1JNQUwQAhIRCg1QUklPUklUWV9ISUdIEAMSEwoPUFJJT1JJVFlfVVJHRU5UEAQq7AIKFE5vdGlmaWNhdGlvbkNhdGVnb3J5EiUKIU5PVElGSUNBVElPTl9DQVRFR09SWV9VTlNQRUNJRklFRBAAEioKJk5PVElGSUNBVElPTl9DQVRFR09SWV9BUFBST1ZBTF9SRVFVRVNUEAESJgoiTk9USUZJQ0FUSU9OX0NBVEVHT1JZX0JVREdFVF9BTEVSVBACEicKI05PVElGSUNBVElPTl9DQVRFR09SWV9QSUlfREVURUNUSU9OEAMSIgoeTk9USUZJQ0FUSU9OX0NBVEVHT1JZX0lOQ0lERU5UEAQSIAocTk9USUZJQ0FUSU9OX0NBVEVHT1JZX1JFUE9SVBAFEiUKIU5PVElGSUNBVElPTl9DQVRFR09SWV9JTlRFR1JBVElPThAGEiAKHE5PVElGSUNBVElPTl9DQVRFR09SWV9ESUdFU1QQBxIhCh1OT1RJRklDQVRJT05fQ0FURUdPUllfR0VORVJBTBAIKsABCg5EZWxpdmVyeVN0YXR1cxIfChtERUxJVkVSWV9TVEFUVVNfVU5TUEVDSUZJRUQQABIbChdERUxJVkVSWV9TVEFUVVNfUEVORElORxABEhgKFERFTElWRVJZX1NUQVRVU19TRU5UEAISHQoZREVMSVZFUllfU1RBVFVTX0RFTElWRVJFRBADEhoKFkRFTElWRVJZX1NUQVRVU19GQUlMRUQQBBIbChdERUxJVkVSWV9TVEFUVVNfQk9VTkNFRBAFMvUGChNOb3RpZmljYXRpb25TZXJ2aWNlEkUKBFNlbmQSHS5ub3RpZmljYXRpb25zLnYxLlNlbmRSZXF1ZXN0Gh4ubm90aWZpY2F0aW9ucy52MS5TZW5kUmVzcG9uc2USVAoJU2VuZEJhdGNoEiIubm90aWZpY2F0aW9ucy52MS5TZW5kQmF0Y2hSZXF1ZXN0GiMubm90aWZpY2F0aW9ucy52MS5TZW5kQmF0Y2hSZXNwb25zZRJjCg5HZXRQcmVmZXJlbmNlcxInLm5vdGlmaWNhdGlvbnMudjEuR2V0UHJlZmVyZW5jZXNSZXF1ZXN0Gigubm90aWZpY2F0aW9ucy52MS5HZXRQcmVmZXJlbmNlc1Jlc3BvbnNlEmMKDlNldFByZWZlcmVuY2VzEicubm90aWZpY2F0aW9ucy52MS5TZXRQcmVmZXJlbmNlc1JlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLlNldFByZWZlcmVuY2VzUmVzcG9uc2USWgoLTGlzdEhpc3RvcnkSJC5ub3RpZmljYXRpb25zLnYxLkxpc3RIaXN0b3J5UmVxdWVzdBolLm5vdGlmaWNhdGlvbnMudjEuTGlzdEhpc3RvcnlSZXNwb25zZRJmCg9SZWdpc3RlckNoYW5uZWwSKC5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyQ2hhbm5lbFJlcXVlc3QaKS5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyQ2hhbm5lbFJlc3BvbnNlEmwKEUdldERlbGl2ZXJ5U3RhdHVzEioubm90aWZpY2F0aW9ucy52MS5HZXREZWxpdmVyeVN0YXR1c1JlcXVlc3QaKy5ub3RpZmljYXRpb25zLnYxLkdldERlbGl2ZXJ5U3RhdHVzUmVzcG9uc2USYwoOVXBzZXJ0VGVtcGxhdGUSJy5ub3RpZmljYXRpb25zLnYxLlVwc2VydFRlbXBsYXRlUmVxdWVzdBooLm5vdGlmaWNhdGlvbnMudjEuVXBzZXJ0VGVtcGxhdGVSZXNwb25zZRJgCg1MaXN0VGVtcGxhdGVzEiYubm90aWZpY2F0aW9ucy52MS5MaXN0VGVtcGxhdGVzUmVxdWVzdBonLm5vdGlmaWNhdGlvbnMudjEuTGlzdFRlbXBsYXRlc1Jlc3BvbnNlQkJaQGdpdGh1Yi5jb20vZXZhbG9wcy9wcm90by9nZW4vZ28vbm90aWZpY2F0aW9ucy92MTtub3RpZmljYXRpb25zdjFiBnByb3RvMw", [file_google_protobuf_timestamp]); + fileDesc("CiRub3RpZmljYXRpb25zL3YxL25vdGlmaWNhdGlvbnMucHJvdG8SEG5vdGlmaWNhdGlvbnMudjEiyQMKDE5vdGlmaWNhdGlvbhIKCgJpZBgBIAEoCRIUCgx3b3Jrc3BhY2VfaWQYAiABKAkSFAoMcmVjaXBpZW50X2lkGAMgASgJEjIKB2NoYW5uZWwYBCABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIsCghwcmlvcml0eRgFIAEoDjIaLm5vdGlmaWNhdGlvbnMudjEuUHJpb3JpdHkSDwoHc3ViamVjdBgGIAEoCRIMCgRib2R5GAcgASgJEhUKDW1ldGFkYXRhX2pzb24YCCABKAkSOQoPZGVsaXZlcnlfc3RhdHVzGAkgASgOMiAubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeVN0YXR1cxIrCgdzZW50X2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcBIwCgxkZWxpdmVyZWRfYXQYCyABKAsyGi5nb29nbGUucHJvdG9idWYuVGltZXN0YW1wEjgKCGNhdGVnb3J5GAwgASgOMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRIVCg10ZW1wbGF0ZV9uYW1lGA0gASgJInkKDkVzY2FsYXRpb25SdWxlEicKH2lmX3VuYWNrbm93bGVkZ2VkX2FmdGVyX3NlY29uZHMYASABKAUSPgoTZXNjYWxhdGVfdG9fY2hhbm5lbBgCIAEoDjIhLm5vdGlmaWNhdGlvbnMudjEuRGVsaXZlcnlDaGFubmVsIvQCChdOb3RpZmljYXRpb25QcmVmZXJlbmNlcxIPCgd1c2VyX2lkGAEgASgJEhQKDHdvcmtzcGFjZV9pZBgCIAEoCRI6Cg9kZWZhdWx0X2NoYW5uZWwYAyABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIZChFxdWlldF9ob3Vyc19zdGFydBgEIAEoCRIXCg9xdWlldF9ob3Vyc19lbmQYBSABKAkSOgoQZXNjYWxhdGlvbl9ydWxlcxgGIAMoCzIgLm5vdGlmaWNhdGlvbnMudjEuRXNjYWxhdGlvblJ1bGUSRgoRY2F0ZWdvcnlfY2hhbm5lbHMYByADKAsyKy5ub3RpZmljYXRpb25zLnYxLkNhdGVnb3J5Q2hhbm5lbFByZWZlcmVuY2USPgoSZGlnZXN0X3ByZWZlcmVuY2VzGAggAygLMiIubm90aWZpY2F0aW9ucy52MS5EaWdlc3RQcmVmZXJlbmNlIokBChlDYXRlZ29yeUNoYW5uZWxQcmVmZXJlbmNlEjgKCGNhdGVnb3J5GAEgASgOMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRIyCgdjaGFubmVsGAIgASgOMiEubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeUNoYW5uZWwiwwIKFE5vdGlmaWNhdGlvblRlbXBsYXRlEgoKAmlkGAEgASgJEhQKDHdvcmtzcGFjZV9pZBgCIAEoCRIMCgRuYW1lGAMgASgJEjgKCGNhdGVnb3J5GAQgASgOMiYubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25DYXRlZ29yeRIyCgdjaGFubmVsGAUgASgOMiEubm90aWZpY2F0aW9ucy52MS5EZWxpdmVyeUNoYW5uZWwSGAoQc3ViamVjdF90ZW1wbGF0ZRgGIAEoCRIVCg1ib2R5X3RlbXBsYXRlGAcgASgJEhoKEnJlcXVpcmVkX3ZhcmlhYmxlcxgIIAMoCRIQCghidWlsdF9pbhgJIAEoCBIuCgp1cGRhdGVkX2F0GAogASgLMhouZ29vZ2xlLnByb3RvYnVmLlRpbWVzdGFtcCKpAQoQRGlnZXN0UHJlZmVyZW5jZRI4CghjYXRlZ29yeRgBIAEoDjImLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uQ2F0ZWdvcnkSMgoHY2hhbm5lbBgCIAEoDjIhLm5vdGlmaWNhdGlvbnMudjEuRGVsaXZlcnlDaGFubmVsEhYKDndpbmRvd19zZWNvbmRzGAMgASgFEg8KB2VuYWJsZWQYBCABKAgiwwIKC1NlbmRSZXF1ZXN0EhQKDHdvcmtzcGFjZV9pZBgBIAEoCRIUCgxyZWNpcGllbnRfaWQYAiABKAkSMgoHY2hhbm5lbBgDIAEoDjIhLm5vdGlmaWNhdGlvbnMudjEuRGVsaXZlcnlDaGFubmVsEiwKCHByaW9yaXR5GAQgASgOMhoubm90aWZpY2F0aW9ucy52MS5Qcmlvcml0eRIPCgdzdWJqZWN0GAUgASgJEgwKBGJvZHkYBiABKAkSFQoNbWV0YWRhdGFfanNvbhgHIAEoCRI4CghjYXRlZ29yeRgIIAEoDjImLm5vdGlmaWNhdGlvbnMudjEuTm90aWZpY2F0aW9uQ2F0ZWdvcnkSFQoNdGVtcGxhdGVfbmFtZRgJIAEoCRIfChd0ZW1wbGF0ZV92YXJpYWJsZXNfanNvbhgKIAEoCSJECgxTZW5kUmVzcG9uc2USNAoMbm90aWZpY2F0aW9uGAEgASgLMh4ubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb24iSAoQU2VuZEJhdGNoUmVxdWVzdBI0Cg1ub3RpZmljYXRpb25zGAEgAygLMh0ubm90aWZpY2F0aW9ucy52MS5TZW5kUmVxdWVzdCJgChFTZW5kQmF0Y2hSZXNwb25zZRI1Cg1ub3RpZmljYXRpb25zGAEgAygLMh4ubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb24SFAoMZmFpbGVkX2NvdW50GAIgASgFIj4KFUdldFByZWZlcmVuY2VzUmVxdWVzdBIPCgd1c2VyX2lkGAEgASgJEhQKDHdvcmtzcGFjZV9pZBgCIAEoCSJYChZHZXRQcmVmZXJlbmNlc1Jlc3BvbnNlEj4KC3ByZWZlcmVuY2VzGAEgASgLMikubm90aWZpY2F0aW9ucy52MS5Ob3RpZmljYXRpb25QcmVmZXJlbmNlcyJXChVTZXRQcmVmZXJlbmNlc1JlcXVlc3QSPgoLcHJlZmVyZW5jZXMYASABKAsyKS5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2VzIlgKFlNldFByZWZlcmVuY2VzUmVzcG9uc2USPgoLcHJlZmVyZW5jZXMYASABKAsyKS5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblByZWZlcmVuY2VzIl8KEkxpc3RIaXN0b3J5UmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSFAoMcmVjaXBpZW50X2lkGAIgASgJEg0KBWxpbWl0GAMgASgFEg4KBm9mZnNldBgEIAEoBSJbChNMaXN0SGlzdG9yeVJlc3BvbnNlEjUKDW5vdGlmaWNhdGlvbnMYASADKAsyHi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbhINCgV0b3RhbBgCIAEoBSLXAQoWUmVnaXN0ZXJDaGFubmVsUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSMgoHY2hhbm5lbBgCIAEoDjIhLm5vdGlmaWNhdGlvbnMudjEuRGVsaXZlcnlDaGFubmVsEkQKBmNvbmZpZxgDIAMoCzI0Lm5vdGlmaWNhdGlvbnMudjEuUmVnaXN0ZXJDaGFubmVsUmVxdWVzdC5Db25maWdFbnRyeRotCgtDb25maWdFbnRyeRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAk6AjgBIioKF1JlZ2lzdGVyQ2hhbm5lbFJlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgiMwoYR2V0RGVsaXZlcnlTdGF0dXNSZXF1ZXN0EhcKD25vdGlmaWNhdGlvbl9pZBgBIAEoCSKZAQoZR2V0RGVsaXZlcnlTdGF0dXNSZXNwb25zZRIwCgZzdGF0dXMYASABKA4yIC5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5U3RhdHVzEjMKD2xhc3RfdXBkYXRlZF9hdBgCIAEoCzIaLmdvb2dsZS5wcm90b2J1Zi5UaW1lc3RhbXASFQoNZXJyb3JfbWVzc2FnZRgDIAEoCSJRChVVcHNlcnRUZW1wbGF0ZVJlcXVlc3QSOAoIdGVtcGxhdGUYASABKAsyJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblRlbXBsYXRlIlIKFlVwc2VydFRlbXBsYXRlUmVzcG9uc2USOAoIdGVtcGxhdGUYASABKAsyJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblRlbXBsYXRlIrQBChRMaXN0VGVtcGxhdGVzUmVxdWVzdBIUCgx3b3Jrc3BhY2VfaWQYASABKAkSOAoIY2F0ZWdvcnkYAiABKA4yJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvbkNhdGVnb3J5EjIKB2NoYW5uZWwYAyABKA4yIS5ub3RpZmljYXRpb25zLnYxLkRlbGl2ZXJ5Q2hhbm5lbBIYChBpbmNsdWRlX2J1aWx0X2luGAQgASgIIlIKFUxpc3RUZW1wbGF0ZXNSZXNwb25zZRI5Cgl0ZW1wbGF0ZXMYASADKAsyJi5ub3RpZmljYXRpb25zLnYxLk5vdGlmaWNhdGlvblRlbXBsYXRlKqYBCg9EZWxpdmVyeUNoYW5uZWwSIAocREVMSVZFUllfQ0hBTk5FTF9VTlNQRUNJRklFRBAAEhoKFkRFTElWRVJZX0NIQU5ORUxfU0xBQ0sQARIaChZERUxJVkVSWV9DSEFOTkVMX0VNQUlMEAISHAoYREVMSVZFUllfQ0hBTk5FTF9XRUJIT09LEAMSGwoXREVMSVZFUllfQ0hBTk5FTF9JTl9BUFAQBCpzCghQcmlvcml0eRIYChRQUklPUklUWV9VTlNQRUNJRklFRBAAEhAKDFBSSU9SSVRZX0xPVxABEhMKD1BSSU9SSVRZX05PUk1BTBACEhEKDVBSSU9SSVRZX0hJR0gQAxITCg9QUklPUklUWV9VUkdFTlQQBCrsAgoUTm90aWZpY2F0aW9uQ2F0ZWdvcnkSJQohTk9USUZJQ0FUSU9OX0NBVEVHT1JZX1VOU1BFQ0lGSUVEEAASKgomTk9USUZJQ0FUSU9OX0NBVEVHT1JZX0FQUFJPVkFMX1JFUVVFU1QQARImCiJOT1RJRklDQVRJT05fQ0FURUdPUllfQlVER0VUX0FMRVJUEAISJwojTk9USUZJQ0FUSU9OX0NBVEVHT1JZX1BJSV9ERVRFQ1RJT04QAxIiCh5OT1RJRklDQVRJT05fQ0FURUdPUllfSU5DSURFTlQQBBIgChxOT1RJRklDQVRJT05fQ0FURUdPUllfUkVQT1JUEAUSJQohTk9USUZJQ0FUSU9OX0NBVEVHT1JZX0lOVEVHUkFUSU9OEAYSIAocTk9USUZJQ0FUSU9OX0NBVEVHT1JZX0RJR0VTVBAHEiEKHU5PVElGSUNBVElPTl9DQVRFR09SWV9HRU5FUkFMEAgq3AEKDkRlbGl2ZXJ5U3RhdHVzEh8KG0RFTElWRVJZX1NUQVRVU19VTlNQRUNJRklFRBAAEhsKF0RFTElWRVJZX1NUQVRVU19QRU5ESU5HEAESGAoUREVMSVZFUllfU1RBVFVTX1NFTlQQAhIdChlERUxJVkVSWV9TVEFUVVNfREVMSVZFUkVEEAMSGgoWREVMSVZFUllfU1RBVFVTX0ZBSUxFRBAEEhsKF0RFTElWRVJZX1NUQVRVU19CT1VOQ0VEEAUSGgoWREVMSVZFUllfU1RBVFVTX1FVRVVFRBAGMvUGChNOb3RpZmljYXRpb25TZXJ2aWNlEkUKBFNlbmQSHS5ub3RpZmljYXRpb25zLnYxLlNlbmRSZXF1ZXN0Gh4ubm90aWZpY2F0aW9ucy52MS5TZW5kUmVzcG9uc2USVAoJU2VuZEJhdGNoEiIubm90aWZpY2F0aW9ucy52MS5TZW5kQmF0Y2hSZXF1ZXN0GiMubm90aWZpY2F0aW9ucy52MS5TZW5kQmF0Y2hSZXNwb25zZRJjCg5HZXRQcmVmZXJlbmNlcxInLm5vdGlmaWNhdGlvbnMudjEuR2V0UHJlZmVyZW5jZXNSZXF1ZXN0Gigubm90aWZpY2F0aW9ucy52MS5HZXRQcmVmZXJlbmNlc1Jlc3BvbnNlEmMKDlNldFByZWZlcmVuY2VzEicubm90aWZpY2F0aW9ucy52MS5TZXRQcmVmZXJlbmNlc1JlcXVlc3QaKC5ub3RpZmljYXRpb25zLnYxLlNldFByZWZlcmVuY2VzUmVzcG9uc2USWgoLTGlzdEhpc3RvcnkSJC5ub3RpZmljYXRpb25zLnYxLkxpc3RIaXN0b3J5UmVxdWVzdBolLm5vdGlmaWNhdGlvbnMudjEuTGlzdEhpc3RvcnlSZXNwb25zZRJmCg9SZWdpc3RlckNoYW5uZWwSKC5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyQ2hhbm5lbFJlcXVlc3QaKS5ub3RpZmljYXRpb25zLnYxLlJlZ2lzdGVyQ2hhbm5lbFJlc3BvbnNlEmwKEUdldERlbGl2ZXJ5U3RhdHVzEioubm90aWZpY2F0aW9ucy52MS5HZXREZWxpdmVyeVN0YXR1c1JlcXVlc3QaKy5ub3RpZmljYXRpb25zLnYxLkdldERlbGl2ZXJ5U3RhdHVzUmVzcG9uc2USYwoOVXBzZXJ0VGVtcGxhdGUSJy5ub3RpZmljYXRpb25zLnYxLlVwc2VydFRlbXBsYXRlUmVxdWVzdBooLm5vdGlmaWNhdGlvbnMudjEuVXBzZXJ0VGVtcGxhdGVSZXNwb25zZRJgCg1MaXN0VGVtcGxhdGVzEiYubm90aWZpY2F0aW9ucy52MS5MaXN0VGVtcGxhdGVzUmVxdWVzdBonLm5vdGlmaWNhdGlvbnMudjEuTGlzdFRlbXBsYXRlc1Jlc3BvbnNlQkJaQGdpdGh1Yi5jb20vZXZhbG9wcy9wcm90by9nZW4vZ28vbm90aWZpY2F0aW9ucy92MTtub3RpZmljYXRpb25zdjFiBnByb3RvMw", [file_google_protobuf_timestamp]); /** * Notification is the canonical notification record. @@ -157,6 +157,11 @@ export type NotificationPreferences = Message<"notifications.v1.NotificationPref * @generated from field: repeated notifications.v1.CategoryChannelPreference category_channels = 7; */ categoryChannels: CategoryChannelPreference[]; + + /** + * @generated from field: repeated notifications.v1.DigestPreference digest_preferences = 8; + */ + digestPreferences: DigestPreference[]; }; /** @@ -254,6 +259,40 @@ export type NotificationTemplate = Message<"notifications.v1.NotificationTemplat export const NotificationTemplateSchema: GenMessage = /*@__PURE__*/ messageDesc(file_notifications_v1_notifications, 4); +/** + * DigestPreference controls batching for a category/channel pair. + * + * @generated from message notifications.v1.DigestPreference + */ +export type DigestPreference = Message<"notifications.v1.DigestPreference"> & { + /** + * @generated from field: notifications.v1.NotificationCategory category = 1; + */ + category: NotificationCategory; + + /** + * @generated from field: notifications.v1.DeliveryChannel channel = 2; + */ + channel: DeliveryChannel; + + /** + * @generated from field: int32 window_seconds = 3; + */ + windowSeconds: number; + + /** + * @generated from field: bool enabled = 4; + */ + enabled: boolean; +}; + +/** + * Describes the message notifications.v1.DigestPreference. + * Use `create(DigestPreferenceSchema)` to create a new message. + */ +export const DigestPreferenceSchema: GenMessage = /*@__PURE__*/ + messageDesc(file_notifications_v1_notifications, 5); + /** * @generated from message notifications.v1.SendRequest */ @@ -317,7 +356,7 @@ export type SendRequest = Message<"notifications.v1.SendRequest"> & { * Use `create(SendRequestSchema)` to create a new message. */ export const SendRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 5); + messageDesc(file_notifications_v1_notifications, 6); /** * @generated from message notifications.v1.SendResponse @@ -334,7 +373,7 @@ export type SendResponse = Message<"notifications.v1.SendResponse"> & { * Use `create(SendResponseSchema)` to create a new message. */ export const SendResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 6); + messageDesc(file_notifications_v1_notifications, 7); /** * @generated from message notifications.v1.SendBatchRequest @@ -351,7 +390,7 @@ export type SendBatchRequest = Message<"notifications.v1.SendBatchRequest"> & { * Use `create(SendBatchRequestSchema)` to create a new message. */ export const SendBatchRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 7); + messageDesc(file_notifications_v1_notifications, 8); /** * @generated from message notifications.v1.SendBatchResponse @@ -373,7 +412,7 @@ export type SendBatchResponse = Message<"notifications.v1.SendBatchResponse"> & * Use `create(SendBatchResponseSchema)` to create a new message. */ export const SendBatchResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 8); + messageDesc(file_notifications_v1_notifications, 9); /** * @generated from message notifications.v1.GetPreferencesRequest @@ -395,7 +434,7 @@ export type GetPreferencesRequest = Message<"notifications.v1.GetPreferencesRequ * Use `create(GetPreferencesRequestSchema)` to create a new message. */ export const GetPreferencesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 9); + messageDesc(file_notifications_v1_notifications, 10); /** * @generated from message notifications.v1.GetPreferencesResponse @@ -412,7 +451,7 @@ export type GetPreferencesResponse = Message<"notifications.v1.GetPreferencesRes * Use `create(GetPreferencesResponseSchema)` to create a new message. */ export const GetPreferencesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 10); + messageDesc(file_notifications_v1_notifications, 11); /** * @generated from message notifications.v1.SetPreferencesRequest @@ -429,7 +468,7 @@ export type SetPreferencesRequest = Message<"notifications.v1.SetPreferencesRequ * Use `create(SetPreferencesRequestSchema)` to create a new message. */ export const SetPreferencesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 11); + messageDesc(file_notifications_v1_notifications, 12); /** * @generated from message notifications.v1.SetPreferencesResponse @@ -446,7 +485,7 @@ export type SetPreferencesResponse = Message<"notifications.v1.SetPreferencesRes * Use `create(SetPreferencesResponseSchema)` to create a new message. */ export const SetPreferencesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 12); + messageDesc(file_notifications_v1_notifications, 13); /** * @generated from message notifications.v1.ListHistoryRequest @@ -478,7 +517,7 @@ export type ListHistoryRequest = Message<"notifications.v1.ListHistoryRequest"> * Use `create(ListHistoryRequestSchema)` to create a new message. */ export const ListHistoryRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 13); + messageDesc(file_notifications_v1_notifications, 14); /** * @generated from message notifications.v1.ListHistoryResponse @@ -500,7 +539,7 @@ export type ListHistoryResponse = Message<"notifications.v1.ListHistoryResponse" * Use `create(ListHistoryResponseSchema)` to create a new message. */ export const ListHistoryResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 14); + messageDesc(file_notifications_v1_notifications, 15); /** * @generated from message notifications.v1.RegisterChannelRequest @@ -527,7 +566,7 @@ export type RegisterChannelRequest = Message<"notifications.v1.RegisterChannelRe * Use `create(RegisterChannelRequestSchema)` to create a new message. */ export const RegisterChannelRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 15); + messageDesc(file_notifications_v1_notifications, 16); /** * @generated from message notifications.v1.RegisterChannelResponse @@ -544,7 +583,7 @@ export type RegisterChannelResponse = Message<"notifications.v1.RegisterChannelR * Use `create(RegisterChannelResponseSchema)` to create a new message. */ export const RegisterChannelResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 16); + messageDesc(file_notifications_v1_notifications, 17); /** * @generated from message notifications.v1.GetDeliveryStatusRequest @@ -561,7 +600,7 @@ export type GetDeliveryStatusRequest = Message<"notifications.v1.GetDeliveryStat * Use `create(GetDeliveryStatusRequestSchema)` to create a new message. */ export const GetDeliveryStatusRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 17); + messageDesc(file_notifications_v1_notifications, 18); /** * @generated from message notifications.v1.GetDeliveryStatusResponse @@ -588,7 +627,7 @@ export type GetDeliveryStatusResponse = Message<"notifications.v1.GetDeliverySta * Use `create(GetDeliveryStatusResponseSchema)` to create a new message. */ export const GetDeliveryStatusResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 18); + messageDesc(file_notifications_v1_notifications, 19); /** * @generated from message notifications.v1.UpsertTemplateRequest @@ -605,7 +644,7 @@ export type UpsertTemplateRequest = Message<"notifications.v1.UpsertTemplateRequ * Use `create(UpsertTemplateRequestSchema)` to create a new message. */ export const UpsertTemplateRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 19); + messageDesc(file_notifications_v1_notifications, 20); /** * @generated from message notifications.v1.UpsertTemplateResponse @@ -622,7 +661,7 @@ export type UpsertTemplateResponse = Message<"notifications.v1.UpsertTemplateRes * Use `create(UpsertTemplateResponseSchema)` to create a new message. */ export const UpsertTemplateResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 20); + messageDesc(file_notifications_v1_notifications, 21); /** * @generated from message notifications.v1.ListTemplatesRequest @@ -654,7 +693,7 @@ export type ListTemplatesRequest = Message<"notifications.v1.ListTemplatesReques * Use `create(ListTemplatesRequestSchema)` to create a new message. */ export const ListTemplatesRequestSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 21); + messageDesc(file_notifications_v1_notifications, 22); /** * @generated from message notifications.v1.ListTemplatesResponse @@ -671,7 +710,7 @@ export type ListTemplatesResponse = Message<"notifications.v1.ListTemplatesRespo * Use `create(ListTemplatesResponseSchema)` to create a new message. */ export const ListTemplatesResponseSchema: GenMessage = /*@__PURE__*/ - messageDesc(file_notifications_v1_notifications, 22); + messageDesc(file_notifications_v1_notifications, 23); /** * DeliveryChannel identifies the notification delivery channel. @@ -842,6 +881,11 @@ export enum DeliveryStatus { * @generated from enum value: DELIVERY_STATUS_BOUNCED = 5; */ BOUNCED = 5, + + /** + * @generated from enum value: DELIVERY_STATUS_QUEUED = 6; + */ + QUEUED = 6, } /** diff --git a/proto/notifications/v1/notifications.proto b/proto/notifications/v1/notifications.proto index 0d5e55d..635eaa6 100644 --- a/proto/notifications/v1/notifications.proto +++ b/proto/notifications/v1/notifications.proto @@ -58,6 +58,7 @@ enum DeliveryStatus { DELIVERY_STATUS_DELIVERED = 3; DELIVERY_STATUS_FAILED = 4; DELIVERY_STATUS_BOUNCED = 5; + DELIVERY_STATUS_QUEUED = 6; } // Notification is the canonical notification record. @@ -92,6 +93,7 @@ message NotificationPreferences { string quiet_hours_end = 5; repeated EscalationRule escalation_rules = 6; repeated CategoryChannelPreference category_channels = 7; + repeated DigestPreference digest_preferences = 8; } // CategoryChannelPreference overrides delivery routing for a specific category. @@ -114,6 +116,14 @@ message NotificationTemplate { google.protobuf.Timestamp updated_at = 10; } +// DigestPreference controls batching for a category/channel pair. +message DigestPreference { + NotificationCategory category = 1; + DeliveryChannel channel = 2; + int32 window_seconds = 3; + bool enabled = 4; +} + message SendRequest { string workspace_id = 1; string recipient_id = 2;