# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: google/cloud/cloudsecuritycompliance/v1/config.proto for package 'Google.Cloud.CloudSecurityCompliance.V1'
# Original file comments:
# Copyright 2025 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
#
#     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.
#

require 'grpc'
require 'google/cloud/cloudsecuritycompliance/v1/config_pb'

module Google
  module Cloud
    module CloudSecurityCompliance
      module V1
        module Config
          # Config Service manages compliance frameworks, cloud controls, and their
          # configurations.
          class Service

            include ::GRPC::GenericService

            self.marshal_class_method = :encode
            self.unmarshal_class_method = :decode
            self.service_name = 'google.cloud.cloudsecuritycompliance.v1.Config'

            # Lists all Frameworks (both Built-in and Custom) available within a given
            # parent resource. This method supports pagination.
            # The latest major version of each Framework is returned.
            rpc :ListFrameworks, ::Google::Cloud::CloudSecurityCompliance::V1::ListFrameworksRequest, ::Google::Cloud::CloudSecurityCompliance::V1::ListFrameworksResponse
            # Gets details of a single Framework.
            # This method retrieves a Framework resource, which can be either Built-in or
            # Custom, identified by its name.
            #
            # By default, the latest major version of the Framework is returned.
            # A specific major version can be retrieved by specifying the
            # `major_revision_id` in the request.
            rpc :GetFramework, ::Google::Cloud::CloudSecurityCompliance::V1::GetFrameworkRequest, ::Google::Cloud::CloudSecurityCompliance::V1::Framework
            # Creates a new Framework with type `Custom` under a given parent resource.
            # Frameworks with type `Built-in` are managed by Google and cannot be created
            # through this API.
            rpc :CreateFramework, ::Google::Cloud::CloudSecurityCompliance::V1::CreateFrameworkRequest, ::Google::Cloud::CloudSecurityCompliance::V1::Framework
            # Updates a single Framework.
            # This method allows for partial updates of a Framework resource. The fields
            # to be updated are specified using the `update_mask`.
            #
            # - If an `update_mask` is provided, only the fields specified in the mask
            # will be updated.
            # - If no `update_mask` is provided, all fields present in the request's
            # `framework` body will be used to overwrite the existing resource.
            #
            # This operation can only be performed on Frameworks with type `CUSTOM`.
            # A successful update will result in a new version of the Framework.
            rpc :UpdateFramework, ::Google::Cloud::CloudSecurityCompliance::V1::UpdateFrameworkRequest, ::Google::Cloud::CloudSecurityCompliance::V1::Framework
            # Deletes a single Custom Framework, including all its minor and
            # minor revisions.
            #
            # - This operation can only be performed on Frameworks with type `CUSTOM`.
            #   Built-in Frameworks cannot be deleted.
            # - The Framework cannot be deleted if it is currently deployed on any
            #   resource.
            # - This action is permanent and cannot be undone.
            rpc :DeleteFramework, ::Google::Cloud::CloudSecurityCompliance::V1::DeleteFrameworkRequest, ::Google::Protobuf::Empty
            # Lists all CloudControls (both Built-in and Custom) available within a given
            # parent resource. This method supports pagination.
            # The latest major version of each CloudControl is returned.
            rpc :ListCloudControls, ::Google::Cloud::CloudSecurityCompliance::V1::ListCloudControlsRequest, ::Google::Cloud::CloudSecurityCompliance::V1::ListCloudControlsResponse
            # Gets details of a single CloudControl.
            # This method retrieves a CloudControl resource, which can be either Built-in
            # or Custom, identified by its name.
            #
            # By default, the latest major version of the CloudControl is returned.
            # A specific major version can be retrieved by specifying the
            # `major_revision_id` in the request.
            rpc :GetCloudControl, ::Google::Cloud::CloudSecurityCompliance::V1::GetCloudControlRequest, ::Google::Cloud::CloudSecurityCompliance::V1::CloudControl
            # Creates a new CloudControl with type `Custom` under a given parent
            # resource. `Built-in` CloudControls are managed by Google and cannot be
            # created through this API.
            rpc :CreateCloudControl, ::Google::Cloud::CloudSecurityCompliance::V1::CreateCloudControlRequest, ::Google::Cloud::CloudSecurityCompliance::V1::CloudControl
            # Updates a single CloudControl.
            # This method allows for partial updates of a Custom CloudControl resource.
            # Built-in CloudControls cannot be updated.
            #
            # - If an `update_mask` is provided, only the fields specified in the mask
            # will be updated.
            # - If no `update_mask` is provided, all fields present in the request's
            # `cloud_control` body will be used to overwrite the existing resource.
            #
            # A successful update will result in a new version of the CloudControl.
            rpc :UpdateCloudControl, ::Google::Cloud::CloudSecurityCompliance::V1::UpdateCloudControlRequest, ::Google::Cloud::CloudSecurityCompliance::V1::CloudControl
            # Deletes a single Custom CloudControl, including all its
            # major and minor revisions.
            #
            # - This operation can only be performed on CloudControls with type `CUSTOM`.
            #   Built-in CloudControls cannot be deleted.
            # - The CloudControl cannot be deleted if any of its revisions are currently
            #   referenced by any Framework.
            # - This action is permanent and cannot be undone.
            rpc :DeleteCloudControl, ::Google::Cloud::CloudSecurityCompliance::V1::DeleteCloudControlRequest, ::Google::Protobuf::Empty
          end

          Stub = Service.rpc_stub_class
        end
      end
    end
  end
end
