# frozen_string_literal: true

# Copyright 2024 Google LLC
#
# 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module SecurityCenter
      module V2
        # Cloud Security Command Center (Cloud SCC) notification configs.
        #
        # A notification config is a Cloud SCC resource that contains the configuration
        # to send notifications for create/update events of findings, assets and etc.
        # @!attribute [rw] name
        #   @return [::String]
        #     Identifier. The relative resource name of this notification config. See:
        #     https://cloud.google.com/apis/design/resource_names#relative_resource_name
        #     The following list shows some examples:
        #     +
        #     `organizations/{organization_id}/locations/{location_id}/notificationConfigs/notify_public_bucket`
        #     +
        #     `folders/{folder_id}/locations/{location_id}/notificationConfigs/notify_public_bucket`
        #     +
        #     `projects/{project_id}/locations/{location_id}/notificationConfigs/notify_public_bucket`
        # @!attribute [rw] description
        #   @return [::String]
        #     The description of the notification config (max of 1024 characters).
        # @!attribute [rw] pubsub_topic
        #   @return [::String]
        #     The Pub/Sub topic to send notifications to. Its format is
        #     "projects/[project_id]/topics/[topic]".
        # @!attribute [r] service_account
        #   @return [::String]
        #     Output only. The service account that needs "pubsub.topics.publish"
        #     permission to publish to the Pub/Sub topic.
        # @!attribute [rw] streaming_config
        #   @return [::Google::Cloud::SecurityCenter::V2::NotificationConfig::StreamingConfig]
        #     The config for triggering streaming-based notifications.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The timestamp of when the notification config was last
        #     updated.
        class NotificationConfig
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # The config for streaming-based notifications, which send each event as soon
          # as it is detected.
          # @!attribute [rw] filter
          #   @return [::String]
          #     Expression that defines the filter to apply across create/update events
          #     of assets or findings as specified by the event type. The expression is a
          #     list of zero or more restrictions combined via logical operators `AND`
          #     and `OR`. Parentheses are supported, and `OR` has higher precedence than
          #     `AND`.
          #
          #     Restrictions have the form `<field> <operator> <value>` and may have a
          #     `-` character in front of them to indicate negation. The fields map to
          #     those defined in the corresponding resource.
          #
          #     The supported operators are:
          #
          #     * `=` for all value types.
          #     * `>`, `<`, `>=`, `<=` for integer values.
          #     * `:`, meaning substring matching, for strings.
          #
          #     The supported value types are:
          #
          #     * string literals in quotes.
          #     * integer literals without quotes.
          #     * boolean literals `true` and `false` without quotes.
          class StreamingConfig
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end
      end
    end
  end
end
