From 182c972ba0399a4674fff7ecc9603c4ea7baad1c Mon Sep 17 00:00:00 2001 From: Or Novogroder <108669655+OrNovo@users.noreply.github.com> Date: Sun, 4 Aug 2024 11:19:33 +0300 Subject: [PATCH] outbound-webhooks (#121) * outbound-webhooks --- PROJECT | 59 +- .../v1alpha1/outboundwebhook_types.go | 858 ++++++ .../v1alpha1/zz_generated.deepcopy.go | 484 ++++ apis/utils.go | 28 + .../bases/coralogix.com_outboundwebhooks.yaml | 359 +++ config/crd/kustomization.yaml | 3 + ...jection_in_coralogix_outboundwebhooks.yaml | 7 + ...webhook_in_coralogix_outboundwebhooks.yaml | 16 + ...coralogix_outboundwebhook_editor_role.yaml | 31 + ...coralogix_outboundwebhook_viewer_role.yaml | 27 + config/rbac/role.yaml | 26 + config/samples/alerts/new_value_alert.yaml | 8 +- .../outboundwebhooks/aws-event-bridge.yaml | 19 + config/samples/outboundwebhooks/demisto.yaml | 17 + .../samples/outboundwebhooks/email-group.yaml | 18 + .../outboundwebhooks/generic-webhook.yaml | 20 + config/samples/outboundwebhooks/jira.yaml | 18 + .../outboundwebhooks/microsoft-teams.yaml | 15 + config/samples/outboundwebhooks/opsgenie.yaml | 15 + .../samples/outboundwebhooks/pagerduty.yaml | 16 + config/samples/outboundwebhooks/sendlog.yaml | 16 + config/samples/outboundwebhooks/slack.yaml | 21 + .../outboundwebhook_controller.go | 449 +++ .../outboundwebhook_controller_test.go | 318 +++ controllers/clientset/clientset.go | 7 + .../grpc/outbound-webhooks/audit_log.pb.go | 182 ++ .../outbound-webhooks/outgoing_webhook.pb.go | 2509 +++++++++++++++++ .../outgoing_webhook_service.pb.go | 2044 ++++++++++++++ .../outgoing_webhook_service_grpc.pb.go | 466 +++ .../recording-rules-groups/v2/groups.pb.go | 10 +- .../clientset/outbound-webhooks-client.go | 75 + controllers/mock_clientset/mock_clientset.go | 14 + .../mock_outboundwebhooks-client.go | 100 + docs/api.md | 1465 +++++++++- go.mod | 17 +- go.sum | 16 + kuttl-test.yaml | 3 +- main.go | 8 + .../aws-event-bridge/00-assert.yaml | 28 + .../00-aws-event-bridge-install.yaml | 19 + .../aws-event-bridge/00-delete.yaml | 4 + .../outboundwebhooks/demisto/00-assert.yaml | 24 + .../outboundwebhooks/demisto/00-delete.yaml | 4 + .../demisto/00-demisto-install.yaml | 17 + .../email-group/00-assert.yaml | 24 + .../email-group/00-delete.yaml | 4 + .../email-group/00-demisto-install.yaml | 17 + .../outboundwebhooks/generic/00-assert.yaml | 30 + .../outboundwebhooks/generic/00-delete.yaml | 4 + .../generic/00-generic-install.yaml | 20 + .../e2e/outboundwebhooks/jira/00-assert.yaml | 26 + .../e2e/outboundwebhooks/jira/00-delete.yaml | 4 + .../jira/00-jira-install.yaml | 18 + .../microsoft-teams/00-assert.yaml | 20 + .../microsoft-teams/00-delete.yaml | 4 + .../00-microsoft-teams-install.yaml | 15 + .../outboundwebhooks/opsgenie/00-assert.yaml | 20 + .../outboundwebhooks/opsgenie/00-delete.yaml | 4 + .../opsgenie/00-opsgenie-install.yaml | 15 + .../pagerdurty/00-assert.yaml | 20 + .../pagerdurty/00-delete.yaml | 4 + .../pagerdurty/00-pagerduty-install.yaml | 16 + .../outboundwebhooks/sendlog/00-assert.yaml | 22 + .../outboundwebhooks/sendlog/00-delete.yaml | 4 + .../sendlog/00-sendlog-install.yaml | 16 + .../e2e/outboundwebhooks/slack/00-assert.yaml | 32 + .../e2e/outboundwebhooks/slack/00-delete.yaml | 4 + .../slack/00-slack-install.yaml | 21 + 68 files changed, 10059 insertions(+), 165 deletions(-) create mode 100644 apis/coralogix/v1alpha1/outboundwebhook_types.go create mode 100644 config/crd/bases/coralogix.com_outboundwebhooks.yaml create mode 100644 config/crd/patches/cainjection_in_coralogix_outboundwebhooks.yaml create mode 100644 config/crd/patches/webhook_in_coralogix_outboundwebhooks.yaml create mode 100644 config/rbac/coralogix_outboundwebhook_editor_role.yaml create mode 100644 config/rbac/coralogix_outboundwebhook_viewer_role.yaml create mode 100644 config/samples/outboundwebhooks/aws-event-bridge.yaml create mode 100644 config/samples/outboundwebhooks/demisto.yaml create mode 100644 config/samples/outboundwebhooks/email-group.yaml create mode 100644 config/samples/outboundwebhooks/generic-webhook.yaml create mode 100644 config/samples/outboundwebhooks/jira.yaml create mode 100644 config/samples/outboundwebhooks/microsoft-teams.yaml create mode 100644 config/samples/outboundwebhooks/opsgenie.yaml create mode 100644 config/samples/outboundwebhooks/pagerduty.yaml create mode 100644 config/samples/outboundwebhooks/sendlog.yaml create mode 100644 config/samples/outboundwebhooks/slack.yaml create mode 100644 controllers/alphacontrollers/outboundwebhook_controller.go create mode 100644 controllers/alphacontrollers/outboundwebhook_controller_test.go create mode 100644 controllers/clientset/grpc/outbound-webhooks/audit_log.pb.go create mode 100644 controllers/clientset/grpc/outbound-webhooks/outgoing_webhook.pb.go create mode 100644 controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service.pb.go create mode 100644 controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service_grpc.pb.go create mode 100644 controllers/clientset/outbound-webhooks-client.go create mode 100644 controllers/mock_clientset/mock_outboundwebhooks-client.go create mode 100644 tests/e2e/outboundwebhooks/aws-event-bridge/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/aws-event-bridge/00-aws-event-bridge-install.yaml create mode 100644 tests/e2e/outboundwebhooks/aws-event-bridge/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/demisto/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/demisto/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/demisto/00-demisto-install.yaml create mode 100644 tests/e2e/outboundwebhooks/email-group/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/email-group/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/email-group/00-demisto-install.yaml create mode 100644 tests/e2e/outboundwebhooks/generic/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/generic/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/generic/00-generic-install.yaml create mode 100644 tests/e2e/outboundwebhooks/jira/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/jira/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/jira/00-jira-install.yaml create mode 100644 tests/e2e/outboundwebhooks/microsoft-teams/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/microsoft-teams/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/microsoft-teams/00-microsoft-teams-install.yaml create mode 100644 tests/e2e/outboundwebhooks/opsgenie/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/opsgenie/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/opsgenie/00-opsgenie-install.yaml create mode 100644 tests/e2e/outboundwebhooks/pagerdurty/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/pagerdurty/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/pagerdurty/00-pagerduty-install.yaml create mode 100644 tests/e2e/outboundwebhooks/sendlog/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/sendlog/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/sendlog/00-sendlog-install.yaml create mode 100644 tests/e2e/outboundwebhooks/slack/00-assert.yaml create mode 100644 tests/e2e/outboundwebhooks/slack/00-delete.yaml create mode 100644 tests/e2e/outboundwebhooks/slack/00-slack-install.yaml diff --git a/PROJECT b/PROJECT index fef6c9a..41e136f 100644 --- a/PROJECT +++ b/PROJECT @@ -4,33 +4,42 @@ # More info: https://book.kubebuilder.io/reference/project-config.html domain: coralogix.com layout: - - go.kubebuilder.io/v3 +- go.kubebuilder.io/v3 multigroup: true projectName: coralogix-operator repo: coralogix-operator resources: - - api: - crdVersion: v1 - namespaced: true - controller: true - domain: coralogix.com - kind: Alert - path: coralogix-operator/apis/coralogix/v1alpha1 - version: v1alpha1 - - api: - crdVersion: v1 - namespaced: true - controller: true - domain: coralogix.com - kind: RecordingRuleGroupSet - path: coralogix-operator/apis/coralogix/v1alpha1 - version: v1alpha1 - - api: - crdVersion: v1 - namespaced: true - controller: true - domain: coralogix.com - kind: RuleGroup - path: coralogix-operator/apis/coralogix/v1alpha1 - version: v1alpha1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: coralogix.com + kind: Alert + path: coralogix-operator/apis/coralogix/v1alpha1 + version: v1alpha1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: coralogix.com + kind: RecordingRuleGroupSet + path: coralogix-operator/apis/coralogix/v1alpha1 + version: v1alpha1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: coralogix.com + kind: RuleGroup + path: coralogix-operator/apis/coralogix/v1alpha1 + version: v1alpha1 +- api: + crdVersion: v1 + namespaced: true + controller: true + domain: coralogix.com + group: coralogix + kind: OutboundWebhook + path: coralogix-operator/apis/coralogix/v1alpha1 + version: v1alpha1 version: "3" diff --git a/apis/coralogix/v1alpha1/outboundwebhook_types.go b/apis/coralogix/v1alpha1/outboundwebhook_types.go new file mode 100644 index 0000000..63168e8 --- /dev/null +++ b/apis/coralogix/v1alpha1/outboundwebhook_types.go @@ -0,0 +1,858 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package v1alpha1 + +import ( + "fmt" + + utils "github.com/coralogix/coralogix-operator/apis" + outboundwebhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" + gouuid "github.com/google/uuid" + "google.golang.org/protobuf/types/known/wrapperspb" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" +) + +// EDIT THIS FILE! THIS IS SCAFFOLDING FOR YOU TO OWN! +// NOTE: json tags are required. Any new fields you add must have json tags for the fields to be serialized. + +// OutboundWebhookSpec defines the desired state of OutboundWebhook +type OutboundWebhookSpec struct { + //+kubebuilder:validation:MinLength=0 + Name string `json:"name"` + + OutboundWebhookType OutboundWebhookType `json:"outboundWebhookType"` +} + +type OutboundWebhookType struct { + // +optional + GenericWebhook *GenericWebhook `json:"genericWebhook,omitempty"` + + // +optional + Slack *Slack `json:"slack,omitempty"` + + // +optional + PagerDuty *PagerDuty `json:"pagerDuty,omitempty"` + + // +optional + SendLog *SendLog `json:"sendLog,omitempty"` + + // +optional + EmailGroup *EmailGroup `json:"emailGroup,omitempty"` + + // +optional + MicrosoftTeams *MicrosoftTeams `json:"microsoftTeams,omitempty"` + + // +optional + Jira *Jira `json:"jira,omitempty"` + + // +optional + Opsgenie *Opsgenie `json:"opsgenie,omitempty"` + + // +optional + Demisto *Demisto `json:"demisto,omitempty"` + + // +optional + AwsEventBridge *AwsEventBridge `json:"awsEventBridge,omitempty"` +} + +type OutboundWebhookTypeStatus struct { + GenericWebhook *GenericWebhookStatus `json:"genericWebhook,omitempty"` + + Slack *Slack `json:"slack,omitempty"` + + PagerDuty *PagerDuty `json:"pagerDuty,omitempty"` + + SendLog *SendLogStatus `json:"sendLog,omitempty"` + + EmailGroup *EmailGroup `json:"emailGroup,omitempty"` + + MicrosoftTeams *MicrosoftTeams `json:"microsoftTeams,omitempty"` + + Jira *Jira `json:"jira,omitempty"` + + Opsgenie *Opsgenie `json:"opsgenie,omitempty"` + + Demisto *Demisto `json:"demisto,omitempty"` + + AwsEventBridge *AwsEventBridge `json:"awsEventBridge,omitempty"` +} + +func (in *OutboundWebhookType) appendOutgoingWebhookConfig(data *outboundwebhooks.OutgoingWebhookInputData) (*outboundwebhooks.OutgoingWebhookInputData, error) { + if genericWebhook := in.GenericWebhook; genericWebhook != nil { + data.Config = genericWebhook.extractGenericWebhookConfig() + data.Type = outboundwebhooks.WebhookType_GENERIC + data.Url = wrapperspb.String(genericWebhook.Url) + } else if slack := in.Slack; slack != nil { + data.Config = slack.extractSlackConfig() + data.Type = outboundwebhooks.WebhookType_SLACK + data.Url = wrapperspb.String(slack.Url) + } else if pagerDuty := in.PagerDuty; pagerDuty != nil { + data.Config = pagerDuty.extractPagerDutyConfig() + data.Type = outboundwebhooks.WebhookType_PAGERDUTY + } else if sendLog := in.SendLog; sendLog != nil { + data.Config = sendLog.extractSendLogConfig() + data.Type = outboundwebhooks.WebhookType_SEND_LOG + data.Url = wrapperspb.String(sendLog.Url) + } else if emailGroup := in.EmailGroup; emailGroup != nil { + data.Config = emailGroup.extractEmailGroupConfig() + data.Type = outboundwebhooks.WebhookType_EMAIL_GROUP + } else if microsoftTeams := in.MicrosoftTeams; microsoftTeams != nil { + data.Config = microsoftTeams.extractMicrosoftTeamsConfig() + data.Url = wrapperspb.String(microsoftTeams.Url) + data.Type = outboundwebhooks.WebhookType_MICROSOFT_TEAMS + } else if jira := in.Jira; jira != nil { + data.Config = jira.extractJiraConfig() + data.Url = wrapperspb.String(jira.Url) + data.Type = outboundwebhooks.WebhookType_JIRA + } else if opsgenie := in.Opsgenie; opsgenie != nil { + data.Config = opsgenie.extractOpsgenieConfig() + data.Type = outboundwebhooks.WebhookType_OPSGENIE + data.Url = wrapperspb.String(opsgenie.Url) + } else if demisto := in.Demisto; demisto != nil { + data.Config = demisto.extractDemistoConfig() + data.Url = wrapperspb.String(demisto.Url) + data.Type = outboundwebhooks.WebhookType_DEMISTO + } else if in.AwsEventBridge != nil { + data.Config = in.AwsEventBridge.extractAwsEventBridgeConfig() + data.Type = outboundwebhooks.WebhookType_AWS_EVENT_BRIDGE + } else { + return nil, fmt.Errorf("unsupported outbound-webhook type") + } + + return data, nil +} + +func (in *OutboundWebhookType) DeepEqual(webhookType *OutboundWebhookTypeStatus) (bool, utils.Diff) { + if webhookType == nil { + return false, utils.Diff{ + Name: "OutboundWebhookType", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + equal, diff := true, utils.Diff{} + if desiredGenericWebhook, actualGenericWebhook := in.GenericWebhook, webhookType.GenericWebhook; desiredGenericWebhook != nil { + equal, diff = desiredGenericWebhook.DeepEqual(actualGenericWebhook) + } else if desiredSlack, actualSlack := in.Slack, webhookType.Slack; desiredSlack != nil { + equal, diff = desiredSlack.DeepEqual(actualSlack) + } else if desiredPagerDuty, actualPagerDuty := in.PagerDuty, webhookType.PagerDuty; desiredPagerDuty != nil { + equal, diff = desiredPagerDuty.DeepEqual(actualPagerDuty) + } else if desiredSendLog, actualSendLog := in.SendLog, webhookType.SendLog; desiredSendLog != nil { + equal, diff = desiredSendLog.DeepEqual(actualSendLog) + } else if desiredEmailGroup, actualEmailGroup := in.EmailGroup, webhookType.EmailGroup; desiredEmailGroup != nil { + equal, diff = desiredEmailGroup.DeepEqual(actualEmailGroup) + } else if desiredMicrosoftTeams, actualMicrosoftTeams := in.MicrosoftTeams, webhookType.MicrosoftTeams; desiredMicrosoftTeams != nil { + equal, diff = desiredMicrosoftTeams.DeepEqual(actualMicrosoftTeams) + } else if desiredJira, actualJira := in.Jira, webhookType.Jira; desiredJira != nil { + equal, diff = desiredJira.DeepEqual(actualJira) + } else if desiredOpsgenie, actualOpsgenie := in.Opsgenie, webhookType.Opsgenie; desiredOpsgenie != nil { + equal, diff = desiredOpsgenie.DeepEqual(actualOpsgenie) + } else if desiredDemisto, actualDemisto := in.Demisto, webhookType.Demisto; desiredDemisto != nil { + equal, diff = desiredDemisto.DeepEqual(actualDemisto) + } else if desiredAwsEventBridge, actualAwsEventBridge := in.AwsEventBridge, webhookType.AwsEventBridge; desiredAwsEventBridge != nil { + equal, diff = desiredAwsEventBridge.DeepEqual(actualAwsEventBridge) + } else { + return false, utils.Diff{ + Name: "OutboundWebhookType", + Desired: utils.PointerToString(in), + Actual: utils.PointerToString(webhookType), + } + } + + if !equal { + return false, utils.Diff{ + Name: fmt.Sprintf("OutboundWebhookType.%s", diff.Name), + Desired: diff.Desired, + Actual: diff.Actual, + } + } + + return true, utils.Diff{} +} + +type GenericWebhook struct { + Url string `json:"url"` + + Method GenericWebhookMethodType `json:"method"` + + // +optional + Headers map[string]string `json:"headers"` + + // +optional + Payload *string `json:"payload"` +} + +type GenericWebhookStatus struct { + Uuid string `json:"uuid"` + + Url string `json:"url"` + + Method GenericWebhookMethodType `json:"method"` + + // +optional + Headers map[string]string `json:"headers"` + + // +optional + Payload *string `json:"payload"` +} + +func (in *GenericWebhook) extractGenericWebhookConfig() *outboundwebhooks.OutgoingWebhookInputData_GenericWebhook { + return &outboundwebhooks.OutgoingWebhookInputData_GenericWebhook{ + GenericWebhook: &outboundwebhooks.GenericWebhookConfig{ + Uuid: wrapperspb.String(gouuid.NewString()), + Method: GenericWebhookMethodTypeToProto[in.Method], + Headers: in.Headers, + Payload: utils.StringPointerToWrapperspbString(in.Payload), + }, + } +} + +func (in *GenericWebhook) DeepEqual(webhook *GenericWebhookStatus) (bool, utils.Diff) { + if webhook == nil { + return false, utils.Diff{ + Name: "GenericWebhook", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Url != webhook.Url { + return false, utils.Diff{ + Name: "GenericWebhook.Url", + Desired: in.Url, + Actual: webhook.Url, + } + } + + if in.Method != webhook.Method { + return false, utils.Diff{ + Name: "GenericWebhook.Method", + Desired: in.Method, + Actual: webhook.Method, + } + } + + if !utils.StringMapEqual(in.Headers, webhook.Headers) { + return false, utils.Diff{ + Name: "GenericWebhook.Headers", + Desired: in.Headers, + Actual: webhook.Headers, + } + } + + if utils.PointerToString(in.Payload) != utils.PointerToString(webhook.Payload) { + return false, utils.Diff{ + Name: "GenericWebhook.Payload", + Desired: in.Payload, + Actual: webhook.Payload, + } + } + + return true, utils.Diff{} +} + +// +kubebuilder:validation:Enum=Unkown;Get;Post;Put +type GenericWebhookMethodType string + +const ( + GenericWebhookMethodTypeUNKNOWN GenericWebhookMethodType = "Unknown" + GenericWebhookMethodTypeGet GenericWebhookMethodType = "Get" + GenericWebhookMethodTypePost GenericWebhookMethodType = "Post" + GenericWebhookMethodTypePut GenericWebhookMethodType = "Put" +) + +var ( + GenericWebhookMethodTypeToProto = map[GenericWebhookMethodType]outboundwebhooks.GenericWebhookConfig_MethodType{ + GenericWebhookMethodTypeUNKNOWN: outboundwebhooks.GenericWebhookConfig_UNKNOWN, + GenericWebhookMethodTypeGet: outboundwebhooks.GenericWebhookConfig_GET, + GenericWebhookMethodTypePost: outboundwebhooks.GenericWebhookConfig_POST, + GenericWebhookMethodTypePut: outboundwebhooks.GenericWebhookConfig_PUT, + } + GenericWebhookMethodTypeFromProto = utils.ReverseMap(GenericWebhookMethodTypeToProto) +) + +type Slack struct { + Digests []SlackConfigDigest `json:"digests"` + Attachments []SlackConfigAttachment `json:"attachments"` + Url string `json:"url"` +} + +func (in *Slack) extractSlackConfig() *outboundwebhooks.OutgoingWebhookInputData_Slack { + digests := make([]*outboundwebhooks.SlackConfig_Digest, 0) + for _, digest := range in.Digests { + digests = append(digests, &outboundwebhooks.SlackConfig_Digest{ + Type: SlackConfigDigestTypeToProto[digest.Type], + IsActive: wrapperspb.Bool(digest.IsActive), + }) + } + + attachments := make([]*outboundwebhooks.SlackConfig_Attachment, 0) + for _, attachment := range in.Attachments { + attachments = append(attachments, &outboundwebhooks.SlackConfig_Attachment{ + Type: SlackConfigAttachmentTypeToProto[attachment.Type], + IsActive: wrapperspb.Bool(attachment.IsActive), + }) + } + + return &outboundwebhooks.OutgoingWebhookInputData_Slack{ + Slack: &outboundwebhooks.SlackConfig{ + Digests: digests, + Attachments: attachments, + }, + } +} + +func (in *Slack) DeepEqual(slack *Slack) (bool, utils.Diff) { + if slack == nil { + return false, utils.Diff{ + Name: "Slack", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if !utils.SlicesWithUniqueValuesEqual(in.Digests, slack.Digests) { + return false, utils.Diff{ + Name: "Slack.Digests", + Desired: in.Digests, + Actual: slack.Digests, + } + } + + if !utils.SlicesWithUniqueValuesEqual(in.Attachments, slack.Attachments) { + return false, utils.Diff{ + Name: "Slack.Attachments", + Desired: in.Attachments, + Actual: slack.Attachments, + } + } + + if in.Url != slack.Url { + return false, utils.Diff{ + Name: "Slack.Url", + Desired: in.Url, + Actual: slack.Url, + } + } + + return true, utils.Diff{} +} + +type SlackConfigDigestType string + +const ( + SlackConfigDigestTypeUnknown SlackConfigDigestType = "Unknown" + SlackConfigDigestTypeErrorAndCriticalLogs SlackConfigDigestType = "ErrorAndCriticalLogs" + SlackConfigDigestTypeFlowAnomalies SlackConfigDigestType = "FlowAnomalies" + SlackConfigSpikeAnomalies SlackConfigDigestType = "SpikeAnomalies" + SlackConfigDigestTypeDataUsage SlackConfigDigestType = "DataUsage" +) + +var ( + SlackConfigDigestTypeToProto = map[SlackConfigDigestType]outboundwebhooks.SlackConfig_DigestType{ + SlackConfigDigestTypeUnknown: outboundwebhooks.SlackConfig_UNKNOWN, + SlackConfigDigestTypeErrorAndCriticalLogs: outboundwebhooks.SlackConfig_ERROR_AND_CRITICAL_LOGS, + SlackConfigDigestTypeFlowAnomalies: outboundwebhooks.SlackConfig_FLOW_ANOMALIES, + SlackConfigSpikeAnomalies: outboundwebhooks.SlackConfig_SPIKE_ANOMALIES, + SlackConfigDigestTypeDataUsage: outboundwebhooks.SlackConfig_DATA_USAGE, + } + SlackConfigDigestTypeFromProto = utils.ReverseMap(SlackConfigDigestTypeToProto) +) + +type SlackConfigDigest struct { + Type SlackConfigDigestType `json:"type"` + IsActive bool `json:"isActive"` +} + +type SlackConfigAttachment struct { + Type SlackConfigAttachmentType `json:"type"` + IsActive bool `json:"isActive"` +} + +type SlackConfigAttachmentType string + +const ( + SlackConfigAttachmentTypeEmpty SlackConfigAttachmentType = "Empty" + SlackConfigAttachmentTypeMetricSnapshot SlackConfigAttachmentType = "MetricSnapshot" + SlackConfigAttachmentTypeLogs SlackConfigAttachmentType = "Logs" +) + +var ( + SlackConfigAttachmentTypeToProto = map[SlackConfigAttachmentType]outboundwebhooks.SlackConfig_AttachmentType{ + SlackConfigAttachmentTypeEmpty: outboundwebhooks.SlackConfig_EMPTY, + SlackConfigAttachmentTypeMetricSnapshot: outboundwebhooks.SlackConfig_METRIC_SNAPSHOT, + SlackConfigAttachmentTypeLogs: outboundwebhooks.SlackConfig_LOGS, + } + SlackConfigAttachmentTypeFromProto = utils.ReverseMap(SlackConfigAttachmentTypeToProto) +) + +type PagerDuty struct { + ServiceKey string `json:"serviceKey"` +} + +func (in *PagerDuty) extractPagerDutyConfig() *outboundwebhooks.OutgoingWebhookInputData_PagerDuty { + return &outboundwebhooks.OutgoingWebhookInputData_PagerDuty{ + PagerDuty: &outboundwebhooks.PagerDutyConfig{ + ServiceKey: wrapperspb.String(in.ServiceKey), + }, + } +} + +func (in *PagerDuty) DeepEqual(pagerDuty *PagerDuty) (bool, utils.Diff) { + if pagerDuty == nil { + return false, utils.Diff{ + Name: "PagerDuty", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.ServiceKey != pagerDuty.ServiceKey { + return false, utils.Diff{ + Name: "PagerDuty.ServiceKey", + Desired: in.ServiceKey, + Actual: pagerDuty.ServiceKey, + } + } + + return true, utils.Diff{} +} + +type SendLog struct { + Payload string `json:"payload"` + Url string `json:"url"` +} + +type SendLogStatus struct { + Payload string `json:"payload"` + Url string `json:"url"` + Uuid string `json:"uuid"` +} + +func (in *SendLog) DeepEqual(sendLog *SendLogStatus) (bool, utils.Diff) { + if sendLog == nil { + return false, utils.Diff{ + Name: "SendLog", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Payload != sendLog.Payload { + return false, utils.Diff{ + Name: "SendLog.Payload", + Desired: in.Payload, + Actual: sendLog.Payload, + } + } + + if in.Url != sendLog.Url { + return false, utils.Diff{ + Name: "SendLog.Url", + Desired: in.Url, + Actual: sendLog.Url, + } + } + + return true, utils.Diff{} +} + +func (in *SendLog) extractSendLogConfig() *outboundwebhooks.OutgoingWebhookInputData_SendLog { + return &outboundwebhooks.OutgoingWebhookInputData_SendLog{ + SendLog: &outboundwebhooks.SendLogConfig{ + Payload: wrapperspb.String(in.Payload), + Uuid: wrapperspb.String(gouuid.NewString()), + }, + } +} + +type EmailGroup struct { + EmailAddresses []string `json:"emailAddresses"` +} + +func (in *EmailGroup) DeepEqual(emailGroup *EmailGroup) (bool, utils.Diff) { + if emailGroup == nil { + return false, utils.Diff{ + Name: "EmailGroup", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if !utils.SlicesWithUniqueValuesEqual(in.EmailAddresses, emailGroup.EmailAddresses) { + return false, utils.Diff{ + Name: "EmailGroup.EmailAddresses", + Desired: in.EmailAddresses, + Actual: emailGroup.EmailAddresses, + } + } + + return true, utils.Diff{} +} + +func (in *EmailGroup) extractEmailGroupConfig() *outboundwebhooks.OutgoingWebhookInputData_EmailGroup { + return &outboundwebhooks.OutgoingWebhookInputData_EmailGroup{ + EmailGroup: &outboundwebhooks.EmailGroupConfig{ + EmailAddresses: utils.StringSliceToWrappedStringSlice(in.EmailAddresses), + }, + } +} + +type MicrosoftTeams struct { + Url string `json:"url"` +} + +func (in *MicrosoftTeams) extractMicrosoftTeamsConfig() *outboundwebhooks.OutgoingWebhookInputData_MicrosoftTeams { + return &outboundwebhooks.OutgoingWebhookInputData_MicrosoftTeams{ + MicrosoftTeams: &outboundwebhooks.MicrosoftTeamsConfig{}, + } +} + +func (in *MicrosoftTeams) DeepEqual(microsoftTeams *MicrosoftTeams) (bool, utils.Diff) { + if microsoftTeams == nil { + return false, utils.Diff{ + Name: "MicrosoftTeams", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Url != microsoftTeams.Url { + return false, utils.Diff{ + Name: "MicrosoftTeams.Url", + Desired: in.Url, + Actual: microsoftTeams.Url, + } + } + + return true, utils.Diff{} +} + +type Jira struct { + ApiToken string `json:"apiToken"` + Email string `json:"email"` + ProjectKey string `json:"projectKey"` + Url string `json:"url"` +} + +func (in *Jira) extractJiraConfig() *outboundwebhooks.OutgoingWebhookInputData_Jira { + return &outboundwebhooks.OutgoingWebhookInputData_Jira{ + Jira: &outboundwebhooks.JiraConfig{ + ApiToken: wrapperspb.String(in.ApiToken), + Email: wrapperspb.String(in.Email), + ProjectKey: wrapperspb.String(in.ProjectKey), + }, + } +} + +func (in *Jira) DeepEqual(jira *Jira) (bool, utils.Diff) { + if jira == nil { + return false, utils.Diff{ + Name: "Jira", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.ApiToken != jira.ApiToken { + return false, utils.Diff{ + Name: "Jira.ApiToken", + Desired: in.ApiToken, + Actual: jira.ApiToken, + } + } + + if in.Email != jira.Email { + return false, utils.Diff{ + Name: "Jira.Email", + Desired: in.Email, + Actual: jira.Email, + } + } + + if in.ProjectKey != jira.ProjectKey { + return false, utils.Diff{ + Name: "Jira.ProjectKey", + Desired: in.ProjectKey, + Actual: jira.ProjectKey, + } + } + + if in.Url != jira.Url { + return false, utils.Diff{ + Name: "Jira.Url", + Desired: in.Url, + Actual: jira.Url, + } + } + + return true, utils.Diff{} +} + +type Opsgenie struct { + Url string `json:"url"` +} + +func (in *Opsgenie) extractOpsgenieConfig() *outboundwebhooks.OutgoingWebhookInputData_Opsgenie { + return &outboundwebhooks.OutgoingWebhookInputData_Opsgenie{ + Opsgenie: &outboundwebhooks.OpsgenieConfig{}, + } +} + +func (in *Opsgenie) DeepEqual(opsgenie *Opsgenie) (bool, utils.Diff) { + if opsgenie == nil { + return false, utils.Diff{ + Name: "Opsgenie", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Url != opsgenie.Url { + return false, utils.Diff{ + Name: "Opsgenie.Url", + Desired: in.Url, + Actual: opsgenie.Url, + } + } + + return true, utils.Diff{} +} + +type Demisto struct { + Uuid string `json:"uuid"` + Payload string `json:"payload"` + Url string `json:"url"` +} + +func (in *Demisto) extractDemistoConfig() *outboundwebhooks.OutgoingWebhookInputData_Demisto { + return &outboundwebhooks.OutgoingWebhookInputData_Demisto{ + Demisto: &outboundwebhooks.DemistoConfig{ + Uuid: wrapperspb.String(in.Uuid), + Payload: wrapperspb.String(in.Payload), + }, + } +} + +func (in *Demisto) DeepEqual(demisto *Demisto) (bool, utils.Diff) { + if demisto == nil { + return false, utils.Diff{ + Name: "Demisto", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Uuid != demisto.Uuid { + return false, utils.Diff{ + Name: "Demisto.Uuid", + Desired: in.Uuid, + Actual: demisto.Uuid, + } + } + + if in.Payload != demisto.Payload { + return false, utils.Diff{ + Name: "Demisto.Payload", + Desired: in.Payload, + Actual: demisto.Payload, + } + } + + if in.Url != demisto.Url { + return false, utils.Diff{ + Name: "Demisto.Url", + Desired: in.Url, + Actual: demisto.Url, + } + } + + return true, utils.Diff{} +} + +type AwsEventBridge struct { + EventBusArn string `json:"eventBusArn"` + Detail string `json:"detail"` + DetailType string `json:"detailType"` + Source string `json:"source"` + RoleName string `json:"roleName"` +} + +func (in *AwsEventBridge) extractAwsEventBridgeConfig() *outboundwebhooks.OutgoingWebhookInputData_AwsEventBridge { + return &outboundwebhooks.OutgoingWebhookInputData_AwsEventBridge{ + AwsEventBridge: &outboundwebhooks.AwsEventBridgeConfig{ + EventBusArn: wrapperspb.String(in.EventBusArn), + Detail: wrapperspb.String(in.Detail), + DetailType: wrapperspb.String(in.DetailType), + Source: wrapperspb.String(in.Source), + RoleName: wrapperspb.String(in.RoleName), + }, + } +} + +func (in *AwsEventBridge) DeepEqual(awsEventBridge *AwsEventBridge) (bool, utils.Diff) { + if awsEventBridge == nil { + return false, utils.Diff{ + Name: "AwsEventBridge", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.EventBusArn != awsEventBridge.EventBusArn { + return false, utils.Diff{ + Name: "AwsEventBridge.EventBusArn", + Desired: in.EventBusArn, + Actual: awsEventBridge.EventBusArn, + } + } + + if in.Detail != awsEventBridge.Detail { + return false, utils.Diff{ + Name: "AwsEventBridge.Detail", + Desired: in.Detail, + Actual: awsEventBridge.Detail, + } + } + + if in.DetailType != awsEventBridge.DetailType { + return false, utils.Diff{ + Name: "AwsEventBridge.DetailType", + Desired: in.DetailType, + Actual: awsEventBridge.DetailType, + } + } + + if in.Source != awsEventBridge.Source { + return false, utils.Diff{ + Name: "AwsEventBridge.Source", + Desired: in.Source, + Actual: awsEventBridge.Source, + } + } + + if in.RoleName != awsEventBridge.RoleName { + return false, utils.Diff{ + Name: "AwsEventBridge.RoleName", + Desired: in.RoleName, + Actual: awsEventBridge.RoleName, + } + } + + return true, utils.Diff{} +} + +// OutboundWebhookStatus defines the observed state of OutboundWebhook +type OutboundWebhookStatus struct { + ID *string `json:"id"` + + // +optional + ExternalID *string `json:"externalId"` + + Name string `json:"name"` + + OutboundWebhookType *OutboundWebhookTypeStatus `json:"outboundWebhookType"` +} + +//+kubebuilder:object:root=true +//+kubebuilder:subresource:status + +// OutboundWebhook is the Schema for the outboundwebhooks API +type OutboundWebhook struct { + metav1.TypeMeta `json:",inline"` + metav1.ObjectMeta `json:"metadata,omitempty"` + + Spec OutboundWebhookSpec `json:"spec,omitempty"` + Status OutboundWebhookStatus `json:"status,omitempty"` +} + +func (in *OutboundWebhook) ExtractCreateOutboundWebhookRequest() (*outboundwebhooks.CreateOutgoingWebhookRequest, error) { + webhookData, err := in.Spec.ExtractOutgoingWebhookInputData() + if err != nil { + return nil, err + } + + return &outboundwebhooks.CreateOutgoingWebhookRequest{ + Data: webhookData, + }, nil +} + +func (in *OutboundWebhook) ExtractUpdateOutboundWebhookRequest() (*outboundwebhooks.UpdateOutgoingWebhookRequest, error) { + webhookData, err := in.Spec.ExtractOutgoingWebhookInputData() + if err != nil { + return nil, err + } + + if in.Status.ID == nil { + return nil, fmt.Errorf("outbound-webhook id is not set") + } + + return &outboundwebhooks.UpdateOutgoingWebhookRequest{ + Id: *in.Status.ID, + Data: webhookData, + }, nil +} + +func (in *OutboundWebhookSpec) DeepEqual(status *OutboundWebhookStatus) (bool, utils.Diff) { + if status == nil { + return false, utils.Diff{ + Name: "OutboundWebhookStatus", + Desired: utils.PointerToString(in), + Actual: nil, + } + } + + if in.Name != status.Name { + return false, utils.Diff{ + Name: "OutboundWebhookStatus.Name", + Desired: in.Name, + Actual: status.Name, + } + } + + equal, diff := in.OutboundWebhookType.DeepEqual(status.OutboundWebhookType) + if !equal { + return false, utils.Diff{ + Name: fmt.Sprintf("OutboundWebhookStatus.OutboundWebhookType.%s", diff.Name), + Desired: diff.Desired, + Actual: diff.Actual, + } + } + + return true, utils.Diff{} +} + +func (in *OutboundWebhookSpec) ExtractOutgoingWebhookInputData() (*outboundwebhooks.OutgoingWebhookInputData, error) { + webhookData := &outboundwebhooks.OutgoingWebhookInputData{ + Name: wrapperspb.String(in.Name), + } + return in.OutboundWebhookType.appendOutgoingWebhookConfig(webhookData) +} + +//+kubebuilder:object:root=true + +// OutboundWebhookList contains a list of OutboundWebhook +type OutboundWebhookList struct { + metav1.TypeMeta `json:",inline"` + metav1.ListMeta `json:"metadata,omitempty"` + Items []OutboundWebhook `json:"items"` +} + +func init() { + SchemeBuilder.Register(&OutboundWebhook{}, &OutboundWebhookList{}) +} diff --git a/apis/coralogix/v1alpha1/zz_generated.deepcopy.go b/apis/coralogix/v1alpha1/zz_generated.deepcopy.go index 9bb0e0d..9716582 100644 --- a/apis/coralogix/v1alpha1/zz_generated.deepcopy.go +++ b/apis/coralogix/v1alpha1/zz_generated.deepcopy.go @@ -244,6 +244,21 @@ func (in *AlertType) DeepCopy() *AlertType { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *AwsEventBridge) DeepCopyInto(out *AwsEventBridge) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new AwsEventBridge. +func (in *AwsEventBridge) DeepCopy() *AwsEventBridge { + if in == nil { + return nil + } + out := new(AwsEventBridge) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Block) DeepCopyInto(out *Block) { *out = *in @@ -259,6 +274,41 @@ func (in *Block) DeepCopy() *Block { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Demisto) DeepCopyInto(out *Demisto) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Demisto. +func (in *Demisto) DeepCopy() *Demisto { + if in == nil { + return nil + } + out := new(Demisto) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *EmailGroup) DeepCopyInto(out *EmailGroup) { + *out = *in + if in.EmailAddresses != nil { + in, out := &in.EmailAddresses, &out.EmailAddresses + *out = make([]string, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new EmailGroup. +func (in *EmailGroup) DeepCopy() *EmailGroup { + if in == nil { + return nil + } + out := new(EmailGroup) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ExpirationDate) DeepCopyInto(out *ExpirationDate) { *out = *in @@ -449,6 +499,60 @@ func (in *FlowStageTimeFrame) DeepCopy() *FlowStageTimeFrame { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GenericWebhook) DeepCopyInto(out *GenericWebhook) { + *out = *in + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericWebhook. +func (in *GenericWebhook) DeepCopy() *GenericWebhook { + if in == nil { + return nil + } + out := new(GenericWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *GenericWebhookStatus) DeepCopyInto(out *GenericWebhookStatus) { + *out = *in + if in.Headers != nil { + in, out := &in.Headers, &out.Headers + *out = make(map[string]string, len(*in)) + for key, val := range *in { + (*out)[key] = val + } + } + if in.Payload != nil { + in, out := &in.Payload, &out.Payload + *out = new(string) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new GenericWebhookStatus. +func (in *GenericWebhookStatus) DeepCopy() *GenericWebhookStatus { + if in == nil { + return nil + } + out := new(GenericWebhookStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *InnerFlowAlert) DeepCopyInto(out *InnerFlowAlert) { *out = *in @@ -484,6 +588,21 @@ func (in *InnerFlowAlerts) DeepCopy() *InnerFlowAlerts { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Jira) DeepCopyInto(out *Jira) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Jira. +func (in *Jira) DeepCopy() *Jira { + if in == nil { + return nil + } + out := new(Jira) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *JsonExtract) DeepCopyInto(out *JsonExtract) { *out = *in @@ -611,6 +730,21 @@ func (in *Metric) DeepCopy() *Metric { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *MicrosoftTeams) DeepCopyInto(out *MicrosoftTeams) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new MicrosoftTeams. +func (in *MicrosoftTeams) DeepCopy() *MicrosoftTeams { + if in == nil { + return nil + } + out := new(MicrosoftTeams) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *NewValue) DeepCopyInto(out *NewValue) { *out = *in @@ -699,6 +833,271 @@ func (in *NotificationGroup) DeepCopy() *NotificationGroup { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Opsgenie) DeepCopyInto(out *Opsgenie) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Opsgenie. +func (in *Opsgenie) DeepCopy() *Opsgenie { + if in == nil { + return nil + } + out := new(Opsgenie) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhook) DeepCopyInto(out *OutboundWebhook) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ObjectMeta.DeepCopyInto(&out.ObjectMeta) + in.Spec.DeepCopyInto(&out.Spec) + in.Status.DeepCopyInto(&out.Status) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhook. +func (in *OutboundWebhook) DeepCopy() *OutboundWebhook { + if in == nil { + return nil + } + out := new(OutboundWebhook) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OutboundWebhook) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhookList) DeepCopyInto(out *OutboundWebhookList) { + *out = *in + out.TypeMeta = in.TypeMeta + in.ListMeta.DeepCopyInto(&out.ListMeta) + if in.Items != nil { + in, out := &in.Items, &out.Items + *out = make([]OutboundWebhook, len(*in)) + for i := range *in { + (*in)[i].DeepCopyInto(&(*out)[i]) + } + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhookList. +func (in *OutboundWebhookList) DeepCopy() *OutboundWebhookList { + if in == nil { + return nil + } + out := new(OutboundWebhookList) + in.DeepCopyInto(out) + return out +} + +// DeepCopyObject is an autogenerated deepcopy function, copying the receiver, creating a new runtime.Object. +func (in *OutboundWebhookList) DeepCopyObject() runtime.Object { + if c := in.DeepCopy(); c != nil { + return c + } + return nil +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhookSpec) DeepCopyInto(out *OutboundWebhookSpec) { + *out = *in + in.OutboundWebhookType.DeepCopyInto(&out.OutboundWebhookType) +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhookSpec. +func (in *OutboundWebhookSpec) DeepCopy() *OutboundWebhookSpec { + if in == nil { + return nil + } + out := new(OutboundWebhookSpec) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhookStatus) DeepCopyInto(out *OutboundWebhookStatus) { + *out = *in + if in.ID != nil { + in, out := &in.ID, &out.ID + *out = new(string) + **out = **in + } + if in.ExternalID != nil { + in, out := &in.ExternalID, &out.ExternalID + *out = new(string) + **out = **in + } + if in.OutboundWebhookType != nil { + in, out := &in.OutboundWebhookType, &out.OutboundWebhookType + *out = new(OutboundWebhookTypeStatus) + (*in).DeepCopyInto(*out) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhookStatus. +func (in *OutboundWebhookStatus) DeepCopy() *OutboundWebhookStatus { + if in == nil { + return nil + } + out := new(OutboundWebhookStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhookType) DeepCopyInto(out *OutboundWebhookType) { + *out = *in + if in.GenericWebhook != nil { + in, out := &in.GenericWebhook, &out.GenericWebhook + *out = new(GenericWebhook) + (*in).DeepCopyInto(*out) + } + if in.Slack != nil { + in, out := &in.Slack, &out.Slack + *out = new(Slack) + (*in).DeepCopyInto(*out) + } + if in.PagerDuty != nil { + in, out := &in.PagerDuty, &out.PagerDuty + *out = new(PagerDuty) + **out = **in + } + if in.SendLog != nil { + in, out := &in.SendLog, &out.SendLog + *out = new(SendLog) + **out = **in + } + if in.EmailGroup != nil { + in, out := &in.EmailGroup, &out.EmailGroup + *out = new(EmailGroup) + (*in).DeepCopyInto(*out) + } + if in.MicrosoftTeams != nil { + in, out := &in.MicrosoftTeams, &out.MicrosoftTeams + *out = new(MicrosoftTeams) + **out = **in + } + if in.Jira != nil { + in, out := &in.Jira, &out.Jira + *out = new(Jira) + **out = **in + } + if in.Opsgenie != nil { + in, out := &in.Opsgenie, &out.Opsgenie + *out = new(Opsgenie) + **out = **in + } + if in.Demisto != nil { + in, out := &in.Demisto, &out.Demisto + *out = new(Demisto) + **out = **in + } + if in.AwsEventBridge != nil { + in, out := &in.AwsEventBridge, &out.AwsEventBridge + *out = new(AwsEventBridge) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhookType. +func (in *OutboundWebhookType) DeepCopy() *OutboundWebhookType { + if in == nil { + return nil + } + out := new(OutboundWebhookType) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *OutboundWebhookTypeStatus) DeepCopyInto(out *OutboundWebhookTypeStatus) { + *out = *in + if in.GenericWebhook != nil { + in, out := &in.GenericWebhook, &out.GenericWebhook + *out = new(GenericWebhookStatus) + (*in).DeepCopyInto(*out) + } + if in.Slack != nil { + in, out := &in.Slack, &out.Slack + *out = new(Slack) + (*in).DeepCopyInto(*out) + } + if in.PagerDuty != nil { + in, out := &in.PagerDuty, &out.PagerDuty + *out = new(PagerDuty) + **out = **in + } + if in.SendLog != nil { + in, out := &in.SendLog, &out.SendLog + *out = new(SendLogStatus) + **out = **in + } + if in.EmailGroup != nil { + in, out := &in.EmailGroup, &out.EmailGroup + *out = new(EmailGroup) + (*in).DeepCopyInto(*out) + } + if in.MicrosoftTeams != nil { + in, out := &in.MicrosoftTeams, &out.MicrosoftTeams + *out = new(MicrosoftTeams) + **out = **in + } + if in.Jira != nil { + in, out := &in.Jira, &out.Jira + *out = new(Jira) + **out = **in + } + if in.Opsgenie != nil { + in, out := &in.Opsgenie, &out.Opsgenie + *out = new(Opsgenie) + **out = **in + } + if in.Demisto != nil { + in, out := &in.Demisto, &out.Demisto + *out = new(Demisto) + **out = **in + } + if in.AwsEventBridge != nil { + in, out := &in.AwsEventBridge, &out.AwsEventBridge + *out = new(AwsEventBridge) + **out = **in + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new OutboundWebhookTypeStatus. +func (in *OutboundWebhookTypeStatus) DeepCopy() *OutboundWebhookTypeStatus { + if in == nil { + return nil + } + out := new(OutboundWebhookTypeStatus) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *PagerDuty) DeepCopyInto(out *PagerDuty) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new PagerDuty. +func (in *PagerDuty) DeepCopy() *PagerDuty { + if in == nil { + return nil + } + out := new(PagerDuty) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Parse) DeepCopyInto(out *Parse) { *out = *in @@ -1357,6 +1756,36 @@ func (in *Scheduling) DeepCopy() *Scheduling { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SendLog) DeepCopyInto(out *SendLog) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SendLog. +func (in *SendLog) DeepCopy() *SendLog { + if in == nil { + return nil + } + out := new(SendLog) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SendLogStatus) DeepCopyInto(out *SendLogStatus) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SendLogStatus. +func (in *SendLogStatus) DeepCopy() *SendLogStatus { + if in == nil { + return nil + } + out := new(SendLogStatus) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *ShowInInsight) DeepCopyInto(out *ShowInInsight) { *out = *in @@ -1372,6 +1801,61 @@ func (in *ShowInInsight) DeepCopy() *ShowInInsight { return out } +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *Slack) DeepCopyInto(out *Slack) { + *out = *in + if in.Digests != nil { + in, out := &in.Digests, &out.Digests + *out = make([]SlackConfigDigest, len(*in)) + copy(*out, *in) + } + if in.Attachments != nil { + in, out := &in.Attachments, &out.Attachments + *out = make([]SlackConfigAttachment, len(*in)) + copy(*out, *in) + } +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new Slack. +func (in *Slack) DeepCopy() *Slack { + if in == nil { + return nil + } + out := new(Slack) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackConfigAttachment) DeepCopyInto(out *SlackConfigAttachment) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackConfigAttachment. +func (in *SlackConfigAttachment) DeepCopy() *SlackConfigAttachment { + if in == nil { + return nil + } + out := new(SlackConfigAttachment) + in.DeepCopyInto(out) + return out +} + +// DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. +func (in *SlackConfigDigest) DeepCopyInto(out *SlackConfigDigest) { + *out = *in +} + +// DeepCopy is an autogenerated deepcopy function, copying the receiver, creating a new SlackConfigDigest. +func (in *SlackConfigDigest) DeepCopy() *SlackConfigDigest { + if in == nil { + return nil + } + out := new(SlackConfigDigest) + in.DeepCopyInto(out) + return out +} + // DeepCopyInto is an autogenerated deepcopy function, copying the receiver, writing into out. in must be non-nil. func (in *Standard) DeepCopyInto(out *Standard) { *out = *in diff --git a/apis/utils.go b/apis/utils.go index 8086997..7ec5742 100644 --- a/apis/utils.go +++ b/apis/utils.go @@ -68,6 +68,20 @@ func FloatToQuantity(n float64) resource.Quantity { return resource.MustParse(fmt.Sprintf("%f", n)) } +func StringMapEqual(a, b map[string]string) bool { + if len(a) != len(b) { + return false + } + + for k, v := range a { + if b[k] != v { + return false + } + } + + return true +} + func PointerToString(o any) string { if o == nil { return "" @@ -115,3 +129,17 @@ func PointerToString(o any) string { return result } + +func StringPointerToWrapperspbString(s *string) *wrapperspb.StringValue { + if s == nil { + return nil + } + return wrapperspb.String(*s) +} + +func WrapperspbStringToStringPointer(s *wrapperspb.StringValue) *string { + if s == nil { + return nil + } + return &s.Value +} diff --git a/config/crd/bases/coralogix.com_outboundwebhooks.yaml b/config/crd/bases/coralogix.com_outboundwebhooks.yaml new file mode 100644 index 0000000..2841927 --- /dev/null +++ b/config/crd/bases/coralogix.com_outboundwebhooks.yaml @@ -0,0 +1,359 @@ +--- +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + controller-gen.kubebuilder.io/version: v0.9.2 + creationTimestamp: null + name: outboundwebhooks.coralogix.com +spec: + group: coralogix.com + names: + kind: OutboundWebhook + listKind: OutboundWebhookList + plural: outboundwebhooks + singular: outboundwebhook + scope: Namespaced + versions: + - name: v1alpha1 + schema: + openAPIV3Schema: + description: OutboundWebhook is the Schema for the outboundwebhooks API + properties: + apiVersion: + description: 'APIVersion defines the versioned schema of this representation + of an object. Servers should convert recognized schemas to the latest + internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources' + type: string + kind: + description: 'Kind is a string value representing the REST resource this + object represents. Servers may infer this from the endpoint the client + submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds' + type: string + metadata: + type: object + spec: + description: OutboundWebhookSpec defines the desired state of OutboundWebhook + properties: + name: + minLength: 0 + type: string + outboundWebhookType: + properties: + awsEventBridge: + properties: + detail: + type: string + detailType: + type: string + eventBusArn: + type: string + roleName: + type: string + source: + type: string + required: + - detail + - detailType + - eventBusArn + - roleName + - source + type: object + demisto: + properties: + payload: + type: string + url: + type: string + uuid: + type: string + required: + - payload + - url + - uuid + type: object + emailGroup: + properties: + emailAddresses: + items: + type: string + type: array + required: + - emailAddresses + type: object + genericWebhook: + properties: + headers: + additionalProperties: + type: string + type: object + method: + enum: + - Unkown + - Get + - Post + - Put + type: string + payload: + type: string + url: + type: string + required: + - method + - url + type: object + jira: + properties: + apiToken: + type: string + email: + type: string + projectKey: + type: string + url: + type: string + required: + - apiToken + - email + - projectKey + - url + type: object + microsoftTeams: + properties: + url: + type: string + required: + - url + type: object + opsgenie: + properties: + url: + type: string + required: + - url + type: object + pagerDuty: + properties: + serviceKey: + type: string + required: + - serviceKey + type: object + sendLog: + properties: + payload: + type: string + url: + type: string + required: + - payload + - url + type: object + slack: + properties: + attachments: + items: + properties: + isActive: + type: boolean + type: + type: string + required: + - isActive + - type + type: object + type: array + digests: + items: + properties: + isActive: + type: boolean + type: + type: string + required: + - isActive + - type + type: object + type: array + url: + type: string + required: + - attachments + - digests + - url + type: object + type: object + required: + - name + - outboundWebhookType + type: object + status: + description: OutboundWebhookStatus defines the observed state of OutboundWebhook + properties: + externalId: + type: string + id: + type: string + name: + type: string + outboundWebhookType: + properties: + awsEventBridge: + properties: + detail: + type: string + detailType: + type: string + eventBusArn: + type: string + roleName: + type: string + source: + type: string + required: + - detail + - detailType + - eventBusArn + - roleName + - source + type: object + demisto: + properties: + payload: + type: string + url: + type: string + uuid: + type: string + required: + - payload + - url + - uuid + type: object + emailGroup: + properties: + emailAddresses: + items: + type: string + type: array + required: + - emailAddresses + type: object + genericWebhook: + properties: + headers: + additionalProperties: + type: string + type: object + method: + enum: + - Unkown + - Get + - Post + - Put + type: string + payload: + type: string + url: + type: string + uuid: + type: string + required: + - method + - url + - uuid + type: object + jira: + properties: + apiToken: + type: string + email: + type: string + projectKey: + type: string + url: + type: string + required: + - apiToken + - email + - projectKey + - url + type: object + microsoftTeams: + properties: + url: + type: string + required: + - url + type: object + opsgenie: + properties: + url: + type: string + required: + - url + type: object + pagerDuty: + properties: + serviceKey: + type: string + required: + - serviceKey + type: object + sendLog: + properties: + payload: + type: string + url: + type: string + uuid: + type: string + required: + - payload + - url + - uuid + type: object + slack: + properties: + attachments: + items: + properties: + isActive: + type: boolean + type: + type: string + required: + - isActive + - type + type: object + type: array + digests: + items: + properties: + isActive: + type: boolean + type: + type: string + required: + - isActive + - type + type: object + type: array + url: + type: string + required: + - attachments + - digests + - url + type: object + type: object + required: + - id + - name + - outboundWebhookType + type: object + type: object + served: true + storage: true + subresources: + status: {} diff --git a/config/crd/kustomization.yaml b/config/crd/kustomization.yaml index ef21faf..d8bbb83 100644 --- a/config/crd/kustomization.yaml +++ b/config/crd/kustomization.yaml @@ -5,6 +5,7 @@ resources: - bases/coralogix.com_rulegroups.yaml - bases/coralogix.com_alerts.yaml - bases/coralogix.com_recordingrulegroupsets.yaml + - bases/coralogix.com_outboundwebhooks.yaml #+kubebuilder:scaffold:crdkustomizeresource patchesStrategicMerge: @@ -13,6 +14,7 @@ patchesStrategicMerge: #- patches/webhook_in_rulegroups.yaml #- patches/webhook_in_alerts.yaml #- patches/webhook_in_recordingrulegroupsets.yaml +#- patches/webhook_in_outboundwebhooks.yaml #+kubebuilder:scaffold:crdkustomizewebhookpatch # [CERTMANAGER] To enable cert-manager, uncomment all the sections with [CERTMANAGER] prefix. @@ -20,6 +22,7 @@ patchesStrategicMerge: #- patches/cainjection_in_rulegroups.yaml #- patches/cainjection_in_alerts.yaml #- patches/cainjection_in_recordingrulegroupsets.yaml +#- patches/cainjection_in_outboundwebhooks.yaml #+kubebuilder:scaffold:crdkustomizecainjectionpatch # the following config is for teaching kustomize how to do kustomization for CRDs. diff --git a/config/crd/patches/cainjection_in_coralogix_outboundwebhooks.yaml b/config/crd/patches/cainjection_in_coralogix_outboundwebhooks.yaml new file mode 100644 index 0000000..c8c280c --- /dev/null +++ b/config/crd/patches/cainjection_in_coralogix_outboundwebhooks.yaml @@ -0,0 +1,7 @@ +# The following patch adds a directive for certmanager to inject CA into the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + annotations: + cert-manager.io/inject-ca-from: $(CERTIFICATE_NAMESPACE)/$(CERTIFICATE_NAME) + name: outboundwebhooks.coralogix.coralogix.com diff --git a/config/crd/patches/webhook_in_coralogix_outboundwebhooks.yaml b/config/crd/patches/webhook_in_coralogix_outboundwebhooks.yaml new file mode 100644 index 0000000..40adcbc --- /dev/null +++ b/config/crd/patches/webhook_in_coralogix_outboundwebhooks.yaml @@ -0,0 +1,16 @@ +# The following patch enables a conversion webhook for the CRD +apiVersion: apiextensions.k8s.io/v1 +kind: CustomResourceDefinition +metadata: + name: outboundwebhooks.coralogix.coralogix.com +spec: + conversion: + strategy: Webhook + webhook: + clientConfig: + service: + namespace: system + name: webhook-service + path: /convert + conversionReviewVersions: + - v1 diff --git a/config/rbac/coralogix_outboundwebhook_editor_role.yaml b/config/rbac/coralogix_outboundwebhook_editor_role.yaml new file mode 100644 index 0000000..65822bd --- /dev/null +++ b/config/rbac/coralogix_outboundwebhook_editor_role.yaml @@ -0,0 +1,31 @@ +# permissions for end users to edit outboundwebhooks. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: outboundwebhook-editor-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: coralogix-operator + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + name: outboundwebhook-editor-role +rules: +- apiGroups: + - coralogix.coralogix.com + resources: + - outboundwebhooks + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - coralogix.com + resources: + - outboundwebhooks/status + verbs: + - get diff --git a/config/rbac/coralogix_outboundwebhook_viewer_role.yaml b/config/rbac/coralogix_outboundwebhook_viewer_role.yaml new file mode 100644 index 0000000..c8b425f --- /dev/null +++ b/config/rbac/coralogix_outboundwebhook_viewer_role.yaml @@ -0,0 +1,27 @@ +# permissions for end users to view outboundwebhooks. +apiVersion: rbac.authorization.k8s.io/v1 +kind: ClusterRole +metadata: + labels: + app.kubernetes.io/name: clusterrole + app.kubernetes.io/instance: outboundwebhook-viewer-role + app.kubernetes.io/component: rbac + app.kubernetes.io/created-by: coralogix-operator + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + name: outboundwebhook-viewer-role +rules: +- apiGroups: + - coralogix.com + resources: + - outboundwebhooks + verbs: + - get + - list + - watch +- apiGroups: + - coralogix.com + resources: + - outboundwebhooks/status + verbs: + - get diff --git a/config/rbac/role.yaml b/config/rbac/role.yaml index 82ef0bf..cfdcc0a 100644 --- a/config/rbac/role.yaml +++ b/config/rbac/role.yaml @@ -83,6 +83,32 @@ rules: - get - patch - update +- apiGroups: + - coralogix.coralogix.com + resources: + - outboundwebhooks + verbs: + - create + - delete + - get + - list + - patch + - update + - watch +- apiGroups: + - coralogix.coralogix.com + resources: + - outboundwebhooks/finalizers + verbs: + - update +- apiGroups: + - coralogix.coralogix.com + resources: + - outboundwebhooks/status + verbs: + - get + - patch + - update - apiGroups: - monitoring.coreos.com resources: diff --git a/config/samples/alerts/new_value_alert.yaml b/config/samples/alerts/new_value_alert.yaml index 424a21e..f664793 100644 --- a/config/samples/alerts/new_value_alert.yaml +++ b/config/samples/alerts/new_value_alert.yaml @@ -10,14 +10,14 @@ metadata: name: new-value-alert-example spec: name: new-value alert example - description: alert from k8s operator + description: alert from k8s operator bla bla severity: Critical notificationGroups: - groupByFields: [ "remote_addr_geoip.country_name" ] notifications: - - notifyOn: TriggeredOnly - integrationName: WebhookAlerts - retriggeringPeriodMinutes: 1 +# - notifyOn: TriggeredOnly +# integrationName: WebhookAlerts +# retriggeringPeriodMinutes: 1 - notifyOn: TriggeredAndResolved emailRecipients: [ "example@coralogix.com" ] retriggeringPeriodMinutes: 1440 diff --git a/config/samples/outboundwebhooks/aws-event-bridge.yaml b/config/samples/outboundwebhooks/aws-event-bridge.yaml new file mode 100644 index 0000000..6ca43bc --- /dev/null +++ b/config/samples/outboundwebhooks/aws-event-bridge.yaml @@ -0,0 +1,19 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: aws-event-bridge-webhook +spec: + name: aws-event-bridge-webhook + outboundWebhookType: + awsEventBridge: + eventBusArn: "my-event-bus" + detail: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + detailType: "myDetailType" + source: "mySource" + roleName: "arn:aws:iam::123456789012:role/my-role" diff --git a/config/samples/outboundwebhooks/demisto.yaml b/config/samples/outboundwebhooks/demisto.yaml new file mode 100644 index 0000000..e28eff1 --- /dev/null +++ b/config/samples/outboundwebhooks/demisto.yaml @@ -0,0 +1,17 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: demisto-webhook +spec: + name: demisto-webhook + outboundWebhookType: + demisto: + uuid: "12345678-1234-1234-1234-123456789012" + payload: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + url: "https://example.com" diff --git a/config/samples/outboundwebhooks/email-group.yaml b/config/samples/outboundwebhooks/email-group.yaml new file mode 100644 index 0000000..34fcee8 --- /dev/null +++ b/config/samples/outboundwebhooks/email-group.yaml @@ -0,0 +1,18 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: email-group-webhook +spec: + name: email-group-webhook + outboundWebhookType: + emailGroup: + emailAddresses: + - example@coralogix.com + example2@coralogix.com + diff --git a/config/samples/outboundwebhooks/generic-webhook.yaml b/config/samples/outboundwebhooks/generic-webhook.yaml new file mode 100644 index 0000000..90b168e --- /dev/null +++ b/config/samples/outboundwebhooks/generic-webhook.yaml @@ -0,0 +1,20 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: generic-webhook +spec: + name: generic-webhook + outboundWebhookType: + genericWebhook: + headers: + key1: value1 + key2: value2 + method: Post + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/config/samples/outboundwebhooks/jira.yaml b/config/samples/outboundwebhooks/jira.yaml new file mode 100644 index 0000000..028995b --- /dev/null +++ b/config/samples/outboundwebhooks/jira.yaml @@ -0,0 +1,18 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: jira-webhook +spec: + name: jira-webhook + outboundWebhookType: + jira: + apiToken: "12345678-1234-1234-1234-123456789012" + email: "example@coralogix.com" + projectKey: "COR" + url: "https://example.atlassian.net" diff --git a/config/samples/outboundwebhooks/microsoft-teams.yaml b/config/samples/outboundwebhooks/microsoft-teams.yaml new file mode 100644 index 0000000..8a76b06 --- /dev/null +++ b/config/samples/outboundwebhooks/microsoft-teams.yaml @@ -0,0 +1,15 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: microsoft-teams-webhook +spec: + name: microsoft-teams-webhook + outboundWebhookType: + microsoftTeams: + url: "https://outlook.office.com/webhook/12345678-1234-1234-1234-123456789012/IncomingWebhook/12345678-1234-1234-1234-123456789012" \ No newline at end of file diff --git a/config/samples/outboundwebhooks/opsgenie.yaml b/config/samples/outboundwebhooks/opsgenie.yaml new file mode 100644 index 0000000..f5e6165 --- /dev/null +++ b/config/samples/outboundwebhooks/opsgenie.yaml @@ -0,0 +1,15 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: opsgenie-webhook +spec: + name: opsgenie-webhook + outboundWebhookType: + opsgenie: + url: "https://api.opsgenie.com/v2/alerts" diff --git a/config/samples/outboundwebhooks/pagerduty.yaml b/config/samples/outboundwebhooks/pagerduty.yaml new file mode 100644 index 0000000..f5cc1dc --- /dev/null +++ b/config/samples/outboundwebhooks/pagerduty.yaml @@ -0,0 +1,16 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: pagerduty +spec: + name: pagerduty + outboundWebhookType: + pagerDuty: + serviceKey: "12345678-1234-1234-1234-123456789012" + diff --git a/config/samples/outboundwebhooks/sendlog.yaml b/config/samples/outboundwebhooks/sendlog.yaml new file mode 100644 index 0000000..69420bd --- /dev/null +++ b/config/samples/outboundwebhooks/sendlog.yaml @@ -0,0 +1,16 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: sendlog-webhook +spec: + name: sendlog-webhook + outboundWebhookType: + sendLog: + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/config/samples/outboundwebhooks/slack.yaml b/config/samples/outboundwebhooks/slack.yaml new file mode 100644 index 0000000..b9826c7 --- /dev/null +++ b/config/samples/outboundwebhooks/slack.yaml @@ -0,0 +1,21 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: slack-outboundwebhook-sample +spec: + name: slack-outboundwebhook-sample + outboundWebhookType: + slack: + url: https://hooks.slack.com/services + attachments: + - type: "MetricSnapshot" + isActive: true + digests: + - type: "FlowAnomalies" + isActive: true \ No newline at end of file diff --git a/controllers/alphacontrollers/outboundwebhook_controller.go b/controllers/alphacontrollers/outboundwebhook_controller.go new file mode 100644 index 0000000..0eec2b9 --- /dev/null +++ b/controllers/alphacontrollers/outboundwebhook_controller.go @@ -0,0 +1,449 @@ +/* +Copyright 2023. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package alphacontrollers + +import ( + "context" + "fmt" + "strconv" + + utils "github.com/coralogix/coralogix-operator/apis" + coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1" + "github.com/coralogix/coralogix-operator/controllers/clientset" + outboundwebhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" + "github.com/go-logr/logr" + "go.uber.org/zap/zapcore" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "google.golang.org/protobuf/encoding/protojson" + "google.golang.org/protobuf/types/known/wrapperspb" + "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/utils/ptr" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" + "sigs.k8s.io/controller-runtime/pkg/log" +) + +// OutboundWebhookReconciler reconciles a OutboundWebhook object +type OutboundWebhookReconciler struct { + client.Client + OutboundWebhooksClient clientset.OutboundWebhooksClientInterface + Scheme *runtime.Scheme +} + +//+kubebuilder:rbac:groups=coralogix.coralogix.com,resources=outboundwebhooks,verbs=get;list;watch;create;update;patch;delete +//+kubebuilder:rbac:groups=coralogix.coralogix.com,resources=outboundwebhooks/status,verbs=get;update;patch +//+kubebuilder:rbac:groups=coralogix.coralogix.com,resources=outboundwebhooks/finalizers,verbs=update + +var ( + outboundWebhookFinalizerName = "outbound-webhook.coralogix.com/finalizer" +) + +func (r *OutboundWebhookReconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Result, error) { + var ( + resultError = ctrl.Result{RequeueAfter: 40} + err error + ) + + log := log.FromContext(ctx).WithValues( + "outboundWebhook", req.NamespacedName.Name, + "namespace", req.NamespacedName.Namespace, + ) + + outboundWebhook := &coralogixv1alpha1.OutboundWebhook{} + if err = r.Client.Get(ctx, req.NamespacedName, outboundWebhook); err != nil { + if errors.IsNotFound(err) { + // Request object not found, could have been deleted after reconcile request. + // Owned objects are automatically garbage collected. For additional cleanup logic use finalizers. + // Return and don't requeue + return ctrl.Result{}, nil + } + return resultError, err + } + + if ptr.Deref(outboundWebhook.Status.ID, "") == "" { + err = r.create(ctx, log, outboundWebhook) + if err != nil { + log.Error(err, "Error on creating outbound-webhook") + return resultError, err + } + return ctrl.Result{}, nil + } + + if !outboundWebhook.ObjectMeta.DeletionTimestamp.IsZero() { + err = r.delete(ctx, log, outboundWebhook) + if err != nil { + log.Error(err, "Error on deleting outbound-webhook") + return resultError, err + } + return ctrl.Result{}, nil + } + + err = r.update(ctx, log, outboundWebhook) + if err != nil { + log.Error(err, "Error on updating outbound-webhook") + return resultError, err + } + + return ctrl.Result{}, nil +} + +// SetupWithManager sets up the controller with the Manager. +func (r *OutboundWebhookReconciler) SetupWithManager(mgr ctrl.Manager) error { + return ctrl.NewControllerManagedBy(mgr). + For(&coralogixv1alpha1.OutboundWebhook{}). + Complete(r) +} + +func (r *OutboundWebhookReconciler) create(ctx context.Context, log logr.Logger, webhook *coralogixv1alpha1.OutboundWebhook) error { + createRequest, err := webhook.ExtractCreateOutboundWebhookRequest() + if err != nil { + log.Error(err, fmt.Sprintf("Error to extract create-request out of the outbound-webhook -\n%v", webhook)) + return err + } + + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("Creating outbound-webhook-\n%s", protojson.Format(createRequest))) + createResponse, err := r.OutboundWebhooksClient.CreateOutboundWebhook(ctx, createRequest) + if err != nil { + log.Error(err, fmt.Sprintf("Received an error while creating outbound-webhook -\n%s", protojson.Format(createRequest))) + return err + } + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("outbound-webhook was created-\n%s", protojson.Format(createResponse))) + + webhook.Status = coralogixv1alpha1.OutboundWebhookStatus{ + ID: ptr.To(createResponse.Id.GetValue()), + Name: webhook.Name, + OutboundWebhookType: &coralogixv1alpha1.OutboundWebhookTypeStatus{}, + } + if err = r.Status().Update(ctx, webhook); err != nil { + log.Error(err, fmt.Sprintf("Error on updating outbound-webhook status -\n%v", webhook)) + return err + } + + readRequest := &outboundwebhooks.GetOutgoingWebhookRequest{Id: createResponse.Id} + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("Getting outbound-webhook -\n%s", protojson.Format(readRequest))) + readResponse, err := r.OutboundWebhooksClient.GetOutboundWebhook(ctx, readRequest) + if err != nil { + log.Error(err, fmt.Sprintf("Received an error while getting outbound-webhook -\n%s", protojson.Format(readRequest))) + return err + } + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("outbound-webhook was read -\n%s", protojson.Format(readResponse))) + + status, err := getOutboundWebhookStatus(readResponse.GetWebhook()) + if err != nil { + log.Error(err, "Received an error while getting outbound-webhook status") + return err + } + + webhook.Status = *status + if err = r.Status().Update(ctx, webhook); err != nil { + log.Error(err, "Error on updating outbound-webhook status") + return err + } + + if !controllerutil.ContainsFinalizer(webhook, outboundWebhookFinalizerName) { + controllerutil.AddFinalizer(webhook, outboundWebhookFinalizerName) + } + + if err = r.Client.Update(ctx, webhook); err != nil { + log.Error(err, "Error on updating outbound-webhook") + return err + } + + return nil +} + +func getOutboundWebhookStatus(webhook *outboundwebhooks.OutgoingWebhook) (*coralogixv1alpha1.OutboundWebhookStatus, error) { + if webhook == nil { + return nil, fmt.Errorf("outbound-webhook is nil") + } + + outboundWebhookType, err := getOutboundWebhookTypeStatus(webhook) + if err != nil { + return nil, err + } + + status := &coralogixv1alpha1.OutboundWebhookStatus{ + ID: ptr.To(webhook.Id.GetValue()), + ExternalID: ptr.To(strconv.Itoa(int(webhook.ExternalId.GetValue()))), + Name: webhook.Name.GetValue(), + OutboundWebhookType: outboundWebhookType, + } + + return status, nil +} + +func getOutboundWebhookTypeStatus(webhook *outboundwebhooks.OutgoingWebhook) (*coralogixv1alpha1.OutboundWebhookTypeStatus, error) { + if webhook == nil { + return nil, fmt.Errorf("outbound-webhook is nil") + } + + outboundWebhooks := &coralogixv1alpha1.OutboundWebhookTypeStatus{} + switch webhookType := webhook.Config.(type) { + case *outboundwebhooks.OutgoingWebhook_GenericWebhook: + outboundWebhooks.GenericWebhook = getOutboundWebhookGenericTypeStatus(webhookType.GenericWebhook, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_Slack: + outboundWebhooks.Slack = getOutgoingWebhookSlackStatus(webhookType.Slack, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_PagerDuty: + outboundWebhooks.PagerDuty = getOutgoingWebhookPagerDutyStatus(webhookType.PagerDuty) + case *outboundwebhooks.OutgoingWebhook_SendLog: + outboundWebhooks.SendLog = getOutgoingWebhookSendLogStatus(webhookType.SendLog, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_EmailGroup: + outboundWebhooks.EmailGroup = getOutgoingWebhookEmailGroupStatus(webhookType.EmailGroup) + case *outboundwebhooks.OutgoingWebhook_MicrosoftTeams: + outboundWebhooks.MicrosoftTeams = getOutgoingWebhookMicrosoftTeamsStatus(webhookType.MicrosoftTeams, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_Jira: + outboundWebhooks.Jira = getOutboundWebhookJiraStatus(webhookType.Jira, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_Opsgenie: + outboundWebhooks.Opsgenie = getOutboundWebhookOpsgenieStatus(webhookType.Opsgenie, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_Demisto: + outboundWebhooks.Demisto = getOutboundWebhookDemistoStatus(webhookType.Demisto, webhook.Url) + case *outboundwebhooks.OutgoingWebhook_AwsEventBridge: + outboundWebhooks.AwsEventBridge = getOutboundWebhookAwsEventBridgeStatus(webhookType.AwsEventBridge) + default: + return nil, fmt.Errorf("unsupported outbound-webhook type %T", webhookType) + } + + return outboundWebhooks, nil +} + +func getOutboundWebhookAwsEventBridgeStatus(awsEventBridge *outboundwebhooks.AwsEventBridgeConfig) *coralogixv1alpha1.AwsEventBridge { + if awsEventBridge == nil { + return nil + } + + return &coralogixv1alpha1.AwsEventBridge{ + EventBusArn: awsEventBridge.EventBusArn.GetValue(), + Detail: awsEventBridge.Detail.GetValue(), + DetailType: awsEventBridge.DetailType.GetValue(), + Source: awsEventBridge.Source.GetValue(), + RoleName: awsEventBridge.RoleName.GetValue(), + } +} + +func getOutboundWebhookGenericTypeStatus(generic *outboundwebhooks.GenericWebhookConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.GenericWebhookStatus { + if generic == nil { + return nil + } + + return &coralogixv1alpha1.GenericWebhookStatus{ + Uuid: generic.Uuid.GetValue(), + Url: url.GetValue(), + Method: coralogixv1alpha1.GenericWebhookMethodTypeFromProto[generic.Method], + Headers: generic.Headers, + Payload: utils.WrapperspbStringToStringPointer(generic.Payload), + } +} + +func getOutgoingWebhookSlackStatus(slack *outboundwebhooks.SlackConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.Slack { + if slack == nil { + return nil + } + + return &coralogixv1alpha1.Slack{ + Url: url.GetValue(), + Digests: flattenSlackDigests(slack.Digests), + Attachments: flattenSlackConfigAttachments(slack.Attachments), + } +} + +func getOutgoingWebhookPagerDutyStatus(pagerDuty *outboundwebhooks.PagerDutyConfig) *coralogixv1alpha1.PagerDuty { + if pagerDuty == nil { + return nil + } + + return &coralogixv1alpha1.PagerDuty{ + ServiceKey: pagerDuty.ServiceKey.GetValue(), + } +} + +func getOutgoingWebhookMicrosoftTeamsStatus(teams *outboundwebhooks.MicrosoftTeamsConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.MicrosoftTeams { + if teams == nil { + return nil + } + + return &coralogixv1alpha1.MicrosoftTeams{ + Url: url.GetValue(), + } +} + +func getOutboundWebhookJiraStatus(jira *outboundwebhooks.JiraConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.Jira { + if jira == nil { + return nil + } + + return &coralogixv1alpha1.Jira{ + ApiToken: jira.ApiToken.GetValue(), + Email: jira.Email.GetValue(), + ProjectKey: jira.ProjectKey.GetValue(), + Url: url.GetValue(), + } +} + +func getOutboundWebhookOpsgenieStatus(opsgenie *outboundwebhooks.OpsgenieConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.Opsgenie { + if opsgenie == nil { + return nil + } + + return &coralogixv1alpha1.Opsgenie{ + Url: url.GetValue(), + } +} + +func getOutboundWebhookDemistoStatus(demisto *outboundwebhooks.DemistoConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.Demisto { + if demisto == nil { + return nil + } + + return &coralogixv1alpha1.Demisto{ + Uuid: demisto.Uuid.GetValue(), + Payload: demisto.Payload.GetValue(), + Url: url.GetValue(), + } +} + +func flattenSlackDigests(digests []*outboundwebhooks.SlackConfig_Digest) []coralogixv1alpha1.SlackConfigDigest { + flattenedSlackDigests := make([]coralogixv1alpha1.SlackConfigDigest, 0, len(digests)) + for _, digest := range digests { + flattenedSlackDigests = append(flattenedSlackDigests, coralogixv1alpha1.SlackConfigDigest{ + Type: coralogixv1alpha1.SlackConfigDigestTypeFromProto[digest.Type], + IsActive: digest.IsActive.GetValue(), + }) + } + return flattenedSlackDigests +} + +func flattenSlackConfigAttachments(attachments []*outboundwebhooks.SlackConfig_Attachment) []coralogixv1alpha1.SlackConfigAttachment { + flattenedSlackConfigAttachments := make([]coralogixv1alpha1.SlackConfigAttachment, 0, len(attachments)) + for _, attachment := range attachments { + flattenedSlackConfigAttachments = append(flattenedSlackConfigAttachments, coralogixv1alpha1.SlackConfigAttachment{ + Type: coralogixv1alpha1.SlackConfigAttachmentTypeFromProto[attachment.Type], + IsActive: attachment.IsActive.GetValue(), + }) + } + return flattenedSlackConfigAttachments +} + +func getOutgoingWebhookSendLogStatus(sendLog *outboundwebhooks.SendLogConfig, url *wrapperspb.StringValue) *coralogixv1alpha1.SendLogStatus { + if sendLog == nil { + return nil + } + + return &coralogixv1alpha1.SendLogStatus{ + Payload: sendLog.Payload.GetValue(), + Uuid: sendLog.Payload.GetValue(), + Url: url.GetValue(), + } +} + +func getOutgoingWebhookEmailGroupStatus(group *outboundwebhooks.EmailGroupConfig) *coralogixv1alpha1.EmailGroup { + if group == nil { + return nil + } + + return &coralogixv1alpha1.EmailGroup{ + EmailAddresses: utils.WrappedStringSliceToStringSlice(group.EmailAddresses), + } +} + +func (r *OutboundWebhookReconciler) update(ctx context.Context, log logr.Logger, webhook *coralogixv1alpha1.OutboundWebhook) error { + log.V(int(zapcore.DebugLevel)).Info("Getting outbound-webhook from remote", "id", webhook.Status.ID) + remoteOutboundWebhook, err := r.OutboundWebhooksClient.GetOutboundWebhook(ctx, &outboundwebhooks.GetOutgoingWebhookRequest{Id: utils.StringPointerToWrapperspbString(webhook.Status.ID)}) + if err != nil { + if status.Code(err) == codes.NotFound { + log.Info("outbound-webhook not found on remote, recreating it", "id", webhook.Status.ID) + webhook.Status = coralogixv1alpha1.OutboundWebhookStatus{} + if err = r.Status().Update(ctx, webhook); err != nil { + log.Error(err, "Error on updating outbound-webhook status") + return err + } + return err + } + log.Error(err, "Error on getting outbound-webhook", "id", webhook.Status.ID) + return err + } + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("outbound-webhook was read\n%s", protojson.Format(remoteOutboundWebhook))) + + status, err := getOutboundWebhookStatus(remoteOutboundWebhook.GetWebhook()) + if err != nil { + log.Error(err, "Error on flattening outbound-webhook") + return err + } + + if equal, diff := webhook.Spec.DeepEqual(status); equal { + return nil + } else { + log.Info("outbound-webhook is not equal to remote, updating it", "path", diff.Name, "desired", diff.Desired, "actual", diff.Actual) + } + + updateReq, err := webhook.ExtractUpdateOutboundWebhookRequest() + if err != nil { + log.Error(err, "Error to parse update outbound-webhook request") + return err + } + + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("updating outbound-webhook\n%s", protojson.Format(updateReq))) + _, err = r.OutboundWebhooksClient.UpdateOutboundWebhook(ctx, updateReq) + if err != nil { + log.Error(err, fmt.Sprintf("Error on remote updating outbound-webhook\n%s", protojson.Format(updateReq))) + return err + } + + log.V(int(zapcore.DebugLevel)).Info("Getting outbound-webhook from remote", "id", webhook.Status.ID) + remoteOutboundWebhook, err = r.OutboundWebhooksClient.GetOutboundWebhook(ctx, + &outboundwebhooks.GetOutgoingWebhookRequest{ + Id: utils.StringPointerToWrapperspbString(webhook.Status.ID), + }, + ) + if err != nil { + log.Error(err, "Error on getting outbound-webhook") + return err + } + log.V(int(zapcore.DebugLevel)).Info(fmt.Sprintf("outbound-webhook was read\n%s", protojson.Format(remoteOutboundWebhook))) + + status, err = getOutboundWebhookStatus(remoteOutboundWebhook.GetWebhook()) + if err != nil { + log.Error(err, "Error on flattening outbound-webhook") + return err + } + webhook.Status = *status + r.Status().Update(ctx, webhook) + + return nil +} + +func (r *OutboundWebhookReconciler) delete(ctx context.Context, log logr.Logger, webhook *coralogixv1alpha1.OutboundWebhook) error { + log.V(int(zapcore.DebugLevel)).Info("Deleting outbound-webhook from remote", "id", webhook.Status.ID) + _, err := r.OutboundWebhooksClient.DeleteOutboundWebhook(ctx, &outboundwebhooks.DeleteOutgoingWebhookRequest{ + Id: wrapperspb.String(*webhook.Status.ID), + }) + if err != nil && status.Code(err) != codes.NotFound { + log.Error(err, "Error on deleting outbound-webhook from remote") + return err + } + + controllerutil.RemoveFinalizer(webhook, outboundWebhookFinalizerName) + err = r.Update(ctx, webhook) + if err != nil { + log.Error(err, "Error on updating outbound-webhook after deletion") + return err + } + + return nil +} diff --git a/controllers/alphacontrollers/outboundwebhook_controller_test.go b/controllers/alphacontrollers/outboundwebhook_controller_test.go new file mode 100644 index 0000000..8f6b478 --- /dev/null +++ b/controllers/alphacontrollers/outboundwebhook_controller_test.go @@ -0,0 +1,318 @@ +package alphacontrollers + +import ( + "context" + "testing" + + coralogixv1alpha1 "github.com/coralogix/coralogix-operator/apis/coralogix/v1alpha1" + ow "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" + "github.com/coralogix/coralogix-operator/controllers/mock_clientset" + "github.com/stretchr/testify/assert" + "go.uber.org/mock/gomock" + "google.golang.org/protobuf/types/known/wrapperspb" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" + "k8s.io/apimachinery/pkg/types" + utilruntime "k8s.io/apimachinery/pkg/util/runtime" + "k8s.io/apimachinery/pkg/watch" + "k8s.io/utils/pointer" + ctrl "sigs.k8s.io/controller-runtime" + "sigs.k8s.io/controller-runtime/pkg/client" + "sigs.k8s.io/controller-runtime/pkg/log/zap" +) + +func setupOutboundWebhooksReconciler(t *testing.T, ctx context.Context, outboundWebhooksClient *mock_clientset.MockOutboundWebhooksClientInterface) (OutboundWebhookReconciler, watch.Interface) { + ctrl.SetLogger(zap.New(zap.UseDevMode(true))) + + scheme := runtime.NewScheme() + utilruntime.Must(coralogixv1alpha1.AddToScheme(scheme)) + + mgr, _ := ctrl.NewManager(ctrl.GetConfigOrDie(), ctrl.Options{ + Scheme: scheme, + MetricsBindAddress: "0", + }) + + go mgr.GetCache().Start(ctx) + + mgr.GetCache().WaitForCacheSync(ctx) + withWatch, err := client.NewWithWatch(mgr.GetConfig(), client.Options{ + Scheme: mgr.GetScheme(), + }) + + assert.NoError(t, err) + r := OutboundWebhookReconciler{ + Client: withWatch, + Scheme: mgr.GetScheme(), + OutboundWebhooksClient: outboundWebhooksClient, + } + r.SetupWithManager(mgr) + + watcher, _ := r.Client.(client.WithWatch).Watch(ctx, &coralogixv1alpha1.OutboundWebhookList{}) + return r, watcher +} + +type PrepareOutboundWebhooksParams struct { + ctx context.Context + outboundWebhooksClient *mock_clientset.MockOutboundWebhooksClientInterface +} + +func TestOutboundWebhooksCreation(t *testing.T) { + tests := []struct { + name string + params func(params PrepareOutboundWebhooksParams) + outboundWebhook coralogixv1alpha1.OutboundWebhook + shouldFail bool + }{ + { + name: "outbound-webhook creation success", + shouldFail: false, + params: func(params PrepareOutboundWebhooksParams) { + params.outboundWebhooksClient.EXPECT().CreateOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.CreateOutgoingWebhookResponse{Id: wrapperspb.String("id")}, nil) + params.outboundWebhooksClient.EXPECT().GetOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.GetOutgoingWebhookResponse{ + Webhook: &ow.OutgoingWebhook{ + Id: wrapperspb.String("id"), + Name: wrapperspb.String("name"), + Type: ow.WebhookType_GENERIC, + Url: wrapperspb.String("url"), + Config: &ow.OutgoingWebhook_GenericWebhook{ + GenericWebhook: &ow.GenericWebhookConfig{ + Uuid: wrapperspb.String("uuid"), + Method: ow.GenericWebhookConfig_GET, + Headers: map[string]string{"key": "value"}, + Payload: wrapperspb.String("payload"), + }, + }, + }, + }, nil) + }, + outboundWebhook: coralogixv1alpha1.OutboundWebhook{ + ObjectMeta: metav1.ObjectMeta{ + Name: "outbound-webhook-creation-success", + Namespace: "default", + }, + Spec: coralogixv1alpha1.OutboundWebhookSpec{ + Name: "name", + OutboundWebhookType: coralogixv1alpha1.OutboundWebhookType{ + GenericWebhook: &coralogixv1alpha1.GenericWebhook{ + Url: "url", + Method: "Get", + Headers: map[string]string{"key": "value"}, + Payload: pointer.String("payload"), + }, + }, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + controller := gomock.NewController(t) + defer controller.Finish() + + outboundWebhooksClient := mock_clientset.NewMockOutboundWebhooksClientInterface(controller) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + if tt.params != nil { + tt.params(PrepareOutboundWebhooksParams{ + ctx: ctx, + outboundWebhooksClient: outboundWebhooksClient, + }) + } + + reconciler, watcher := setupOutboundWebhooksReconciler(t, ctx, outboundWebhooksClient) + + err := reconciler.Client.Create(ctx, &tt.outboundWebhook) + + assert.NoError(t, err) + + <-watcher.ResultChan() + + _, err = reconciler.Reconcile(ctx, ctrl.Request{ + NamespacedName: types.NamespacedName{ + Namespace: tt.outboundWebhook.Namespace, + Name: tt.outboundWebhook.Name, + }, + }) + + if tt.shouldFail { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} + +func TestOutboundWebhookUpdate(t *testing.T) { + tests := []struct { + name string + params func(params PrepareOutboundWebhooksParams) + outboundWebhook coralogixv1alpha1.OutboundWebhook + updatedWebhook coralogixv1alpha1.OutboundWebhook + shouldFail bool + }{ + { + name: "outbound-webhook update success", + shouldFail: false, + params: func(params PrepareOutboundWebhooksParams) { + params.outboundWebhooksClient.EXPECT().CreateOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.CreateOutgoingWebhookResponse{Id: wrapperspb.String("id")}, nil) + params.outboundWebhooksClient.EXPECT().GetOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.GetOutgoingWebhookResponse{ + Webhook: &ow.OutgoingWebhook{ + Id: wrapperspb.String("id"), + Name: wrapperspb.String("name"), + Type: ow.WebhookType_GENERIC, + Url: wrapperspb.String("url"), + Config: &ow.OutgoingWebhook_GenericWebhook{ + GenericWebhook: &ow.GenericWebhookConfig{ + Uuid: wrapperspb.String("uuid"), + Method: ow.GenericWebhookConfig_GET, + Headers: map[string]string{"key": "value"}, + Payload: wrapperspb.String("payload"), + }, + }, + }, + }, nil) + params.outboundWebhooksClient.EXPECT().GetOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.GetOutgoingWebhookResponse{ + Webhook: &ow.OutgoingWebhook{ + Id: wrapperspb.String("id"), + Name: wrapperspb.String("name"), + Type: ow.WebhookType_GENERIC, + Url: wrapperspb.String("url"), + Config: &ow.OutgoingWebhook_GenericWebhook{ + GenericWebhook: &ow.GenericWebhookConfig{ + Uuid: wrapperspb.String("uuid"), + Method: ow.GenericWebhookConfig_GET, + Headers: map[string]string{"key": "value"}, + Payload: wrapperspb.String("payload"), + }, + }, + }, + }, nil) + params.outboundWebhooksClient.EXPECT().UpdateOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.UpdateOutgoingWebhookResponse{}, nil) + params.outboundWebhooksClient.EXPECT().GetOutboundWebhook(params.ctx, gomock.Any()).Return(&ow.GetOutgoingWebhookResponse{ + Webhook: &ow.OutgoingWebhook{ + Id: wrapperspb.String("id"), + Name: wrapperspb.String("updated-name"), + Type: ow.WebhookType_GENERIC, + Url: wrapperspb.String("updated-url"), + Config: &ow.OutgoingWebhook_GenericWebhook{ + GenericWebhook: &ow.GenericWebhookConfig{ + Uuid: wrapperspb.String("updated-uuid"), + Method: ow.GenericWebhookConfig_POST, + Headers: map[string]string{"updated-key": "updated-value"}, + Payload: wrapperspb.String("updated-payload"), + }, + }, + }, + }, nil) + }, + outboundWebhook: coralogixv1alpha1.OutboundWebhook{ + ObjectMeta: metav1.ObjectMeta{ + Name: "outbound-webhook-update-success", + Namespace: "default", + }, + Spec: coralogixv1alpha1.OutboundWebhookSpec{ + Name: "name", + OutboundWebhookType: coralogixv1alpha1.OutboundWebhookType{ + GenericWebhook: &coralogixv1alpha1.GenericWebhook{ + Url: "url", + Method: "Get", + Headers: map[string]string{"key": "value"}, + Payload: pointer.String("payload"), + }, + }, + }, + }, + updatedWebhook: coralogixv1alpha1.OutboundWebhook{ + ObjectMeta: metav1.ObjectMeta{ + Name: "outbound-webhook-update-success", + Namespace: "default", + }, + Spec: coralogixv1alpha1.OutboundWebhookSpec{ + Name: "updated-name", + OutboundWebhookType: coralogixv1alpha1.OutboundWebhookType{ + GenericWebhook: &coralogixv1alpha1.GenericWebhook{ + Url: "updated-url", + Method: "Post", + Headers: map[string]string{"updated-key": "updated-value"}, + Payload: pointer.String("updated-payload"), + }, + }, + }, + }, + }, + } + + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + controller := gomock.NewController(t) + defer controller.Finish() + + outboundWebhookClient := mock_clientset.NewMockOutboundWebhooksClientInterface(controller) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + if tt.params != nil { + tt.params(PrepareOutboundWebhooksParams{ + ctx: ctx, + outboundWebhooksClient: outboundWebhookClient, + }) + } + + reconciler, watcher := setupOutboundWebhooksReconciler(t, ctx, outboundWebhookClient) + + err := reconciler.Client.Create(ctx, &tt.outboundWebhook) + + assert.NoError(t, err) + + <-watcher.ResultChan() + + _, err = reconciler.Reconcile(ctx, ctrl.Request{ + NamespacedName: types.NamespacedName{ + Namespace: tt.outboundWebhook.Namespace, + Name: tt.outboundWebhook.Name, + }, + }) + + assert.NoError(t, err) + + outboundWebhook := &coralogixv1alpha1.OutboundWebhook{} + + err = reconciler.Get(ctx, types.NamespacedName{ + Namespace: tt.outboundWebhook.Namespace, + Name: tt.outboundWebhook.Name, + }, outboundWebhook) + + assert.NoError(t, err) + + tt.updatedWebhook.ObjectMeta.ResourceVersion = outboundWebhook.ObjectMeta.ResourceVersion + err = reconciler.Client.Update(ctx, &tt.updatedWebhook) + assert.NoError(t, err) + + <-watcher.ResultChan() + + _, err = reconciler.Reconcile(ctx, ctrl.Request{ + NamespacedName: types.NamespacedName{ + Namespace: tt.updatedWebhook.Namespace, + Name: tt.updatedWebhook.Name, + }, + }) + + outboundWebhook = &coralogixv1alpha1.OutboundWebhook{} + err = reconciler.Get(ctx, types.NamespacedName{ + Namespace: tt.updatedWebhook.Namespace, + Name: tt.updatedWebhook.Name, + }, outboundWebhook) + + if tt.shouldFail { + assert.Error(t, err) + } else { + assert.NoError(t, err) + } + }) + } +} diff --git a/controllers/clientset/clientset.go b/controllers/clientset/clientset.go index 434c94d..0f8573d 100644 --- a/controllers/clientset/clientset.go +++ b/controllers/clientset/clientset.go @@ -6,6 +6,7 @@ type ClientSetInterface interface { Alerts() AlertsClientInterface RecordingRuleGroups() RecordingRulesGroupsClientInterface Webhooks() WebhooksClientInterface + OutboundWebhooks() OutboundWebhooksClientInterface } type ClientSet struct { @@ -13,6 +14,7 @@ type ClientSet struct { alerts *AlertsClient recordingRuleGroups *RecordingRulesGroupsClient webhooks *WebhooksClient + outboundWebhooks *OutboundWebhooksClient } func (c *ClientSet) RuleGroups() RuleGroupsClientInterface { @@ -31,6 +33,10 @@ func (c *ClientSet) RecordingRuleGroups() RecordingRulesGroupsClientInterface { return c.recordingRuleGroups } +func (c *ClientSet) OutboundWebhooks() OutboundWebhooksClientInterface { + return c.outboundWebhooks +} + func NewClientSet(targetUrl, apiKey string) ClientSetInterface { apikeyCPC := NewCallPropertiesCreator(targetUrl, apiKey) @@ -39,5 +45,6 @@ func NewClientSet(targetUrl, apiKey string) ClientSetInterface { alerts: NewAlertsClient(apikeyCPC), recordingRuleGroups: NewRecordingRuleGroupsClient(apikeyCPC), webhooks: NewWebhooksClient(apikeyCPC), + outboundWebhooks: NewOutboundWebhooksClient(apikeyCPC), } } diff --git a/controllers/clientset/grpc/outbound-webhooks/audit_log.pb.go b/controllers/clientset/grpc/outbound-webhooks/audit_log.pb.go new file mode 100644 index 0000000..bcc91d4 --- /dev/null +++ b/controllers/clientset/grpc/outbound-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 v5.27.1 +// 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: 5004, + Name: "com.coralogix.outgoing_webhooks.v1.audit_log_description", + Tag: "bytes,5004,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 = 5004; + 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, 0x8c, 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, 0x04, 0x5a, 0x02, 0x2e, 0x2f, + 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/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook.pb.go b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook.pb.go new file mode 100644 index 0000000..4048180 --- /dev/null +++ b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook.pb.go @@ -0,0 +1,2509 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v5.27.1 +// 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 + WebhookType_AWS_EVENT_BRIDGE WebhookType = 10 + WebhookType_IBM_EVENT_NOTIFICATIONS WebhookType = 11 +) + +// 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", + 10: "AWS_EVENT_BRIDGE", + 11: "IBM_EVENT_NOTIFICATIONS", + } + 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, + "AWS_EVENT_BRIDGE": 10, + "IBM_EVENT_NOTIFICATIONS": 11, + } +) + +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 SlackConfig_AttachmentType int32 + +const ( + SlackConfig_EMPTY SlackConfig_AttachmentType = 0 + SlackConfig_METRIC_SNAPSHOT SlackConfig_AttachmentType = 1 + SlackConfig_LOGS SlackConfig_AttachmentType = 2 +) + +// Enum value maps for SlackConfig_AttachmentType. +var ( + SlackConfig_AttachmentType_name = map[int32]string{ + 0: "EMPTY", + 1: "METRIC_SNAPSHOT", + 2: "LOGS", + } + SlackConfig_AttachmentType_value = map[string]int32{ + "EMPTY": 0, + "METRIC_SNAPSHOT": 1, + "LOGS": 2, + } +) + +func (x SlackConfig_AttachmentType) Enum() *SlackConfig_AttachmentType { + p := new(SlackConfig_AttachmentType) + *p = x + return p +} + +func (x SlackConfig_AttachmentType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (SlackConfig_AttachmentType) Descriptor() protoreflect.EnumDescriptor { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[3].Descriptor() +} + +func (SlackConfig_AttachmentType) Type() protoreflect.EnumType { + return &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_enumTypes[3] +} + +func (x SlackConfig_AttachmentType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use SlackConfig_AttachmentType.Descriptor instead. +func (SlackConfig_AttachmentType) EnumDescriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{1, 1} +} + +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"` + Attachments []*SlackConfig_Attachment `protobuf:"bytes,2,rep,name=attachments,proto3" json:"attachments,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 +} + +func (x *SlackConfig) GetAttachments() []*SlackConfig_Attachment { + if x != nil { + return x.Attachments + } + 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 AwsEventBridgeConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EventBusArn *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=event_bus_arn,json=eventBusArn,proto3" json:"event_bus_arn,omitempty"` + Detail *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=detail,proto3" json:"detail,omitempty"` + DetailType *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=detail_type,json=detailType,proto3" json:"detail_type,omitempty"` + Source *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=source,proto3" json:"source,omitempty"` + RoleName *wrapperspb.StringValue `protobuf:"bytes,6,opt,name=role_name,json=roleName,proto3" json:"role_name,omitempty"` +} + +func (x *AwsEventBridgeConfig) Reset() { + *x = AwsEventBridgeConfig{} + 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 *AwsEventBridgeConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*AwsEventBridgeConfig) ProtoMessage() {} + +func (x *AwsEventBridgeConfig) 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 AwsEventBridgeConfig.ProtoReflect.Descriptor instead. +func (*AwsEventBridgeConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{9} +} + +func (x *AwsEventBridgeConfig) GetEventBusArn() *wrapperspb.StringValue { + if x != nil { + return x.EventBusArn + } + return nil +} + +func (x *AwsEventBridgeConfig) GetDetail() *wrapperspb.StringValue { + if x != nil { + return x.Detail + } + return nil +} + +func (x *AwsEventBridgeConfig) GetDetailType() *wrapperspb.StringValue { + if x != nil { + return x.DetailType + } + return nil +} + +func (x *AwsEventBridgeConfig) GetSource() *wrapperspb.StringValue { + if x != nil { + return x.Source + } + return nil +} + +func (x *AwsEventBridgeConfig) GetRoleName() *wrapperspb.StringValue { + if x != nil { + return x.RoleName + } + return nil +} + +type IbmEventNotificationsConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + EventNotificationsInstanceId *wrapperspb.StringValue `protobuf:"bytes,1,opt,name=event_notifications_instance_id,json=eventNotificationsInstanceId,proto3" json:"event_notifications_instance_id,omitempty"` + RegionId *wrapperspb.StringValue `protobuf:"bytes,2,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` + SourceId *wrapperspb.StringValue `protobuf:"bytes,3,opt,name=source_id,json=sourceId,proto3" json:"source_id,omitempty"` + SourceName *wrapperspb.StringValue `protobuf:"bytes,4,opt,name=source_name,json=sourceName,proto3" json:"source_name,omitempty"` +} + +func (x *IbmEventNotificationsConfig) Reset() { + *x = IbmEventNotificationsConfig{} + 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 *IbmEventNotificationsConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*IbmEventNotificationsConfig) ProtoMessage() {} + +func (x *IbmEventNotificationsConfig) 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 IbmEventNotificationsConfig.ProtoReflect.Descriptor instead. +func (*IbmEventNotificationsConfig) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{10} +} + +func (x *IbmEventNotificationsConfig) GetEventNotificationsInstanceId() *wrapperspb.StringValue { + if x != nil { + return x.EventNotificationsInstanceId + } + return nil +} + +func (x *IbmEventNotificationsConfig) GetRegionId() *wrapperspb.StringValue { + if x != nil { + return x.RegionId + } + return nil +} + +func (x *IbmEventNotificationsConfig) GetSourceId() *wrapperspb.StringValue { + if x != nil { + return x.SourceId + } + return nil +} + +func (x *IbmEventNotificationsConfig) GetSourceName() *wrapperspb.StringValue { + if x != nil { + return x.SourceName + } + 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 + // *OutgoingWebhook_AwsEventBridge + // *OutgoingWebhook_IbmEventNotifications + 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[11] + 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[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 OutgoingWebhook.ProtoReflect.Descriptor instead. +func (*OutgoingWebhook) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{11} +} + +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 +} + +func (x *OutgoingWebhook) GetAwsEventBridge() *AwsEventBridgeConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_AwsEventBridge); ok { + return x.AwsEventBridge + } + return nil +} + +func (x *OutgoingWebhook) GetIbmEventNotifications() *IbmEventNotificationsConfig { + if x, ok := x.GetConfig().(*OutgoingWebhook_IbmEventNotifications); ok { + return x.IbmEventNotifications + } + 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"` +} + +type OutgoingWebhook_AwsEventBridge struct { + AwsEventBridge *AwsEventBridgeConfig `protobuf:"bytes,109,opt,name=aws_event_bridge,json=awsEventBridge,proto3,oneof"` +} + +type OutgoingWebhook_IbmEventNotifications struct { + IbmEventNotifications *IbmEventNotificationsConfig `protobuf:"bytes,110,opt,name=ibm_event_notifications,json=ibmEventNotifications,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() {} + +func (*OutgoingWebhook_AwsEventBridge) isOutgoingWebhook_Config() {} + +func (*OutgoingWebhook_IbmEventNotifications) 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 + // *OutgoingWebhookInputData_AwsEventBridge + // *OutgoingWebhookInputData_IbmEventNotifications + 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[12] + 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[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 OutgoingWebhookInputData.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookInputData) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{12} +} + +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 +} + +func (x *OutgoingWebhookInputData) GetAwsEventBridge() *AwsEventBridgeConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_AwsEventBridge); ok { + return x.AwsEventBridge + } + return nil +} + +func (x *OutgoingWebhookInputData) GetIbmEventNotifications() *IbmEventNotificationsConfig { + if x, ok := x.GetConfig().(*OutgoingWebhookInputData_IbmEventNotifications); ok { + return x.IbmEventNotifications + } + 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"` +} + +type OutgoingWebhookInputData_AwsEventBridge struct { + AwsEventBridge *AwsEventBridgeConfig `protobuf:"bytes,109,opt,name=aws_event_bridge,json=awsEventBridge,proto3,oneof"` +} + +type OutgoingWebhookInputData_IbmEventNotifications struct { + IbmEventNotifications *IbmEventNotificationsConfig `protobuf:"bytes,110,opt,name=ibm_event_notifications,json=ibmEventNotifications,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() {} + +func (*OutgoingWebhookInputData_AwsEventBridge) isOutgoingWebhookInputData_Config() {} + +func (*OutgoingWebhookInputData_IbmEventNotifications) 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"` + ExternalId *wrapperspb.UInt32Value `protobuf:"bytes,6,opt,name=external_id,json=externalId,proto3" json:"external_id,omitempty"` +} + +func (x *OutgoingWebhookSummary) Reset() { + *x = OutgoingWebhookSummary{} + 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 *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[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 OutgoingWebhookSummary.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookSummary) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{13} +} + +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 +} + +func (x *OutgoingWebhookSummary) GetExternalId() *wrapperspb.UInt32Value { + if x != nil { + return x.ExternalId + } + 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[14] + 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[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 OutgoingWebhookExtendedSummary.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookExtendedSummary) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{14} +} + +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[15] + 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[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 OutgoingWebhookDetails.ProtoReflect.Descriptor instead. +func (*OutgoingWebhookDetails) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{15} +} + +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[17] + 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[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 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 +} + +type SlackConfig_Attachment struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type SlackConfig_AttachmentType `protobuf:"varint,1,opt,name=type,proto3,enum=com.coralogix.outgoing_webhooks.v1.SlackConfig_AttachmentType" json:"type,omitempty"` + IsActive *wrapperspb.BoolValue `protobuf:"bytes,2,opt,name=is_active,json=isActive,proto3" json:"is_active,omitempty"` +} + +func (x *SlackConfig_Attachment) Reset() { + *x = SlackConfig_Attachment{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[18] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SlackConfig_Attachment) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SlackConfig_Attachment) ProtoMessage() {} + +func (x *SlackConfig_Attachment) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_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 SlackConfig_Attachment.ProtoReflect.Descriptor instead. +func (*SlackConfig_Attachment) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_rawDescGZIP(), []int{1, 1} +} + +func (x *SlackConfig_Attachment) GetType() SlackConfig_AttachmentType { + if x != nil { + return x.Type + } + return SlackConfig_EMPTY +} + +func (x *SlackConfig_Attachment) 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, 0x9a, 0x05, 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, 0x12, 0x5c, 0x0a, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, + 0x6d, 0x65, 0x6e, 0x74, 0x73, 0x18, 0x02, 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, 0x53, 0x6c, 0x61, 0x63, 0x6b, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x0b, 0x61, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 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, 0x1a, 0x99, 0x01, 0x0a, 0x0a, 0x41, 0x74, 0x74, + 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x52, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 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, 0x53, 0x6c, 0x61, 0x63, 0x6b, + 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, 0x65, 0x6e, + 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, 0x3a, 0x0a, 0x0e, 0x41, 0x74, 0x74, 0x61, 0x63, 0x68, 0x6d, + 0x65, 0x6e, 0x74, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x4d, 0x50, 0x54, 0x59, + 0x10, 0x00, 0x12, 0x13, 0x0a, 0x0f, 0x4d, 0x45, 0x54, 0x52, 0x49, 0x43, 0x5f, 0x53, 0x4e, 0x41, + 0x50, 0x53, 0x48, 0x4f, 0x54, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x4c, 0x4f, 0x47, 0x53, 0x10, + 0x02, 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, 0xcc, 0x02, 0x0a, 0x14, + 0x41, 0x77, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, + 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x0d, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x75, + 0x73, 0x5f, 0x61, 0x72, 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, 0x0b, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x42, 0x75, 0x73, 0x41, 0x72, 0x6e, 0x12, 0x34, 0x0a, 0x06, 0x64, 0x65, 0x74, 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, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x12, 0x3d, 0x0a, 0x0b, + 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x5f, 0x74, 0x79, 0x70, 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, + 0x0a, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x54, 0x79, 0x70, 0x65, 0x12, 0x34, 0x0a, 0x06, 0x73, + 0x6f, 0x75, 0x72, 0x63, 0x65, 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, 0x06, 0x73, 0x6f, 0x75, 0x72, 0x63, + 0x65, 0x12, 0x39, 0x0a, 0x09, 0x72, 0x6f, 0x6c, 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x06, + 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, 0x72, 0x6f, 0x6c, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x4a, 0x04, 0x08, 0x05, + 0x10, 0x06, 0x52, 0x06, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x22, 0xb7, 0x02, 0x0a, 0x1b, 0x49, + 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x63, 0x0a, 0x1f, 0x65, 0x76, + 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, + 0x73, 0x5f, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x5f, 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, 0x1c, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, + 0x39, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 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, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x39, 0x0a, 0x09, 0x73, 0x6f, + 0x75, 0x72, 0x63, 0x65, 0x5f, 0x69, 0x64, 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, 0x08, 0x73, 0x6f, 0x75, + 0x72, 0x63, 0x65, 0x49, 0x64, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, + 0x6e, 0x61, 0x6d, 0x65, 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, 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, + 0x4e, 0x61, 0x6d, 0x65, 0x22, 0xff, 0x0a, 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, 0x12, 0x64, 0x0a, 0x10, 0x61, + 0x77, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, + 0x6d, 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, 0x41, 0x77, 0x73, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, + 0x00, 0x52, 0x0e, 0x61, 0x77, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x12, 0x79, 0x0a, 0x17, 0x69, 0x62, 0x6d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x6e, 0x20, 0x01, + 0x28, 0x0b, 0x32, 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, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, + 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x69, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, + 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0x0a, 0x06, + 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xa5, 0x09, 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, 0x12, 0x64, 0x0a, 0x10, 0x61, 0x77, 0x73, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x18, 0x6d, 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, 0x41, 0x77, 0x73, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, + 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x0e, 0x61, 0x77, 0x73, 0x45, 0x76, + 0x65, 0x6e, 0x74, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x12, 0x79, 0x0a, 0x17, 0x69, 0x62, 0x6d, + 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x18, 0x6e, 0x20, 0x01, 0x28, 0x0b, 0x32, 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, + 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, + 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x48, 0x00, 0x52, 0x15, 0x69, + 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, + 0x69, 0x6f, 0x6e, 0x73, 0x42, 0x08, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xdd, + 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, 0x12, + 0x3d, 0x0a, 0x0b, 0x65, 0x78, 0x74, 0x65, 0x72, 0x6e, 0x61, 0x6c, 0x5f, 0x69, 0x64, 0x18, 0x06, + 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, 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, + 0xcd, 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, 0x12, 0x14, 0x0a, 0x10, + 0x41, 0x57, 0x53, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, 0x42, 0x52, 0x49, 0x44, 0x47, 0x45, + 0x10, 0x0a, 0x12, 0x1b, 0x0a, 0x17, 0x49, 0x42, 0x4d, 0x5f, 0x45, 0x56, 0x45, 0x4e, 0x54, 0x5f, + 0x4e, 0x4f, 0x54, 0x49, 0x46, 0x49, 0x43, 0x41, 0x54, 0x49, 0x4f, 0x4e, 0x53, 0x10, 0x0b, 0x42, + 0x04, 0x5a, 0x02, 0x2e, 0x2f, 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, 4) +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes = make([]protoimpl.MessageInfo, 19) +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 + (SlackConfig_AttachmentType)(0), // 3: com.coralogix.outgoing_webhooks.v1.SlackConfig.AttachmentType + (*GenericWebhookConfig)(nil), // 4: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + (*SlackConfig)(nil), // 5: com.coralogix.outgoing_webhooks.v1.SlackConfig + (*PagerDutyConfig)(nil), // 6: com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + (*SendLogConfig)(nil), // 7: com.coralogix.outgoing_webhooks.v1.SendLogConfig + (*EmailGroupConfig)(nil), // 8: com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + (*MicrosoftTeamsConfig)(nil), // 9: com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + (*JiraConfig)(nil), // 10: com.coralogix.outgoing_webhooks.v1.JiraConfig + (*OpsgenieConfig)(nil), // 11: com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + (*DemistoConfig)(nil), // 12: com.coralogix.outgoing_webhooks.v1.DemistoConfig + (*AwsEventBridgeConfig)(nil), // 13: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig + (*IbmEventNotificationsConfig)(nil), // 14: com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig + (*OutgoingWebhook)(nil), // 15: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + (*OutgoingWebhookInputData)(nil), // 16: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + (*OutgoingWebhookSummary)(nil), // 17: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + (*OutgoingWebhookExtendedSummary)(nil), // 18: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + (*OutgoingWebhookDetails)(nil), // 19: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + nil, // 20: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.HeadersEntry + (*SlackConfig_Digest)(nil), // 21: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest + (*SlackConfig_Attachment)(nil), // 22: com.coralogix.outgoing_webhooks.v1.SlackConfig.Attachment + (*wrapperspb.StringValue)(nil), // 23: google.protobuf.StringValue + (*timestamppb.Timestamp)(nil), // 24: google.protobuf.Timestamp + (*wrapperspb.UInt32Value)(nil), // 25: google.protobuf.UInt32Value + (*wrapperspb.BoolValue)(nil), // 26: google.protobuf.BoolValue +} +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_depIdxs = []int32{ + 23, // 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 + 20, // 2: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.headers:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.HeadersEntry + 23, // 3: com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig.payload:type_name -> google.protobuf.StringValue + 21, // 4: com.coralogix.outgoing_webhooks.v1.SlackConfig.digests:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest + 22, // 5: com.coralogix.outgoing_webhooks.v1.SlackConfig.attachments:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.Attachment + 23, // 6: com.coralogix.outgoing_webhooks.v1.PagerDutyConfig.service_key:type_name -> google.protobuf.StringValue + 23, // 7: com.coralogix.outgoing_webhooks.v1.SendLogConfig.uuid:type_name -> google.protobuf.StringValue + 23, // 8: com.coralogix.outgoing_webhooks.v1.SendLogConfig.payload:type_name -> google.protobuf.StringValue + 23, // 9: com.coralogix.outgoing_webhooks.v1.EmailGroupConfig.email_addresses:type_name -> google.protobuf.StringValue + 23, // 10: com.coralogix.outgoing_webhooks.v1.JiraConfig.api_token:type_name -> google.protobuf.StringValue + 23, // 11: com.coralogix.outgoing_webhooks.v1.JiraConfig.email:type_name -> google.protobuf.StringValue + 23, // 12: com.coralogix.outgoing_webhooks.v1.JiraConfig.project_key:type_name -> google.protobuf.StringValue + 23, // 13: com.coralogix.outgoing_webhooks.v1.DemistoConfig.uuid:type_name -> google.protobuf.StringValue + 23, // 14: com.coralogix.outgoing_webhooks.v1.DemistoConfig.payload:type_name -> google.protobuf.StringValue + 23, // 15: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig.event_bus_arn:type_name -> google.protobuf.StringValue + 23, // 16: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig.detail:type_name -> google.protobuf.StringValue + 23, // 17: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig.detail_type:type_name -> google.protobuf.StringValue + 23, // 18: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig.source:type_name -> google.protobuf.StringValue + 23, // 19: com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig.role_name:type_name -> google.protobuf.StringValue + 23, // 20: com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig.event_notifications_instance_id:type_name -> google.protobuf.StringValue + 23, // 21: com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig.region_id:type_name -> google.protobuf.StringValue + 23, // 22: com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig.source_id:type_name -> google.protobuf.StringValue + 23, // 23: com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig.source_name:type_name -> google.protobuf.StringValue + 23, // 24: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.id:type_name -> google.protobuf.StringValue + 0, // 25: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 23, // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.name:type_name -> google.protobuf.StringValue + 23, // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.url:type_name -> google.protobuf.StringValue + 24, // 28: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.created_at:type_name -> google.protobuf.Timestamp + 24, // 29: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.updated_at:type_name -> google.protobuf.Timestamp + 25, // 30: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.external_id:type_name -> google.protobuf.UInt32Value + 4, // 31: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.generic_webhook:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + 5, // 32: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.slack:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig + 6, // 33: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.pager_duty:type_name -> com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + 7, // 34: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.send_log:type_name -> com.coralogix.outgoing_webhooks.v1.SendLogConfig + 8, // 35: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.email_group:type_name -> com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + 9, // 36: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.microsoft_teams:type_name -> com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + 10, // 37: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.jira:type_name -> com.coralogix.outgoing_webhooks.v1.JiraConfig + 11, // 38: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.opsgenie:type_name -> com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + 12, // 39: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.demisto:type_name -> com.coralogix.outgoing_webhooks.v1.DemistoConfig + 13, // 40: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.aws_event_bridge:type_name -> com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig + 14, // 41: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook.ibm_event_notifications:type_name -> com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig + 0, // 42: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 23, // 43: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.name:type_name -> google.protobuf.StringValue + 23, // 44: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.url:type_name -> google.protobuf.StringValue + 4, // 45: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.generic_webhook:type_name -> com.coralogix.outgoing_webhooks.v1.GenericWebhookConfig + 5, // 46: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.slack:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig + 6, // 47: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.pager_duty:type_name -> com.coralogix.outgoing_webhooks.v1.PagerDutyConfig + 7, // 48: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.send_log:type_name -> com.coralogix.outgoing_webhooks.v1.SendLogConfig + 8, // 49: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.email_group:type_name -> com.coralogix.outgoing_webhooks.v1.EmailGroupConfig + 9, // 50: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.microsoft_teams:type_name -> com.coralogix.outgoing_webhooks.v1.MicrosoftTeamsConfig + 10, // 51: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.jira:type_name -> com.coralogix.outgoing_webhooks.v1.JiraConfig + 11, // 52: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.opsgenie:type_name -> com.coralogix.outgoing_webhooks.v1.OpsgenieConfig + 12, // 53: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.demisto:type_name -> com.coralogix.outgoing_webhooks.v1.DemistoConfig + 13, // 54: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.aws_event_bridge:type_name -> com.coralogix.outgoing_webhooks.v1.AwsEventBridgeConfig + 14, // 55: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData.ibm_event_notifications:type_name -> com.coralogix.outgoing_webhooks.v1.IbmEventNotificationsConfig + 23, // 56: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.id:type_name -> google.protobuf.StringValue + 23, // 57: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.name:type_name -> google.protobuf.StringValue + 23, // 58: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.url:type_name -> google.protobuf.StringValue + 24, // 59: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.created_at:type_name -> google.protobuf.Timestamp + 24, // 60: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.updated_at:type_name -> google.protobuf.Timestamp + 25, // 61: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary.external_id:type_name -> google.protobuf.UInt32Value + 23, // 62: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.id:type_name -> google.protobuf.StringValue + 0, // 63: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 23, // 64: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.name:type_name -> google.protobuf.StringValue + 23, // 65: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.url:type_name -> google.protobuf.StringValue + 24, // 66: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.created_at:type_name -> google.protobuf.Timestamp + 24, // 67: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.updated_at:type_name -> google.protobuf.Timestamp + 25, // 68: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary.external_id:type_name -> google.protobuf.UInt32Value + 0, // 69: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 23, // 70: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails.label:type_name -> google.protobuf.StringValue + 2, // 71: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest.type:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.DigestType + 26, // 72: com.coralogix.outgoing_webhooks.v1.SlackConfig.Digest.is_active:type_name -> google.protobuf.BoolValue + 3, // 73: com.coralogix.outgoing_webhooks.v1.SlackConfig.Attachment.type:type_name -> com.coralogix.outgoing_webhooks.v1.SlackConfig.AttachmentType + 26, // 74: com.coralogix.outgoing_webhooks.v1.SlackConfig.Attachment.is_active:type_name -> google.protobuf.BoolValue + 75, // [75:75] is the sub-list for method output_type + 75, // [75:75] is the sub-list for method input_type + 75, // [75:75] is the sub-list for extension type_name + 75, // [75:75] is the sub-list for extension extendee + 0, // [0:75] 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.(*AwsEventBridgeConfig); 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.(*IbmEventNotificationsConfig); 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.(*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[12].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[13].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[14].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[15].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[17].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[18].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SlackConfig_Attachment); 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].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), + (*OutgoingWebhook_AwsEventBridge)(nil), + (*OutgoingWebhook_IbmEventNotifications)(nil), + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_proto_msgTypes[12].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), + (*OutgoingWebhookInputData_AwsEventBridge)(nil), + (*OutgoingWebhookInputData_IbmEventNotifications)(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: 4, + NumMessages: 19, + 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/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service.pb.go b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service.pb.go new file mode 100644 index 0000000..3d1cf4d --- /dev/null +++ b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service.pb.go @@ -0,0 +1,2044 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.28.1 +// protoc v5.27.1 +// source: com/coralogix/outgoing_webhooks/v1/outgoing_webhook_service.proto + +package __ + +import ( + _ "google.golang.org/genproto/googleapis/api/annotations" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + _ "google.golang.org/protobuf/types/descriptorpb" + 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 TestExistingOutgoingWebhookRequest 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 *TestExistingOutgoingWebhookRequest) Reset() { + *x = TestExistingOutgoingWebhookRequest{} + 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 *TestExistingOutgoingWebhookRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TestExistingOutgoingWebhookRequest) ProtoMessage() {} + +func (x *TestExistingOutgoingWebhookRequest) 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 TestExistingOutgoingWebhookRequest.ProtoReflect.Descriptor instead. +func (*TestExistingOutgoingWebhookRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{17} +} + +func (x *TestExistingOutgoingWebhookRequest) GetId() *wrapperspb.StringValue { + if x != nil { + return x.Id + } + 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[18] + 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[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 TestOutgoingWebhookResponse.ProtoReflect.Descriptor instead. +func (*TestOutgoingWebhookResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{18} +} + +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 ListIbmEventNotificationsInstancesRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *ListIbmEventNotificationsInstancesRequest) Reset() { + *x = ListIbmEventNotificationsInstancesRequest{} + 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 *ListIbmEventNotificationsInstancesRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListIbmEventNotificationsInstancesRequest) ProtoMessage() {} + +func (x *ListIbmEventNotificationsInstancesRequest) 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 ListIbmEventNotificationsInstancesRequest.ProtoReflect.Descriptor instead. +func (*ListIbmEventNotificationsInstancesRequest) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{19} +} + +type ListIbmEventNotificationsInstancesResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Instances []*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance `protobuf:"bytes,1,rep,name=instances,proto3" json:"instances,omitempty"` +} + +func (x *ListIbmEventNotificationsInstancesResponse) Reset() { + *x = ListIbmEventNotificationsInstancesResponse{} + 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 *ListIbmEventNotificationsInstancesResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListIbmEventNotificationsInstancesResponse) ProtoMessage() {} + +func (x *ListIbmEventNotificationsInstancesResponse) 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 ListIbmEventNotificationsInstancesResponse.ProtoReflect.Descriptor instead. +func (*ListIbmEventNotificationsInstancesResponse) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{20} +} + +func (x *ListIbmEventNotificationsInstancesResponse) GetInstances() []*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance { + if x != nil { + return x.Instances + } + return nil +} + +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[21] + 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[21] + 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[22] + 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[22] + 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{18, 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"` + StatusCode *wrapperspb.UInt32Value `protobuf:"bytes,3,opt,name=status_code,json=statusCode,proto3,oneof" json:"status_code,omitempty"` +} + +func (x *TestOutgoingWebhookResponse_Failure) Reset() { + *x = TestOutgoingWebhookResponse_Failure{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[23] + 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[23] + 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{18, 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 +} + +func (x *TestOutgoingWebhookResponse_Failure) GetStatusCode() *wrapperspb.UInt32Value { + if x != nil { + return x.StatusCode + } + return nil +} + +type ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + InstanceId string `protobuf:"bytes,1,opt,name=instance_id,json=instanceId,proto3" json:"instance_id,omitempty"` + RegionId string `protobuf:"bytes,2,opt,name=region_id,json=regionId,proto3" json:"region_id,omitempty"` + Name string `protobuf:"bytes,3,opt,name=name,proto3" json:"name,omitempty"` + Crn string `protobuf:"bytes,4,opt,name=crn,proto3" json:"crn,omitempty"` // Cloud Resource Name + IsUsed bool `protobuf:"varint,5,opt,name=is_used,json=isUsed,proto3" json:"is_used,omitempty"` +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) Reset() { + *x = ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance{} + if protoimpl.UnsafeEnabled { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[24] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) ProtoMessage() {} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) ProtoReflect() protoreflect.Message { + mi := &file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[24] + 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 ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance.ProtoReflect.Descriptor instead. +func (*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) Descriptor() ([]byte, []int) { + return file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_rawDescGZIP(), []int{20, 0} +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) GetInstanceId() string { + if x != nil { + return x.InstanceId + } + return "" +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) GetRegionId() string { + if x != nil { + return x.RegionId + } + return "" +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) GetCrn() string { + if x != nil { + return x.Crn + } + return "" +} + +func (x *ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance) GetIsUsed() bool { + if x != nil { + return x.IsUsed + } + return false +} + +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, 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, 0x52, 0x0a, 0x22, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 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, 0xe6, 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, 0xe7, 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, 0x12, 0x42, 0x0a, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x5f, 0x63, 0x6f, 0x64, + 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, 0x55, 0x49, 0x6e, 0x74, 0x33, 0x32, + 0x56, 0x61, 0x6c, 0x75, 0x65, 0x48, 0x00, 0x52, 0x0a, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x43, + 0x6f, 0x64, 0x65, 0x88, 0x01, 0x01, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x73, 0x74, 0x61, 0x74, 0x75, + 0x73, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x42, 0x08, 0x0a, 0x06, 0x72, 0x65, 0x73, 0x75, 0x6c, 0x74, + 0x22, 0x2b, 0x0a, 0x29, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xd2, 0x02, + 0x0a, 0x2a, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, + 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, + 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x87, 0x01, 0x0a, + 0x09, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, + 0x32, 0x69, 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, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x2e, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, + 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x52, 0x09, 0x69, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x1a, 0x99, 0x01, 0x0a, 0x1a, 0x45, 0x76, 0x65, 0x6e, 0x74, + 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, + 0x74, 0x61, 0x6e, 0x63, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, + 0x65, 0x5f, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x73, 0x74, + 0x61, 0x6e, 0x63, 0x65, 0x49, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x72, 0x65, 0x67, 0x69, 0x6f, 0x6e, + 0x5f, 0x69, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x67, 0x69, 0x6f, + 0x6e, 0x49, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x63, 0x72, 0x6e, 0x18, 0x04, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x63, 0x72, 0x6e, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x73, 0x5f, + 0x75, 0x73, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x69, 0x73, 0x55, 0x73, + 0x65, 0x64, 0x32, 0xa3, 0x14, 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, 0xe2, 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, 0xe2, 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, 0xe2, 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, 0xe2, 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, 0xe2, 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, 0xe2, + 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, + 0xe2, 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, 0xe2, 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, 0xe2, 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, 0x12, 0xfd, 0x01, 0x0a, 0x1b, 0x54, 0x65, 0x73, 0x74, 0x45, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x4f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x57, 0x65, 0x62, 0x68, 0x6f, 0x6f, + 0x6b, 0x12, 0x46, 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, 0x45, 0x78, 0x69, 0x73, 0x74, + 0x69, 0x6e, 0x67, 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, 0x55, 0xe2, 0xb8, 0x02, 0x23, + 0x0a, 0x21, 0x54, 0x65, 0x73, 0x74, 0x20, 0x61, 0x6e, 0x20, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, + 0x6e, 0x67, 0x20, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x20, 0x77, 0x65, 0x62, 0x68, + 0x6f, 0x6f, 0x6b, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x28, 0x22, 0x23, 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, 0x5f, 0x65, 0x78, 0x69, 0x73, 0x74, 0x69, 0x6e, 0x67, 0x3a, 0x01, + 0x2a, 0x12, 0x84, 0x02, 0x0a, 0x22, 0x4c, 0x69, 0x73, 0x74, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, + 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x12, 0x4d, 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, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, + 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x4e, 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, 0x49, 0x62, 0x6d, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x4e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, + 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x49, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x3f, 0x82, 0xd3, 0xe4, 0x93, 0x02, 0x39, 0x12, + 0x37, 0x2f, 0x76, 0x31, 0x2f, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x77, 0x65, + 0x62, 0x68, 0x6f, 0x6f, 0x6b, 0x73, 0x2f, 0x69, 0x62, 0x6d, 0x5f, 0x65, 0x76, 0x65, 0x6e, 0x74, + 0x5f, 0x6e, 0x6f, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, 0x2f, 0x69, + 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x73, 0x42, 0x04, 0x5a, 0x02, 0x2e, 0x2f, 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, 25) +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 + (*TestExistingOutgoingWebhookRequest)(nil), // 17: com.coralogix.outgoing_webhooks.v1.TestExistingOutgoingWebhookRequest + (*TestOutgoingWebhookResponse)(nil), // 18: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse + (*ListIbmEventNotificationsInstancesRequest)(nil), // 19: com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesRequest + (*ListIbmEventNotificationsInstancesResponse)(nil), // 20: com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesResponse + (*ListOutgoingWebhookTypesResponse_OutgoingWebhookType)(nil), // 21: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType + (*TestOutgoingWebhookResponse_Success)(nil), // 22: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Success + (*TestOutgoingWebhookResponse_Failure)(nil), // 23: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure + (*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance)(nil), // 24: com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesResponse.EventNotificationsInstance + (WebhookType)(0), // 25: com.coralogix.outgoing_webhooks.v1.WebhookType + (*OutgoingWebhookDetails)(nil), // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + (*OutgoingWebhookSummary)(nil), // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + (*OutgoingWebhookExtendedSummary)(nil), // 28: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + (*wrapperspb.StringValue)(nil), // 29: google.protobuf.StringValue + (*OutgoingWebhook)(nil), // 30: com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + (*OutgoingWebhookInputData)(nil), // 31: com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + (*wrapperspb.UInt32Value)(nil), // 32: google.protobuf.UInt32Value +} +var file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_depIdxs = []int32{ + 21, // 0: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.webhooks:type_name -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType + 25, // 1: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsRequest.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 26, // 2: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsResponse.details:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookDetails + 25, // 3: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksRequest.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 27, // 4: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksResponse.deployed:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookSummary + 28, // 5: com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksResponse.deployed:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookExtendedSummary + 29, // 6: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookRequest.id:type_name -> google.protobuf.StringValue + 30, // 7: com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookResponse.webhook:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhook + 31, // 8: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 29, // 9: com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookResponse.id:type_name -> google.protobuf.StringValue + 31, // 10: com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 29, // 11: com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookRequest.id:type_name -> google.protobuf.StringValue + 31, // 12: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookRequest.data:type_name -> com.coralogix.outgoing_webhooks.v1.OutgoingWebhookInputData + 29, // 13: com.coralogix.outgoing_webhooks.v1.TestExistingOutgoingWebhookRequest.id:type_name -> google.protobuf.StringValue + 22, // 14: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.success:type_name -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Success + 23, // 15: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.failure:type_name -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure + 24, // 16: com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesResponse.instances:type_name -> com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesResponse.EventNotificationsInstance + 25, // 17: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.type:type_name -> com.coralogix.outgoing_webhooks.v1.WebhookType + 29, // 18: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.label:type_name -> google.protobuf.StringValue + 32, // 19: com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse.OutgoingWebhookType.count:type_name -> google.protobuf.UInt32Value + 29, // 20: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure.error_message:type_name -> google.protobuf.StringValue + 29, // 21: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure.display_message:type_name -> google.protobuf.StringValue + 32, // 22: com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse.Failure.status_code:type_name -> google.protobuf.UInt32Value + 0, // 23: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhookTypes:input_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesRequest + 2, // 24: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhookTypeDetails:input_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsRequest + 4, // 25: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhooks:input_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksRequest + 6, // 26: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListAllOutgoingWebhooks:input_type -> com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksRequest + 8, // 27: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookRequest + 10, // 28: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.CreateOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookRequest + 12, // 29: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.UpdateOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookRequest + 14, // 30: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.DeleteOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookRequest + 16, // 31: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookRequest + 17, // 32: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestExistingOutgoingWebhook:input_type -> com.coralogix.outgoing_webhooks.v1.TestExistingOutgoingWebhookRequest + 19, // 33: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListIbmEventNotificationsInstances:input_type -> com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesRequest + 1, // 34: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhookTypes:output_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhookTypesResponse + 3, // 35: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhookTypeDetails:output_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookTypeDetailsResponse + 5, // 36: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListOutgoingWebhooks:output_type -> com.coralogix.outgoing_webhooks.v1.ListOutgoingWebhooksResponse + 7, // 37: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListAllOutgoingWebhooks:output_type -> com.coralogix.outgoing_webhooks.v1.ListAllOutgoingWebhooksResponse + 9, // 38: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.GetOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.GetOutgoingWebhookResponse + 11, // 39: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.CreateOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.CreateOutgoingWebhookResponse + 13, // 40: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.UpdateOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.UpdateOutgoingWebhookResponse + 15, // 41: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.DeleteOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.DeleteOutgoingWebhookResponse + 18, // 42: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse + 18, // 43: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.TestExistingOutgoingWebhook:output_type -> com.coralogix.outgoing_webhooks.v1.TestOutgoingWebhookResponse + 20, // 44: com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService.ListIbmEventNotificationsInstances:output_type -> com.coralogix.outgoing_webhooks.v1.ListIbmEventNotificationsInstancesResponse + 34, // [34:45] is the sub-list for method output_type + 23, // [23:34] is the sub-list for method input_type + 23, // [23:23] is the sub-list for extension type_name + 23, // [23:23] is the sub-list for extension extendee + 0, // [0:23] 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.(*TestExistingOutgoingWebhookRequest); 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.(*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[19].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListIbmEventNotificationsInstancesRequest); 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.(*ListIbmEventNotificationsInstancesResponse); 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[21].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[22].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[23].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[24].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*ListIbmEventNotificationsInstancesResponse_EventNotificationsInstance); 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].OneofWrappers = []interface{}{ + (*TestOutgoingWebhookResponse_Success_)(nil), + (*TestOutgoingWebhookResponse_Failure_)(nil), + } + file_com_coralogix_outgoing_webhooks_v1_outgoing_webhook_service_proto_msgTypes[23].OneofWrappers = []interface{}{} + 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: 25, + 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/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service_grpc.pb.go b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service_grpc.pb.go new file mode 100644 index 0000000..a34d206 --- /dev/null +++ b/controllers/clientset/grpc/outbound-webhooks/outgoing_webhook_service_grpc.pb.go @@ -0,0 +1,466 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.2.0 +// - protoc v5.27.1 +// 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) + TestExistingOutgoingWebhook(ctx context.Context, in *TestExistingOutgoingWebhookRequest, opts ...grpc.CallOption) (*TestOutgoingWebhookResponse, error) + ListIbmEventNotificationsInstances(ctx context.Context, in *ListIbmEventNotificationsInstancesRequest, opts ...grpc.CallOption) (*ListIbmEventNotificationsInstancesResponse, 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 +} + +func (c *outgoingWebhooksServiceClient) TestExistingOutgoingWebhook(ctx context.Context, in *TestExistingOutgoingWebhookRequest, opts ...grpc.CallOption) (*TestOutgoingWebhookResponse, error) { + out := new(TestOutgoingWebhookResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/TestExistingOutgoingWebhook", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *outgoingWebhooksServiceClient) ListIbmEventNotificationsInstances(ctx context.Context, in *ListIbmEventNotificationsInstancesRequest, opts ...grpc.CallOption) (*ListIbmEventNotificationsInstancesResponse, error) { + out := new(ListIbmEventNotificationsInstancesResponse) + err := c.cc.Invoke(ctx, "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListIbmEventNotificationsInstances", 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) + TestExistingOutgoingWebhook(context.Context, *TestExistingOutgoingWebhookRequest) (*TestOutgoingWebhookResponse, error) + ListIbmEventNotificationsInstances(context.Context, *ListIbmEventNotificationsInstancesRequest) (*ListIbmEventNotificationsInstancesResponse, 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) TestExistingOutgoingWebhook(context.Context, *TestExistingOutgoingWebhookRequest) (*TestOutgoingWebhookResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method TestExistingOutgoingWebhook not implemented") +} +func (UnimplementedOutgoingWebhooksServiceServer) ListIbmEventNotificationsInstances(context.Context, *ListIbmEventNotificationsInstancesRequest) (*ListIbmEventNotificationsInstancesResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method ListIbmEventNotificationsInstances 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) +} + +func _OutgoingWebhooksService_TestExistingOutgoingWebhook_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(TestExistingOutgoingWebhookRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).TestExistingOutgoingWebhook(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/TestExistingOutgoingWebhook", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).TestExistingOutgoingWebhook(ctx, req.(*TestExistingOutgoingWebhookRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _OutgoingWebhooksService_ListIbmEventNotificationsInstances_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(ListIbmEventNotificationsInstancesRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(OutgoingWebhooksServiceServer).ListIbmEventNotificationsInstances(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/com.coralogix.outgoing_webhooks.v1.OutgoingWebhooksService/ListIbmEventNotificationsInstances", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(OutgoingWebhooksServiceServer).ListIbmEventNotificationsInstances(ctx, req.(*ListIbmEventNotificationsInstancesRequest)) + } + 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, + }, + { + MethodName: "TestExistingOutgoingWebhook", + Handler: _OutgoingWebhooksService_TestExistingOutgoingWebhook_Handler, + }, + { + MethodName: "ListIbmEventNotificationsInstances", + Handler: _OutgoingWebhooksService_ListIbmEventNotificationsInstances_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "com/coralogix/outgoing_webhooks/v1/outgoing_webhook_service.proto", +} diff --git a/controllers/clientset/grpc/recording-rules-groups/v2/groups.pb.go b/controllers/clientset/grpc/recording-rules-groups/v2/groups.pb.go index 70908fb..dd59e75 100644 --- a/controllers/clientset/grpc/recording-rules-groups/v2/groups.pb.go +++ b/controllers/clientset/grpc/recording-rules-groups/v2/groups.pb.go @@ -21,7 +21,7 @@ const ( _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) ) -//* +// * // A group of recording rules. Rules within a group are run sequentially at a regular interval, // with the same evaluation time. type InRuleGroup struct { @@ -318,7 +318,7 @@ func (x *OutRule) GetLastEvalDurationMs() uint64 { return 0 } -//* A matcher specifying a group to delete. +// * A matcher specifying a group to delete. type DeleteRuleGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -367,7 +367,7 @@ func (x *DeleteRuleGroup) GetName() string { return "" } -//* A listing of rule groups. +// * A listing of rule groups. type RuleGroupListing struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -416,7 +416,7 @@ func (x *RuleGroupListing) GetRuleGroups() []*OutRuleGroup { return nil } -//* A matcher specifying a group to fetch. +// * A matcher specifying a group to fetch. type FetchRuleGroup struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -465,7 +465,7 @@ func (x *FetchRuleGroup) GetName() string { return "" } -//* Result of a rule group fetch operation. +// * Result of a rule group fetch operation. type FetchRuleGroupResult struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache diff --git a/controllers/clientset/outbound-webhooks-client.go b/controllers/clientset/outbound-webhooks-client.go new file mode 100644 index 0000000..6008ba5 --- /dev/null +++ b/controllers/clientset/outbound-webhooks-client.go @@ -0,0 +1,75 @@ +package clientset + +import ( + "context" + + outboundwebhooks "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" +) + +//go:generate mockgen -destination=../mock_clientset/mock_outboundwebhooks-client.go -package=mock_clientset github.com/coralogix/coralogix-operator/controllers/clientset OutboundWebhooksClientInterface +type OutboundWebhooksClientInterface interface { + CreateOutboundWebhook(ctx context.Context, req *outboundwebhooks.CreateOutgoingWebhookRequest) (*outboundwebhooks.CreateOutgoingWebhookResponse, error) + GetOutboundWebhook(ctx context.Context, req *outboundwebhooks.GetOutgoingWebhookRequest) (*outboundwebhooks.GetOutgoingWebhookResponse, error) + UpdateOutboundWebhook(ctx context.Context, req *outboundwebhooks.UpdateOutgoingWebhookRequest) (*outboundwebhooks.UpdateOutgoingWebhookResponse, error) + DeleteOutboundWebhook(ctx context.Context, req *outboundwebhooks.DeleteOutgoingWebhookRequest) (*outboundwebhooks.DeleteOutgoingWebhookResponse, error) +} + +type OutboundWebhooksClient struct { + callPropertiesCreator *CallPropertiesCreator +} + +func (c OutboundWebhooksClient) CreateOutboundWebhook(ctx context.Context, req *outboundwebhooks.CreateOutgoingWebhookRequest) (*outboundwebhooks.CreateOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := outboundwebhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.CreateOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) +} + +func (c OutboundWebhooksClient) GetOutboundWebhook(ctx context.Context, req *outboundwebhooks.GetOutgoingWebhookRequest) (*outboundwebhooks.GetOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := outboundwebhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.GetOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) +} + +func (c OutboundWebhooksClient) UpdateOutboundWebhook(ctx context.Context, req *outboundwebhooks.UpdateOutgoingWebhookRequest) (*outboundwebhooks.UpdateOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := outboundwebhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.UpdateOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) +} + +func (c OutboundWebhooksClient) DeleteOutboundWebhook(ctx context.Context, req *outboundwebhooks.DeleteOutgoingWebhookRequest) (*outboundwebhooks.DeleteOutgoingWebhookResponse, error) { + callProperties, err := c.callPropertiesCreator.GetCallProperties(ctx) + if err != nil { + return nil, err + } + + conn := callProperties.Connection + defer conn.Close() + client := outboundwebhooks.NewOutgoingWebhooksServiceClient(conn) + + return client.DeleteOutgoingWebhook(callProperties.Ctx, req, callProperties.CallOptions...) +} + +func NewOutboundWebhooksClient(c *CallPropertiesCreator) *OutboundWebhooksClient { + return &OutboundWebhooksClient{callPropertiesCreator: c} +} diff --git a/controllers/mock_clientset/mock_clientset.go b/controllers/mock_clientset/mock_clientset.go index 6d2ba97..cd5af5c 100644 --- a/controllers/mock_clientset/mock_clientset.go +++ b/controllers/mock_clientset/mock_clientset.go @@ -52,6 +52,20 @@ func (mr *MockClientSetInterfaceMockRecorder) Alerts() *gomock.Call { return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "Alerts", reflect.TypeOf((*MockClientSetInterface)(nil).Alerts)) } +// OutboundWebhooks mocks base method. +func (m *MockClientSetInterface) OutboundWebhooks() clientset.OutboundWebhooksClientInterface { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "OutboundWebhooks") + ret0, _ := ret[0].(clientset.OutboundWebhooksClientInterface) + return ret0 +} + +// OutboundWebhooks indicates an expected call of OutboundWebhooks. +func (mr *MockClientSetInterfaceMockRecorder) OutboundWebhooks() *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "OutboundWebhooks", reflect.TypeOf((*MockClientSetInterface)(nil).OutboundWebhooks)) +} + // RecordingRuleGroups mocks base method. func (m *MockClientSetInterface) RecordingRuleGroups() clientset.RecordingRulesGroupsClientInterface { m.ctrl.T.Helper() diff --git a/controllers/mock_clientset/mock_outboundwebhooks-client.go b/controllers/mock_clientset/mock_outboundwebhooks-client.go new file mode 100644 index 0000000..62bd45c --- /dev/null +++ b/controllers/mock_clientset/mock_outboundwebhooks-client.go @@ -0,0 +1,100 @@ +// Code generated by MockGen. DO NOT EDIT. +// Source: github.com/coralogix/coralogix-operator/controllers/clientset (interfaces: OutboundWebhooksClientInterface) +// +// Generated by this command: +// +// mockgen -destination=../mock_clientset/mock_outboundwebhooks-client.go -package=mock_clientset github.com/coralogix/coralogix-operator/controllers/clientset OutboundWebhooksClientInterface +// +// Package mock_clientset is a generated GoMock package. +package mock_clientset + +import ( + context "context" + reflect "reflect" + + __ "github.com/coralogix/coralogix-operator/controllers/clientset/grpc/outbound-webhooks" + gomock "go.uber.org/mock/gomock" +) + +// MockOutboundWebhooksClientInterface is a mock of OutboundWebhooksClientInterface interface. +type MockOutboundWebhooksClientInterface struct { + ctrl *gomock.Controller + recorder *MockOutboundWebhooksClientInterfaceMockRecorder +} + +// MockOutboundWebhooksClientInterfaceMockRecorder is the mock recorder for MockOutboundWebhooksClientInterface. +type MockOutboundWebhooksClientInterfaceMockRecorder struct { + mock *MockOutboundWebhooksClientInterface +} + +// NewMockOutboundWebhooksClientInterface creates a new mock instance. +func NewMockOutboundWebhooksClientInterface(ctrl *gomock.Controller) *MockOutboundWebhooksClientInterface { + mock := &MockOutboundWebhooksClientInterface{ctrl: ctrl} + mock.recorder = &MockOutboundWebhooksClientInterfaceMockRecorder{mock} + return mock +} + +// EXPECT returns an object that allows the caller to indicate expected use. +func (m *MockOutboundWebhooksClientInterface) EXPECT() *MockOutboundWebhooksClientInterfaceMockRecorder { + return m.recorder +} + +// CreateOutboundWebhook mocks base method. +func (m *MockOutboundWebhooksClientInterface) CreateOutboundWebhook(arg0 context.Context, arg1 *__.CreateOutgoingWebhookRequest) (*__.CreateOutgoingWebhookResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "CreateOutboundWebhook", arg0, arg1) + ret0, _ := ret[0].(*__.CreateOutgoingWebhookResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// CreateOutboundWebhook indicates an expected call of CreateOutboundWebhook. +func (mr *MockOutboundWebhooksClientInterfaceMockRecorder) CreateOutboundWebhook(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "CreateOutboundWebhook", reflect.TypeOf((*MockOutboundWebhooksClientInterface)(nil).CreateOutboundWebhook), arg0, arg1) +} + +// DeleteOutboundWebhook mocks base method. +func (m *MockOutboundWebhooksClientInterface) DeleteOutboundWebhook(arg0 context.Context, arg1 *__.DeleteOutgoingWebhookRequest) (*__.DeleteOutgoingWebhookResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "DeleteOutboundWebhook", arg0, arg1) + ret0, _ := ret[0].(*__.DeleteOutgoingWebhookResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// DeleteOutboundWebhook indicates an expected call of DeleteOutboundWebhook. +func (mr *MockOutboundWebhooksClientInterfaceMockRecorder) DeleteOutboundWebhook(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "DeleteOutboundWebhook", reflect.TypeOf((*MockOutboundWebhooksClientInterface)(nil).DeleteOutboundWebhook), arg0, arg1) +} + +// GetOutboundWebhook mocks base method. +func (m *MockOutboundWebhooksClientInterface) GetOutboundWebhook(arg0 context.Context, arg1 *__.GetOutgoingWebhookRequest) (*__.GetOutgoingWebhookResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "GetOutboundWebhook", arg0, arg1) + ret0, _ := ret[0].(*__.GetOutgoingWebhookResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// GetOutboundWebhook indicates an expected call of GetOutboundWebhook. +func (mr *MockOutboundWebhooksClientInterfaceMockRecorder) GetOutboundWebhook(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "GetOutboundWebhook", reflect.TypeOf((*MockOutboundWebhooksClientInterface)(nil).GetOutboundWebhook), arg0, arg1) +} + +// UpdateOutboundWebhook mocks base method. +func (m *MockOutboundWebhooksClientInterface) UpdateOutboundWebhook(arg0 context.Context, arg1 *__.UpdateOutgoingWebhookRequest) (*__.UpdateOutgoingWebhookResponse, error) { + m.ctrl.T.Helper() + ret := m.ctrl.Call(m, "UpdateOutboundWebhook", arg0, arg1) + ret0, _ := ret[0].(*__.UpdateOutgoingWebhookResponse) + ret1, _ := ret[1].(error) + return ret0, ret1 +} + +// UpdateOutboundWebhook indicates an expected call of UpdateOutboundWebhook. +func (mr *MockOutboundWebhooksClientInterfaceMockRecorder) UpdateOutboundWebhook(arg0, arg1 any) *gomock.Call { + mr.mock.ctrl.T.Helper() + return mr.mock.ctrl.RecordCallWithMethodType(mr.mock, "UpdateOutboundWebhook", reflect.TypeOf((*MockOutboundWebhooksClientInterface)(nil).UpdateOutboundWebhook), arg0, arg1) +} diff --git a/docs/api.md b/docs/api.md index 1cec06a..6309bdc 100644 --- a/docs/api.md +++ b/docs/api.md @@ -10,6 +10,8 @@ Resource Types: - [Alert](#alert) +- [OutboundWebhook](#outboundwebhook) + - [RecordingRuleGroupSet](#recordingrulegroupset) - [RuleGroup](#rulegroup) @@ -49,7 +51,7 @@ Alert is the Schema for the alerts API true - metadata + metadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true @@ -4589,7 +4591,7 @@ AlertStatus defines the observed state of Alert -## RecordingRuleGroupSet +## OutboundWebhook [↩ Parent](#coralogixcomv1alpha1 ) @@ -4597,7 +4599,7 @@ AlertStatus defines the observed state of Alert -RecordingRuleGroupSet is the Schema for the recordingrulegroupsets API +OutboundWebhook is the Schema for the outboundwebhooks API @@ -4617,38 +4619,38 @@ RecordingRuleGroupSet is the Schema for the recordingrulegroupsets API - + - + - + - +
kind stringRecordingRuleGroupSetOutboundWebhook true
metadatametadata object Refer to the Kubernetes API documentation for the fields of the `metadata` field. true
specspec object - RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet
+ OutboundWebhookSpec defines the desired state of OutboundWebhook
false
statusstatus object - RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet
+ OutboundWebhookStatus defines the observed state of OutboundWebhook
false
-### RecordingRuleGroupSet.spec -[↩ Parent](#recordingrulegroupset) +### OutboundWebhook.spec +[↩ Parent](#outboundwebhook) -RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet +OutboundWebhookSpec defines the desired state of OutboundWebhook @@ -4660,8 +4662,15 @@ RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet - - + + + + + + + @@ -4670,8 +4679,8 @@ RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet
groups[]objectnamestring +
+
true
outboundWebhookTypeobject
-### RecordingRuleGroupSet.spec.groups[index] -[↩ Parent](#recordingrulegroupsetspec) +### OutboundWebhook.spec.outboundWebhookType +[↩ Parent](#outboundwebhookspec) @@ -4687,35 +4696,71 @@ RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet - intervalSeconds - integer + awsEventBridge + object
+ + false + + demisto + object +
- Format: int32
- Default: 60
- Minimum: 60
false - limit - integer + emailGroup + object
+ + false + + genericWebhook + object +
- Format: int64
false - name - string + jira + object - INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file
+
false - rules - []object + microsoftTeams + object + +
+ + false + + opsgenie + object + +
+ + false + + pagerDuty + object + +
+ + false + + sendLog + object + +
+ + false + + slack + object
@@ -4724,8 +4769,8 @@ RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet -### RecordingRuleGroupSet.spec.groups[index].rules[index] -[↩ Parent](#recordingrulegroupsetspecgroupsindex) +### OutboundWebhook.spec.outboundWebhookType.awsEventBridge +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) @@ -4741,36 +4786,50 @@ RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet - expr + detail string
- false + true - labels - map[string]string + detailType + string
- false + true - record + eventBusArn string
- false + true + + roleName + string + +
+ + true + + source + string + +
+ + true -### RecordingRuleGroupSet.status -[↩ Parent](#recordingrulegroupset) +### OutboundWebhook.spec.outboundWebhookType.demisto +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + -RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet @@ -4782,25 +4841,32 @@ RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet - + - - + + - + + + + + +
idpayload string
true
groups[]objecturlstring
falsetrue
uuidstring +
+
true
-### RecordingRuleGroupSet.status.groups[index] -[↩ Parent](#recordingrulegroupsetstatus) +### OutboundWebhook.spec.outboundWebhookType.emailGroup +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) @@ -4816,35 +4882,58 @@ RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet - intervalSeconds - integer + emailAddresses + []string
-
- Format: int32
- Default: 60
- Minimum: 60
- false - - limit - integer + true + + + + +### OutboundWebhook.spec.outboundWebhookType.genericWebhook +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + + + + + + + + + + + + + + + + + - + - + + + + + + - - + + @@ -4853,8 +4942,8 @@ RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet
NameTypeDescriptionRequired
methodenum

- Format: int64
+ Enum: Unkown, Get, Post, Put
falsetrue
nameurl string - INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file
+
+
true
headersmap[string]string +
false
rules[]objectpayloadstring
-### RecordingRuleGroupSet.status.groups[index].rules[index] -[↩ Parent](#recordingrulegroupsetstatusgroupsindex) +### OutboundWebhook.spec.outboundWebhookType.jira +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) @@ -4870,39 +4959,44 @@ RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet - expr + apiToken string
- false + true - labels - map[string]string + email + string
- false + true - record + projectKey string
- false + true + + url + string + +
+ + true -## RuleGroup -[↩ Parent](#coralogixcomv1alpha1 ) +### OutboundWebhook.spec.outboundWebhookType.microsoftTeams +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) -RuleGroup is the Schema for the rulegroups API - @@ -4913,46 +5007,22 @@ RuleGroup is the Schema for the rulegroups API - - - - - - - - - - - - - - - - - - - - - - - - + + - +
apiVersionstringcoralogix.com/v1alpha1true
kindstringRuleGrouptrue
metadataobjectRefer to the Kubernetes API documentation for the fields of the `metadata` field.true
specobject - RuleGroupSpec defines the Desired state of RuleGroup
-
false
statusobjecturlstring - RuleGroupStatus defines the observed state of RuleGroup
+
falsetrue
-### RuleGroup.spec -[↩ Parent](#rulegroup) +### OutboundWebhook.spec.outboundWebhookType.opsgenie +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + -RuleGroupSpec defines the Desired state of RuleGroup @@ -4964,28 +5034,1179 @@ RuleGroupSpec defines the Desired state of RuleGroup - + - - - - - - - - + +
nameurl string
true
activeboolean -
-
- Default: true
-
false
applications[]string
+ + +### OutboundWebhook.spec.outboundWebhookType.pagerDuty +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + + + + + + + + + + + + + + + + + - + + +
NameTypeDescriptionRequired
serviceKeystring
falsetrue
+ + +### OutboundWebhook.spec.outboundWebhookType.sendLog +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
payloadstring +
+
true
urlstring +
+
true
+ + +### OutboundWebhook.spec.outboundWebhookType.slack +[↩ Parent](#outboundwebhookspecoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
attachments[]object +
+
true
digests[]object +
+
true
urlstring +
+
true
+ + +### OutboundWebhook.spec.outboundWebhookType.slack.attachments[index] +[↩ Parent](#outboundwebhookspecoutboundwebhooktypeslack) + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
isActiveboolean +
+
true
typestring +
+
true
+ + +### OutboundWebhook.spec.outboundWebhookType.slack.digests[index] +[↩ Parent](#outboundwebhookspecoutboundwebhooktypeslack) + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
isActiveboolean +
+
true
typestring +
+
true
+ + +### OutboundWebhook.status +[↩ Parent](#outboundwebhook) + + + +OutboundWebhookStatus defines the observed state of OutboundWebhook + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
idstring +
+
true
namestring +
+
true
outboundWebhookTypeobject +
+
true
externalIdstring +
+
false
+ + +### OutboundWebhook.status.outboundWebhookType +[↩ Parent](#outboundwebhookstatus) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
awsEventBridgeobject +
+
false
demistoobject +
+
false
emailGroupobject +
+
false
genericWebhookobject +
+
false
jiraobject +
+
false
microsoftTeamsobject +
+
false
opsgenieobject +
+
false
pagerDutyobject +
+
false
sendLogobject +
+
false
slackobject +
+
false
+ + +### OutboundWebhook.status.outboundWebhookType.awsEventBridge +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
detailstring +
+
true
detailTypestring +
+
true
eventBusArnstring +
+
true
roleNamestring +
+
true
sourcestring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.demisto +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
payloadstring +
+
true
urlstring +
+
true
uuidstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.emailGroup +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
emailAddresses[]string +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.genericWebhook +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
methodenum +
+
+ Enum: Unkown, Get, Post, Put
+
true
urlstring +
+
true
uuidstring +
+
true
headersmap[string]string +
+
false
payloadstring +
+
false
+ + +### OutboundWebhook.status.outboundWebhookType.jira +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
apiTokenstring +
+
true
emailstring +
+
true
projectKeystring +
+
true
urlstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.microsoftTeams +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
urlstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.opsgenie +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
urlstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.pagerDuty +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
serviceKeystring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.sendLog +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
payloadstring +
+
true
urlstring +
+
true
uuidstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.slack +[↩ Parent](#outboundwebhookstatusoutboundwebhooktype) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
attachments[]object +
+
true
digests[]object +
+
true
urlstring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.slack.attachments[index] +[↩ Parent](#outboundwebhookstatusoutboundwebhooktypeslack) + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
isActiveboolean +
+
true
typestring +
+
true
+ + +### OutboundWebhook.status.outboundWebhookType.slack.digests[index] +[↩ Parent](#outboundwebhookstatusoutboundwebhooktypeslack) + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
isActiveboolean +
+
true
typestring +
+
true
+ +## RecordingRuleGroupSet +[↩ Parent](#coralogixcomv1alpha1 ) + + + + + + +RecordingRuleGroupSet is the Schema for the recordingrulegroupsets API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
apiVersionstringcoralogix.com/v1alpha1true
kindstringRecordingRuleGroupSettrue
metadataobjectRefer to the Kubernetes API documentation for the fields of the `metadata` field.true
specobject + RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet
+
false
statusobject + RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet
+
false
+ + +### RecordingRuleGroupSet.spec +[↩ Parent](#recordingrulegroupset) + + + +RecordingRuleGroupSetSpec defines the desired state of RecordingRuleGroupSet + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
groups[]object +
+
true
+ + +### RecordingRuleGroupSet.spec.groups[index] +[↩ Parent](#recordingrulegroupsetspec) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
intervalSecondsinteger +
+
+ Format: int32
+ Default: 60
+ Minimum: 60
+
false
limitinteger +
+
+ Format: int64
+
false
namestring + INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file
+
false
rules[]object +
+
false
+ + +### RecordingRuleGroupSet.spec.groups[index].rules[index] +[↩ Parent](#recordingrulegroupsetspecgroupsindex) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
exprstring +
+
false
labelsmap[string]string +
+
false
recordstring +
+
false
+ + +### RecordingRuleGroupSet.status +[↩ Parent](#recordingrulegroupset) + + + +RecordingRuleGroupSetStatus defines the observed state of RecordingRuleGroupSet + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
idstring +
+
true
groups[]object +
+
false
+ + +### RecordingRuleGroupSet.status.groups[index] +[↩ Parent](#recordingrulegroupsetstatus) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
intervalSecondsinteger +
+
+ Format: int32
+ Default: 60
+ Minimum: 60
+
false
limitinteger +
+
+ Format: int64
+
false
namestring + INSERT ADDITIONAL SPEC FIELDS - desired state of cluster Important: Run "make" to regenerate code after modifying this file
+
false
rules[]object +
+
false
+ + +### RecordingRuleGroupSet.status.groups[index].rules[index] +[↩ Parent](#recordingrulegroupsetstatusgroupsindex) + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
exprstring +
+
false
labelsmap[string]string +
+
false
recordstring +
+
false
+ +## RuleGroup +[↩ Parent](#coralogixcomv1alpha1 ) + + + + + + +RuleGroup is the Schema for the rulegroups API + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescriptionRequired
apiVersionstringcoralogix.com/v1alpha1true
kindstringRuleGrouptrue
metadataobjectRefer to the Kubernetes API documentation for the fields of the `metadata` field.true
specobject + RuleGroupSpec defines the Desired state of RuleGroup
+
false
statusobject + RuleGroupStatus defines the observed state of RuleGroup
+
false
+ + +### RuleGroup.spec +[↩ Parent](#rulegroup) + + + +RuleGroupSpec defines the Desired state of RuleGroup + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6200,4 +7421,4 @@ RuleGroupStatus defines the observed state of RuleGroup -
NameTypeDescriptionRequired
namestring +
+
true
activeboolean +
+
+ Default: true
+
false
applications[]string +
+
false
creator string true
+ \ No newline at end of file diff --git a/go.mod b/go.mod index a186f5e..23a0efc 100644 --- a/go.mod +++ b/go.mod @@ -12,9 +12,9 @@ require ( github.com/prometheus-operator/prometheus-operator/pkg/apis/monitoring v0.64.1 github.com/stretchr/testify v1.8.2 go.uber.org/mock v0.3.0 - go.uber.org/zap v1.24.0 + google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf google.golang.org/grpc v1.65.0 - google.golang.org/protobuf v1.34.1 + google.golang.org/protobuf v1.34.2 k8s.io/apimachinery v0.27.2 k8s.io/client-go v0.27.2 k8s.io/utils v0.0.0-20240310230437-4693a0247e57 @@ -58,15 +58,16 @@ require ( github.com/spf13/pflag v1.0.5 // indirect go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.6.0 // indirect - golang.org/x/net v0.25.0 // indirect + go.uber.org/zap v1.24.0 // indirect + golang.org/x/net v0.26.0 // indirect golang.org/x/oauth2 v0.20.0 // indirect - golang.org/x/sys v0.20.0 // indirect - golang.org/x/term v0.20.0 // indirect - golang.org/x/text v0.15.0 // indirect + golang.org/x/sys v0.21.0 // indirect + golang.org/x/term v0.21.0 // indirect + golang.org/x/text v0.16.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.14.0 // indirect + golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d // indirect gomodules.xyz/jsonpatch/v2 v2.3.0 // indirect - google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index 5c03a9f..be12ea9 100644 --- a/go.sum +++ b/go.sum @@ -225,6 +225,8 @@ golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96b golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= +golang.org/x/net v0.26.0 h1:soB7SVo0PWrY4vPW/+ay0jKDNScG2X9wFeYlXIvJsOQ= +golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.20.0 h1:4mQdhULixXKP1rwYBW0vAijoXnkTG0BLCDRzfe1idMo= @@ -249,15 +251,21 @@ golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws= +golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.20.0 h1:VnkxpohqXaOBYJtBmEppKUG6mXpi+4O6purfc2+sMhw= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= +golang.org/x/term v0.21.0 h1:WVXCp+/EBEHOj53Rvu+7KiT/iElMrO8ACK16SMZ3jaA= +golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.16.0 h1:a94ExnEXNtEwYLGJSIUxnWoxoRz/ZcCsV63ROupILh4= +golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -271,6 +279,8 @@ golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.14.0 h1:jvNa2pY0M4r62jkRQ6RwEZZyPcymeL9XZMLBbV7U2nc= golang.org/x/tools v0.14.0/go.mod h1:uYBEerGOWcJyEORxN+Ek8+TT266gXkNlHdJBwexUsBg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d h1:vU5i/LfpvrRCpgM/VPfJLg5KjxD3E+hfT1SH+d9zLwg= +golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -287,6 +297,10 @@ google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEY google.golang.org/genproto v0.0.0-20220107163113-42d7afdf6368/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4 h1:DdoeryqhaXp1LtT/emMP1BRJPHHKFi5akj/nbx/zNTA= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf h1:GillM0Ef0pkZPIB+5iO6SDK+4T9pf6TpaYR6ICD5rVE= +google.golang.org/genproto/googleapis/api v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:OFMYQFHJ4TM3JRlWDZhJbZfra2uqc3WLBZiaaqP4DtU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf h1:liao9UHurZLtiEwBgT9LMOnKYsHze6eA6w1KQCMVN2Q= +google.golang.org/genproto/googleapis/rpc v0.0.0-20240730163845-b1a4ccb954bf/go.mod h1:Ue6ibwXGpU+dqIcODieyLOcgj7z8+IcskoNIgZxtrFY= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= @@ -311,6 +325,8 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= +google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= +google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/kuttl-test.yaml b/kuttl-test.yaml index d77dad4..9fba995 100644 --- a/kuttl-test.yaml +++ b/kuttl-test.yaml @@ -1,9 +1,10 @@ apiVersion: kuttl.dev/v1beta1 kind: TestSuite testDirs: - - tests/e2e/alerts + #- tests/e2e/alerts - tests/e2e/rulegroups - tests/e2e/recordingrulegroupsets - tests/e2e/promatheusrules + - tests/e2e/outboundwebhooks namespace: default timeout: 60 \ No newline at end of file diff --git a/main.go b/main.go index fae2dd2..2e1a97e 100644 --- a/main.go +++ b/main.go @@ -169,6 +169,14 @@ func main() { setupLog.Error(err, "unable to create controller", "controller", "RecordingRuleGroupSet") os.Exit(1) } + if err = (&alphacontrollers.OutboundWebhookReconciler{ + OutboundWebhooksClient: clientset.NewClientSet(targetUrl, apiKey).OutboundWebhooks(), + Client: mgr.GetClient(), + Scheme: mgr.GetScheme(), + }).SetupWithManager(mgr); err != nil { + setupLog.Error(err, "unable to create controller", "controller", "OutboundWebhook") + os.Exit(1) + } //+kubebuilder:scaffold:builder if err := mgr.AddHealthzCheck("healthz", healthz.Ping); err != nil { diff --git a/tests/e2e/outboundwebhooks/aws-event-bridge/00-assert.yaml b/tests/e2e/outboundwebhooks/aws-event-bridge/00-assert.yaml new file mode 100644 index 0000000..79d840d --- /dev/null +++ b/tests/e2e/outboundwebhooks/aws-event-bridge/00-assert.yaml @@ -0,0 +1,28 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: aws-event-bridge-webhook +spec: + name: aws-event-bridge-webhook + outboundWebhookType: + awsEventBridge: + eventBusArn: "my-event-bus" + detail: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + detailType: "myDetailType" + source: "mySource" + roleName: "arn:aws:iam::123456789012:role/my-role" +status: + name: aws-event-bridge-webhook + outboundWebhookType: + awsEventBridge: + eventBusArn: "my-event-bus" + detail: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + detailType: "myDetailType" + source: "mySource" + roleName: "arn:aws:iam::123456789012:role/my-role" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/aws-event-bridge/00-aws-event-bridge-install.yaml b/tests/e2e/outboundwebhooks/aws-event-bridge/00-aws-event-bridge-install.yaml new file mode 100644 index 0000000..b1183e1 --- /dev/null +++ b/tests/e2e/outboundwebhooks/aws-event-bridge/00-aws-event-bridge-install.yaml @@ -0,0 +1,19 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: aws-event-bridge-webhook +spec: + name: aws-event-bridge-webhook + outboundWebhookType: + awsEventBridge: + eventBusArn: "my-event-bus" + detail: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + detailType: "myDetailType" + source: "mySource" + roleName: "arn:aws:iam::123456789012:role/my-role" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/aws-event-bridge/00-delete.yaml b/tests/e2e/outboundwebhooks/aws-event-bridge/00-delete.yaml new file mode 100644 index 0000000..dab8258 --- /dev/null +++ b/tests/e2e/outboundwebhooks/aws-event-bridge/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: aws-event-bridge-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/demisto/00-assert.yaml b/tests/e2e/outboundwebhooks/demisto/00-assert.yaml new file mode 100644 index 0000000..5440cfb --- /dev/null +++ b/tests/e2e/outboundwebhooks/demisto/00-assert.yaml @@ -0,0 +1,24 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: demisto-webhook +spec: + name: demisto-webhook + outboundWebhookType: + demisto: + uuid: "12345678-1234-1234-1234-123456789012" + payload: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + url: "https://example.com" +status: + name: demisto-webhook + outboundWebhookType: + demisto: + uuid: "12345678-1234-1234-1234-123456789012" + payload: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + url: "https://example.com" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/demisto/00-delete.yaml b/tests/e2e/outboundwebhooks/demisto/00-delete.yaml new file mode 100644 index 0000000..819345e --- /dev/null +++ b/tests/e2e/outboundwebhooks/demisto/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: demisto-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/demisto/00-demisto-install.yaml b/tests/e2e/outboundwebhooks/demisto/00-demisto-install.yaml new file mode 100644 index 0000000..e28eff1 --- /dev/null +++ b/tests/e2e/outboundwebhooks/demisto/00-demisto-install.yaml @@ -0,0 +1,17 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: demisto-webhook +spec: + name: demisto-webhook + outboundWebhookType: + demisto: + uuid: "12345678-1234-1234-1234-123456789012" + payload: "{\"key1\": \"value1\", \"key2\": \"value2\"}" + url: "https://example.com" diff --git a/tests/e2e/outboundwebhooks/email-group/00-assert.yaml b/tests/e2e/outboundwebhooks/email-group/00-assert.yaml new file mode 100644 index 0000000..17667f3 --- /dev/null +++ b/tests/e2e/outboundwebhooks/email-group/00-assert.yaml @@ -0,0 +1,24 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: email-group-webhook +spec: + name: email-group-webhook + outboundWebhookType: + emailGroup: + emailAddresses: + - example@coralogix.com + example2@coralogix.com +status: + name: email-group-webhook + outboundWebhookType: + emailGroup: + emailAddresses: + - example@coralogix.com + example2@coralogix.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/email-group/00-delete.yaml b/tests/e2e/outboundwebhooks/email-group/00-delete.yaml new file mode 100644 index 0000000..9e39b05 --- /dev/null +++ b/tests/e2e/outboundwebhooks/email-group/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: email-group-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/email-group/00-demisto-install.yaml b/tests/e2e/outboundwebhooks/email-group/00-demisto-install.yaml new file mode 100644 index 0000000..b1fa9aa --- /dev/null +++ b/tests/e2e/outboundwebhooks/email-group/00-demisto-install.yaml @@ -0,0 +1,17 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: email-group-webhook +spec: + name: email-group-webhook + outboundWebhookType: + emailGroup: + emailAddresses: + - example@coralogix.com + example2@coralogix.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/generic/00-assert.yaml b/tests/e2e/outboundwebhooks/generic/00-assert.yaml new file mode 100644 index 0000000..9742384 --- /dev/null +++ b/tests/e2e/outboundwebhooks/generic/00-assert.yaml @@ -0,0 +1,30 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: generic-webhook +spec: + name: generic-webhook + outboundWebhookType: + genericWebhook: + headers: + key1: value1 + key2: value2 + method: Post + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com +status: + name: generic-webhook + outboundWebhookType: + genericWebhook: + headers: + key1: value1 + key2: value2 + method: Post + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/generic/00-delete.yaml b/tests/e2e/outboundwebhooks/generic/00-delete.yaml new file mode 100644 index 0000000..9f339e3 --- /dev/null +++ b/tests/e2e/outboundwebhooks/generic/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: generic-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/generic/00-generic-install.yaml b/tests/e2e/outboundwebhooks/generic/00-generic-install.yaml new file mode 100644 index 0000000..538ab99 --- /dev/null +++ b/tests/e2e/outboundwebhooks/generic/00-generic-install.yaml @@ -0,0 +1,20 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: generic-webhook +spec: + name: generic-webhook + outboundWebhookType: + genericWebhook: + headers: + key1: value1 + key2: value2 + method: Post + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/jira/00-assert.yaml b/tests/e2e/outboundwebhooks/jira/00-assert.yaml new file mode 100644 index 0000000..87d1fdb --- /dev/null +++ b/tests/e2e/outboundwebhooks/jira/00-assert.yaml @@ -0,0 +1,26 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: jira-webhook +spec: + name: jira-webhook + outboundWebhookType: + jira: + apiToken: "12345678-1234-1234-1234-123456789012" + email: "example@coralogix.com" + projectKey: "COR" + url: "https://example.atlassian.net" +status: + name: jira-webhook + outboundWebhookType: + jira: + apiToken: "12345678-1234-1234-1234-123456789012" + email: "example@coralogix.com" + projectKey: "COR" + url: "https://example.atlassian.net" diff --git a/tests/e2e/outboundwebhooks/jira/00-delete.yaml b/tests/e2e/outboundwebhooks/jira/00-delete.yaml new file mode 100644 index 0000000..1ff5667 --- /dev/null +++ b/tests/e2e/outboundwebhooks/jira/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: jira-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/jira/00-jira-install.yaml b/tests/e2e/outboundwebhooks/jira/00-jira-install.yaml new file mode 100644 index 0000000..028995b --- /dev/null +++ b/tests/e2e/outboundwebhooks/jira/00-jira-install.yaml @@ -0,0 +1,18 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: jira-webhook +spec: + name: jira-webhook + outboundWebhookType: + jira: + apiToken: "12345678-1234-1234-1234-123456789012" + email: "example@coralogix.com" + projectKey: "COR" + url: "https://example.atlassian.net" diff --git a/tests/e2e/outboundwebhooks/microsoft-teams/00-assert.yaml b/tests/e2e/outboundwebhooks/microsoft-teams/00-assert.yaml new file mode 100644 index 0000000..8c0c13a --- /dev/null +++ b/tests/e2e/outboundwebhooks/microsoft-teams/00-assert.yaml @@ -0,0 +1,20 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: microsoft-teams-webhook +spec: + name: microsoft-teams-webhook + outboundWebhookType: + microsoftTeams: + url: "https://outlook.office.com/webhook/12345678-1234-1234-1234-123456789012/IncomingWebhook/12345678-1234-1234-1234-123456789012" +status: + name: microsoft-teams-webhook + outboundWebhookType: + microsoftTeams: + url: "https://outlook.office.com/webhook/12345678-1234-1234-1234-123456789012/IncomingWebhook/12345678-1234-1234-1234-123456789012" diff --git a/tests/e2e/outboundwebhooks/microsoft-teams/00-delete.yaml b/tests/e2e/outboundwebhooks/microsoft-teams/00-delete.yaml new file mode 100644 index 0000000..028d887 --- /dev/null +++ b/tests/e2e/outboundwebhooks/microsoft-teams/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: microsoft-teams-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/microsoft-teams/00-microsoft-teams-install.yaml b/tests/e2e/outboundwebhooks/microsoft-teams/00-microsoft-teams-install.yaml new file mode 100644 index 0000000..8a76b06 --- /dev/null +++ b/tests/e2e/outboundwebhooks/microsoft-teams/00-microsoft-teams-install.yaml @@ -0,0 +1,15 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: microsoft-teams-webhook +spec: + name: microsoft-teams-webhook + outboundWebhookType: + microsoftTeams: + url: "https://outlook.office.com/webhook/12345678-1234-1234-1234-123456789012/IncomingWebhook/12345678-1234-1234-1234-123456789012" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/opsgenie/00-assert.yaml b/tests/e2e/outboundwebhooks/opsgenie/00-assert.yaml new file mode 100644 index 0000000..60ff937 --- /dev/null +++ b/tests/e2e/outboundwebhooks/opsgenie/00-assert.yaml @@ -0,0 +1,20 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: opsgenie-webhook +spec: + name: opsgenie-webhook + outboundWebhookType: + opsgenie: + url: "https://api.opsgenie.com/v2/alerts" +status: + name: opsgenie-webhook + outboundWebhookType: + opsgenie: + url: "https://api.opsgenie.com/v2/alerts" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/opsgenie/00-delete.yaml b/tests/e2e/outboundwebhooks/opsgenie/00-delete.yaml new file mode 100644 index 0000000..289a6c2 --- /dev/null +++ b/tests/e2e/outboundwebhooks/opsgenie/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: opsgenie-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/opsgenie/00-opsgenie-install.yaml b/tests/e2e/outboundwebhooks/opsgenie/00-opsgenie-install.yaml new file mode 100644 index 0000000..f5e6165 --- /dev/null +++ b/tests/e2e/outboundwebhooks/opsgenie/00-opsgenie-install.yaml @@ -0,0 +1,15 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: opsgenie-webhook +spec: + name: opsgenie-webhook + outboundWebhookType: + opsgenie: + url: "https://api.opsgenie.com/v2/alerts" diff --git a/tests/e2e/outboundwebhooks/pagerdurty/00-assert.yaml b/tests/e2e/outboundwebhooks/pagerdurty/00-assert.yaml new file mode 100644 index 0000000..e13f6da --- /dev/null +++ b/tests/e2e/outboundwebhooks/pagerdurty/00-assert.yaml @@ -0,0 +1,20 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: pagerduty +spec: + name: pagerduty + outboundWebhookType: + pagerDuty: + serviceKey: "12345678-1234-1234-1234-123456789012" +status: + name: pagerduty + outboundWebhookType: + pagerDuty: + serviceKey: "12345678-1234-1234-1234-123456789012" \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/pagerdurty/00-delete.yaml b/tests/e2e/outboundwebhooks/pagerdurty/00-delete.yaml new file mode 100644 index 0000000..289a6c2 --- /dev/null +++ b/tests/e2e/outboundwebhooks/pagerdurty/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: opsgenie-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/pagerdurty/00-pagerduty-install.yaml b/tests/e2e/outboundwebhooks/pagerdurty/00-pagerduty-install.yaml new file mode 100644 index 0000000..f5cc1dc --- /dev/null +++ b/tests/e2e/outboundwebhooks/pagerdurty/00-pagerduty-install.yaml @@ -0,0 +1,16 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: pagerduty +spec: + name: pagerduty + outboundWebhookType: + pagerDuty: + serviceKey: "12345678-1234-1234-1234-123456789012" + diff --git a/tests/e2e/outboundwebhooks/sendlog/00-assert.yaml b/tests/e2e/outboundwebhooks/sendlog/00-assert.yaml new file mode 100644 index 0000000..be9eb37 --- /dev/null +++ b/tests/e2e/outboundwebhooks/sendlog/00-assert.yaml @@ -0,0 +1,22 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: sendlog-webhook +spec: + name: sendlog-webhook + outboundWebhookType: + sendLog: + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com +status: + name: sendlog-webhook + outboundWebhookType: + sendLog: + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/sendlog/00-delete.yaml b/tests/e2e/outboundwebhooks/sendlog/00-delete.yaml new file mode 100644 index 0000000..069c9a2 --- /dev/null +++ b/tests/e2e/outboundwebhooks/sendlog/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: sendlog-webhook \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/sendlog/00-sendlog-install.yaml b/tests/e2e/outboundwebhooks/sendlog/00-sendlog-install.yaml new file mode 100644 index 0000000..69420bd --- /dev/null +++ b/tests/e2e/outboundwebhooks/sendlog/00-sendlog-install.yaml @@ -0,0 +1,16 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: sendlog-webhook +spec: + name: sendlog-webhook + outboundWebhookType: + sendLog: + payload: '{"key1": "value1", "key2": "value2"}' + url: https://example.com \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/slack/00-assert.yaml b/tests/e2e/outboundwebhooks/slack/00-assert.yaml new file mode 100644 index 0000000..def21da --- /dev/null +++ b/tests/e2e/outboundwebhooks/slack/00-assert.yaml @@ -0,0 +1,32 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: slack-outboundwebhook-sample +spec: + name: slack-outboundwebhook-sample + outboundWebhookType: + slack: + url: https://hooks.slack.com/services + attachments: + - type: "MetricSnapshot" + isActive: true + digests: + - type: "FlowAnomalies" + isActive: true +status: + name: slack-outboundwebhook-sample + outboundWebhookType: + slack: + url: https://hooks.slack.com/services + attachments: + - type: "MetricSnapshot" + isActive: true + digests: + - type: "FlowAnomalies" + isActive: true \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/slack/00-delete.yaml b/tests/e2e/outboundwebhooks/slack/00-delete.yaml new file mode 100644 index 0000000..0f5c434 --- /dev/null +++ b/tests/e2e/outboundwebhooks/slack/00-delete.yaml @@ -0,0 +1,4 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + name: slack-outboundwebhook-sample \ No newline at end of file diff --git a/tests/e2e/outboundwebhooks/slack/00-slack-install.yaml b/tests/e2e/outboundwebhooks/slack/00-slack-install.yaml new file mode 100644 index 0000000..b9826c7 --- /dev/null +++ b/tests/e2e/outboundwebhooks/slack/00-slack-install.yaml @@ -0,0 +1,21 @@ +apiVersion: coralogix.com/v1alpha1 +kind: OutboundWebhook +metadata: + labels: + app.kubernetes.io/name: outboundwebhook + app.kubernetes.io/instance: outboundwebhook-sample + app.kubernetes.io/part-of: coralogix-operator + app.kubernetes.io/managed-by: kustomize + app.kubernetes.io/created-by: coralogix-operator + name: slack-outboundwebhook-sample +spec: + name: slack-outboundwebhook-sample + outboundWebhookType: + slack: + url: https://hooks.slack.com/services + attachments: + - type: "MetricSnapshot" + isActive: true + digests: + - type: "FlowAnomalies" + isActive: true \ No newline at end of file