diff --git a/CHANGELOG.md b/CHANGELOG.md index e85799ce..c65621db 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -357,4 +357,10 @@ Release 1.8.11 New Features: #### resource/coralogix_dashboard * Adding support for `markdown` and `horizonal_bar_chart` widgets. -* Adding support for `color_scheme` and `sort_by` for `bar_chart`. \ No newline at end of file +* Adding support for `color_scheme` and `sort_by` for `bar_chart`. + +Release 1.9.0 +Breaking Changes: +#### resource/coralogix_webhook +* All webhook types changed from `TypeList` to `SingleNestedAttribute` e.g. - `slack { }` => `slack = { }`. +* Linkage between webhook and alert was changed from webhook's `id` to webhook's `external_id`. e.g.- `integration_id = coralogix_webhook.slack_webhook.id` => `integration_id = coralogix_webhook.slack_webhook.external_id` \ No newline at end of file diff --git a/coralogix/clientset/grpc/webhooks/audit_log.pb.go b/coralogix/clientset/grpc/webhooks/audit_log.pb.go new file mode 100644 index 00000000..e81ce41e --- /dev/null +++ b/coralogix/clientset/grpc/webhooks/audit_log.pb.go @@ -0,0 +1,182 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.8 +// source: com/coralogix/outgoing_webhooks/v1/audit_log.proto + +package __ + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + descriptorpb "google.golang.org/protobuf/types/descriptorpb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type AuditLogDescription struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Description *string `protobuf:"bytes,1,opt,name=description,proto3,oneof" json:"description,omitempty"` +} + +func (x *AuditLogDescription) Reset() { + *x = AuditLogDescription{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *AuditLogDescription) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AuditLogDescription) ProtoMessage() {} + +func (x *AuditLogDescription) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use AuditLogDescription.ProtoReflect.Descriptor instead. +func (*AuditLogDescription) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescGZIP(), []int{0} +} + +func (x *AuditLogDescription) GetDescription() string { + if x != nil && x.Description != nil { + return *x.Description + } + return "" +} + +var file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_extTypes = []protoimpl.ExtensionInfo{ + { + ExtendedType: (*descriptorpb.MethodOptions)(nil), + ExtensionType: (*AuditLogDescription)(nil), + Field: 5005, + Name: "com.coralogix.outgoing_webhooks.v1.audit_log_description", + Tag: "bytes,5005,opt,name=audit_log_description", + Filename: "com/coralogix/outgoing_webhooks/v1/audit_log.proto", + }, +} + +// Extension fields to descriptorpb.MethodOptions. +var ( + // optional com.coralogix.outgoing_webhooks.v1.AuditLogDescription audit_log_description = 5005; + E_AuditLogDescription = &file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_extTypes[0] +) + +var File_com_coralogix_outgoing_webhooks_v1_audit_log_proto protoreflect.FileDescriptor + +var file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDesc = []byte{ + 0x0a, 0x32, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2f, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x64, 0x69, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x4c, 0x0a, 0x13, 0x41, 0x75, + 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x12, 0x25, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, + 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73, + 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x3a, 0x8f, 0x01, 0x0a, 0x15, 0x61, 0x75, 0x64, + 0x69, 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x12, 0x1e, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x4f, 0x70, 0x74, 0x69, 0x6f, + 0x6e, 0x73, 0x18, 0x8d, 0x27, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x41, + 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, + 0x6f, 0x6e, 0x52, 0x13, 0x61, 0x75, 0x64, 0x69, 0x74, 0x4c, 0x6f, 0x67, 0x44, 0x65, 0x73, 0x63, + 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x88, 0x01, 0x01, 0x42, 0x03, 0x5a, 0x01, 0x2e, 0x62, + 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescOnce sync.Once + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescData = file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDesc +) + +func file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescGZIP() []byte { + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescOnce.Do(func() { + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescData = protoimpl.X.CompressGZIP(file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescData) + }) + return file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDescData +} + +var file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes = make([]protoimpl.MessageInfo, 1) +var file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_goTypes = []interface{}{ + (*AuditLogDescription)(nil), // 0: com.coralogix.outgoing_webhooks.v1.AuditLogDescription + (*descriptorpb.MethodOptions)(nil), // 1: google.protobuf.MethodOptions +} +var file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_depIdxs = []int32{ + 1, // 0: com.coralogix.outgoing_webhooks.v1.audit_log_description:extendee -> google.protobuf.MethodOptions + 0, // 1: com.coralogix.outgoing_webhooks.v1.audit_log_description:type_name -> com.coralogix.outgoing_webhooks.v1.AuditLogDescription + 2, // [2:2] is the sub-list for method output_type + 2, // [2:2] is the sub-list for method input_type + 1, // [1:2] is the sub-list for extension type_name + 0, // [0:1] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_init() } +func file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_init() { + if File_com_coralogix_outgoing_webhooks_v1_audit_log_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*AuditLogDescription); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes[0].OneofWrappers = []interface{}{} + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDesc, + NumEnums: 0, + NumMessages: 1, + NumExtensions: 1, + NumServices: 0, + }, + GoTypes: file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_goTypes, + DependencyIndexes: file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_depIdxs, + MessageInfos: file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_msgTypes, + ExtensionInfos: file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_extTypes, + }.Build() + File_com_coralogix_outgoing_webhooks_v1_audit_log_proto = out.File + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_rawDesc = nil + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_goTypes = nil + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_depIdxs = nil +} diff --git a/coralogix/clientset/grpc/webhooks/outgoing_webhook.pb.go b/coralogix/clientset/grpc/webhooks/outgoing_webhook.pb.go new file mode 100644 index 00000000..638ee158 --- /dev/null +++ b/coralogix/clientset/grpc/webhooks/outgoing_webhook.pb.go @@ -0,0 +1,2021 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.8 +// source: com/coralogix/outgoing_webhooks/v1/outgoing_webhook.proto + +package __ + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + timestamppb "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type WebhookType int32 + +const ( + WebhookType_UNKNOWN WebhookType = 0 + WebhookType_GENERIC WebhookType = 1 + WebhookType_SLACK WebhookType = 2 + WebhookType_PAGERDUTY WebhookType = 3 + WebhookType_SEND_LOG WebhookType = 4 + WebhookType_EMAIL_GROUP WebhookType = 5 + WebhookType_MICROSOFT_TEAMS WebhookType = 6 + WebhookType_JIRA WebhookType = 7 + WebhookType_OPSGENIE WebhookType = 8 + WebhookType_DEMISTO WebhookType = 9 +) + +// Enum value maps for WebhookType. +var ( + WebhookType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "GENERIC", + 2: "SLACK", + 3: "PAGERDUTY", + 4: "SEND_LOG", + 5: "EMAIL_GROUP", + 6: "MICROSOFT_TEAMS", + 7: "JIRA", + 8: "OPSGENIE", + 9: "DEMISTO", + } + WebhookType_value = map[string]int32{ + "UNKNOWN": 0, + "GENERIC": 1, + "SLACK": 2, + "PAGERDUTY": 3, + "SEND_LOG": 4, + "EMAIL_GROUP": 5, + "MICROSOFT_TEAMS": 6, + "JIRA": 7, + "OPSGENIE": 8, + "DEMISTO": 9, + } +) + +func (x WebhookType) Enum() *WebhookType { + p := new(WebhookType) + *p = x + return p +} + +func (x WebhookType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (WebhookType) Descriptor() protoreflect.EnumDescriptor { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[0].Descriptor() +} + +func (WebhookType) Type() protoreflect.EnumType { + return &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[0] +} + +func (x WebhookType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use WebhookType.Descriptor instead. +func (WebhookType) EnumDescriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{0} +} + +type GenericWebhookConfig_MethodType int32 + +const ( + GenericWebhookConfig_UNKNOWN GenericWebhookConfig_MethodType = 0 + GenericWebhookConfig_GET GenericWebhookConfig_MethodType = 1 + GenericWebhookConfig_POST GenericWebhookConfig_MethodType = 2 + GenericWebhookConfig_PUT GenericWebhookConfig_MethodType = 3 +) + +// Enum value maps for GenericWebhookConfig_MethodType. +var ( + GenericWebhookConfig_MethodType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "GET", + 2: "POST", + 3: "PUT", + } + GenericWebhookConfig_MethodType_value = map[string]int32{ + "UNKNOWN": 0, + "GET": 1, + "POST": 2, + "PUT": 3, + } +) + +func (x GenericWebhookConfig_MethodType) Enum() *GenericWebhookConfig_MethodType { + p := new(GenericWebhookConfig_MethodType) + *p = x + return p +} + +func (x GenericWebhookConfig_MethodType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (GenericWebhookConfig_MethodType) Descriptor() protoreflect.EnumDescriptor { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[1].Descriptor() +} + +func (GenericWebhookConfig_MethodType) Type() protoreflect.EnumType { + return &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[1] +} + +func (x GenericWebhookConfig_MethodType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use GenericWebhookConfig_MethodType.Descriptor instead. +func (GenericWebhookConfig_MethodType) EnumDescriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{0, 0} +} + +type SlackConfig_DigestType int32 + +const ( + SlackConfig_UNKNOWN SlackConfig_DigestType = 0 + SlackConfig_ERROR_AND_CRITICAL_LOGS SlackConfig_DigestType = 1 + SlackConfig_FLOW_ANOMALIES SlackConfig_DigestType = 2 + SlackConfig_SPIKE_ANOMALIES SlackConfig_DigestType = 3 + SlackConfig_DATA_USAGE SlackConfig_DigestType = 4 +) + +// Enum value maps for SlackConfig_DigestType. +var ( + SlackConfig_DigestType_name = map[int32]string{ + 0: "UNKNOWN", + 1: "ERROR_AND_CRITICAL_LOGS", + 2: "FLOW_ANOMALIES", + 3: "SPIKE_ANOMALIES", + 4: "DATA_USAGE", + } + SlackConfig_DigestType_value = map[string]int32{ + "UNKNOWN": 0, + "ERROR_AND_CRITICAL_LOGS": 1, + "FLOW_ANOMALIES": 2, + "SPIKE_ANOMALIES": 3, + "DATA_USAGE": 4, + } +) + +func (x SlackConfig_DigestType) Enum() *SlackConfig_DigestType { + p := new(SlackConfig_DigestType) + *p = x + return p +} + +func (x SlackConfig_DigestType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SlackConfig_DigestType) Descriptor() protoreflect.EnumDescriptor { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[2].Descriptor() +} + +func (SlackConfig_DigestType) Type() protoreflect.EnumType { + return &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[2] +} + +func (x SlackConfig_DigestType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SlackConfig_DigestType.Descriptor instead. +func (SlackConfig_DigestType) EnumDescriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{1, 0} +} + +type GenericWebhookConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Method GenericWebhookConfig_MethodType `protobuf:"varint,2,opt,name=method,proto3,enum=com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig_MethodType" json:"method,omitempty"` + Headers map[string]string `protobuf:"bytes,3,rep,name=headers,proto3" json:"headers,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` + Payload *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *GenericWebhookConfig) Reset() { + *x = GenericWebhookConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GenericWebhookConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GenericWebhookConfig) ProtoMessage() {} + +func (x *GenericWebhookConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GenericWebhookConfig.ProtoReflect.Descriptor instead. +func (*GenericWebhookConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{0} +} + +func (x *GenericWebhookConfig) GetUuid() *wrapperspb.StringValue { + if x != nil { + return x.Uuid + } + return nil +} + +func (x *GenericWebhookConfig) GetMethod() GenericWebhookConfig_MethodType { + if x != nil { + return x.Method + } + return GenericWebhookConfig_UNKNOWN +} + +func (x *GenericWebhookConfig) GetHeaders() map[string]string { + if x != nil { + return x.Headers + } + return nil +} + +func (x *GenericWebhookConfig) GetPayload() *wrapperspb.StringValue { + if x != nil { + return x.Payload + } + return nil +} + +type SlackConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Digests []*SlackConfig_Digest `protobuf:"bytes,1,rep,name=digests,proto3" json:"digests,omitempty"` +} + +func (x *SlackConfig) Reset() { + *x = SlackConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SlackConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlackConfig) ProtoMessage() {} + +func (x *SlackConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlackConfig.ProtoReflect.Descriptor instead. +func (*SlackConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{1} +} + +func (x *SlackConfig) GetDigests() []*SlackConfig_Digest { + if x != nil { + return x.Digests + } + return nil +} + +type PagerDutyConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ServiceKey *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=service_key,json=serviceKey,proto3" json:"service_key,omitempty"` +} + +func (x *PagerDutyConfig) Reset() { + *x = PagerDutyConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *PagerDutyConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*PagerDutyConfig) ProtoMessage() {} + +func (x *PagerDutyConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use PagerDutyConfig.ProtoReflect.Descriptor instead. +func (*PagerDutyConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{2} +} + +func (x *PagerDutyConfig) GetServiceKey() *wrapperspb.StringValue { + if x != nil { + return x.ServiceKey + } + return nil +} + +type SendLogConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Payload *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *SendLogConfig) Reset() { + *x = SendLogConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SendLogConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SendLogConfig) ProtoMessage() {} + +func (x *SendLogConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SendLogConfig.ProtoReflect.Descriptor instead. +func (*SendLogConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{3} +} + +func (x *SendLogConfig) GetUuid() *wrapperspb.StringValue { + if x != nil { + return x.Uuid + } + return nil +} + +func (x *SendLogConfig) GetPayload() *wrapperspb.StringValue { + if x != nil { + return x.Payload + } + return nil +} + +type EmailGroupConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EmailAddresses []*wrapperspb.StringValue `protobuf:"bytes,1,rep,name=email_addresses,json=emailAddresses,proto3" json:"email_addresses,omitempty"` +} + +func (x *EmailGroupConfig) Reset() { + *x = EmailGroupConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *EmailGroupConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*EmailGroupConfig) ProtoMessage() {} + +func (x *EmailGroupConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use EmailGroupConfig.ProtoReflect.Descriptor instead. +func (*EmailGroupConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{4} +} + +func (x *EmailGroupConfig) GetEmailAddresses() []*wrapperspb.StringValue { + if x != nil { + return x.EmailAddresses + } + return nil +} + +type MicrosoftTeamsConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *MicrosoftTeamsConfig) Reset() { + *x = MicrosoftTeamsConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *MicrosoftTeamsConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*MicrosoftTeamsConfig) ProtoMessage() {} + +func (x *MicrosoftTeamsConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use MicrosoftTeamsConfig.ProtoReflect.Descriptor instead. +func (*MicrosoftTeamsConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{5} +} + +type JiraConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ApiToken *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=api_token,json=apiToken,proto3" json:"api_token,omitempty"` + Email *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` + ProjectKey *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=project_key,json=projectKey,proto3" json:"project_key,omitempty"` +} + +func (x *JiraConfig) Reset() { + *x = JiraConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *JiraConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*JiraConfig) ProtoMessage() {} + +func (x *JiraConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use JiraConfig.ProtoReflect.Descriptor instead. +func (*JiraConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{6} +} + +func (x *JiraConfig) GetApiToken() *wrapperspb.StringValue { + if x != nil { + return x.ApiToken + } + return nil +} + +func (x *JiraConfig) GetEmail() *wrapperspb.StringValue { + if x != nil { + return x.Email + } + return nil +} + +func (x *JiraConfig) GetProjectKey() *wrapperspb.StringValue { + if x != nil { + return x.ProjectKey + } + return nil +} + +type OpsgenieConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *OpsgenieConfig) Reset() { + *x = OpsgenieConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OpsgenieConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OpsgenieConfig) ProtoMessage() {} + +func (x *OpsgenieConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OpsgenieConfig.ProtoReflect.Descriptor instead. +func (*OpsgenieConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{7} +} + +type DemistoConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Uuid *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=uuid,proto3" json:"uuid,omitempty"` + Payload *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=payload,proto3" json:"payload,omitempty"` +} + +func (x *DemistoConfig) Reset() { + *x = DemistoConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DemistoConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DemistoConfig) ProtoMessage() {} + +func (x *DemistoConfig) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DemistoConfig.ProtoReflect.Descriptor instead. +func (*DemistoConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{8} +} + +func (x *DemistoConfig) GetUuid() *wrapperspb.StringValue { + if x != nil { + return x.Uuid + } + return nil +} + +func (x *DemistoConfig) GetPayload() *wrapperspb.StringValue { + if x != nil { + return x.Payload + } + return nil +} + +type OutgoingWebhook struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type WebhookType `protobuf:"varint,2,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExternalId *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` + // Types that are assignable to Config: + // *OutgoingWebhook_GenericWebhook + // *OutgoingWebhook_Slack + // *OutgoingWebhook_PagerDuty + // *OutgoingWebhook_SendLog + // *OutgoingWebhook_EmailGroup + // *OutgoingWebhook_MicrosoftTeams + // *OutgoingWebhook_Jira + // *OutgoingWebhook_Opsgenie + // *OutgoingWebhook_Demisto + Config isOutgoingWebhook_Config `protobuf_oneof:"config"` +} + +func (x *OutgoingWebhook) Reset() { + *x = OutgoingWebhook{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutgoingWebhook) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutgoingWebhook) ProtoMessage() {} + +func (x *OutgoingWebhook) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutgoingWebhook.ProtoReflect.Descriptor instead. +func (*OutgoingWebhook) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{9} +} + +func (x *OutgoingWebhook) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *OutgoingWebhook) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +func (x *OutgoingWebhook) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *OutgoingWebhook) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *OutgoingWebhook) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *OutgoingWebhook) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *OutgoingWebhook) GetExternalId() *wrapperspb.UInt32Value { + if x != nil { + return x.ExternalId + } + return nil +} + +func (m *OutgoingWebhook) GetConfig() isOutgoingWebhook_Config { + if m != nil { + return m.Config + } + return nil +} + +func (x *OutgoingWebhook) GetGenericWebhook() *GenericWebhookConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_GenericWebhook); ok { + return x.GenericWebhook + } + return nil +} + +func (x *OutgoingWebhook) GetSlack() *SlackConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_Slack); ok { + return x.Slack + } + return nil +} + +func (x *OutgoingWebhook) GetPagerDuty() *PagerDutyConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_PagerDuty); ok { + return x.PagerDuty + } + return nil +} + +func (x *OutgoingWebhook) GetSendLog() *SendLogConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_SendLog); ok { + return x.SendLog + } + return nil +} + +func (x *OutgoingWebhook) GetEmailGroup() *EmailGroupConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_EmailGroup); ok { + return x.EmailGroup + } + return nil +} + +func (x *OutgoingWebhook) GetMicrosoftTeams() *MicrosoftTeamsConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_MicrosoftTeams); ok { + return x.MicrosoftTeams + } + return nil +} + +func (x *OutgoingWebhook) GetJira() *JiraConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_Jira); ok { + return x.Jira + } + return nil +} + +func (x *OutgoingWebhook) GetOpsgenie() *OpsgenieConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_Opsgenie); ok { + return x.Opsgenie + } + return nil +} + +func (x *OutgoingWebhook) GetDemisto() *DemistoConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_Demisto); ok { + return x.Demisto + } + return nil +} + +type isOutgoingWebhook_Config interface { + isOutgoingWebhook_Config() +} + +type OutgoingWebhook_GenericWebhook struct { + GenericWebhook *GenericWebhookConfig `protobuf:"bytes,100,opt,name=generic_webhook,json=genericWebhook,proto3,oneof"` +} + +type OutgoingWebhook_Slack struct { + Slack *SlackConfig `protobuf:"bytes,101,opt,name=slack,proto3,oneof"` +} + +type OutgoingWebhook_PagerDuty struct { + PagerDuty *PagerDutyConfig `protobuf:"bytes,102,opt,name=pager_duty,json=pagerDuty,proto3,oneof"` +} + +type OutgoingWebhook_SendLog struct { + SendLog *SendLogConfig `protobuf:"bytes,103,opt,name=send_log,json=sendLog,proto3,oneof"` +} + +type OutgoingWebhook_EmailGroup struct { + EmailGroup *EmailGroupConfig `protobuf:"bytes,104,opt,name=email_group,json=emailGroup,proto3,oneof"` +} + +type OutgoingWebhook_MicrosoftTeams struct { + MicrosoftTeams *MicrosoftTeamsConfig `protobuf:"bytes,105,opt,name=microsoft_teams,json=microsoftTeams,proto3,oneof"` +} + +type OutgoingWebhook_Jira struct { + Jira *JiraConfig `protobuf:"bytes,106,opt,name=jira,proto3,oneof"` +} + +type OutgoingWebhook_Opsgenie struct { + Opsgenie *OpsgenieConfig `protobuf:"bytes,107,opt,name=opsgenie,proto3,oneof"` +} + +type OutgoingWebhook_Demisto struct { + Demisto *DemistoConfig `protobuf:"bytes,108,opt,name=demisto,proto3,oneof"` +} + +func (*OutgoingWebhook_GenericWebhook) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_Slack) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_PagerDuty) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_SendLog) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_EmailGroup) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_MicrosoftTeams) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_Jira) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_Opsgenie) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_Demisto) isOutgoingWebhook_Config() {} + +type OutgoingWebhookInputData struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type WebhookType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + // Types that are assignable to Config: + // *OutgoingWebhookInputData_GenericWebhook + // *OutgoingWebhookInputData_Slack + // *OutgoingWebhookInputData_PagerDuty + // *OutgoingWebhookInputData_SendLog + // *OutgoingWebhookInputData_EmailGroup + // *OutgoingWebhookInputData_MicrosoftTeams + // *OutgoingWebhookInputData_Jira + // *OutgoingWebhookInputData_Opsgenie + // *OutgoingWebhookInputData_Demisto + Config isOutgoingWebhookInputData_Config `protobuf_oneof:"config"` +} + +func (x *OutgoingWebhookInputData) Reset() { + *x = OutgoingWebhookInputData{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutgoingWebhookInputData) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutgoingWebhookInputData) ProtoMessage() {} + +func (x *OutgoingWebhookInputData) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutgoingWebhookInputData.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookInputData) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{10} +} + +func (x *OutgoingWebhookInputData) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +func (x *OutgoingWebhookInputData) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *OutgoingWebhookInputData) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (m *OutgoingWebhookInputData) GetConfig() isOutgoingWebhookInputData_Config { + if m != nil { + return m.Config + } + return nil +} + +func (x *OutgoingWebhookInputData) GetGenericWebhook() *GenericWebhookConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_GenericWebhook); ok { + return x.GenericWebhook + } + return nil +} + +func (x *OutgoingWebhookInputData) GetSlack() *SlackConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_Slack); ok { + return x.Slack + } + return nil +} + +func (x *OutgoingWebhookInputData) GetPagerDuty() *PagerDutyConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_PagerDuty); ok { + return x.PagerDuty + } + return nil +} + +func (x *OutgoingWebhookInputData) GetSendLog() *SendLogConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_SendLog); ok { + return x.SendLog + } + return nil +} + +func (x *OutgoingWebhookInputData) GetEmailGroup() *EmailGroupConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_EmailGroup); ok { + return x.EmailGroup + } + return nil +} + +func (x *OutgoingWebhookInputData) GetMicrosoftTeams() *MicrosoftTeamsConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_MicrosoftTeams); ok { + return x.MicrosoftTeams + } + return nil +} + +func (x *OutgoingWebhookInputData) GetJira() *JiraConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_Jira); ok { + return x.Jira + } + return nil +} + +func (x *OutgoingWebhookInputData) GetOpsgenie() *OpsgenieConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_Opsgenie); ok { + return x.Opsgenie + } + return nil +} + +func (x *OutgoingWebhookInputData) GetDemisto() *DemistoConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_Demisto); ok { + return x.Demisto + } + return nil +} + +type isOutgoingWebhookInputData_Config interface { + isOutgoingWebhookInputData_Config() +} + +type OutgoingWebhookInputData_GenericWebhook struct { + GenericWebhook *GenericWebhookConfig `protobuf:"bytes,100,opt,name=generic_webhook,json=genericWebhook,proto3,oneof"` +} + +type OutgoingWebhookInputData_Slack struct { + Slack *SlackConfig `protobuf:"bytes,101,opt,name=slack,proto3,oneof"` +} + +type OutgoingWebhookInputData_PagerDuty struct { + PagerDuty *PagerDutyConfig `protobuf:"bytes,102,opt,name=pager_duty,json=pagerDuty,proto3,oneof"` +} + +type OutgoingWebhookInputData_SendLog struct { + SendLog *SendLogConfig `protobuf:"bytes,103,opt,name=send_log,json=sendLog,proto3,oneof"` +} + +type OutgoingWebhookInputData_EmailGroup struct { + EmailGroup *EmailGroupConfig `protobuf:"bytes,104,opt,name=email_group,json=emailGroup,proto3,oneof"` +} + +type OutgoingWebhookInputData_MicrosoftTeams struct { + MicrosoftTeams *MicrosoftTeamsConfig `protobuf:"bytes,105,opt,name=microsoft_teams,json=microsoftTeams,proto3,oneof"` +} + +type OutgoingWebhookInputData_Jira struct { + Jira *JiraConfig `protobuf:"bytes,106,opt,name=jira,proto3,oneof"` +} + +type OutgoingWebhookInputData_Opsgenie struct { + Opsgenie *OpsgenieConfig `protobuf:"bytes,107,opt,name=opsgenie,proto3,oneof"` +} + +type OutgoingWebhookInputData_Demisto struct { + Demisto *DemistoConfig `protobuf:"bytes,108,opt,name=demisto,proto3,oneof"` +} + +func (*OutgoingWebhookInputData_GenericWebhook) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_Slack) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_PagerDuty) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_SendLog) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_EmailGroup) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_MicrosoftTeams) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_Jira) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_Opsgenie) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_Demisto) isOutgoingWebhookInputData_Config() {} + +type OutgoingWebhookSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=url,proto3" json:"url,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,4,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` +} + +func (x *OutgoingWebhookSummary) Reset() { + *x = OutgoingWebhookSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutgoingWebhookSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutgoingWebhookSummary) ProtoMessage() {} + +func (x *OutgoingWebhookSummary) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutgoingWebhookSummary.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookSummary) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{11} +} + +func (x *OutgoingWebhookSummary) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *OutgoingWebhookSummary) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *OutgoingWebhookSummary) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *OutgoingWebhookSummary) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *OutgoingWebhookSummary) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +type OutgoingWebhookExtendedSummary struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Type WebhookType `protobuf:"varint,2,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` + Name *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Url *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=url,proto3" json:"url,omitempty"` + CreatedAt *timestamppb.Timestamp `protobuf:"bytes,5,opt,name=created_at,json=createdAt,proto3" json:"created_at,omitempty"` + UpdatedAt *timestamppb.Timestamp `protobuf:"bytes,6,opt,name=updated_at,json=updatedAt,proto3" json:"updated_at,omitempty"` + ExternalId *wrapperspb.UInt32Value `protobuf:"bytes,7,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` +} + +func (x *OutgoingWebhookExtendedSummary) Reset() { + *x = OutgoingWebhookExtendedSummary{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutgoingWebhookExtendedSummary) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutgoingWebhookExtendedSummary) ProtoMessage() {} + +func (x *OutgoingWebhookExtendedSummary) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutgoingWebhookExtendedSummary.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookExtendedSummary) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{12} +} + +func (x *OutgoingWebhookExtendedSummary) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +func (x *OutgoingWebhookExtendedSummary) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +func (x *OutgoingWebhookExtendedSummary) GetName() *wrapperspb.StringValue { + if x != nil { + return x.Name + } + return nil +} + +func (x *OutgoingWebhookExtendedSummary) GetUrl() *wrapperspb.StringValue { + if x != nil { + return x.Url + } + return nil +} + +func (x *OutgoingWebhookExtendedSummary) GetCreatedAt() *timestamppb.Timestamp { + if x != nil { + return x.CreatedAt + } + return nil +} + +func (x *OutgoingWebhookExtendedSummary) GetUpdatedAt() *timestamppb.Timestamp { + if x != nil { + return x.UpdatedAt + } + return nil +} + +func (x *OutgoingWebhookExtendedSummary) GetExternalId() *wrapperspb.UInt32Value { + if x != nil { + return x.ExternalId + } + return nil +} + +type OutgoingWebhookDetails struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type WebhookType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` + Label *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` +} + +func (x *OutgoingWebhookDetails) Reset() { + *x = OutgoingWebhookDetails{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *OutgoingWebhookDetails) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OutgoingWebhookDetails) ProtoMessage() {} + +func (x *OutgoingWebhookDetails) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OutgoingWebhookDetails.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookDetails) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{13} +} + +func (x *OutgoingWebhookDetails) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +func (x *OutgoingWebhookDetails) GetLabel() *wrapperspb.StringValue { + if x != nil { + return x.Label + } + return nil +} + +type SlackConfig_Digest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type SlackConfig_DigestType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.SlackConfig_DigestType" json:"type,omitempty"` + IsActive *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` +} + +func (x *SlackConfig_Digest) Reset() { + *x = SlackConfig_Digest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SlackConfig_Digest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlackConfig_Digest) ProtoMessage() {} + +func (x *SlackConfig_Digest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SlackConfig_Digest.ProtoReflect.Descriptor instead. +func (*SlackConfig_Digest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *SlackConfig_Digest) GetType() SlackConfig_DigestType { + if x != nil { + return x.Type + } + return SlackConfig_UNKNOWN +} + +func (x *SlackConfig_Digest) GetIsActive() *wrapperspb.BoolValue { + if x != nil { + return x.IsActive + } + return nil +} + +var File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto protoreflect.FileDescriptor + +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDesc = []byte{ + 0x0a, 0x39, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2f, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x22, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x1a, + 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, + 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x22, 0xb1, 0x03, 0x0a, 0x14, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x75, 0x75, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x5b, 0x0a, 0x06, 0x6d, + 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x43, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, + 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x5f, 0x0a, 0x07, 0x68, 0x65, 0x61, 0x64, + 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x45, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, + 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, + 0x52, 0x07, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, 0x79, + 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, + 0x64, 0x1a, 0x3a, 0x0a, 0x0c, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x45, 0x6e, 0x74, 0x72, + 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, + 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x35, 0x0a, + 0x0a, 0x4d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, + 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x47, 0x45, 0x54, 0x10, + 0x01, 0x12, 0x08, 0x0a, 0x04, 0x50, 0x4f, 0x53, 0x54, 0x10, 0x02, 0x12, 0x07, 0x0a, 0x03, 0x50, + 0x55, 0x54, 0x10, 0x03, 0x22, 0xe4, 0x02, 0x0a, 0x0b, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x50, 0x0a, 0x07, 0x64, 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x36, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, + 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x52, 0x07, 0x64, + 0x69, 0x67, 0x65, 0x73, 0x74, 0x73, 0x1a, 0x91, 0x01, 0x0a, 0x06, 0x44, 0x69, 0x67, 0x65, 0x73, + 0x74, 0x12, 0x4e, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, + 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x2e, 0x44, 0x69, 0x67, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, + 0x65, 0x12, 0x37, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x61, 0x63, 0x74, 0x69, 0x76, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x42, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x08, 0x69, 0x73, 0x41, 0x63, 0x74, 0x69, 0x76, 0x65, 0x22, 0x6f, 0x0a, 0x0a, 0x44, 0x69, + 0x67, 0x65, 0x73, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, + 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x1b, 0x0a, 0x17, 0x45, 0x52, 0x52, 0x4f, 0x52, 0x5f, 0x41, + 0x4e, 0x44, 0x5f, 0x43, 0x52, 0x49, 0x54, 0x49, 0x43, 0x41, 0x4c, 0x5f, 0x4c, 0x4f, 0x47, 0x53, + 0x10, 0x01, 0x12, 0x12, 0x0a, 0x0e, 0x46, 0x4c, 0x4f, 0x57, 0x5f, 0x41, 0x4e, 0x4f, 0x4d, 0x41, + 0x4c, 0x49, 0x45, 0x53, 0x10, 0x02, 0x12, 0x13, 0x0a, 0x0f, 0x53, 0x50, 0x49, 0x4b, 0x45, 0x5f, + 0x41, 0x4e, 0x4f, 0x4d, 0x41, 0x4c, 0x49, 0x45, 0x53, 0x10, 0x03, 0x12, 0x0e, 0x0a, 0x0a, 0x44, + 0x41, 0x54, 0x41, 0x5f, 0x55, 0x53, 0x41, 0x47, 0x45, 0x10, 0x04, 0x22, 0x50, 0x0a, 0x0f, 0x50, + 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3d, + 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x4b, 0x65, 0x79, 0x22, 0x79, 0x0a, + 0x0d, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, + 0x0a, 0x04, 0x75, 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, + 0x12, 0x36, 0x0a, 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x59, 0x0a, 0x10, 0x45, 0x6d, 0x61, 0x69, + 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x45, 0x0a, 0x0f, + 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x65, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x0e, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, + 0x73, 0x65, 0x73, 0x22, 0x16, 0x0a, 0x14, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xba, 0x01, 0x0a, 0x0a, + 0x4a, 0x69, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x09, 0x61, 0x70, + 0x69, 0x5f, 0x74, 0x6f, 0x6b, 0x65, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x08, 0x61, 0x70, 0x69, + 0x54, 0x6f, 0x6b, 0x65, 0x6e, 0x12, 0x32, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x70, 0x72, + 0x6f, 0x6a, 0x65, 0x63, 0x74, 0x4b, 0x65, 0x79, 0x22, 0x10, 0x0a, 0x0e, 0x4f, 0x70, 0x73, 0x67, + 0x65, 0x6e, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x79, 0x0a, 0x0d, 0x44, 0x65, + 0x6d, 0x69, 0x73, 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x04, 0x75, + 0x75, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, + 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x75, 0x75, 0x69, 0x64, 0x12, 0x36, 0x0a, + 0x07, 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, + 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, + 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x07, 0x70, 0x61, + 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x22, 0x9e, 0x09, 0x0a, 0x0f, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, + 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, + 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, + 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, + 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, + 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, + 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, + 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, + 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, + 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, + 0x6c, 0x49, 0x64, 0x12, 0x63, 0x0a, 0x0f, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x64, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, + 0x63, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x47, 0x0a, 0x05, 0x73, 0x6c, 0x61, 0x63, + 0x6b, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, + 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c, 0x61, + 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x05, 0x73, 0x6c, 0x61, 0x63, + 0x6b, 0x12, 0x54, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, + 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, + 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x72, + 0x44, 0x75, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, + 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x12, 0x4e, 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x5f, + 0x6c, 0x6f, 0x67, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, + 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, + 0x73, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x57, 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x68, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, + 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, + 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x74, 0x65, + 0x61, 0x6d, 0x73, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, + 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, + 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, + 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x04, 0x6a, 0x69, 0x72, 0x61, 0x18, 0x6a, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4a, 0x69, 0x72, 0x61, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x69, 0x72, 0x61, 0x12, 0x50, 0x0a, 0x08, 0x6f, + 0x70, 0x73, 0x67, 0x65, 0x6e, 0x69, 0x65, 0x18, 0x6b, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x73, 0x67, 0x65, 0x6e, 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x73, 0x67, 0x65, 0x6e, 0x69, 0x65, 0x12, 0x4d, 0x0a, + 0x07, 0x64, 0x65, 0x6d, 0x69, 0x73, 0x74, 0x6f, 0x18, 0x6c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x69, 0x73, 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x6d, 0x69, 0x73, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xc4, 0x07, 0x0a, 0x18, 0x4f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, + 0x61, 0x74, 0x61, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, + 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, + 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, + 0x61, 0x6c, 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x75, 0x72, + 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x63, 0x0a, 0x0f, 0x67, 0x65, + 0x6e, 0x65, 0x72, 0x69, 0x63, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x64, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, + 0x0e, 0x67, 0x65, 0x6e, 0x65, 0x72, 0x69, 0x63, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, + 0x47, 0x0a, 0x05, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x18, 0x65, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2f, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x05, 0x73, 0x6c, 0x61, 0x63, 0x6b, 0x12, 0x54, 0x0a, 0x0a, 0x70, 0x61, 0x67, 0x65, + 0x72, 0x5f, 0x64, 0x75, 0x74, 0x79, 0x18, 0x66, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x50, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x48, 0x00, 0x52, 0x09, 0x70, 0x61, 0x67, 0x65, 0x72, 0x44, 0x75, 0x74, 0x79, 0x12, 0x4e, + 0x0a, 0x08, 0x73, 0x65, 0x6e, 0x64, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x67, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x53, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x73, 0x65, 0x6e, 0x64, 0x4c, 0x6f, 0x67, 0x12, 0x57, + 0x0a, 0x0b, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x5f, 0x67, 0x72, 0x6f, 0x75, 0x70, 0x18, 0x68, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x47, 0x72, + 0x6f, 0x75, 0x70, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0a, 0x65, 0x6d, 0x61, + 0x69, 0x6c, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x12, 0x63, 0x0a, 0x0f, 0x6d, 0x69, 0x63, 0x72, 0x6f, + 0x73, 0x6f, 0x66, 0x74, 0x5f, 0x74, 0x65, 0x61, 0x6d, 0x73, 0x18, 0x69, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x38, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4d, 0x69, 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x54, + 0x65, 0x61, 0x6d, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x6d, 0x69, + 0x63, 0x72, 0x6f, 0x73, 0x6f, 0x66, 0x74, 0x54, 0x65, 0x61, 0x6d, 0x73, 0x12, 0x44, 0x0a, 0x04, + 0x6a, 0x69, 0x72, 0x61, 0x18, 0x6a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2e, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4a, 0x69, 0x72, 0x61, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x04, 0x6a, 0x69, + 0x72, 0x61, 0x12, 0x50, 0x0a, 0x08, 0x6f, 0x70, 0x73, 0x67, 0x65, 0x6e, 0x69, 0x65, 0x18, 0x6b, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x32, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, + 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x70, 0x73, 0x67, 0x65, 0x6e, + 0x69, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x08, 0x6f, 0x70, 0x73, 0x67, + 0x65, 0x6e, 0x69, 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x64, 0x65, 0x6d, 0x69, 0x73, 0x74, 0x6f, 0x18, + 0x6c, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x31, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, + 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6d, 0x69, 0x73, + 0x74, 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x07, 0x64, 0x65, 0x6d, 0x69, + 0x73, 0x74, 0x6f, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x9e, 0x02, + 0x0a, 0x16, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, + 0x75, 0x65, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, + 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x41, 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, + 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x22, 0xaa, + 0x03, 0x0a, 0x1e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x45, 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, + 0x79, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, + 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, + 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, 0x64, 0x12, + 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, + 0x74, 0x79, 0x70, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, + 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x2e, 0x0a, 0x03, 0x75, 0x72, 0x6c, 0x18, 0x04, 0x20, + 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, + 0x65, 0x52, 0x03, 0x75, 0x72, 0x6c, 0x12, 0x39, 0x0a, 0x0a, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x64, 0x5f, 0x61, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, + 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x52, 0x09, 0x63, 0x72, 0x65, 0x61, 0x74, 0x65, 0x64, 0x41, + 0x74, 0x12, 0x39, 0x0a, 0x0a, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x5f, 0x61, 0x74, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, + 0x70, 0x52, 0x09, 0x75, 0x70, 0x64, 0x61, 0x74, 0x65, 0x64, 0x41, 0x74, 0x12, 0x3d, 0x0a, 0x0b, + 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0a, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x49, 0x64, 0x22, 0x91, 0x01, 0x0a, 0x16, + 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, + 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6c, + 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, + 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, + 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x2a, + 0x9a, 0x01, 0x0a, 0x0b, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, + 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0b, 0x0a, 0x07, + 0x47, 0x45, 0x4e, 0x45, 0x52, 0x49, 0x43, 0x10, 0x01, 0x12, 0x09, 0x0a, 0x05, 0x53, 0x4c, 0x41, + 0x43, 0x4b, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x50, 0x41, 0x47, 0x45, 0x52, 0x44, 0x55, 0x54, + 0x59, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x53, 0x45, 0x4e, 0x44, 0x5f, 0x4c, 0x4f, 0x47, 0x10, + 0x04, 0x12, 0x0f, 0x0a, 0x0b, 0x45, 0x4d, 0x41, 0x49, 0x4c, 0x5f, 0x47, 0x52, 0x4f, 0x55, 0x50, + 0x10, 0x05, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x49, 0x43, 0x52, 0x4f, 0x53, 0x4f, 0x46, 0x54, 0x5f, + 0x54, 0x45, 0x41, 0x4d, 0x53, 0x10, 0x06, 0x12, 0x08, 0x0a, 0x04, 0x4a, 0x49, 0x52, 0x41, 0x10, + 0x07, 0x12, 0x0c, 0x0a, 0x08, 0x4f, 0x50, 0x53, 0x47, 0x45, 0x4e, 0x49, 0x45, 0x10, 0x08, 0x12, + 0x0b, 0x0a, 0x07, 0x44, 0x45, 0x4d, 0x49, 0x53, 0x54, 0x4f, 0x10, 0x09, 0x42, 0x03, 0x5a, 0x01, + 0x2e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescOnce sync.Once + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescData = file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDesc +) + +func file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP() []byte { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescOnce.Do(func() { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescData = protoimpl.X.CompressGZIP(file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescData) + }) + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescData +} + +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes = make([]protoimpl.EnumInfo, 3) +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_goTypes = []interface{}{ + (WebhookType)(0), // 0: com.coralogix.outgoing_webhooks.v1.WebhookType + (GenericWebhookConfig_MethodType)(0), // 1: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.MethodType + (SlackConfig_DigestType)(0), // 2: com.coralogix.outgoing_webhooks.v1.SlackConfig.DigestType + (*GenericWebhookConfig)(nil), // 3: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + (*SlackConfig)(nil), // 4: com.coralogix.outgoing_webhooks.v1.SlackConfig + (*PagerDutyConfig)(nil), // 5: com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + (*SendLogConfig)(nil), // 6: com.coralogix.outgoing_webhooks.v1.SendLogConfig + (*EmailGroupConfig)(nil), // 7: com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + (*MicrosoftTeamsConfig)(nil), // 8: com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + (*JiraConfig)(nil), // 9: com.coralogix.outgoing_webhooks.v1.JiraConfig + (*OpsgenieConfig)(nil), // 10: com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + (*DemistoConfig)(nil), // 11: com.coralogix.outgoing_webhooks.v1.DemistoConfig + (*OutgoingWebhook)(nil), // 12: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + (*OutgoingWebhookInputData)(nil), // 13: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + (*OutgoingWebhookSummary)(nil), // 14: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + (*OutgoingWebhookExtendedSummary)(nil), // 15: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + (*OutgoingWebhookDetails)(nil), // 16: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + nil, // 17: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.HeadersEntry + (*SlackConfig_Digest)(nil), // 18: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest + (*wrapperspb.StringValue)(nil), // 19: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 20: google.protobuf.Timestamp + (*wrapperspb.UInt32Value)(nil), // 21: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 22: google.protobuf.BoolValue +} +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_depIdxs = []int32{ + 19, // 0: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.uuid:type_name -> google.protobuf.StringValue + 1, // 1: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.method:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.MethodType + 17, // 2: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.headers:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.HeadersEntry + 19, // 3: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.payload:type_name -> google.protobuf.StringValue + 18, // 4: com.coralogix.outgoing_webhooks.v1.SlackConfig.digests:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest + 19, // 5: com.coralogix.outgoing_webhooks.v1.PagerDutyConfig.service_key:type_name -> google.protobuf.StringValue + 19, // 6: com.coralogix.outgoing_webhooks.v1.SendLogConfig.uuid:type_name -> google.protobuf.StringValue + 19, // 7: com.coralogix.outgoing_webhooks.v1.SendLogConfig.payload:type_name -> google.protobuf.StringValue + 19, // 8: com.coralogix.outgoing_webhooks.v1.EmailGroupConfig.email_addresses:type_name -> google.protobuf.StringValue + 19, // 9: com.coralogix.outgoing_webhooks.v1.JiraConfig.api_token:type_name -> google.protobuf.StringValue + 19, // 10: com.coralogix.outgoing_webhooks.v1.JiraConfig.email:type_name -> google.protobuf.StringValue + 19, // 11: com.coralogix.outgoing_webhooks.v1.JiraConfig.project_key:type_name -> google.protobuf.StringValue + 19, // 12: com.coralogix.outgoing_webhooks.v1.DemistoConfig.uuid:type_name -> google.protobuf.StringValue + 19, // 13: com.coralogix.outgoing_webhooks.v1.DemistoConfig.payload:type_name -> google.protobuf.StringValue + 19, // 14: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.id:type_name -> google.protobuf.StringValue + 0, // 15: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 19, // 16: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.name:type_name -> google.protobuf.StringValue + 19, // 17: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.url:type_name -> google.protobuf.StringValue + 20, // 18: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.created_at:type_name -> google.protobuf.Timestamp + 20, // 19: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.updated_at:type_name -> google.protobuf.Timestamp + 21, // 20: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.external_id:type_name -> google.protobuf.UInt32Value + 3, // 21: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.generic_webhook:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + 4, // 22: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.slack:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig + 5, // 23: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.pager_duty:type_name -> com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + 6, // 24: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.send_log:type_name -> com.coralogix.outgoing_webhooks.v1.SendLogConfig + 7, // 25: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.email_group:type_name -> com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + 8, // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.microsoft_teams:type_name -> com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + 9, // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.jira:type_name -> com.coralogix.outgoing_webhooks.v1.JiraConfig + 10, // 28: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.opsgenie:type_name -> com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + 11, // 29: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.demisto:type_name -> com.coralogix.outgoing_webhooks.v1.DemistoConfig + 0, // 30: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 19, // 31: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.name:type_name -> google.protobuf.StringValue + 19, // 32: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.url:type_name -> google.protobuf.StringValue + 3, // 33: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.generic_webhook:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + 4, // 34: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.slack:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig + 5, // 35: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.pager_duty:type_name -> com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + 6, // 36: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.send_log:type_name -> com.coralogix.outgoing_webhooks.v1.SendLogConfig + 7, // 37: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.email_group:type_name -> com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + 8, // 38: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.microsoft_teams:type_name -> com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + 9, // 39: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.jira:type_name -> com.coralogix.outgoing_webhooks.v1.JiraConfig + 10, // 40: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.opsgenie:type_name -> com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + 11, // 41: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.demisto:type_name -> com.coralogix.outgoing_webhooks.v1.DemistoConfig + 19, // 42: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.id:type_name -> google.protobuf.StringValue + 19, // 43: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.name:type_name -> google.protobuf.StringValue + 19, // 44: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.url:type_name -> google.protobuf.StringValue + 20, // 45: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.created_at:type_name -> google.protobuf.Timestamp + 20, // 46: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.updated_at:type_name -> google.protobuf.Timestamp + 19, // 47: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.id:type_name -> google.protobuf.StringValue + 0, // 48: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 19, // 49: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.name:type_name -> google.protobuf.StringValue + 19, // 50: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.url:type_name -> google.protobuf.StringValue + 20, // 51: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.created_at:type_name -> google.protobuf.Timestamp + 20, // 52: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.updated_at:type_name -> google.protobuf.Timestamp + 21, // 53: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.external_id:type_name -> google.protobuf.UInt32Value + 0, // 54: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 19, // 55: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails.label:type_name -> google.protobuf.StringValue + 2, // 56: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest.type:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.DigestType + 22, // 57: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest.is_active:type_name -> google.protobuf.BoolValue + 58, // [58:58] is the sub-list for method output_type + 58, // [58:58] is the sub-list for method input_type + 58, // [58:58] is the sub-list for extension type_name + 58, // [58:58] is the sub-list for extension extendee + 0, // [0:58] is the sub-list for field type_name +} + +func init() { file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_init() } +func file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_init() { + if File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GenericWebhookConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SlackConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*PagerDutyConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SendLogConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*EmailGroupConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*MicrosoftTeamsConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*JiraConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OpsgenieConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DemistoConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OutgoingWebhook); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OutgoingWebhookInputData); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OutgoingWebhookSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OutgoingWebhookExtendedSummary); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*OutgoingWebhookDetails); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SlackConfig_Digest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[9].OneofWrappers = []interface{}{ + (*OutgoingWebhook_GenericWebhook)(nil), + (*OutgoingWebhook_Slack)(nil), + (*OutgoingWebhook_PagerDuty)(nil), + (*OutgoingWebhook_SendLog)(nil), + (*OutgoingWebhook_EmailGroup)(nil), + (*OutgoingWebhook_MicrosoftTeams)(nil), + (*OutgoingWebhook_Jira)(nil), + (*OutgoingWebhook_Opsgenie)(nil), + (*OutgoingWebhook_Demisto)(nil), + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[10].OneofWrappers = []interface{}{ + (*OutgoingWebhookInputData_GenericWebhook)(nil), + (*OutgoingWebhookInputData_Slack)(nil), + (*OutgoingWebhookInputData_PagerDuty)(nil), + (*OutgoingWebhookInputData_SendLog)(nil), + (*OutgoingWebhookInputData_EmailGroup)(nil), + (*OutgoingWebhookInputData_MicrosoftTeams)(nil), + (*OutgoingWebhookInputData_Jira)(nil), + (*OutgoingWebhookInputData_Opsgenie)(nil), + (*OutgoingWebhookInputData_Demisto)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDesc, + NumEnums: 3, + NumMessages: 16, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_goTypes, + DependencyIndexes: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_depIdxs, + EnumInfos: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes, + MessageInfos: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes, + }.Build() + File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto = out.File + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDesc = nil + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_goTypes = nil + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_depIdxs = nil +} diff --git a/coralogix/clientset/grpc/webhooks/outgoing_webhook_service.pb.go b/coralogix/clientset/grpc/webhooks/outgoing_webhook_service.pb.go new file mode 100644 index 00000000..c1531dff --- /dev/null +++ b/coralogix/clientset/grpc/webhooks/outgoing_webhook_service.pb.go @@ -0,0 +1,1700 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v3.21.8 +// source: com/coralogix/outgoing_webhooks/v1/outgoing_webhook_service.proto + +package __ + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + _ "google.golang.org/protobuf/types/known/timestamppb" + wrapperspb "google.golang.org/protobuf/types/known/wrapperspb" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type ListOutgoingWebhookTypesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListOutgoingWebhookTypesRequest) Reset() { + *x = ListOutgoingWebhookTypesRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOutgoingWebhookTypesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOutgoingWebhookTypesRequest) ProtoMessage() {} + +func (x *ListOutgoingWebhookTypesRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOutgoingWebhookTypesRequest.ProtoReflect.Descriptor instead. +func (*ListOutgoingWebhookTypesRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{0} +} + +type ListOutgoingWebhookTypesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Webhooks []*ListOutgoingWebhookTypesResponse_OutgoingWebhookType `protobuf:"bytes,1,rep,name=webhooks,proto3" json:"webhooks,omitempty"` +} + +func (x *ListOutgoingWebhookTypesResponse) Reset() { + *x = ListOutgoingWebhookTypesResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOutgoingWebhookTypesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOutgoingWebhookTypesResponse) ProtoMessage() {} + +func (x *ListOutgoingWebhookTypesResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOutgoingWebhookTypesResponse.ProtoReflect.Descriptor instead. +func (*ListOutgoingWebhookTypesResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{1} +} + +func (x *ListOutgoingWebhookTypesResponse) GetWebhooks() []*ListOutgoingWebhookTypesResponse_OutgoingWebhookType { + if x != nil { + return x.Webhooks + } + return nil +} + +type GetOutgoingWebhookTypeDetailsRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type WebhookType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` +} + +func (x *GetOutgoingWebhookTypeDetailsRequest) Reset() { + *x = GetOutgoingWebhookTypeDetailsRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOutgoingWebhookTypeDetailsRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOutgoingWebhookTypeDetailsRequest) ProtoMessage() {} + +func (x *GetOutgoingWebhookTypeDetailsRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[2] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOutgoingWebhookTypeDetailsRequest.ProtoReflect.Descriptor instead. +func (*GetOutgoingWebhookTypeDetailsRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{2} +} + +func (x *GetOutgoingWebhookTypeDetailsRequest) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +type GetOutgoingWebhookTypeDetailsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Details *OutgoingWebhookDetails `protobuf:"bytes,1,opt,name=details,proto3" json:"details,omitempty"` +} + +func (x *GetOutgoingWebhookTypeDetailsResponse) Reset() { + *x = GetOutgoingWebhookTypeDetailsResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOutgoingWebhookTypeDetailsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOutgoingWebhookTypeDetailsResponse) ProtoMessage() {} + +func (x *GetOutgoingWebhookTypeDetailsResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[3] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOutgoingWebhookTypeDetailsResponse.ProtoReflect.Descriptor instead. +func (*GetOutgoingWebhookTypeDetailsResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{3} +} + +func (x *GetOutgoingWebhookTypeDetailsResponse) GetDetails() *OutgoingWebhookDetails { + if x != nil { + return x.Details + } + return nil +} + +type ListOutgoingWebhooksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type WebhookType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` +} + +func (x *ListOutgoingWebhooksRequest) Reset() { + *x = ListOutgoingWebhooksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOutgoingWebhooksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOutgoingWebhooksRequest) ProtoMessage() {} + +func (x *ListOutgoingWebhooksRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[4] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOutgoingWebhooksRequest.ProtoReflect.Descriptor instead. +func (*ListOutgoingWebhooksRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{4} +} + +func (x *ListOutgoingWebhooksRequest) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +type ListOutgoingWebhooksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Deployed []*OutgoingWebhookSummary `protobuf:"bytes,1,rep,name=deployed,proto3" json:"deployed,omitempty"` +} + +func (x *ListOutgoingWebhooksResponse) Reset() { + *x = ListOutgoingWebhooksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOutgoingWebhooksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOutgoingWebhooksResponse) ProtoMessage() {} + +func (x *ListOutgoingWebhooksResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[5] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOutgoingWebhooksResponse.ProtoReflect.Descriptor instead. +func (*ListOutgoingWebhooksResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{5} +} + +func (x *ListOutgoingWebhooksResponse) GetDeployed() []*OutgoingWebhookSummary { + if x != nil { + return x.Deployed + } + return nil +} + +type ListAllOutgoingWebhooksRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListAllOutgoingWebhooksRequest) Reset() { + *x = ListAllOutgoingWebhooksRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllOutgoingWebhooksRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllOutgoingWebhooksRequest) ProtoMessage() {} + +func (x *ListAllOutgoingWebhooksRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[6] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAllOutgoingWebhooksRequest.ProtoReflect.Descriptor instead. +func (*ListAllOutgoingWebhooksRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{6} +} + +type ListAllOutgoingWebhooksResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Deployed []*OutgoingWebhookExtendedSummary `protobuf:"bytes,1,rep,name=deployed,proto3" json:"deployed,omitempty"` +} + +func (x *ListAllOutgoingWebhooksResponse) Reset() { + *x = ListAllOutgoingWebhooksResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListAllOutgoingWebhooksResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListAllOutgoingWebhooksResponse) ProtoMessage() {} + +func (x *ListAllOutgoingWebhooksResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[7] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListAllOutgoingWebhooksResponse.ProtoReflect.Descriptor instead. +func (*ListAllOutgoingWebhooksResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{7} +} + +func (x *ListAllOutgoingWebhooksResponse) GetDeployed() []*OutgoingWebhookExtendedSummary { + if x != nil { + return x.Deployed + } + return nil +} + +type GetOutgoingWebhookRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *GetOutgoingWebhookRequest) Reset() { + *x = GetOutgoingWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOutgoingWebhookRequest) ProtoMessage() {} + +func (x *GetOutgoingWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[8] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*GetOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{8} +} + +func (x *GetOutgoingWebhookRequest) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +type GetOutgoingWebhookResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Webhook *OutgoingWebhook `protobuf:"bytes,1,opt,name=webhook,proto3" json:"webhook,omitempty"` +} + +func (x *GetOutgoingWebhookResponse) Reset() { + *x = GetOutgoingWebhookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *GetOutgoingWebhookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*GetOutgoingWebhookResponse) ProtoMessage() {} + +func (x *GetOutgoingWebhookResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[9] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use GetOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*GetOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{9} +} + +func (x *GetOutgoingWebhookResponse) GetWebhook() *OutgoingWebhook { + if x != nil { + return x.Webhook + } + return nil +} + +type CreateOutgoingWebhookRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *OutgoingWebhookInputData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *CreateOutgoingWebhookRequest) Reset() { + *x = CreateOutgoingWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOutgoingWebhookRequest) ProtoMessage() {} + +func (x *CreateOutgoingWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[10] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*CreateOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{10} +} + +func (x *CreateOutgoingWebhookRequest) GetData() *OutgoingWebhookInputData { + if x != nil { + return x.Data + } + return nil +} + +type CreateOutgoingWebhookResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *CreateOutgoingWebhookResponse) Reset() { + *x = CreateOutgoingWebhookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *CreateOutgoingWebhookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*CreateOutgoingWebhookResponse) ProtoMessage() {} + +func (x *CreateOutgoingWebhookResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[11] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use CreateOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*CreateOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{11} +} + +func (x *CreateOutgoingWebhookResponse) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +type UpdateOutgoingWebhookRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Data *OutgoingWebhookInputData `protobuf:"bytes,2,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *UpdateOutgoingWebhookRequest) Reset() { + *x = UpdateOutgoingWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateOutgoingWebhookRequest) ProtoMessage() {} + +func (x *UpdateOutgoingWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[12] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*UpdateOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{12} +} + +func (x *UpdateOutgoingWebhookRequest) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *UpdateOutgoingWebhookRequest) GetData() *OutgoingWebhookInputData { + if x != nil { + return x.Data + } + return nil +} + +type UpdateOutgoingWebhookResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *UpdateOutgoingWebhookResponse) Reset() { + *x = UpdateOutgoingWebhookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *UpdateOutgoingWebhookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*UpdateOutgoingWebhookResponse) ProtoMessage() {} + +func (x *UpdateOutgoingWebhookResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[13] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use UpdateOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*UpdateOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{13} +} + +type DeleteOutgoingWebhookRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *DeleteOutgoingWebhookRequest) Reset() { + *x = DeleteOutgoingWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteOutgoingWebhookRequest) ProtoMessage() {} + +func (x *DeleteOutgoingWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[14] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*DeleteOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{14} +} + +func (x *DeleteOutgoingWebhookRequest) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + return nil +} + +type DeleteOutgoingWebhookResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *DeleteOutgoingWebhookResponse) Reset() { + *x = DeleteOutgoingWebhookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *DeleteOutgoingWebhookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*DeleteOutgoingWebhookResponse) ProtoMessage() {} + +func (x *DeleteOutgoingWebhookResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[15] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use DeleteOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*DeleteOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{15} +} + +type TestOutgoingWebhookRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Data *OutgoingWebhookInputData `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` +} + +func (x *TestOutgoingWebhookRequest) Reset() { + *x = TestOutgoingWebhookRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestOutgoingWebhookRequest) ProtoMessage() {} + +func (x *TestOutgoingWebhookRequest) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[16] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*TestOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{16} +} + +func (x *TestOutgoingWebhookRequest) GetData() *OutgoingWebhookInputData { + if x != nil { + return x.Data + } + return nil +} + +type TestOutgoingWebhookResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + // Types that are assignable to Result: + // *TestOutgoingWebhookResponse_Success_ + // *TestOutgoingWebhookResponse_Failure_ + Result isTestOutgoingWebhookResponse_Result `protobuf_oneof:"result"` +} + +func (x *TestOutgoingWebhookResponse) Reset() { + *x = TestOutgoingWebhookResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[17] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestOutgoingWebhookResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestOutgoingWebhookResponse) ProtoMessage() {} + +func (x *TestOutgoingWebhookResponse) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[17] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*TestOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{17} +} + +func (m *TestOutgoingWebhookResponse) GetResult() isTestOutgoingWebhookResponse_Result { + if m != nil { + return m.Result + } + return nil +} + +func (x *TestOutgoingWebhookResponse) GetSuccess() *TestOutgoingWebhookResponse_Success { + if x, ok := x.GetResult().(*TestOutgoingWebhookResponse_Success_); ok { + return x.Success + } + return nil +} + +func (x *TestOutgoingWebhookResponse) GetFailure() *TestOutgoingWebhookResponse_Failure { + if x, ok := x.GetResult().(*TestOutgoingWebhookResponse_Failure_); ok { + return x.Failure + } + return nil +} + +type isTestOutgoingWebhookResponse_Result interface { + isTestOutgoingWebhookResponse_Result() +} + +type TestOutgoingWebhookResponse_Success_ struct { + Success *TestOutgoingWebhookResponse_Success `protobuf:"bytes,1,opt,name=success,proto3,oneof"` +} + +type TestOutgoingWebhookResponse_Failure_ struct { + Failure *TestOutgoingWebhookResponse_Failure `protobuf:"bytes,2,opt,name=failure,proto3,oneof"` +} + +func (*TestOutgoingWebhookResponse_Success_) isTestOutgoingWebhookResponse_Result() {} + +func (*TestOutgoingWebhookResponse_Failure_) isTestOutgoingWebhookResponse_Result() {} + +type ListOutgoingWebhookTypesResponse_OutgoingWebhookType struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type WebhookType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.WebhookType" json:"type,omitempty"` + Label *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=label,proto3" json:"label,omitempty"` + Count *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=count,proto3" json:"count,omitempty"` +} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) Reset() { + *x = ListOutgoingWebhookTypesResponse_OutgoingWebhookType{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListOutgoingWebhookTypesResponse_OutgoingWebhookType) ProtoMessage() {} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[18] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ListOutgoingWebhookTypesResponse_OutgoingWebhookType.ProtoReflect.Descriptor instead. +func (*ListOutgoingWebhookTypesResponse_OutgoingWebhookType) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{1, 0} +} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) GetType() WebhookType { + if x != nil { + return x.Type + } + return WebhookType_UNKNOWN +} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) GetLabel() *wrapperspb.StringValue { + if x != nil { + return x.Label + } + return nil +} + +func (x *ListOutgoingWebhookTypesResponse_OutgoingWebhookType) GetCount() *wrapperspb.UInt32Value { + if x != nil { + return x.Count + } + return nil +} + +type TestOutgoingWebhookResponse_Success struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *TestOutgoingWebhookResponse_Success) Reset() { + *x = TestOutgoingWebhookResponse_Success{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[19] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestOutgoingWebhookResponse_Success) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestOutgoingWebhookResponse_Success) ProtoMessage() {} + +func (x *TestOutgoingWebhookResponse_Success) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[19] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestOutgoingWebhookResponse_Success.ProtoReflect.Descriptor instead. +func (*TestOutgoingWebhookResponse_Success) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{17, 0} +} + +type TestOutgoingWebhookResponse_Failure struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + ErrorMessage *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=error_message,json=errorMessage,proto3" json:"error_message,omitempty"` + DisplayMessage *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=display_message,json=displayMessage,proto3" json:"display_message,omitempty"` +} + +func (x *TestOutgoingWebhookResponse_Failure) Reset() { + *x = TestOutgoingWebhookResponse_Failure{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[20] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *TestOutgoingWebhookResponse_Failure) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestOutgoingWebhookResponse_Failure) ProtoMessage() {} + +func (x *TestOutgoingWebhookResponse_Failure) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[20] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TestOutgoingWebhookResponse_Failure.ProtoReflect.Descriptor instead. +func (*TestOutgoingWebhookResponse_Failure) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{17, 1} +} + +func (x *TestOutgoingWebhookResponse_Failure) GetErrorMessage() *wrapperspb.StringValue { + if x != nil { + return x.ErrorMessage + } + return nil +} + +func (x *TestOutgoingWebhookResponse_Failure) GetDisplayMessage() *wrapperspb.StringValue { + if x != nil { + return x.DisplayMessage + } + return nil +} + +var File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto protoreflect.FileDescriptor + +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDesc = []byte{ + 0x0a, 0x41, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2f, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x70, 0x72, + 0x6f, 0x74, 0x6f, 0x12, 0x22, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x1a, 0x32, 0x63, 0x6f, 0x6d, 0x2f, 0x63, 0x6f, 0x72, + 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x76, 0x31, 0x2f, 0x61, 0x75, 0x64, 0x69, + 0x74, 0x5f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x39, 0x63, 0x6f, 0x6d, + 0x2f, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x76, 0x31, 0x2f, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x77, 0x72, 0x61, 0x70, 0x70, 0x65, 0x72, 0x73, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x20, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2f, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, + 0x6f, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, + 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, + 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, 0x67, 0x6f, 0x6f, 0x67, 0x6c, + 0x65, 0x2f, 0x61, 0x70, 0x69, 0x2f, 0x61, 0x6e, 0x6e, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x21, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x4f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, + 0x70, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xdd, 0x02, 0x0a, 0x20, 0x4c, + 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x74, 0x0a, 0x08, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, + 0x0b, 0x32, 0x58, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, + 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x1a, 0xc2, 0x01, 0x0a, 0x13, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x12, 0x43, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, + 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, + 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x32, 0x0a, 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x05, 0x6c, 0x61, 0x62, 0x65, 0x6c, 0x12, 0x32, 0x0a, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, + 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, 0x56, 0x61, + 0x6c, 0x75, 0x65, 0x52, 0x05, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x22, 0x6b, 0x0a, 0x24, 0x47, 0x65, + 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, + 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x7d, 0x0a, 0x25, 0x47, 0x65, 0x74, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x54, 0x0a, 0x07, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x3a, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, + 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x07, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x22, 0x62, 0x0a, 0x1b, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x0e, 0x32, 0x2f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x22, 0x76, 0x0a, 0x1c, 0x4c, 0x69, + 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x56, 0x0a, 0x08, 0x64, 0x65, + 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x3a, 0x2e, 0x63, + 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, + 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, + 0x65, 0x64, 0x22, 0x20, 0x0a, 0x1e, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x22, 0x81, 0x01, 0x0a, 0x1f, 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, + 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x5e, 0x0a, 0x08, 0x64, 0x65, 0x70, 0x6c, + 0x6f, 0x79, 0x65, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x42, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x45, + 0x78, 0x74, 0x65, 0x6e, 0x64, 0x65, 0x64, 0x53, 0x75, 0x6d, 0x6d, 0x61, 0x72, 0x79, 0x52, 0x08, + 0x64, 0x65, 0x70, 0x6c, 0x6f, 0x79, 0x65, 0x64, 0x22, 0x49, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x6b, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x4d, 0x0a, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x07, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x22, 0x70, 0x0a, 0x1c, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x50, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x3c, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, 0x64, 0x61, + 0x74, 0x61, 0x22, 0x4d, 0x0a, 0x1d, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, + 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x02, 0x69, + 0x64, 0x22, 0x80, 0x01, 0x0a, 0x1c, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x12, 0x50, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x1f, 0x0a, 0x1d, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x4c, 0x0a, 0x1c, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x2c, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x1f, 0x0a, 0x1d, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x1a, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x50, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, + 0x32, 0x3c, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x49, 0x6e, 0x70, 0x75, 0x74, 0x44, 0x61, 0x74, 0x61, 0x52, 0x04, + 0x64, 0x61, 0x74, 0x61, 0x22, 0x92, 0x03, 0x0a, 0x1b, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x63, 0x0a, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, + 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x48, 0x00, + 0x52, 0x07, 0x73, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x12, 0x63, 0x0a, 0x07, 0x66, 0x61, 0x69, + 0x6c, 0x75, 0x72, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x47, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x2e, 0x46, 0x61, 0x69, 0x6c, + 0x75, 0x72, 0x65, 0x48, 0x00, 0x52, 0x07, 0x66, 0x61, 0x69, 0x6c, 0x75, 0x72, 0x65, 0x1a, 0x09, + 0x0a, 0x07, 0x53, 0x75, 0x63, 0x63, 0x65, 0x73, 0x73, 0x1a, 0x93, 0x01, 0x0a, 0x07, 0x46, 0x61, + 0x69, 0x6c, 0x75, 0x72, 0x65, 0x12, 0x41, 0x0a, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6d, + 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x67, + 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x53, + 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, + 0x72, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x45, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x70, + 0x6c, 0x61, 0x79, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x1c, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x62, 0x75, 0x66, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x56, 0x61, 0x6c, 0x75, 0x65, 0x52, + 0x0e, 0x64, 0x69, 0x73, 0x70, 0x6c, 0x61, 0x79, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x42, + 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x32, 0x9c, 0x10, 0x0a, 0x17, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x53, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0xea, 0x01, 0x0a, 0x18, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, + 0x65, 0x73, 0x12, 0x43, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x44, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, + 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, + 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x54, 0x79, 0x70, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x43, 0xd2, + 0xb8, 0x02, 0x1c, 0x0a, 0x1a, 0x47, 0x65, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, + 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x20, 0x74, 0x79, 0x70, 0x65, 0x73, 0x82, + 0xd3, 0xe4, 0x93, 0x02, 0x1d, 0x12, 0x1b, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x74, 0x79, 0x70, + 0x65, 0x73, 0x12, 0xff, 0x01, 0x0a, 0x1d, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, + 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x73, 0x12, 0x48, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, + 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, + 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x49, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x54, 0x79, 0x70, 0x65, 0x44, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x49, 0xd2, 0xb8, 0x02, 0x1b, 0x0a, + 0x19, 0x47, 0x65, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x20, 0x74, 0x79, 0x70, 0x65, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x24, + 0x12, 0x22, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x73, 0x2f, 0x7b, 0x74, + 0x79, 0x70, 0x65, 0x7d, 0x12, 0xd3, 0x01, 0x0a, 0x14, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x3f, 0x2e, + 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, + 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x40, + 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x38, 0xd2, 0xb8, 0x02, 0x17, 0x0a, 0x15, 0x47, 0x65, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x82, 0xd3, 0xe4, + 0x93, 0x02, 0x17, 0x12, 0x15, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, + 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0xe4, 0x01, 0x0a, 0x17, 0x4c, + 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x12, 0x42, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, + 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x4c, 0x69, 0x73, 0x74, + 0x41, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x43, 0x2e, 0x63, 0x6f, 0x6d, + 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, + 0x4c, 0x69, 0x73, 0x74, 0x41, 0x6c, 0x6c, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x40, 0xd2, 0xb8, 0x02, 0x1b, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x20, 0x61, 0x6c, 0x6c, 0x20, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1b, 0x12, 0x19, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x61, 0x6c, + 0x6c, 0x12, 0xd1, 0x01, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, + 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, 0x3d, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, + 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, + 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, + 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, + 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x47, 0x65, 0x74, + 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3c, 0xd2, 0xb8, 0x02, 0x16, 0x0a, 0x14, 0x47, + 0x65, 0x74, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x12, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xde, 0x01, 0x0a, 0x15, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, + 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x12, + 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, 0x2e, + 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, 0x6f, + 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x1a, 0x41, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, + 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x43, 0x72, 0x65, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xd2, 0xb8, 0x02, 0x1c, 0x0a, 0x1a, 0x43, 0x72, 0x65, 0x61, + 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, + 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x22, 0x15, 0x2f, 0x76, + 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xde, 0x01, 0x0a, 0x15, 0x55, 0x70, 0x64, 0x61, 0x74, + 0x65, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, + 0x12, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, 0x78, + 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x4f, 0x75, + 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x40, 0xd2, 0xb8, 0x02, 0x1c, 0x0a, 0x1a, 0x55, 0x70, 0x64, + 0x61, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, + 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1a, 0x1a, 0x15, 0x2f, + 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x3a, 0x01, 0x2a, 0x12, 0xe0, 0x01, 0x0a, 0x15, 0x44, 0x65, 0x6c, 0x65, + 0x74, 0x65, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x12, 0x40, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, 0x69, + 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x41, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, + 0x67, 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x44, 0x65, 0x6c, 0x65, 0x74, 0x65, 0x4f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x42, 0xd2, 0xb8, 0x02, 0x1c, 0x0a, 0x1a, 0x44, 0x65, + 0x6c, 0x65, 0x74, 0x65, 0x20, 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, + 0x20, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1c, 0x2a, 0x1a, + 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, + 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x7b, 0x69, 0x64, 0x7d, 0x12, 0xdb, 0x01, 0x0a, 0x13, 0x54, + 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, + 0x6f, 0x6b, 0x12, 0x3e, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x3f, 0x2e, 0x63, 0x6f, 0x6d, 0x2e, 0x63, 0x6f, 0x72, 0x61, 0x6c, 0x6f, 0x67, + 0x69, 0x78, 0x2e, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x73, 0x2e, 0x76, 0x31, 0x2e, 0x54, 0x65, 0x73, 0x74, 0x4f, 0x75, 0x74, 0x67, + 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x43, 0xd2, 0xb8, 0x02, 0x1a, 0x0a, 0x18, 0x54, 0x65, 0x73, 0x74, 0x20, + 0x61, 0x6e, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x1f, 0x22, 0x1a, 0x2f, 0x76, 0x31, 0x2f, 0x6f, + 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, + 0x2f, 0x74, 0x65, 0x73, 0x74, 0x3a, 0x01, 0x2a, 0x42, 0x03, 0x5a, 0x01, 0x2e, 0x62, 0x06, 0x70, + 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescOnce sync.Once + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescData = file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDesc +) + +func file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP() []byte { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescOnce.Do(func() { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescData) + }) + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescData +} + +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes = make([]protoimpl.MessageInfo, 21) +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_goTypes = []interface{}{ + (*ListOutgoingWebhookTypesRequest)(nil), // 0: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesRequest + (*ListOutgoingWebhookTypesResponse)(nil), // 1: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse + (*GetOutgoingWebhookTypeDetailsRequest)(nil), // 2: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsRequest + (*GetOutgoingWebhookTypeDetailsResponse)(nil), // 3: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsResponse + (*ListOutgoingWebhooksRequest)(nil), // 4: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksRequest + (*ListOutgoingWebhooksResponse)(nil), // 5: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksResponse + (*ListAllOutgoingWebhooksRequest)(nil), // 6: com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksRequest + (*ListAllOutgoingWebhooksResponse)(nil), // 7: com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksResponse + (*GetOutgoingWebhookRequest)(nil), // 8: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookRequest + (*GetOutgoingWebhookResponse)(nil), // 9: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookResponse + (*CreateOutgoingWebhookRequest)(nil), // 10: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookRequest + (*CreateOutgoingWebhookResponse)(nil), // 11: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookResponse + (*UpdateOutgoingWebhookRequest)(nil), // 12: com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookRequest + (*UpdateOutgoingWebhookResponse)(nil), // 13: com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookResponse + (*DeleteOutgoingWebhookRequest)(nil), // 14: com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookRequest + (*DeleteOutgoingWebhookResponse)(nil), // 15: com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookResponse + (*TestOutgoingWebhookRequest)(nil), // 16: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookRequest + (*TestOutgoingWebhookResponse)(nil), // 17: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse + (*ListOutgoingWebhookTypesResponse_OutgoingWebhookType)(nil), // 18: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType + (*TestOutgoingWebhookResponse_Success)(nil), // 19: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Success + (*TestOutgoingWebhookResponse_Failure)(nil), // 20: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure + (WebhookType)(0), // 21: com.coralogix.outgoing_webhooks.v1.WebhookType + (*OutgoingWebhookDetails)(nil), // 22: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + (*OutgoingWebhookSummary)(nil), // 23: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + (*OutgoingWebhookExtendedSummary)(nil), // 24: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + (*wrapperspb.StringValue)(nil), // 25: google.protobuf.StringValue + (*OutgoingWebhook)(nil), // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + (*OutgoingWebhookInputData)(nil), // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + (*wrapperspb.UInt32Value)(nil), // 28: google.protobuf.UInt32Value +} +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_depIdxs = []int32{ + 18, // 0: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.webhooks:type_name -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType + 21, // 1: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsRequest.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 22, // 2: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsResponse.details:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + 21, // 3: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksRequest.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 23, // 4: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksResponse.deployed:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + 24, // 5: com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksResponse.deployed:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + 25, // 6: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookRequest.id:type_name -> google.protobuf.StringValue + 26, // 7: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookResponse.webhook:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + 27, // 8: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 25, // 9: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookResponse.id:type_name -> google.protobuf.StringValue + 27, // 10: com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 25, // 11: com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookRequest.id:type_name -> google.protobuf.StringValue + 27, // 12: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 19, // 13: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.success:type_name -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Success + 20, // 14: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.failure:type_name -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure + 21, // 15: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 25, // 16: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.label:type_name -> google.protobuf.StringValue + 28, // 17: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.count:type_name -> google.protobuf.UInt32Value + 25, // 18: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure.error_message:type_name -> google.protobuf.StringValue + 25, // 19: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure.display_message:type_name -> google.protobuf.StringValue + 0, // 20: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhookTypes:input_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesRequest + 2, // 21: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhookTypeDetails:input_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsRequest + 4, // 22: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhooks:input_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksRequest + 6, // 23: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListAllOutgoingWebhooks:input_type -> com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksRequest + 8, // 24: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookRequest + 10, // 25: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.CreateOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookRequest + 12, // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.UpdateOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookRequest + 14, // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.DeleteOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookRequest + 16, // 28: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookRequest + 1, // 29: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhookTypes:output_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse + 3, // 30: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhookTypeDetails:output_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsResponse + 5, // 31: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhooks:output_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksResponse + 7, // 32: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListAllOutgoingWebhooks:output_type -> com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksResponse + 9, // 33: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookResponse + 11, // 34: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.CreateOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookResponse + 13, // 35: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.UpdateOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookResponse + 15, // 36: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.DeleteOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookResponse + 17, // 37: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse + 29, // [29:38] is the sub-list for method output_type + 20, // [20:29] is the sub-list for method input_type + 20, // [20:20] is the sub-list for extension type_name + 20, // [20:20] is the sub-list for extension extendee + 0, // [0:20] is the sub-list for field type_name +} + +func init() { file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_init() } +func file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_init() { + if File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto != nil { + return + } + file_com_coralogix_outgoing_webhooks_v1_audit_log_proto_init() + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_init() + if !protoimpl.UnsafeEnabled { + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOutgoingWebhookTypesRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOutgoingWebhookTypesResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOutgoingWebhookTypeDetailsRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOutgoingWebhookTypeDetailsResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOutgoingWebhooksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOutgoingWebhooksResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAllOutgoingWebhooksRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListAllOutgoingWebhooksResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOutgoingWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*GetOutgoingWebhookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOutgoingWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*CreateOutgoingWebhookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateOutgoingWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*UpdateOutgoingWebhookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[14].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteOutgoingWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[15].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*DeleteOutgoingWebhookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[16].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestOutgoingWebhookRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[17].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestOutgoingWebhookResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListOutgoingWebhookTypesResponse_OutgoingWebhookType); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestOutgoingWebhookResponse_Success); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[20].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*TestOutgoingWebhookResponse_Failure); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[17].OneofWrappers = []interface{}{ + (*TestOutgoingWebhookResponse_Success_)(nil), + (*TestOutgoingWebhookResponse_Failure_)(nil), + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDesc, + NumEnums: 0, + NumMessages: 21, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_goTypes, + DependencyIndexes: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_depIdxs, + MessageInfos: file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes, + }.Build() + File_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto = out.File + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDesc = nil + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_goTypes = nil + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_depIdxs = nil +} diff --git a/coralogix/clientset/grpc/webhooks/outgoing_webhook_service_grpc.pb.go b/coralogix/clientset/grpc/webhooks/outgoing_webhook_service_grpc.pb.go new file mode 100644 index 00000000..32ecc7a6 --- /dev/null +++ b/coralogix/clientset/grpc/webhooks/outgoing_webhook_service_grpc.pb.go @@ -0,0 +1,394 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v3.21.8 +// source: com/coralogix/outgoing_webhooks/v1/outgoing_webhook_service.proto + +package __ + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.32.0 or later. +const _ = grpc.SupportPackageIsVersion7 + +// OutgoingWebhooksServiceClient is the client API for OutgoingWebhooksService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +type OutgoingWebhooksServiceClient interface { + ListOutgoingWebhookTypes(ctx context.Context, in *ListOutgoingWebhookTypesRequest, opts ...grpc.CallOption) (*ListOutgoingWebhookTypesResponse, error) + GetOutgoingWebhookTypeDetails(ctx context.Context, in *GetOutgoingWebhookTypeDetailsRequest, opts ...grpc.CallOption) (*GetOutgoingWebhookTypeDetailsResponse, error) + ListOutgoingWebhooks(ctx context.Context, in *ListOutgoingWebhooksRequest, opts ...grpc.CallOption) (*ListOutgoingWebhooksResponse, error) + ListAllOutgoingWebhooks(ctx context.Context, in *ListAllOutgoingWebhooksRequest, opts ...grpc.CallOption) (*ListAllOutgoingWebhooksResponse, error) + GetOutgoingWebhook(ctx context.Context, in *GetOutgoingWebhookRequest, opts ...grpc.CallOption) (*GetOutgoingWebhookResponse, error) + CreateOutgoingWebhook(ctx context.Context, in *CreateOutgoingWebhookRequest, opts ...grpc.CallOption) (*CreateOutgoingWebhookResponse, error) + UpdateOutgoingWebhook(ctx context.Context, in *UpdateOutgoingWebhookRequest, opts ...grpc.CallOption) (*UpdateOutgoingWebhookResponse, error) + DeleteOutgoingWebhook(ctx context.Context, in *DeleteOutgoingWebhookRequest, opts ...grpc.CallOption) (*DeleteOutgoingWebhookResponse, error) + TestOutgoingWebhook(ctx context.Context, in *TestOutgoingWebhookRequest, opts ...grpc.CallOption) (*TestOutgoingWebhookResponse, error) +} + +type outgoingWebhooksServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewOutgoingWebhooksServiceClient(cc grpc.ClientConnInterface) OutgoingWebhooksServiceClient { + return &outgoingWebhooksServiceClient{cc} +} + +func (c *outgoingWebhooksServiceClient) ListOutgoingWebhookTypes(ctx context.Context, in *ListOutgoingWebhookTypesRequest, opts ...grpc.CallOption) (*ListOutgoingWebhookTypesResponse, error) { + out := new(ListOutgoingWebhookTypesResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListOutgoingWebhookTypes", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) GetOutgoingWebhookTypeDetails(ctx context.Context, in *GetOutgoingWebhookTypeDetailsRequest, opts ...grpc.CallOption) (*GetOutgoingWebhookTypeDetailsResponse, error) { + out := new(GetOutgoingWebhookTypeDetailsResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/GetOutgoingWebhookTypeDetails", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) ListOutgoingWebhooks(ctx context.Context, in *ListOutgoingWebhooksRequest, opts ...grpc.CallOption) (*ListOutgoingWebhooksResponse, error) { + out := new(ListOutgoingWebhooksResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListOutgoingWebhooks", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) ListAllOutgoingWebhooks(ctx context.Context, in *ListAllOutgoingWebhooksRequest, opts ...grpc.CallOption) (*ListAllOutgoingWebhooksResponse, error) { + out := new(ListAllOutgoingWebhooksResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListAllOutgoingWebhooks", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) GetOutgoingWebhook(ctx context.Context, in *GetOutgoingWebhookRequest, opts ...grpc.CallOption) (*GetOutgoingWebhookResponse, error) { + out := new(GetOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/GetOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) CreateOutgoingWebhook(ctx context.Context, in *CreateOutgoingWebhookRequest, opts ...grpc.CallOption) (*CreateOutgoingWebhookResponse, error) { + out := new(CreateOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/CreateOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) UpdateOutgoingWebhook(ctx context.Context, in *UpdateOutgoingWebhookRequest, opts ...grpc.CallOption) (*UpdateOutgoingWebhookResponse, error) { + out := new(UpdateOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/UpdateOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) DeleteOutgoingWebhook(ctx context.Context, in *DeleteOutgoingWebhookRequest, opts ...grpc.CallOption) (*DeleteOutgoingWebhookResponse, error) { + out := new(DeleteOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/DeleteOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) TestOutgoingWebhook(ctx context.Context, in *TestOutgoingWebhookRequest, opts ...grpc.CallOption) (*TestOutgoingWebhookResponse, error) { + out := new(TestOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/TestOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// OutgoingWebhooksServiceServer is the server API for OutgoingWebhooksService service. +// All implementations must embed UnimplementedOutgoingWebhooksServiceServer +// for forward compatibility +type OutgoingWebhooksServiceServer interface { + ListOutgoingWebhookTypes(context.Context, *ListOutgoingWebhookTypesRequest) (*ListOutgoingWebhookTypesResponse, error) + GetOutgoingWebhookTypeDetails(context.Context, *GetOutgoingWebhookTypeDetailsRequest) (*GetOutgoingWebhookTypeDetailsResponse, error) + ListOutgoingWebhooks(context.Context, *ListOutgoingWebhooksRequest) (*ListOutgoingWebhooksResponse, error) + ListAllOutgoingWebhooks(context.Context, *ListAllOutgoingWebhooksRequest) (*ListAllOutgoingWebhooksResponse, error) + GetOutgoingWebhook(context.Context, *GetOutgoingWebhookRequest) (*GetOutgoingWebhookResponse, error) + CreateOutgoingWebhook(context.Context, *CreateOutgoingWebhookRequest) (*CreateOutgoingWebhookResponse, error) + UpdateOutgoingWebhook(context.Context, *UpdateOutgoingWebhookRequest) (*UpdateOutgoingWebhookResponse, error) + DeleteOutgoingWebhook(context.Context, *DeleteOutgoingWebhookRequest) (*DeleteOutgoingWebhookResponse, error) + TestOutgoingWebhook(context.Context, *TestOutgoingWebhookRequest) (*TestOutgoingWebhookResponse, error) + mustEmbedUnimplementedOutgoingWebhooksServiceServer() +} + +// UnimplementedOutgoingWebhooksServiceServer must be embedded to have forward compatible implementations. +type UnimplementedOutgoingWebhooksServiceServer struct { +} + +func (UnimplementedOutgoingWebhooksServiceServer) ListOutgoingWebhookTypes(context.Context, *ListOutgoingWebhookTypesRequest) (*ListOutgoingWebhookTypesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListOutgoingWebhookTypes not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) GetOutgoingWebhookTypeDetails(context.Context, *GetOutgoingWebhookTypeDetailsRequest) (*GetOutgoingWebhookTypeDetailsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOutgoingWebhookTypeDetails not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) ListOutgoingWebhooks(context.Context, *ListOutgoingWebhooksRequest) (*ListOutgoingWebhooksResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListOutgoingWebhooks not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) ListAllOutgoingWebhooks(context.Context, *ListAllOutgoingWebhooksRequest) (*ListAllOutgoingWebhooksResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListAllOutgoingWebhooks not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) GetOutgoingWebhook(context.Context, *GetOutgoingWebhookRequest) (*GetOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) CreateOutgoingWebhook(context.Context, *CreateOutgoingWebhookRequest) (*CreateOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method CreateOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) UpdateOutgoingWebhook(context.Context, *UpdateOutgoingWebhookRequest) (*UpdateOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) DeleteOutgoingWebhook(context.Context, *DeleteOutgoingWebhookRequest) (*DeleteOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method DeleteOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) TestOutgoingWebhook(context.Context, *TestOutgoingWebhookRequest) (*TestOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TestOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) mustEmbedUnimplementedOutgoingWebhooksServiceServer() { +} + +// UnsafeOutgoingWebhooksServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to OutgoingWebhooksServiceServer will +// result in compilation errors. +type UnsafeOutgoingWebhooksServiceServer interface { + mustEmbedUnimplementedOutgoingWebhooksServiceServer() +} + +func RegisterOutgoingWebhooksServiceServer(s grpc.ServiceRegistrar, srv OutgoingWebhooksServiceServer) { + s.RegisterService(&OutgoingWebhooksService_ServiceDesc, srv) +} + +func _OutgoingWebhooksService_ListOutgoingWebhookTypes_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOutgoingWebhookTypesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).ListOutgoingWebhookTypes(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListOutgoingWebhookTypes", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).ListOutgoingWebhookTypes(ctx, req.(*ListOutgoingWebhookTypesRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_GetOutgoingWebhookTypeDetails_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOutgoingWebhookTypeDetailsRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).GetOutgoingWebhookTypeDetails(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/GetOutgoingWebhookTypeDetails", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).GetOutgoingWebhookTypeDetails(ctx, req.(*GetOutgoingWebhookTypeDetailsRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_ListOutgoingWebhooks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListOutgoingWebhooksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).ListOutgoingWebhooks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListOutgoingWebhooks", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).ListOutgoingWebhooks(ctx, req.(*ListOutgoingWebhooksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_ListAllOutgoingWebhooks_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListAllOutgoingWebhooksRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).ListAllOutgoingWebhooks(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListAllOutgoingWebhooks", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).ListAllOutgoingWebhooks(ctx, req.(*ListAllOutgoingWebhooksRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_GetOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(GetOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).GetOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/GetOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).GetOutgoingWebhook(ctx, req.(*GetOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_CreateOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(CreateOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).CreateOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/CreateOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).CreateOutgoingWebhook(ctx, req.(*CreateOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_UpdateOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(UpdateOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).UpdateOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/UpdateOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).UpdateOutgoingWebhook(ctx, req.(*UpdateOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_DeleteOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(DeleteOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).DeleteOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/DeleteOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).DeleteOutgoingWebhook(ctx, req.(*DeleteOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_TestOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TestOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).TestOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/TestOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).TestOutgoingWebhook(ctx, req.(*TestOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +// OutgoingWebhooksService_ServiceDesc is the grpc.ServiceDesc for OutgoingWebhooksService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var OutgoingWebhooksService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService", + HandlerType: (*OutgoingWebhooksServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "ListOutgoingWebhookTypes", + Handler: _OutgoingWebhooksService_ListOutgoingWebhookTypes_Handler, + }, + { + MethodName: "GetOutgoingWebhookTypeDetails", + Handler: _OutgoingWebhooksService_GetOutgoingWebhookTypeDetails_Handler, + }, + { + MethodName: "ListOutgoingWebhooks", + Handler: _OutgoingWebhooksService_ListOutgoingWebhooks_Handler, + }, + { + MethodName: "ListAllOutgoingWebhooks", + Handler: _OutgoingWebhooksService_ListAllOutgoingWebhooks_Handler, + }, + { + MethodName: "GetOutgoingWebhook", + Handler: _OutgoingWebhooksService_GetOutgoingWebhook_Handler, + }, + { + MethodName: "CreateOutgoingWebhook", + Handler: _OutgoingWebhooksService_CreateOutgoingWebhook_Handler, + }, + { + MethodName: "UpdateOutgoingWebhook", + Handler: _OutgoingWebhooksService_UpdateOutgoingWebhook_Handler, + }, + { + MethodName: "DeleteOutgoingWebhook", + Handler: _OutgoingWebhooksService_DeleteOutgoingWebhook_Handler, + }, + { + MethodName: "TestOutgoingWebhook", + Handler: _OutgoingWebhooksService_TestOutgoingWebhook_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "com/coralogix/outgoing_webhooks/v1/outgoing_webhook_service.proto", +} diff --git a/coralogix/clientset/webhooks-client.go b/coralogix/clientset/webhooks-client.go index 41dac3b5..c49e6fc6 100644 --- a/coralogix/clientset/webhooks-client.go +++ b/coralogix/clientset/webhooks-client.go @@ -2,34 +2,66 @@ package clientset import ( "context" - "fmt" - "strings" - "terraform-provider-coralogix/coralogix/clientset/rest" + webhooks "terraform-provider-coralogix/coralogix/clientset/grpc/webhooks" ) type WebhooksClient struct { - client *rest.Client + callPropertiesCreator *CallPropertiesCreator } -func (w WebhooksClient) CreateWebhook(ctx context.Context, body string) (string, error) { - return w.client.Post(ctx, "/api/v1/external/integrations", "application/json", body) +func (c WebhooksClient) CreateWebhook(ctx context.Context, req *webhooks.CreateOutgoingWebhookRequest) (*webhooks.CreateOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := webhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.CreateOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) } -func (w WebhooksClient) GetWebhook(ctx context.Context, webhookId string) (string, error) { - return w.client.Get(ctx, fmt.Sprintf("/api/v1/external/integrations/%s", webhookId)) +func (c WebhooksClient) GetWebhook(ctx context.Context, req *webhooks.GetOutgoingWebhookRequest) (*webhooks.GetOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := webhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.GetOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) } -func (w WebhooksClient) UpdateWebhook(ctx context.Context, body string) (string, error) { - return w.client.Post(ctx, "/api/v1/external/integrations", "application/json", body) +func (c WebhooksClient) UpdateWebhook(ctx context.Context, req *webhooks.UpdateOutgoingWebhookRequest) (*webhooks.UpdateOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := webhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.UpdateOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) } -func (w WebhooksClient) DeleteWebhook(ctx context.Context, webhookId string) (string, error) { - return w.client.Delete(ctx, fmt.Sprintf("/api/v1/external/integrations/%s", webhookId)) +func (c WebhooksClient) DeleteWebhook(ctx context.Context, req *webhooks.DeleteOutgoingWebhookRequest) (*webhooks.DeleteOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := webhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.DeleteOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) } func NewWebhooksClient(c *CallPropertiesCreator) *WebhooksClient { - targetUrl := "https://" + strings.Replace(c.targetUrl, "grpc", "http", 1) - client := rest.NewRestClient(targetUrl, c.apiKey) - return &WebhooksClient{client: client} + return &WebhooksClient{callPropertiesCreator: c} } diff --git a/coralogix/data_source_coralogix_webhook.go b/coralogix/data_source_coralogix_webhook.go index 3e332e94..91dc8d85 100644 --- a/coralogix/data_source_coralogix_webhook.go +++ b/coralogix/data_source_coralogix_webhook.go @@ -2,44 +2,93 @@ package coralogix import ( "context" - "encoding/json" + "fmt" "log" - "strconv" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" + "github.com/hashicorp/terraform-plugin-framework/datasource" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/types" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "terraform-provider-coralogix/coralogix/clientset" + webhooks "terraform-provider-coralogix/coralogix/clientset/grpc/webhooks" + + "google.golang.org/protobuf/types/known/wrapperspb" ) -func dataSourceCoralogixWebhook() *schema.Resource { - webhookSchema := datasourceSchemaFromResourceSchema(WebhookSchema()) - webhookSchema["id"] = &schema.Schema{ - Type: schema.TypeString, - Required: true, - } +var _ datasource.DataSourceWithConfigure = &WebhookDataSource{} + +func NewWebhookDataSource() datasource.DataSource { + return &WebhookDataSource{} +} + +type WebhookDataSource struct { + client *clientset.WebhooksClient +} + +func (d *WebhookDataSource) Metadata(_ context.Context, req datasource.MetadataRequest, resp *datasource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_webhook" +} - return &schema.Resource{ - ReadContext: dataSourceCoralogixWebhookRead, +func (d *WebhookDataSource) Configure(_ context.Context, req datasource.ConfigureRequest, resp *datasource.ConfigureResponse) { + if req.ProviderData == nil { + return + } - Schema: webhookSchema, + clientSet, ok := req.ProviderData.(*clientset.ClientSet) + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *clientset.ClientSet, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + return } + + d.client = clientSet.Webhooks() } -func dataSourceCoralogixWebhookRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - id := d.Get("id").(string) +func (d *WebhookDataSource) Schema(_ context.Context, _ datasource.SchemaRequest, resp *datasource.SchemaResponse) { + var r WebhookResource + var resourceResp resource.SchemaResponse + r.Schema(nil, resource.SchemaRequest{}, &resourceResp) + + resp.Schema = frameworkDatasourceSchemaFromFrameworkResourceSchema(resourceResp.Schema) +} + +func (d *WebhookDataSource) Read(ctx context.Context, req datasource.ReadRequest, resp *datasource.ReadResponse) { + var data *WebhookResourceModel + resp.Diagnostics.Append(req.Config.Get(ctx, &data)...) + if resp.Diagnostics.HasError() { + return + } - log.Printf("[INFO] Reading webhook %s", id) - resp, err := meta.(*clientset.ClientSet).Webhooks().GetWebhook(ctx, id) + //Get refreshed Webhook value from Coralogix + id := data.ID.ValueString() + log.Printf("[INFO] Reading Webhook: %s", id) + getWebhookResp, err := d.client.GetWebhook(ctx, &webhooks.GetOutgoingWebhookRequest{Id: wrapperspb.String(id)}) if err != nil { log.Printf("[ERROR] Received error: %#v", err) - return handleRpcErrorWithID(err, "webhook", id) + if status.Code(err) == codes.NotFound { + data.ID = types.StringNull() + resp.Diagnostics.AddWarning( + fmt.Sprintf("Webhook %q is in state, but no longer exists in Coralogix backend", id), + fmt.Sprintf("%s will be recreated when you apply", id), + ) + } else { + resp.Diagnostics.AddError( + "Error reading Webhook", + handleRpcErrorNewFramework(err, "Webhook"), + ) + } + return } - log.Printf("[INFO] Received webhook: %#v", resp) + log.Printf("[INFO] Received Webhook: %#v", getWebhookResp) - var m map[string]interface{} - if err = json.Unmarshal([]byte(resp), &m); err != nil { - return diag.FromErr(err) + data, diags := flattenWebhook(ctx, getWebhookResp.GetWebhook()) + if diags.HasError() { + resp.Diagnostics = diags + return } - d.SetId(strconv.Itoa(int(m["id"].(float64)))) - return setWebhook(d, m) + // Save data into Terraform state + resp.Diagnostics.Append(resp.State.Set(ctx, &data)...) } diff --git a/coralogix/data_source_coralogix_webhook_test.go b/coralogix/data_source_coralogix_webhook_test.go index db06f562..43946ea6 100644 --- a/coralogix/data_source_coralogix_webhook_test.go +++ b/coralogix/data_source_coralogix_webhook_test.go @@ -9,15 +9,15 @@ import ( func TestAccCoralogixDataSourceWebhook_basic(t *testing.T) { w := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, Steps: []resource.TestStep{ { Config: testAccCoralogixResourceSlackWebhook(w) + testAccCoralogixDataSourceWebhook_read(), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttr("data.coralogix_webhook.test", "name", w.name), - resource.TestCheckResourceAttr("data.coralogix_webhook.test", "slack.0.url", w.url), + resource.TestCheckResourceAttr("data.coralogix_webhook.test", "slack.url", w.url), ), }, }, diff --git a/coralogix/provider.go b/coralogix/provider.go index 7fb02a0a..bddc3204 100644 --- a/coralogix/provider.go +++ b/coralogix/provider.go @@ -68,7 +68,6 @@ func OldProvider() *oldSchema.Provider { "coralogix_hosted_dashboard": dataSourceCoralogixHostedDashboard(), "coralogix_recording_rules_groups_set": dataSourceCoralogixRecordingRulesGroupsSet(), "coralogix_tco_policy_override": dataSourceCoralogixTCOPolicyOverride(), - "coralogix_webhook": dataSourceCoralogixWebhook(), }, ResourcesMap: map[string]*oldSchema.Resource{ @@ -78,7 +77,6 @@ func OldProvider() *oldSchema.Provider { "coralogix_data_set": resourceCoralogixDataSet(), "coralogix_hosted_dashboard": resourceCoralogixHostedDashboard(), "coralogix_recording_rules_groups_set": resourceCoralogixRecordingRulesGroupsSet(), - "coralogix_webhook": resourceCoralogixWebhook(), "coralogix_grafana_folder": resourceGrafanaFolder(), }, @@ -282,6 +280,7 @@ func (p *coralogixProvider) DataSources(context.Context) []func() datasource.Dat NewTCOPolicyTracesDataSource, NewDashboardDataSource, NewSLIDataSource, + NewWebhookDataSource, } } @@ -293,5 +292,6 @@ func (p *coralogixProvider) Resources(context.Context) []func() resource.Resourc NewTCOPolicyTracesResource, NewDashboardResource, NewSLIResource, + NewWebhookResource, } } diff --git a/coralogix/resource_coralogix_action.go b/coralogix/resource_coralogix_action.go index b038a873..975d7f0c 100644 --- a/coralogix/resource_coralogix_action.go +++ b/coralogix/resource_coralogix_action.go @@ -138,7 +138,6 @@ func (r *ActionResource) Schema(_ context.Context, _ resource.SchemaRequest, res func (r *ActionResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) - } func (r *ActionResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { diff --git a/coralogix/resource_coralogix_webhook.go b/coralogix/resource_coralogix_webhook.go index ac53f211..3e542aec 100644 --- a/coralogix/resource_coralogix_webhook.go +++ b/coralogix/resource_coralogix_webhook.go @@ -2,26 +2,51 @@ package coralogix import ( "context" - "encoding/json" "fmt" "log" "strconv" "strings" - "time" - . "github.com/ahmetalpbalkan/go-linq" - "github.com/hashicorp/terraform-plugin-sdk/v2/diag" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation" + "github.com/golang/protobuf/jsonpb" + "github.com/hashicorp/terraform-plugin-framework-validators/objectvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/setvalidator" + "github.com/hashicorp/terraform-plugin-framework-validators/stringvalidator" + "github.com/hashicorp/terraform-plugin-framework/attr" + "github.com/hashicorp/terraform-plugin-framework/diag" + "github.com/hashicorp/terraform-plugin-framework/path" + "github.com/hashicorp/terraform-plugin-framework/resource" + "github.com/hashicorp/terraform-plugin-framework/resource/schema" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/planmodifier" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringdefault" + "github.com/hashicorp/terraform-plugin-framework/resource/schema/stringplanmodifier" + "github.com/hashicorp/terraform-plugin-framework/schema/validator" + "github.com/hashicorp/terraform-plugin-framework/types" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" + "google.golang.org/protobuf/types/known/wrapperspb" "terraform-provider-coralogix/coralogix/clientset" + webhooks "terraform-provider-coralogix/coralogix/clientset/grpc/webhooks" ) var ( - validWebhookTypes = []string{"slack", "custom", "pager_duty", "email_group", "microsoft_teams", "jira", "opsgenie", "sendlog", "demisto"} - validMethods = []string{"get", "post", "put"} - customDefaultPayload = `{ + _ resource.ResourceWithConfigure = &WebhookResource{} + _ resource.ResourceWithImportState = &WebhookResource{} + webhooksSchemaToProtoMethod = map[string]webhooks.GenericWebhookConfig_MethodType{ + "get": webhooks.GenericWebhookConfig_GET, + "post": webhooks.GenericWebhookConfig_POST, + "put": webhooks.GenericWebhookConfig_PUT, + } + webhooksProtoToSchemaMethod = ReverseMap(webhooksSchemaToProtoMethod) + webhooksValidMethods = GetKeys(webhooksSchemaToProtoMethod) + webhooksProtoToSchemaSlackConfigDigestType = map[string]webhooks.SlackConfig_DigestType{ + "error_and_critical_logs": webhooks.SlackConfig_ERROR_AND_CRITICAL_LOGS, + "flow_anomalies": webhooks.SlackConfig_FLOW_ANOMALIES, + "spike_anomalies": webhooks.SlackConfig_SPIKE_ANOMALIES, + "data_usage": webhooks.SlackConfig_DATA_USAGE, + } + webhooksSchemaToProtoSlackConfigDigestType = ReverseMap(webhooksProtoToSchemaSlackConfigDigestType) + webhooksValidSlackConfigDigestTypes = GetKeys(webhooksProtoToSchemaSlackConfigDigestType) + customDefaultPayload = `{ "uuid": "", "alert_id": "$ALERT_ID", "name": "$ALERT_NAME", @@ -29,7 +54,7 @@ var ( "threshold": "$ALERT_THRESHOLD", "timewindow": "$ALERT_TIMEWINDOW_MINUTES", "group_by_labels": "$ALERT_GROUPBY_LABELS", - "alert_action": "$ALERT_ACTION", + "alert_Webhook": "$ALERT_Webhook", "alert_url": "$ALERT_URL", "log_url": "$LOG_URL", "icon_url": "$CORALOGIX_ICON_URL", @@ -191,664 +216,902 @@ var ( }` ) -func resourceCoralogixWebhook() *schema.Resource { - return &schema.Resource{ - CreateContext: resourceCoralogixWebhookCreate, - ReadContext: resourceCoralogixWebhookRead, - UpdateContext: resourceCoralogixWebhookUpdate, - DeleteContext: resourceCoralogixWebhookDelete, +func NewWebhookResource() resource.Resource { + return &WebhookResource{} +} - Importer: &schema.ResourceImporter{ - StateContext: schema.ImportStatePassthroughContext, - }, +type WebhookResource struct { + client *clientset.WebhooksClient +} - Timeouts: &schema.ResourceTimeout{ - Create: schema.DefaultTimeout(60 * time.Second), - Read: schema.DefaultTimeout(30 * time.Second), - Update: schema.DefaultTimeout(60 * time.Second), - Delete: schema.DefaultTimeout(30 * time.Second), - }, +type WebhookResourceModel struct { + ID types.String `tfsdk:"id"` + ExternalID types.String `tfsdk:"external_id"` + Name types.String `tfsdk:"name"` + CustomWebhook *CustomWebhookModel `tfsdk:"custom"` + Slack *SlackModel `tfsdk:"slack"` + PagerDuty *PagerDutyModel `tfsdk:"pager_duty"` + SendLog *SendLogModel `tfsdk:"sendlog"` + EmailGroup *EmailGroupModel `tfsdk:"email_group"` + MicrosoftTeams *MicrosoftTeamsModel `tfsdk:"microsoft_teams"` + Jira *JiraModel `tfsdk:"jira"` + Opsgenie *OpsgenieModel `tfsdk:"opsgenie"` + Demisto *DemistoModel `tfsdk:"demisto"` +} - Schema: WebhookSchema(), +type CustomWebhookModel struct { + UUID types.String `tfsdk:"uuid"` + Method types.String `tfsdk:"method"` + Headers types.Map `tfsdk:"headers"` + Payload types.String `tfsdk:"payload"` + URL types.String `tfsdk:"url"` +} - Description: "Webhook defines integration. More info - https://coralogix.com/integrations/ (Alerting section).", - } +type SlackModel struct { + NotifyAbout types.Set `tfsdk:"notify_on"` //types.String + URL types.String `tfsdk:"url"` } -func resourceCoralogixWebhookCreate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - body, err := extractCreateWebhookRequest(d) - if err != nil { - return diag.FromErr(err) - } +type PagerDutyModel struct { + ServiceKey types.String `tfsdk:"service_key"` +} - log.Printf("[INFO] Creating new webhook: %#v", body) - resp, err := meta.(*clientset.ClientSet).Webhooks().CreateWebhook(ctx, body) - if err != nil { - log.Printf("[ERROR] Received error: %#v", err) - return handleRpcError(err, "webhook") - } - log.Printf("[INFO] Submitted new webhook: %#v", resp) +type SendLogModel struct { + UUID types.String `tfsdk:"uuid"` + Payload types.String `tfsdk:"payload"` + URL types.String `tfsdk:"url"` +} - var m map[string]interface{} - if err = json.Unmarshal([]byte(resp), &m); err != nil { - return diag.FromErr(err) - } - id := strconv.Itoa(int(m["id"].(float64))) - d.SetId(id) - return resourceCoralogixWebhookRead(ctx, d, meta) +type EmailGroupModel struct { + Emails types.List `tfsdk:"emails"` //types.String } -func resourceCoralogixWebhookRead(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - id := d.Id() - log.Printf("[INFO] Reading webhook %s", id) - resp, err := meta.(*clientset.ClientSet).Webhooks().GetWebhook(ctx, id) - if err != nil { - log.Printf("[ERROR] Received error: %#v", err) - if status.Code(err) == codes.NotFound { - d.SetId("") - return diag.Diagnostics{diag.Diagnostic{ - Severity: diag.Warning, - Summary: fmt.Sprintf("Webhook %q is in state, but no longer exists in Coralogix backend", id), - Detail: fmt.Sprintf("%s will be recreated when you apply", id), - }} - } - return handleRpcError(err, "webhook") - } - log.Printf("[INFO] Received webhook: %#v", resp) +type MicrosoftTeamsModel struct { + URL types.String `tfsdk:"url"` +} - var m map[string]interface{} - if err = json.Unmarshal([]byte(resp), &m); err != nil { - return diag.FromErr(err) - } - return setWebhook(d, m) +type JiraModel struct { + ApiKey types.String `tfsdk:"api_token"` + Email types.String `tfsdk:"email"` + ProjectID types.String `tfsdk:"project_key"` + URL types.String `tfsdk:"url"` } -func resourceCoralogixWebhookUpdate(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - body, err := extractCreateWebhookRequest(d) - if err != nil { - return diag.FromErr(err) - } +type OpsgenieModel struct { + URL types.String `tfsdk:"url"` +} - log.Printf("[INFO] Updating webhook: %#v", body) - resp, err := meta.(*clientset.ClientSet).Webhooks().UpdateWebhook(ctx, body) - if err != nil { - log.Printf("[ERROR] Received error: %#v", err) - return handleRpcError(err, "webhook") - } - log.Printf("[INFO] Submitted updated webhook: %#v", resp) - return resourceCoralogixWebhookRead(ctx, d, meta) +type DemistoModel struct { + UUID types.String `tfsdk:"uuid"` + Payload types.String `tfsdk:"payload"` + URL types.String `tfsdk:"url"` } -func resourceCoralogixWebhookDelete(ctx context.Context, d *schema.ResourceData, meta interface{}) diag.Diagnostics { - id := d.Id() - log.Printf("[INFO] Deleting webhook %s\n", id) - _, err := meta.(*clientset.ClientSet).Webhooks().DeleteWebhook(ctx, id) - if err != nil { - log.Printf("[ERROR] Received error: %#v\n", err) - return handleRpcErrorWithID(err, "webhook", id) +func (r *WebhookResource) ImportState(ctx context.Context, req resource.ImportStateRequest, resp *resource.ImportStateResponse) { + resource.ImportStatePassthroughID(ctx, path.Root("id"), req, resp) +} + +func (r *WebhookResource) Configure(_ context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) { + if req.ProviderData == nil { + return + } + + clientSet, ok := req.ProviderData.(*clientset.ClientSet) + if !ok { + resp.Diagnostics.AddError( + "Unexpected Resource Configure Type", + fmt.Sprintf("Expected *clientset.ClientSet, got: %T. Please report this issue to the provider developers.", req.ProviderData), + ) + return } - log.Printf("[INFO] webhook %s deleted\n", id) - d.SetId("") - return nil + r.client = clientSet.Webhooks() } -func WebhookSchema() map[string]*schema.Schema { - return map[string]*schema.Schema{ - "name": { - Type: schema.TypeString, - Required: true, - }, - "slack": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Optional: true, - ValidateDiagFunc: urlValidationFunc(), - }, +func (r *WebhookResource) Metadata(_ context.Context, req resource.MetadataRequest, resp *resource.MetadataResponse) { + resp.TypeName = req.ProviderTypeName + "_webhook" +} + +func (r *WebhookResource) Schema(_ context.Context, _ resource.SchemaRequest, resp *resource.SchemaResponse) { + resp.Schema = schema.Schema{ + Version: 0, + Attributes: map[string]schema.Attribute{ + "id": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), }, + MarkdownDescription: "Webhook ID.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "custom": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Required: true, - ValidateDiagFunc: urlValidationFunc(), + "external_id": schema.StringAttribute{ + Computed: true, + PlanModifiers: []planmodifier.String{ + stringplanmodifier.UseStateForUnknown(), + }, + MarkdownDescription: "Webhook external ID. Using to linq webhook to alert.", + }, + "name": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Webhook name.", + }, + "custom": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "uuid": schema.StringAttribute{ + Optional: true, + Computed: true, + MarkdownDescription: "Webhook UUID. Computed automatically.", }, - "uuid": { - Type: schema.TypeString, - Computed: true, + "method": schema.StringAttribute{ + Optional: true, + Validators: []validator.String{ + stringvalidator.OneOf(webhooksValidMethods...), + }, + MarkdownDescription: fmt.Sprintf("Webhook method. can be one of: %s", strings.Join(webhooksValidMethods, ", ")), }, - "method": { - Type: schema.TypeString, - ValidateFunc: validation.StringInSlice(validMethods, false), - Required: true, + "headers": schema.MapAttribute{ + Optional: true, + ElementType: types.StringType, + MarkdownDescription: "Webhook headers. Map of string to string.", }, - "headers": { - Type: schema.TypeString, - Computed: true, - Optional: true, - ValidateDiagFunc: jsonValidationFuncWithDiagnostics(), - DiffSuppressFunc: SuppressEquivalentJSONDiffs, + "payload": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(customDefaultPayload), + MarkdownDescription: "Webhook payload. JSON string.", }, - "payload": { - Type: schema.TypeString, - Optional: true, - Default: customDefaultPayload, - ValidateDiagFunc: jsonValidationFuncWithDiagnostics(), - DiffSuppressFunc: SuppressEquivalentJSONDiffs, + "url": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Webhook URL.", }, }, - }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "pager_duty": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "service_key": { - Type: schema.TypeString, - Optional: true, - }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), }, + Optional: true, + MarkdownDescription: "Generic webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "email_group": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "emails": { - Type: schema.TypeSet, - Required: true, - Elem: &schema.Schema{ - Type: schema.TypeString, + "slack": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "notify_on": schema.SetAttribute{ + Optional: true, + ElementType: types.StringType, + Validators: []validator.Set{ + setvalidator.ValueStringsAre(stringvalidator.OneOf(webhooksValidSlackConfigDigestTypes...)), }, - Set: schema.HashString, + MarkdownDescription: fmt.Sprintf("Slack notifications. can be one of: %s", strings.Join(webhooksValidSlackConfigDigestTypes, ", ")), + }, + "url": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Slack URL.", }, }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "Slack webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "microsoft_teams": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Required: true, - ValidateDiagFunc: urlValidationFunc(), + "pager_duty": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "service_key": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "PagerDuty service key.", }, }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "PagerDuty webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "jira": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Required: true, - ValidateDiagFunc: urlValidationFunc(), + "sendlog": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "uuid": schema.StringAttribute{ + Optional: true, + Computed: true, + MarkdownDescription: "Webhook UUID. Computed automatically.", }, - "api_token": { - Type: schema.TypeString, - Required: true, + "url": schema.StringAttribute{ + Required: true, + MarkdownDescription: "Webhook URL.", }, - "email": { - Type: schema.TypeString, - Required: true, + "payload": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(sendLockDefaultPayload), + MarkdownDescription: "Webhook payload. JSON string.", }, - "project_key": { - Type: schema.TypeString, - Required: true, + }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "Send log webhook.", + }, + "email_group": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "emails": schema.ListAttribute{ + Optional: true, + ElementType: types.StringType, + MarkdownDescription: "Emails list.", }, }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "Email group webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "opsgenie": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Required: true, - ValidateDiagFunc: urlValidationFunc(), + "microsoft_teams": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "url": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Microsoft Teams URL.", }, }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "Microsoft Teams webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "sendlog": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Computed: true, + "jira": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "api_token": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Jira API token.", }, - "uuid": { - Type: schema.TypeString, - Computed: true, + "email": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "email.", }, - "payload": { - Type: schema.TypeString, - Optional: true, - Default: sendLockDefaultPayload, - ValidateDiagFunc: jsonValidationFuncWithDiagnostics(), - DiffSuppressFunc: SuppressEquivalentJSONDiffs, + "project_key": schema.StringAttribute{ + Optional: true, + MarkdownDescription: "Jira project key.", }, + "url": schema.StringAttribute{ + Required: true, + MarkdownDescription: "Jira URL.", + }, + }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("opsgenie"), + path.MatchRelative().AtParent().AtName("demisto"), + ), }, + Optional: true, + MarkdownDescription: "Jira webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, - }, - "demisto": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "url": { - Type: schema.TypeString, - Computed: true, + "opsgenie": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "url": schema.StringAttribute{ + Required: true, + MarkdownDescription: "Opsgenie URL.", + }, + }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("demisto"), + ), + }, + Optional: true, + MarkdownDescription: "Opsgenie webhook.", + }, + "demisto": schema.SingleNestedAttribute{ + Attributes: map[string]schema.Attribute{ + "uuid": schema.StringAttribute{ + Optional: true, + Computed: true, + MarkdownDescription: "Webhook UUID. Computed automatically.", }, - "uuid": { - Type: schema.TypeString, - Computed: true, + "payload": schema.StringAttribute{ + Optional: true, + Computed: true, + Default: stringdefault.StaticString(demistoDefaultPayload), + MarkdownDescription: "Webhook payload. JSON string.", }, - "payload": { - Type: schema.TypeString, - Optional: true, - Default: demistoDefaultPayload, - ValidateDiagFunc: jsonValidationFuncWithDiagnostics(), - DiffSuppressFunc: SuppressEquivalentJSONDiffs, + "url": schema.StringAttribute{ + Required: true, + MarkdownDescription: "Microsoft Teams URL.", }, }, + Validators: []validator.Object{ + objectvalidator.ExactlyOneOf( + path.MatchRelative().AtParent().AtName("custom"), + path.MatchRelative().AtParent().AtName("slack"), + path.MatchRelative().AtParent().AtName("pager_duty"), + path.MatchRelative().AtParent().AtName("sendlog"), + path.MatchRelative().AtParent().AtName("email_group"), + path.MatchRelative().AtParent().AtName("microsoft_teams"), + path.MatchRelative().AtParent().AtName("jira"), + path.MatchRelative().AtParent().AtName("opsgenie"), + ), + }, + Optional: true, + MarkdownDescription: "Demisto webhook.", }, - MaxItems: 1, - ExactlyOneOf: validWebhookTypes, }, + MarkdownDescription: "Coralogix webhook. For more info please review - https://coralogix.com/docs/coralogix-Webhook-extension/.", + } +} + +func (r *WebhookResource) Create(ctx context.Context, req resource.CreateRequest, resp *resource.CreateResponse) { + jsm := &jsonpb.Marshaler{} + var plan *WebhookResourceModel + diags := req.Plan.Get(ctx, &plan) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + createWebhookRequest, diags := extractCreateWebhookRequest(ctx, plan) + if diags.HasError() { + resp.Diagnostics.Append(diags...) + return + } + webhookStr, _ := jsm.MarshalToString(createWebhookRequest) + log.Printf("[INFO] Creating new webhook: %s", webhookStr) + createResp, err := r.client.CreateWebhook(ctx, createWebhookRequest) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + resp.Diagnostics.AddError( + "Error creating Webhook", + "Could not create Webhook, unexpected error: "+err.Error(), + ) + return } + id := createResp.Id.GetValue() + log.Printf("[INFO] Submitted new webhook, id - %s", id) + + readWebhookRequest := &webhooks.GetOutgoingWebhookRequest{ + Id: wrapperspb.String(id), + } + getWebhookResp, err := r.client.GetWebhook(ctx, readWebhookRequest) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + resp.Diagnostics.AddError( + "Error reading Webhook", + "Could not read Webhook, unexpected error: "+err.Error(), + ) + return + } + + getWebhookStr, _ := jsm.MarshalToString(getWebhookResp) + log.Printf("[INFO] Reading webhook - %s", getWebhookStr) + + plan, diags = flattenWebhook(ctx, getWebhookResp.GetWebhook()) + + // Set state to fully populated data + diags = resp.State.Set(ctx, plan) + resp.Diagnostics.Append(diags...) } -func extractCreateWebhookRequest(d *schema.ResourceData) (string, error) { - webhookTypeStr := From(validWebhookTypes).FirstWith(func(key interface{}) bool { - return len(d.Get(key.(string)).([]interface{})) > 0 - }).(string) - webhookType := d.Get(webhookTypeStr).([]interface{})[0].(map[string]interface{}) - - var webhookTypeMap map[string]interface{} - switch webhookTypeStr { - case "slack": - webhookTypeMap = expandSlack(webhookType) - case "custom": - webhookTypeMap = expandWebhook(webhookType) - case "pager_duty": - webhookTypeMap = expandPagerDuty(webhookType) - case "sendlog": - webhookTypeMap = expandSendlog(webhookType) - case "email_group": - webhookTypeMap = expandEmailGroup(webhookType) - case "microsoft_teams": - webhookTypeMap = expandMicrosoftTeams(webhookType) - case "jira": - webhookTypeMap = expandJira(webhookType) - case "opsgenie": - webhookTypeMap = expandOpsgenie(webhookType) - case "demisto": - webhookTypeMap = expandDemisto(webhookType) - } - - webhookTypeMap["alias"] = d.Get("name").(string) - - if d.Id() != "" { - if n, err := strconv.Atoi(d.Id()); err != nil { - return "", err +func (r *WebhookResource) Read(ctx context.Context, req resource.ReadRequest, resp *resource.ReadResponse) { + jsm := &jsonpb.Marshaler{} + var state *WebhookResourceModel + + diags := req.State.Get(ctx, &state) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + id := state.ID.ValueString() + readWebhookRequest := &webhooks.GetOutgoingWebhookRequest{ + Id: wrapperspb.String(id), + } + + log.Printf("[INFO] Reading Webhook: %s", id) + getWebhookResp, err := r.client.GetWebhook(ctx, readWebhookRequest) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + if status.Code(err) == codes.NotFound || status.Code(err) == codes.NotFound { + state.ID = types.StringNull() + resp.Diagnostics.AddWarning( + fmt.Sprintf("Webhook %q is in state, but no longer exists in Coralogix backend", id), + fmt.Sprintf("%s will be recreated when you apply", id), + ) } else { - webhookTypeMap["id"] = n + resp.Diagnostics.AddError( + "Error reading Webhook", + handleRpcErrorNewFramework(err, "Webhook"), + ) } + return } - if webhookRequestBody, err := json.Marshal(webhookTypeMap); err != nil { - return "", err - } else { - return string(webhookRequestBody), nil - } + getWebhookStr, _ := jsm.MarshalToString(getWebhookResp) + log.Printf("[INFO] Reading webhook - %s", getWebhookStr) + + state, diags = flattenWebhook(ctx, getWebhookResp.GetWebhook()) + + // Set state to fully populated data + diags = resp.State.Set(ctx, state) + resp.Diagnostics.Append(diags...) } -func expandSlack(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - return map[string]interface{}{ - "integration_type_id": 0, - "integration_type": map[string]interface{}{ - "label": "Slack", - "icon": "/assets/settings/slack-48.png", - "id": 0, - }, - "url": url, - } -} - -func expandWebhook(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - method := valueFormat(webhookType["method"].(string)) - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("method", method), - integrationTypeFieldsFormat("headers", webhookType["headers"].(string)), - integrationTypeFieldsFormat("payload", webhookType["payload"].(string)), - }) - return map[string]interface{}{ - "url": url, - "integration_type_fields": integrationTypeFields, - "integration_type_id": 1, - "integration_type": map[string]interface{}{ - "label": "WebHook", - "icon": "/assets/webhook.png", - "id": 1, - }, +func (r WebhookResource) Update(ctx context.Context, req resource.UpdateRequest, resp *resource.UpdateResponse) { + // Retrieve values from plan + var plan *WebhookResourceModel + diags := req.Plan.Get(ctx, &plan) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + webhookUpdateReq, diags := extractUpdateWebhookRequest(ctx, plan) + if diags.HasError() { + resp.Diagnostics.Append(diags...) + return } + log.Printf("[INFO] Updating Webhook: %#v", webhookUpdateReq) + webhookUpdateResp, err := r.client.UpdateWebhook(ctx, webhookUpdateReq) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + resp.Diagnostics.AddError( + "Error updating Webhook", + "Could not update Webhook, unexpected error: "+err.Error(), + ) + return + } + log.Printf("[INFO] Submitted updated Webhhok: %#v", webhookUpdateResp) + + // Get refreshed Webhook value from Coralogix + id := plan.ID.ValueString() + getWebhookResp, err := r.client.GetWebhook(ctx, &webhooks.GetOutgoingWebhookRequest{Id: wrapperspb.String(id)}) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + if status.Code(err) == codes.NotFound || status.Code(err) == codes.NotFound { + plan.ID = types.StringNull() + resp.Diagnostics.AddWarning( + fmt.Sprintf("Webhook %q is in state, but no longer exists in Coralogix backend", id), + fmt.Sprintf("%s will be recreated when you apply", id), + ) + } else { + resp.Diagnostics.AddError( + "Error reading Webhook", + handleRpcErrorNewFramework(err, "Webhook"), + ) + } + return + } + log.Printf("[INFO] Received Webhook: %#v", getWebhookResp) + + plan, diags = flattenWebhook(ctx, getWebhookResp.GetWebhook()) + + // Set state to fully populated data + diags = resp.State.Set(ctx, plan) + resp.Diagnostics.Append(diags...) } -func expandPagerDuty(webhookType map[string]interface{}) map[string]interface{} { - serviceKey := valueFormat(webhookType["service_key"].(string)) - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("serviceKey", serviceKey), - }) - return map[string]interface{}{ - "integration_type_fields": integrationTypeFields, - "integration_type_id": 2, - "integration_type": map[string]interface{}{ - "label": "PagerDuty", - "icon": "/assets/settings/pagerDuty.png", - "id": 2, - }, +func (r WebhookResource) Delete(ctx context.Context, req resource.DeleteRequest, resp *resource.DeleteResponse) { + var state WebhookResourceModel + diags := req.State.Get(ctx, &state) + resp.Diagnostics.Append(diags...) + if resp.Diagnostics.HasError() { + return + } + + id := state.ID.ValueString() + log.Printf("[INFO] Deleting Webhook: %s", id) + _, err := r.client.DeleteWebhook(ctx, &webhooks.DeleteOutgoingWebhookRequest{Id: wrapperspb.String(id)}) + if err != nil { + log.Printf("[ERROR] Received error: %#v", err) + resp.Diagnostics.AddError( + "Error deleting Webhook", + "Could not delete Webhook, unexpected error: "+err.Error(), + ) + return } + log.Printf("[INFO] Deleted Webhook: %s", id) } -func expandSendlog(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("payload", webhookType["payload"].(string)), - }) - return map[string]interface{}{ - "url": url, - "integration_type_fields": integrationTypeFields, - "integration_type_id": 3, - "integration_type": map[string]interface{}{ - "label": "SendLog", - "icon": "/assets/invite.png", - "id": 3, - }, +func extractCreateWebhookRequest(ctx context.Context, plan *WebhookResourceModel) (*webhooks.CreateOutgoingWebhookRequest, diag.Diagnostics) { + data := &webhooks.OutgoingWebhookInputData{ + Name: typeStringToWrapperspbString(plan.Name), } + + data, diagnostics := expandWebhookType(ctx, plan, data) + if diagnostics.HasError() { + return nil, diagnostics + } + + return &webhooks.CreateOutgoingWebhookRequest{ + Data: data, + }, nil } -func expandEmailGroup(m map[string]interface{}) map[string]interface{} { - emails := interfaceSliceToStringSlice(m["emails"].(*schema.Set).List()) - emailsStr := sliceToString(emails) - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("payload", emailsStr), - }) - return map[string]interface{}{ - "integration_type_fields": integrationTypeFields, - "integration_type_id": 4, - "integration_type": map[string]interface{}{ - "label": "Email Group", - "icon": "/assets/settings/pagerDuty.png", - "id": 4, - }, +func extractUpdateWebhookRequest(ctx context.Context, plan *WebhookResourceModel) (*webhooks.UpdateOutgoingWebhookRequest, diag.Diagnostics) { + data := &webhooks.OutgoingWebhookInputData{ + Name: typeStringToWrapperspbString(plan.Name), + } + + data, diagnostics := expandWebhookType(ctx, plan, data) + if diagnostics.HasError() { + return nil, diagnostics } + + return &webhooks.UpdateOutgoingWebhookRequest{ + Id: plan.ID.ValueString(), + Data: data, + }, nil } -func expandMicrosoftTeams(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - return map[string]interface{}{ - "url": url, - "integration_type_id": 5, - "integration_type": map[string]interface{}{ - "label": "Microsoft Teams", - "icon": "/assets/settings/teams.png", - "id": 5, - }, +func expandWebhookType(ctx context.Context, plan *WebhookResourceModel, data *webhooks.OutgoingWebhookInputData) (*webhooks.OutgoingWebhookInputData, diag.Diagnostics) { + var diags diag.Diagnostics + if plan.CustomWebhook != nil { + data.Config, data.Url, diags = expandGenericWebhook(ctx, plan.CustomWebhook) + data.Type = webhooks.WebhookType_GENERIC + } else if plan.Slack != nil { + data.Config, data.Url, diags = expandSlack(ctx, plan.Slack) + data.Type = webhooks.WebhookType_SLACK + } else if plan.PagerDuty != nil { + data.Config = expandPagerDuty(plan.PagerDuty) + data.Type = webhooks.WebhookType_PAGERDUTY + } else if plan.SendLog != nil { + data.Config, data.Url = expandSendLog(plan.SendLog) + data.Type = webhooks.WebhookType_SEND_LOG + } else if plan.EmailGroup != nil { + data.Config, diags = expandEmailGroup(ctx, plan.EmailGroup) + data.Type = webhooks.WebhookType_EMAIL_GROUP + } else if plan.MicrosoftTeams != nil { + data.Config, data.Url = expandMicrosoftTeams(plan.MicrosoftTeams) + data.Type = webhooks.WebhookType_MICROSOFT_TEAMS + } else if plan.Jira != nil { + data.Config, data.Url = expandJira(plan.Jira) + data.Type = webhooks.WebhookType_JIRA + } else if plan.Opsgenie != nil { + data.Config, data.Url = expandOpsgenie(plan.Opsgenie) + data.Type = webhooks.WebhookType_OPSGENIE + } else if plan.Demisto != nil { + data.Config, data.Url = expandDemisto(plan.Demisto) + data.Type = webhooks.WebhookType_DEMISTO } + + if diags.HasError() { + return nil, diags + } + + return data, nil } -func expandJira(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("apiToken", valueFormat(webhookType["api_token"].(string))), - integrationTypeFieldsFormat("email", valueFormat(webhookType["email"].(string))), - integrationTypeFieldsFormat("projectKey", valueFormat(webhookType["project_key"].(string))), - }) - return map[string]interface{}{ - "url": url, - "integration_type_fields": integrationTypeFields, - "integration_type_id": 6, - "integration_type": map[string]interface{}{ - "label": "Jira", - "icon": "/assets/settings/jira.png", - "id": 6, - }, +func expandMicrosoftTeams(microsoftTeams *MicrosoftTeamsModel) (*webhooks.OutgoingWebhookInputData_MicrosoftTeams, *wrapperspb.StringValue) { + var url *wrapperspb.StringValue + if planUrl := microsoftTeams.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) } + + return &webhooks.OutgoingWebhookInputData_MicrosoftTeams{ + MicrosoftTeams: &webhooks.MicrosoftTeamsConfig{}, + }, url } -func expandOpsgenie(webhookType map[string]interface{}) map[string]interface{} { - url := webhookType["url"].(string) - return map[string]interface{}{ - "url": url, - "integration_type_id": 7, - "integration_type": map[string]interface{}{ - "label": "Opsgenie", - "icon": "/assets/settings/opsgenie.png", - "id": 7, +func expandSlack(ctx context.Context, slack *SlackModel) (*webhooks.OutgoingWebhookInputData_Slack, *wrapperspb.StringValue, diag.Diagnostics) { + digests, diags := expandDigests(ctx, slack.NotifyAbout) + if diags.HasError() { + return nil, nil, diags + } + + var url *wrapperspb.StringValue + if planUrl := slack.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) + } + + return &webhooks.OutgoingWebhookInputData_Slack{ + Slack: &webhooks.SlackConfig{ + Digests: digests, }, + }, url, nil +} + +func expandDigests(ctx context.Context, digestsSet types.Set) ([]*webhooks.SlackConfig_Digest, diag.Diagnostics) { + digests := digestsSet.Elements() + expandedDigests := make([]*webhooks.SlackConfig_Digest, 0, len(digests)) + var diags diag.Diagnostics + for _, digest := range digests { + val, err := digest.ToTerraformValue(ctx) + if err != nil { + diags.AddError("Error expanding digest", err.Error()) + continue + } + var str string + val.As(&str) + digestType := webhooksProtoToSchemaSlackConfigDigestType[str] + expandedDigests = append(expandedDigests, expandDigest(digestType)) } + return expandedDigests, diags } -func expandDemisto(webhookType map[string]interface{}) map[string]interface{} { - integrationTypeFields := toArrayFormat([]string{ - integrationTypeFieldsFormat("payload", webhookType["payload"].(string)), - }) - return map[string]interface{}{ - "integration_type_fields": integrationTypeFields, - "integration_type_id": 8, - "integration_type": map[string]interface{}{ - "label": "Demisto", - "icon": "/assets/settings/demisto.png", - "id": 8, - }, +func expandDigest(digest webhooks.SlackConfig_DigestType) *webhooks.SlackConfig_Digest { + return &webhooks.SlackConfig_Digest{ + Type: digest, + IsActive: wrapperspb.Bool(true), } } -func setWebhook(d *schema.ResourceData, resp map[string]interface{}) diag.Diagnostics { - var webhookTypeStr string - var webhook interface{} - switch resp["integration_type_id"].(float64) { - case 0: - webhookTypeStr = "slack" - webhook = flattenSlack(resp) - case 1: - webhookTypeStr = "custom" - webhook = flattenWebhook(resp) - case 2: - webhookTypeStr = "pager_duty" - webhook = flattenPagerDuty(resp) - case 3: - webhookTypeStr = "sendlog" - webhook = flattenSendlog(resp) - case 4: - webhookTypeStr = "email_group" - webhook = flattenEmailGroup(resp) - case 5: - webhookTypeStr = "microsoft_teams" - webhook = flattenMicrosoftTeams(resp) - case 6: - webhookTypeStr = "jira" - webhook = flattenJira(resp) - case 7: - webhookTypeStr = "opsgenie" - webhook = flattenOpsgenie(resp) - case 8: - webhookTypeStr = "demisto" - webhook = flattenDemisto(resp) - } - - if err := d.Set(webhookTypeStr, webhook); err != nil { - return diag.FromErr(err) - } - - if err := d.Set("name", resp["alias"]); err != nil { - return diag.FromErr(err) - } - - return nil -} - -func flattenSlack(resp map[string]interface{}) interface{} { - return []map[string]interface{}{ - { - "url": resp["url"], - }, +func expandGenericWebhook(ctx context.Context, genericWebhook *CustomWebhookModel) (*webhooks.OutgoingWebhookInputData_GenericWebhook, *wrapperspb.StringValue, diag.Diagnostics) { + headers, diags := typeMapToStringMap(ctx, genericWebhook.Headers) + if diags.HasError() { + return nil, nil, diags } + + var url *wrapperspb.StringValue + if planUrl := genericWebhook.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) + } + + return &webhooks.OutgoingWebhookInputData_GenericWebhook{ + GenericWebhook: &webhooks.GenericWebhookConfig{ + Uuid: expandUuid(genericWebhook.UUID), + Method: webhooksSchemaToProtoMethod[genericWebhook.Method.ValueString()], + Headers: headers, + Payload: typeStringToWrapperspbString(genericWebhook.Payload), + }, + }, url, nil } -func flattenWebhook(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - payload := marshalMap(integrationTypeFields["payload"]) - headers := marshalMap(integrationTypeFields["headers"]) - return []map[string]interface{}{ - { - "url": resp["url"], - "uuid": integrationTypeFields["uuid"], - "method": integrationTypeFields["method"], - "headers": headers, - "payload": payload, +func expandPagerDuty(pagerDuty *PagerDutyModel) *webhooks.OutgoingWebhookInputData_PagerDuty { + return &webhooks.OutgoingWebhookInputData_PagerDuty{ + PagerDuty: &webhooks.PagerDutyConfig{ + ServiceKey: typeStringToWrapperspbString(pagerDuty.ServiceKey), }, } } -func flattenPagerDuty(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - serviceKey := integrationTypeFields["serviceKey"].(string) - return []map[string]interface{}{ - { - "service_key": serviceKey, +func expandSendLog(sendLog *SendLogModel) (*webhooks.OutgoingWebhookInputData_SendLog, *wrapperspb.StringValue) { + var url *wrapperspb.StringValue + if planUrl := sendLog.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) + } + + return &webhooks.OutgoingWebhookInputData_SendLog{ + SendLog: &webhooks.SendLogConfig{ + Uuid: expandUuid(sendLog.UUID), + Payload: typeStringToWrapperspbString(sendLog.Payload), }, + }, url +} + +func expandEmailGroup(ctx context.Context, emailGroup *EmailGroupModel) (*webhooks.OutgoingWebhookInputData_EmailGroup, diag.Diagnostics) { + emailAddresses, diags := typeStringSliceToWrappedStringSlice(ctx, emailGroup.Emails.Elements()) + if diags.HasError() { + return nil, diags } + + return &webhooks.OutgoingWebhookInputData_EmailGroup{ + EmailGroup: &webhooks.EmailGroupConfig{ + EmailAddresses: emailAddresses, + }, + }, nil } -func flattenSendlog(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - payload := marshalMap(integrationTypeFields["payload"]) - return []map[string]interface{}{ - { - "url": resp["url"], - "payload": payload, +func expandJira(jira *JiraModel) (*webhooks.OutgoingWebhookInputData_Jira, *wrapperspb.StringValue) { + var url *wrapperspb.StringValue + if planUrl := jira.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) + } + + return &webhooks.OutgoingWebhookInputData_Jira{ + Jira: &webhooks.JiraConfig{ + ApiToken: typeStringToWrapperspbString(jira.ApiKey), + Email: typeStringToWrapperspbString(jira.Email), + ProjectKey: typeStringToWrapperspbString(jira.ProjectID), }, + }, url +} + +func expandOpsgenie(opsgenie *OpsgenieModel) (*webhooks.OutgoingWebhookInputData_Opsgenie, *wrapperspb.StringValue) { + var url *wrapperspb.StringValue + if planUrl := opsgenie.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) } + + return &webhooks.OutgoingWebhookInputData_Opsgenie{ + Opsgenie: &webhooks.OpsgenieConfig{}, + }, url } -func flattenEmailGroup(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - return []map[string]interface{}{ - { - "emails": integrationTypeFields["payload"], +func expandDemisto(demisto *DemistoModel) (*webhooks.OutgoingWebhookInputData_Demisto, *wrapperspb.StringValue) { + var url *wrapperspb.StringValue + if planUrl := demisto.URL; !(planUrl.IsNull() || planUrl.IsUnknown()) { + url = wrapperspb.String(planUrl.ValueString()) + } + + return &webhooks.OutgoingWebhookInputData_Demisto{ + Demisto: &webhooks.DemistoConfig{ + Uuid: expandUuid(demisto.UUID), + Payload: typeStringToWrapperspbString(demisto.Payload), }, + }, url +} + +func flattenWebhook(ctx context.Context, webhook *webhooks.OutgoingWebhook) (*WebhookResourceModel, diag.Diagnostics) { + result := &WebhookResourceModel{ + ID: wrapperspbStringToTypeString(webhook.Id), + ExternalID: types.StringValue(strconv.Itoa(int(webhook.GetExternalId().GetValue()))), + Name: wrapperspbStringToTypeString(webhook.Name), } + + var diags diag.Diagnostics + switch webhook.Config.(type) { + case *webhooks.OutgoingWebhook_Slack: + result.Slack, diags = flattenSlack(webhook.GetSlack(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_GenericWebhook: + result.CustomWebhook, diags = flattenGenericWebhook(ctx, webhook.GetGenericWebhook(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_PagerDuty: + result.PagerDuty = flattenPagerDuty(webhook.GetPagerDuty()) + case *webhooks.OutgoingWebhook_SendLog: + result.SendLog = flattenSendLog(webhook.GetSendLog(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_EmailGroup: + result.EmailGroup = flattenEmailGroup(webhook.GetEmailGroup()) + case *webhooks.OutgoingWebhook_MicrosoftTeams: + result.MicrosoftTeams = flattenMicrosoftTeams(webhook.GetMicrosoftTeams(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_Jira: + result.Jira = flattenJira(webhook.GetJira(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_Opsgenie: + result.Opsgenie = flattenOpsgenie(webhook.GetOpsgenie(), webhook.GetUrl()) + case *webhooks.OutgoingWebhook_Demisto: + result.Demisto = flattenDemisto(webhook.GetDemisto(), webhook.GetUrl()) + } + + return result, diags } -func flattenMicrosoftTeams(resp map[string]interface{}) interface{} { - return []map[string]interface{}{ - { - "url": resp["url"], - }, +func flattenGenericWebhook(ctx context.Context, genericWebhook *webhooks.GenericWebhookConfig, url *wrapperspb.StringValue) (*CustomWebhookModel, diag.Diagnostics) { + headers, diags := types.MapValueFrom(ctx, types.StringType, genericWebhook.Headers) + return &CustomWebhookModel{ + UUID: wrapperspbStringToTypeString(genericWebhook.Uuid), + Method: types.StringValue(webhooksProtoToSchemaMethod[genericWebhook.Method]), + Headers: headers, + Payload: wrapperspbStringToTypeString(genericWebhook.Payload), + URL: wrapperspbStringToTypeString(url), + }, diags +} + +func flattenSlack(slack *webhooks.SlackConfig, url *wrapperspb.StringValue) (*SlackModel, diag.Diagnostics) { + digests, diags := flattenDigests(slack.GetDigests()) + if diags.HasError() { + return nil, diags } + + return &SlackModel{ + NotifyAbout: digests, + URL: wrapperspbStringToTypeString(url), + }, nil } -func flattenJira(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - return []map[string]interface{}{ - { - "api_token": integrationTypeFields["apiToken"], - "email": integrationTypeFields["email"], - "project_key": integrationTypeFields["projectKey"], - "url": resp["url"], - }, +func flattenDigests(digests []*webhooks.SlackConfig_Digest) (types.Set, diag.Diagnostics) { + if len(digests) == 0 { + return types.SetNull(types.StringType), nil } + + var diagnostics diag.Diagnostics + digestsElements := make([]attr.Value, 0, len(digests)) + for _, digest := range digests { + flattenedDigest := flattenDigest(digest) + digestsElements = append(digestsElements, flattenedDigest) + } + + return types.SetValueMust(types.StringType, digestsElements), diagnostics } -func flattenOpsgenie(resp map[string]interface{}) interface{} { - return []map[string]interface{}{ - { - "url": resp["url"], - }, +func flattenDigest(digest *webhooks.SlackConfig_Digest) types.String { + return types.StringValue(webhooksSchemaToProtoSlackConfigDigestType[digest.GetType()]) +} + +func flattenPagerDuty(pagerDuty *webhooks.PagerDutyConfig) *PagerDutyModel { + return &PagerDutyModel{ + ServiceKey: wrapperspbStringToTypeString(pagerDuty.ServiceKey), } } -func flattenDemisto(resp map[string]interface{}) interface{} { - integrationTypeFieldsStr := resp["integration_type_fields"].(string) - integrationTypeFields := extractIntegrationTypeFields(integrationTypeFieldsStr) - payload := marshalMap(integrationTypeFields["payload"]) - return []map[string]interface{}{ - { - "url": resp["url"], - "payload": payload, - }, +func flattenSendLog(sendLog *webhooks.SendLogConfig, url *wrapperspb.StringValue) *SendLogModel { + return &SendLogModel{ + UUID: wrapperspbStringToTypeString(sendLog.Uuid), + Payload: wrapperspbStringToTypeString(sendLog.Payload), + URL: wrapperspbStringToTypeString(url), } } -func integrationTypeFieldsFormat(key, value string) string { - return fmt.Sprintf("{\"name\":\"%s\",\"value\":%s}", key, value) +func flattenEmailGroup(emailGroup *webhooks.EmailGroupConfig) *EmailGroupModel { + return &EmailGroupModel{ + Emails: wrappedStringSliceToTypeStringList(emailGroup.EmailAddresses), + } } -func valueFormat(str string) string { - return fmt.Sprintf("\"%s\"", str) +func flattenMicrosoftTeams(_ *webhooks.MicrosoftTeamsConfig, url *wrapperspb.StringValue) *MicrosoftTeamsModel { + return &MicrosoftTeamsModel{ + URL: wrapperspbStringToTypeString(url), + } } -func toArrayFormat(integrationTypeFields []string) string { - return fmt.Sprintf("[%s]", strings.Join(integrationTypeFields, ", ")) +func flattenJira(jira *webhooks.JiraConfig, url *wrapperspb.StringValue) *JiraModel { + return &JiraModel{ + ApiKey: wrapperspbStringToTypeString(jira.ApiToken), + Email: wrapperspbStringToTypeString(jira.Email), + ProjectID: wrapperspbStringToTypeString(jira.ProjectKey), + URL: wrapperspbStringToTypeString(url), + } } -func extractIntegrationTypeFields(str string) map[string]interface{} { - var fields []map[string]interface{} - json.Unmarshal([]byte(str), &fields) - results := make(map[string]interface{}) - for _, field := range fields { - name := field["name"].(string) - value := field["value"] - results[name] = value +func flattenOpsgenie(_ *webhooks.OpsgenieConfig, url *wrapperspb.StringValue) *OpsgenieModel { + return &OpsgenieModel{ + URL: wrapperspbStringToTypeString(url), } - return results } -func marshalMap(v interface{}) string { - payload, _ := json.Marshal(v) - return string(payload) +func flattenDemisto(demisto *webhooks.DemistoConfig, url *wrapperspb.StringValue) *DemistoModel { + return &DemistoModel{ + UUID: wrapperspbStringToTypeString(demisto.Uuid), + Payload: wrapperspbStringToTypeString(demisto.Payload), + URL: wrapperspbStringToTypeString(url), + } } diff --git a/coralogix/resource_coralogix_webhook_test.go b/coralogix/resource_coralogix_webhook_test.go index 879bcd88..123d2e30 100644 --- a/coralogix/resource_coralogix_webhook_test.go +++ b/coralogix/resource_coralogix_webhook_test.go @@ -2,15 +2,15 @@ package coralogix import ( "context" - "encoding/json" "fmt" - "strconv" "testing" "github.com/hashicorp/terraform-plugin-testing/helper/acctest" "github.com/hashicorp/terraform-plugin-testing/helper/resource" "github.com/hashicorp/terraform-plugin-testing/terraform" + "google.golang.org/protobuf/types/known/wrapperspb" "terraform-provider-coralogix/coralogix/clientset" + webhooks "terraform-provider-coralogix/coralogix/clientset/grpc/webhooks" ) type webhookTestFields struct { @@ -41,9 +41,9 @@ func TestAccCoralogixResourceSlackWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -51,7 +51,7 @@ func TestAccCoralogixResourceSlackWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "slack.0.url", webhook.url), + resource.TestCheckResourceAttr(resourceName, "slack.url", webhook.url), ), }, { @@ -67,12 +67,12 @@ func TestAccCoralogixResourceCustomWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := &customWebhookTestFields{ webhookTestFields: *getRandomWebhook(), - method: selectRandomlyFromSlice(validMethods), + method: selectRandomlyFromSlice(webhooksValidMethods), } resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -80,8 +80,8 @@ func TestAccCoralogixResourceCustomWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "custom.0.url", webhook.url), - resource.TestCheckResourceAttr(resourceName, "custom.0.method", webhook.method), + resource.TestCheckResourceAttr(resourceName, "custom.url", webhook.url), + resource.TestCheckResourceAttr(resourceName, "custom.method", webhook.method), ), }, { @@ -100,9 +100,9 @@ func TestAccCoralogixResourcePagerDutyWebhook(t *testing.T) { serviceKey: acctest.RandomWithPrefix("tf-acc-test"), } resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -110,7 +110,7 @@ func TestAccCoralogixResourcePagerDutyWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "pager_duty.0.service_key", webhook.serviceKey), + resource.TestCheckResourceAttr(resourceName, "pager_duty.service_key", webhook.serviceKey), ), }, { @@ -129,9 +129,9 @@ func TestAccCoralogixResourceEmailGroupWebhook(t *testing.T) { emails: []string{"example@coralogix.com"}, } resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -139,7 +139,7 @@ func TestAccCoralogixResourceEmailGroupWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "email_group.0.emails.0", webhook.emails[0]), + resource.TestCheckResourceAttr(resourceName, "email_group.emails.0", webhook.emails[0]), ), }, { @@ -160,9 +160,9 @@ func TestAccCoralogixResourceJiraWebhook(t *testing.T) { projectKey: acctest.RandomWithPrefix("tf-acc-test"), } resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -170,10 +170,10 @@ func TestAccCoralogixResourceJiraWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "jira.0.url", webhook.url), - resource.TestCheckResourceAttr(resourceName, "jira.0.api_token", webhook.apiToken), - resource.TestCheckResourceAttr(resourceName, "jira.0.project_key", webhook.projectKey), - resource.TestCheckResourceAttr(resourceName, "jira.0.email", webhook.email), + resource.TestCheckResourceAttr(resourceName, "jira.url", webhook.url), + resource.TestCheckResourceAttr(resourceName, "jira.api_token", webhook.apiToken), + resource.TestCheckResourceAttr(resourceName, "jira.project_key", webhook.projectKey), + resource.TestCheckResourceAttr(resourceName, "jira.email", webhook.email), ), }, { @@ -189,17 +189,16 @@ func TestAccCoralogixResourceMicrosoftTeamsWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { - Config: testAccCoralogixResourceMicrosoftTeamsWebhook(webhook), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "microsoft_teams.0.url", webhook.url), + resource.TestCheckResourceAttr(resourceName, "microsoft_teams.url", webhook.url), ), }, { @@ -215,12 +214,11 @@ func TestAccCoralogixResourceSendLogWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { - Config: testAccCoralogixResourceSendLogWebhook(webhook), Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), @@ -240,9 +238,9 @@ func TestAccCoralogixResourceOpsgenieTeamsWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -250,7 +248,7 @@ func TestAccCoralogixResourceOpsgenieTeamsWebhook(t *testing.T) { Check: resource.ComposeAggregateTestCheckFunc( resource.TestCheckResourceAttrSet(resourceName, "id"), resource.TestCheckResourceAttr(resourceName, "name", webhook.name), - resource.TestCheckResourceAttr(resourceName, "opsgenie.0.url", webhook.url), + resource.TestCheckResourceAttr(resourceName, "opsgenie.url", webhook.url), ), }, { @@ -266,9 +264,9 @@ func TestAccCoralogixResourceDemistoTeamsWebhook(t *testing.T) { resourceName := "coralogix_webhook.test" webhook := getRandomWebhook() resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - ProviderFactories: testAccProviderFactories, - CheckDestroy: testAccCheckWebhookDestroy, + PreCheck: func() { testAccPreCheck(t) }, + ProtoV6ProviderFactories: testAccProtoV6ProviderFactories, + CheckDestroy: testAccCheckWebhookDestroy, Steps: []resource.TestStep{ { @@ -297,14 +295,9 @@ func testAccCheckWebhookDestroy(s *terraform.State) error { continue } - resp, err := client.GetWebhook(ctx, rs.Primary.ID) + resp, err := client.GetWebhook(ctx, &webhooks.GetOutgoingWebhookRequest{Id: wrapperspb.String(rs.Primary.ID)}) if err == nil { - var m map[string]interface{} - if err = json.Unmarshal([]byte(resp), &m); err != nil { - return nil - } - id := strconv.Itoa(int(m["id"].(float64))) - if id == rs.Primary.ID { + if resp.GetWebhook().GetId().GetValue() == rs.Primary.ID { return fmt.Errorf("webhook still exists: %s", rs.Primary.ID) } } @@ -324,7 +317,7 @@ func getRandomWebhook() *webhookTestFields { func testAccCoralogixResourceSlackWebhook(w *webhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - slack { + slack = { url = "%s" } } @@ -335,10 +328,10 @@ func testAccCoralogixResourceSlackWebhook(w *webhookTestFields) string { func testAccCoralogixResourceCustomWebhook(w *customWebhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - custom { + custom = { url = "%s" method = "%s" - headers = jsonencode({ "custom" : "header" }) + headers = { "Content-Type" : "application/json" } payload = jsonencode({ "custom" : "payload" }) } } @@ -349,7 +342,7 @@ func testAccCoralogixResourceCustomWebhook(w *customWebhookTestFields) string { func testAccCoralogixResourcePagerdutyWebhook(w *pagerDutyWebhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - pager_duty { + pager_duty = { service_key = "%s" } } @@ -360,7 +353,7 @@ func testAccCoralogixResourcePagerdutyWebhook(w *pagerDutyWebhookTestFields) str func testAccCoralogixResourceEmailGroupWebhook(w *emailGroupWebhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - email_group { + email_group = { emails = %s } } @@ -371,18 +364,19 @@ func testAccCoralogixResourceEmailGroupWebhook(w *emailGroupWebhookTestFields) s func testAccCoralogixResourceSendLogWebhook(w *webhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" test { name = "%s" - sendlog { + sendlog = { payload = jsonencode({ "custom" : "payload" }) + url = "%s" } } `, - w.name) + w.name, w.url) } func testAccCoralogixResourceMicrosoftTeamsWebhook(w *webhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - microsoft_teams { + microsoft_teams = { url = "%s" } } @@ -393,7 +387,7 @@ func testAccCoralogixResourceMicrosoftTeamsWebhook(w *webhookTestFields) string func testAccCoralogixResourceJiraWebhook(w *jiraWebhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - jira { + jira = { url = "%s" api_token = "%s" email = "%s" @@ -407,7 +401,7 @@ func testAccCoralogixResourceJiraWebhook(w *jiraWebhookTestFields) string { func testAccCoralogixResourceOpsgenieWebhook(w *webhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - opsgenie { + opsgenie = { url = "%s" } } @@ -418,10 +412,11 @@ func testAccCoralogixResourceOpsgenieWebhook(w *webhookTestFields) string { func testAccCoralogixResourceDemistoWebhook(w *webhookTestFields) string { return fmt.Sprintf(`resource "coralogix_webhook" "test" { name = "%s" - demisto { + demisto = { payload = jsonencode({ "custom" : "payload" }) + url = "%s" } } `, - w.name) + w.name, w.url) } diff --git a/coralogix/utils.go b/coralogix/utils.go index 38759c9a..305c10b6 100644 --- a/coralogix/utils.go +++ b/coralogix/utils.go @@ -12,6 +12,7 @@ import ( "strconv" "time" + gouuid "github.com/google/uuid" "github.com/hashicorp/go-cty/cty" "github.com/hashicorp/terraform-plugin-framework/attr" datasourceschema "github.com/hashicorp/terraform-plugin-framework/datasource/schema" @@ -746,3 +747,16 @@ func parseNumUint32(desired string) uint32 { } return uint32(parsed) } + +func typeMapToStringMap(ctx context.Context, m types.Map) (map[string]string, diag2.Diagnostics) { + var result map[string]string + diags := m.ElementsAs(ctx, &result, true) + return result, diags +} + +func expandUuid(uuid types.String) *wrapperspb.StringValue { + if uuid.IsNull() || uuid.IsUnknown() { + return &wrapperspb.StringValue{Value: gouuid.NewString()} + } + return &wrapperspb.StringValue{Value: uuid.ValueString()} +} diff --git a/docs/data-sources/webhook.md b/docs/data-sources/webhook.md index 1b14deb6..45f47bdb 100644 --- a/docs/data-sources/webhook.md +++ b/docs/data-sources/webhook.md @@ -3,45 +3,46 @@ page_title: "coralogix_webhook Data Source - terraform-provider-coralogix" subcategory: "" description: |- - + Coralogix webhook. For more info please review - https://coralogix.com/docs/coralogix-Webhook-extension/. --- # coralogix_webhook (Data Source) -## Example Usage +Coralogix webhook. For more info please review - https://coralogix.com/docs/coralogix-Webhook-extension/. + -```hcl -data "coralogix_webhook" "imported_coralogix_webhook_example" { - id = coralogix_webhook.slack_webhook.id -} -``` ## Schema +### Required + +- `id` (String) Webhook ID. + ### Read-Only -- `custom` (List of Object) (see [below for nested schema](#nestedatt--custom)) -- `demisto` (List of Object) (see [below for nested schema](#nestedatt--demisto)) -- `email_group` (List of Object) (see [below for nested schema](#nestedatt--email_group)) -- `id` (String) The ID of this resource. -- `jira` (List of Object) (see [below for nested schema](#nestedatt--jira)) -- `microsoft_teams` (List of Object) (see [below for nested schema](#nestedatt--microsoft_teams)) -- `opsgenie` (List of Object) (see [below for nested schema](#nestedatt--opsgenie)) -- `pager_duty` (List of Object) (see [below for nested schema](#nestedatt--pager_duty)) -- `sendlog` (List of Object) (see [below for nested schema](#nestedatt--sendlog)) -- `slack` (List of Object) (see [below for nested schema](#nestedatt--slack)) +- `custom` (Attributes) Generic webhook. (see [below for nested schema](#nestedatt--custom)) +- `demisto` (Attributes) Demisto webhook. (see [below for nested schema](#nestedatt--demisto)) +- `email_group` (Attributes) Email group webhook. (see [below for nested schema](#nestedatt--email_group)) +- `external_id` (String) Webhook external ID. Using to linq webhook to alert. +- `jira` (Attributes) Jira webhook. (see [below for nested schema](#nestedatt--jira)) +- `microsoft_teams` (Attributes) Microsoft Teams webhook. (see [below for nested schema](#nestedatt--microsoft_teams)) +- `name` (String) Webhook name. +- `opsgenie` (Attributes) Opsgenie webhook. (see [below for nested schema](#nestedatt--opsgenie)) +- `pager_duty` (Attributes) PagerDuty webhook. (see [below for nested schema](#nestedatt--pager_duty)) +- `sendlog` (Attributes) Send log webhook. (see [below for nested schema](#nestedatt--sendlog)) +- `slack` (Attributes) Slack webhook. (see [below for nested schema](#nestedatt--slack)) ### Nested Schema for `custom` Read-Only: -- `headers` (String) -- `method` (String) -- `payload` (String) -- `url` (String) -- `uuid` (String) +- `headers` (Map of String) Webhook headers. Map of string to string. +- `method` (String) Webhook method. can be one of: get, post, put +- `payload` (String) Webhook payload. JSON string. +- `url` (String) Webhook URL. +- `uuid` (String) Webhook UUID. Computed automatically. @@ -49,9 +50,9 @@ Read-Only: Read-Only: -- `payload` (String) -- `url` (String) -- `uuid` (String) +- `payload` (String) Webhook payload. JSON string. +- `url` (String) Microsoft Teams URL. +- `uuid` (String) Webhook UUID. Computed automatically. @@ -59,7 +60,7 @@ Read-Only: Read-Only: -- `emails` (Set of String) +- `emails` (List of String) Emails list. @@ -67,10 +68,10 @@ Read-Only: Read-Only: -- `api_token` (String) -- `email` (String) -- `project_key` (String) -- `url` (String) +- `api_token` (String) Jira API token. +- `email` (String) email. +- `project_key` (String) Jira project key. +- `url` (String) Jira URL. @@ -78,7 +79,7 @@ Read-Only: Read-Only: -- `url` (String) +- `url` (String) Microsoft Teams URL. @@ -86,7 +87,7 @@ Read-Only: Read-Only: -- `url` (String) +- `url` (String) Opsgenie URL. @@ -94,7 +95,7 @@ Read-Only: Read-Only: -- `service_key` (String) +- `service_key` (String) PagerDuty service key. @@ -102,9 +103,9 @@ Read-Only: Read-Only: -- `payload` (String) -- `url` (String) -- `uuid` (String) +- `payload` (String) Webhook payload. JSON string. +- `url` (String) Webhook URL. +- `uuid` (String) Webhook UUID. Computed automatically. @@ -112,6 +113,5 @@ Read-Only: Read-Only: -- `url` (String) - - +- `notify_on` (Set of String) Slack notifications. can be one of: error_and_critical_logs, flow_anomalies, spike_anomalies, data_usage +- `url` (String) Slack URL. diff --git a/docs/resources/rules_group-example.png b/docs/resources/rules_group-example.png deleted file mode 100644 index af988b97..00000000 Binary files a/docs/resources/rules_group-example.png and /dev/null differ diff --git a/docs/resources/webhook.md b/docs/resources/webhook.md index bde4453f..404f5398 100644 --- a/docs/resources/webhook.md +++ b/docs/resources/webhook.md @@ -1,7 +1,5 @@ --- - # generated by https://github.com/hashicorp/terraform-plugin-docs - page_title: "coralogix_webhook Resource - terraform-provider-coralogix" subcategory: "" description: "Webhook defines integration. More info - https://coralogix.com/integrations/ (Alerting section)." @@ -9,433 +7,119 @@ description: "Webhook defines integration. More info - https://coralogix.com/int # coralogix_webhook (Resource) -Webhook defines integration. More info - https://coralogix.com/integrations/ (Alerting section). - -## Example Usage - -### Slack Webhook - -```hcl -resource "coralogix_webhook" "slack_webhook" { - name = "slack-webhook" - slack { - url = "https://join.slack.com/example" - } -} -``` - -### Custom Webhook - -```hcl -resource "coralogix_webhook" "custom_webhook" { - name = "custom-webhook" - custom { - url = "https://example-url.com/" - method = "post" - headers = jsonencode({ "Content-Type" : "application/json" }) - payload = jsonencode({ - "uuid" : "80019a4b-5ad3-5dd1-4f17-f61a386f0221", - "alert_id" : "$ALERT_ID", - "name" : "$ALERT_NAME", - "description" : "$ALERT_DESCRIPTION", - "threshold" : "$ALERT_THRESHOLD", - "timewindow" : "$ALERT_TIMEWINDOW_MINUTES", - "group_by_labels" : "$ALERT_GROUPBY_LABELS", - "alert_action" : "$ALERT_ACTION", - "alert_url" : "$ALERT_URL", - "log_url" : "$LOG_URL", - "icon_url" : "$CORALOGIX_ICON_URL", - "service" : "$SERVICE", - "duration" : "$DURATION", - "errors" : "$ERRORS", - "spans" : "$SPANS", - "fields" : [ - { - "key" : "team", - "value" : "$TEAM_NAME" - }, - { - "key" : "application", - "value" : "$APPLICATION_NAME" - }, - { - "key" : "subsystem", - "value" : "$SUBSYSTEM_NAME" - }, - { - "key" : "severity", - "value" : "$EVENT_SEVERITY" - }, - { - "key" : "computer", - "value" : "$COMPUTER_NAME" - }, - { - "key" : "ipAddress", - "value" : "$IP_ADDRESS" - }, - { - "key" : "timestamp", - "value" : "$EVENT_TIMESTAMP" - }, - { - "key" : "hitCount", - "value" : "$HIT_COUNT" - }, - { - "key" : "text", - "value" : "$LOG_TEXT" - }, - { - "key" : "Custom field", - "value" : "$JSON_KEY" - }, - { - "key" : "metricKey", - "value" : "$METRIC_KEY" - }, - { - "key" : "metricOperator", - "value" : "$METRIC_OPERATOR" - }, - { - "key" : "timeframe", - "value" : "$TIMEFRAME" - }, - { - "key" : "timeframePercentageOverThreshold", - "value" : "$TIMEFRAME_OVER_THRESHOLD" - }, - { - "key" : "metricCriteria", - "value" : "$METRIC_CRITERIA" - }, - { - "key" : "ratioQueryOne", - "value" : "$RATIO_QUERY_ONE" - }, - { - "key" : "ratioQueryTwo", - "value" : "$RATIO_QUERY_TWO" - }, - { - "key" : "ratioTimeframe", - "value" : "$RATIO_TIMEFRAME" - }, - { - "key" : "ratioGroupByKeys", - "value" : "$RATIO_GROUP_BY_KEYS" - }, - { - "key" : "ratioGroupByTable", - "value" : "$RATIO_GROUP_BY_TABLE" - }, - { - "key" : "uniqueCountValuesList", - "value" : "$UNIQUE_COUNT_VALUES_LIST" - }, - { - "key" : "newValueTrackedKey", - "value" : "$NEW_VALUE_TRACKED_KEY" - }, - { - "key" : "metaLabels", - "value" : "$META_LABELS" - } - ] - }) - } -} -``` - -### PagerDuty Webhook - -```hcl -resource "coralogix_webhook" "pager_duty_webhook" { - name = "pagerduty-webhook" - pager_duty { - service_key = "service-key" - } -} -``` - -### Email-Group Webhook - -```hcl -resource "coralogix_webhook" "email_group_webhook" { - name = "email-group-webhook" - email_group { - emails = ["user@example.com"] - } -} -``` - -### Microsoft-Teams Webhook - -```hcl -resource "coralogix_webhook" "microsoft_teams_webhook" { - name = "microsoft-teams-webhook" - microsoft_teams { - url = "https://example-url.com/" - } -} -``` - -### Jira Webhook - -```hcl -resource "coralogix_webhook" "jira_webhook" { - name = "jira-webhook" - jira { - url = "https://coralogix.atlassian.net/jira/your-work" - api_token = "api-token" - email = "example@coralogix.com" - project_key = "project-key" - } -} -``` - -### Opsgenie Webhook - -```hcl -resource "coralogix_webhook" "opsgenie_webhook" { - name = "opsgenie-webhook" - opsgenie { - url = "https://example-url.com/" - } -} -``` - -### Demisto Webhook - -```hcl -resource "coralogix_webhook" "demisto_webhook" { - name = "demisto-webhook" - demisto { - payload = jsonencode({ - "privateKey" : "", - "applicationName" : "Coralogix Alerts", - "subsystemName" : "Coralogix Alerts", - "computerName" : "$COMPUTER_NAME", - "logEntries" : [ - { - "severity" : 3, - "timestamp" : "$EVENT_TIMESTAMP_MS", - "text" : { - "integration_text" : "Security Incident", - "alert_application" : "$APPLICATION_NAME", - "alert_subsystem" : "$SUBSYSTEM_NAME", - "alert_severity" : "$EVENT_SEVERITY", - "alert_id" : "$ALERT_ID", - "alert_name" : "$ALERT_NAME", - "alert_url" : "$ALERT_URL", - "hit_count" : "$HIT_COUNT", - "alert_type_id" : "53d222e2-e7b2-4fa6-80d4-9935425d47dd" - } - } - ], - "uuid" : "45c2d83a-1c75-2360-8741-dd75aabc8d57" - }) - } -} -``` - -### Send-Log Webhook - -```hcl -resource "coralogix_webhook" "sendlog_webhook" { - name = "sendlog-webhook" - sendlog { - payload = jsonencode({ - "privateKey" : "", - "applicationName" : "$APPLICATION_NAME", - "subsystemName" : "$SUBSYSTEM_NAME", - "computerName" : "$COMPUTER_NAME", - "logEntries" : [ - { - "severity" : 3, - "timestamp" : "$EVENT_TIMESTAMP_MS", - "text" : { - "integration_text" : "", - "alert_severity" : "$EVENT_SEVERITY", - "alert_id" : "$ALERT_ID", - "alert_name" : "$ALERT_NAME", - "alert_url" : "$ALERT_URL", - "hit_count" : "$HIT_COUNT" - } - } - ], - "uuid" : "" - }) - } -} -``` - -### Example of usage of webhooks in alert's recipients - -```hcl -resource "coralogix_alert" "standard_alert" { - name = "Standard alert example" - description = "Example of standard alert from terraform" - severity = "Critical" - - notification { - recipients { - emails = ["user@example.com"] - webhooks = [coralogix_webhook.slack_webhook.name, coralogix_webhook.custom_webhook.name] - } - notify_every_min = 1 - } - - standard { - search_query = "remote_addr_enriched:/.*/" - condition { - immediately = true - } - } -} -``` - -## Schema +Coralogix webhook. For more info please review - https://coralogix.com/docs/coralogix-Webhook-extension/. + -### Required -- `name` (String) + +## Schema ### Optional -- `custom` (Block List, Max: 1) (see [below for nested schema](#nestedblock--custom)) -- `demisto` (Block List, Max: 1) (see [below for nested schema](#nestedblock--demisto)) -- `email_group` (Block List, Max: 1) (see [below for nested schema](#nestedblock--email_group)) -- `jira` (Block List, Max: 1) (see [below for nested schema](#nestedblock--jira)) -- `microsoft_teams` (Block List, Max: 1) (see [below for nested schema](#nestedblock--microsoft_teams)) -- `opsgenie` (Block List, Max: 1) (see [below for nested schema](#nestedblock--opsgenie)) -- `pager_duty` (Block List, Max: 1) (see [below for nested schema](#nestedblock--pager_duty)) -- `sendlog` (Block List, Max: 1) (see [below for nested schema](#nestedblock--sendlog)) -- `slack` (Block List, Max: 1) (see [below for nested schema](#nestedblock--slack)) -- `timeouts` (Block, Optional) (see [below for nested schema](#nestedblock--timeouts)) +- `demisto` (Attributes) Demisto webhook. (see [below for nested schema](#nestedatt--demisto)) +- `email_group` (Attributes) Email group webhook. (see [below for nested schema](#nestedatt--email_group)) +- `custom` (Attributes) Generic webhook. (see [below for nested schema](#nestedatt--generic_webhook)) +- `jira` (Attributes) Jira webhook. (see [below for nested schema](#nestedatt--jira)) +- `microsoft_teams` (Attributes) Microsoft Teams webhook. (see [below for nested schema](#nestedatt--microsoft_teams)) +- `name` (String) Webhook name. +- `opsgenie` (Attributes) Opsgenie webhook. (see [below for nested schema](#nestedatt--opsgenie)) +- `pager_duty` (Attributes) PagerDuty webhook. (see [below for nested schema](#nestedatt--pager_duty)) +- `sendlog` (Attributes) Send log webhook. (see [below for nested schema](#nestedatt--sendlog)) +- `slack` (Attributes) Slack webhook. (see [below for nested schema](#nestedatt--slack)) ### Read-Only -- `id` (String) The ID of this resource. +- `external_id` (String) Webhook external ID. Using to linq webhook to alert. +- `id` (String) Webhook ID. - -### Nested Schema for `custom` + +### Nested Schema for `demisto` Required: -- `method` (String) -- `url` (String) +- `url` (String) Microsoft Teams URL. Optional: -- `headers` (String) -- `payload` (String) - -Read-Only: +- `payload` (String) Webhook payload. JSON string. +- `uuid` (String) Webhook UUID. Computed automatically. -- `uuid` (String) - - -### Nested Schema for `demisto` + +### Nested Schema for `email_group` Optional: -- `payload` (String) - -Read-Only: - -- `url` (String) -- `uuid` (String) +- `emails` (List of String) Emails list. - -### Nested Schema for `email_group` + +### Nested Schema for `custom` -Required: +Optional: -- `emails` (Set of String) +- `headers` (Map of String) Webhook headers. Map of string to string. +- `method` (String) Webhook method. can be one of: get, post, put +- `payload` (String) Webhook payload. JSON string. +- `url` (String) Webhook URL. +- `uuid` (String) Webhook UUID. Computed automatically. - + ### Nested Schema for `jira` Required: -- `api_token` (String) -- `email` (String) -- `project_key` (String) -- `url` (String) +- `url` (String) Jira URL. + +Optional: + +- `api_token` (String) Jira API token. +- `email` (String) email. +- `project_key` (String) Jira project key. - + ### Nested Schema for `microsoft_teams` -Required: +Optional: -- `url` (String) +- `url` (String) Microsoft Teams URL. - + ### Nested Schema for `opsgenie` Required: -- `url` (String) +- `url` (String) Opsgenie URL. - + ### Nested Schema for `pager_duty` Optional: -- `service_key` (String) +- `service_key` (String) PagerDuty service key. - + ### Nested Schema for `sendlog` -Optional: - -- `payload` (String) - -Read-Only: - -- `url` (String) -- `uuid` (String) - +Required: - -### Nested Schema for `slack` +- `url` (String) Webhook URL. Optional: -- `url` (String) +- `payload` (String) Webhook payload. JSON string. +- `uuid` (String) Webhook UUID. Computed automatically. - -### Nested Schema for `timeouts` + +### Nested Schema for `slack` Optional: -- `create` (String) -- `delete` (String) -- `read` (String) -- `update` (String) - - -## Import - -```sh -terraform import coralogix_webhook.example -``` - -to get the coralogix_webhook id run the following command and look for the id of the coralogix_webhook you want to import: -```sh -curl --location --request GET 'https://ng-api-http./api/v1/external/integrations/' \ ---header 'Authorization: Bearer ' \ ---data-raw '' -``` - -[region-domain table](../index.md#region-domain-table) \ No newline at end of file +- `notify_on` (Set of String) Slack notifications. can be one of: error_and_critical_logs, flow_anomalies, spike_anomalies, data_usage +- `url` (String) Slack URL. diff --git a/examples/alert/main.tf b/examples/alert/main.tf index bdb13e64..709f125a 100644 --- a/examples/alert/main.tf +++ b/examples/alert/main.tf @@ -25,7 +25,7 @@ resource "coralogix_alert" "standard_alert" { notifications_group { group_by_fields = ["coralogix.metadata.sdkId", "EventType"] notification { - integration_id = coralogix_webhook.slack_webhook.id + integration_id = coralogix_webhook.slack_webhook.external_id retriggering_period_minutes = 60 } notification { @@ -449,7 +449,8 @@ resource "coralogix_alert" "flow_alert" { resource "coralogix_webhook" "slack_webhook" { name = "slack-webhook" - slack { + slack = { + notify_about = ["flow_anomalies"] url = "https://join.slack.com/example" } } \ No newline at end of file diff --git a/examples/webhook/main.tf b/examples/webhook/main.tf index 1ade522c..089de530 100644 --- a/examples/webhook/main.tf +++ b/examples/webhook/main.tf @@ -14,71 +14,70 @@ provider "coralogix" { resource "coralogix_webhook" "slack_webhook" { name = "slack-webhook" - slack { + slack = { + notify_about = ["flow_anomalies"] url = "https://join.slack.com/example" } } -data "coralogix_webhook" "imported_coralogix_webhook_example" { - id = coralogix_webhook.slack_webhook.id -} - resource "coralogix_webhook" "custom_webhook" { name = "custom-webhook" - custom { - url = "https://example-url.com/" + custom = { method = "post" - headers = jsonencode({ "Content-Type" : "application/json" }) + headers = { "Content-Type" : "application/json" } + url = "https://example-url.com/" } } resource "coralogix_webhook" "pager_duty_webhook" { name = "pagerduty-webhook" - pager_duty { + pager_duty = { service_key = "service-key" } } resource "coralogix_webhook" "email_group_webhook" { name = "email-group-webhook" - email_group { + email_group = { emails = ["user@example.com"] } } - +# resource "coralogix_webhook" "microsoft_teams_webhook" { name = "microsoft-teams-webhook" - microsoft_teams { + microsoft_teams ={ url = "https://example-url.com/" } } resource "coralogix_webhook" "jira_webhook" { name = "jira-webhook" - jira { - url = "https://coralogix.atlassian.net/jira/your-work" + jira = { api_token = "api-token" email = "example@coralogix.com" project_key = "project-key" + url = "https://coralogix.atlassian.net/jira/your-work" } } resource "coralogix_webhook" "opsgenie_webhook" { name = "opsgenie-webhook" - opsgenie { + opsgenie = { url = "https://example-url.com/" } } resource "coralogix_webhook" "demisto_webhook" { name = "demisto-webhook" - demisto { + demisto = { + url = "https://example-url.com/" } } resource "coralogix_webhook" "sendlog_webhook" { name = "sendlog-webhook" - sendlog { + sendlog = { + url = "https://example-url.com/" } } @@ -90,7 +89,7 @@ resource "coralogix_alert" "standard_alert" { notifications_group { notification { - integration_id = coralogix_webhook.slack_webhook.id + integration_id = coralogix_webhook.slack_webhook.external_id retriggering_period_minutes = 60 } } diff --git a/go.mod b/go.mod index bea5ce93..cc88fe48 100644 --- a/go.mod +++ b/go.mod @@ -33,7 +33,7 @@ require ( github.com/cloudflare/circl v1.3.3 // indirect github.com/fatih/color v1.13.0 // indirect github.com/google/go-cmp v0.5.9 // indirect - github.com/google/uuid v1.3.0 // indirect + github.com/google/uuid v1.4.0 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-checkpoint v0.5.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect diff --git a/go.sum b/go.sum index 34296727..4a82d696 100644 --- a/go.sum +++ b/go.sum @@ -72,6 +72,8 @@ github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+ github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/grafana/grafana-api-golang-client v0.23.0 h1:Uta0dSkxWYf1D83/E7MRLCG69387FiUc+k9U/35nMhY= github.com/grafana/grafana-api-golang-client v0.23.0/go.mod h1:24W29gPe9yl0/3A9X624TPkAOR8DpHno490cPwnkv8E= github.com/grpc-ecosystem/go-grpc-middleware v1.3.0 h1:+9834+KizmvFV7pXQGSXQTsaWhq2GjuNUt0aUU0YBYw=