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

module Google
  module Cloud
    module DataCatalog
      module V1
        module DataCatalog
          # Data Catalog API service allows clients to discover, understand, and manage
          # their data.
          class Service

            include GRPC::GenericService

            self.marshal_class_method = :encode
            self.unmarshal_class_method = :decode
            self.service_name = 'google.cloud.datacatalog.v1.DataCatalog'

            # Searches Data Catalog for multiple resources like entries, tags that
            # match a query.
            #
            # This is a custom method
            # (https://cloud.google.com/apis/design/custom_methods) and does not return
            # the complete resource, only the resource identifier and high level
            # fields. Clients can subsequentally call `Get` methods.
            #
            # Note that Data Catalog search queries do not guarantee full recall. Query
            # results that match your query may not be returned, even in subsequent
            # result pages. Also note that results returned (and not returned) can vary
            # across repeated search queries.
            #
            # See [Data Catalog Search
            # Syntax](https://cloud.google.com/data-catalog/docs/how-to/search-reference)
            # for more information.
            rpc :SearchCatalog, Google::Cloud::DataCatalog::V1::SearchCatalogRequest, Google::Cloud::DataCatalog::V1::SearchCatalogResponse
            # Creates an EntryGroup.
            #
            # An entry group contains logically related entries together with Cloud
            # Identity and Access Management policies that specify the users who can
            # create, edit, and view entries within the entry group.
            #
            # Data Catalog automatically creates an entry group for BigQuery entries
            # ("@bigquery") and Pub/Sub topics ("@pubsub"). Users create their own entry
            # group to contain Cloud Storage fileset entries or custom type entries,
            # and the IAM policies associated with those entries. Entry groups, like
            # entries, can be searched.
            #
            # A maximum of 10,000 entry groups may be created per organization across all
            # locations.
            #
            # Users should enable the Data Catalog API in the project identified by
            # the `parent` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :CreateEntryGroup, Google::Cloud::DataCatalog::V1::CreateEntryGroupRequest, Google::Cloud::DataCatalog::V1::EntryGroup
            # Gets an EntryGroup.
            rpc :GetEntryGroup, Google::Cloud::DataCatalog::V1::GetEntryGroupRequest, Google::Cloud::DataCatalog::V1::EntryGroup
            # Updates an EntryGroup. The user should enable the Data Catalog API in the
            # project identified by the `entry_group.name` parameter (see [Data Catalog
            # Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :UpdateEntryGroup, Google::Cloud::DataCatalog::V1::UpdateEntryGroupRequest, Google::Cloud::DataCatalog::V1::EntryGroup
            # Deletes an EntryGroup. Only entry groups that do not contain entries can be
            # deleted. Users should enable the Data Catalog API in the project
            # identified by the `name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :DeleteEntryGroup, Google::Cloud::DataCatalog::V1::DeleteEntryGroupRequest, Google::Protobuf::Empty
            # Lists entry groups.
            rpc :ListEntryGroups, Google::Cloud::DataCatalog::V1::ListEntryGroupsRequest, Google::Cloud::DataCatalog::V1::ListEntryGroupsResponse
            # Creates an entry. Only entries of 'FILESET' type or user-specified type can
            # be created.
            #
            # Users should enable the Data Catalog API in the project identified by
            # the `parent` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            #
            # A maximum of 100,000 entries may be created per entry group.
            rpc :CreateEntry, Google::Cloud::DataCatalog::V1::CreateEntryRequest, Google::Cloud::DataCatalog::V1::Entry
            # Updates an existing entry.
            # Users should enable the Data Catalog API in the project identified by
            # the `entry.name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :UpdateEntry, Google::Cloud::DataCatalog::V1::UpdateEntryRequest, Google::Cloud::DataCatalog::V1::Entry
            # Deletes an existing entry. Only entries created through
            # [CreateEntry][google.cloud.datacatalog.v1.DataCatalog.CreateEntry]
            # method can be deleted.
            # Users should enable the Data Catalog API in the project identified by
            # the `name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :DeleteEntry, Google::Cloud::DataCatalog::V1::DeleteEntryRequest, Google::Protobuf::Empty
            # Gets an entry.
            rpc :GetEntry, Google::Cloud::DataCatalog::V1::GetEntryRequest, Google::Cloud::DataCatalog::V1::Entry
            # Get an entry by target resource name. This method allows clients to use
            # the resource name from the source Google Cloud Platform service to get the
            # Data Catalog Entry.
            rpc :LookupEntry, Google::Cloud::DataCatalog::V1::LookupEntryRequest, Google::Cloud::DataCatalog::V1::Entry
            # Lists entries.
            rpc :ListEntries, Google::Cloud::DataCatalog::V1::ListEntriesRequest, Google::Cloud::DataCatalog::V1::ListEntriesResponse
            # Creates a tag template. The user should enable the Data Catalog API in
            # the project identified by the `parent` parameter (see [Data Catalog
            # Resource
            # Project](https://cloud.google.com/data-catalog/docs/concepts/resource-project)
            # for more information).
            rpc :CreateTagTemplate, Google::Cloud::DataCatalog::V1::CreateTagTemplateRequest, Google::Cloud::DataCatalog::V1::TagTemplate
            # Gets a tag template.
            rpc :GetTagTemplate, Google::Cloud::DataCatalog::V1::GetTagTemplateRequest, Google::Cloud::DataCatalog::V1::TagTemplate
            # Updates a tag template. This method cannot be used to update the fields of
            # a template. The tag template fields are represented as separate resources
            # and should be updated using their own create/update/delete methods.
            # Users should enable the Data Catalog API in the project identified by
            # the `tag_template.name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :UpdateTagTemplate, Google::Cloud::DataCatalog::V1::UpdateTagTemplateRequest, Google::Cloud::DataCatalog::V1::TagTemplate
            # Deletes a tag template and all tags using the template.
            # Users should enable the Data Catalog API in the project identified by
            # the `name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :DeleteTagTemplate, Google::Cloud::DataCatalog::V1::DeleteTagTemplateRequest, Google::Protobuf::Empty
            # Creates a field in a tag template. The user should enable the Data Catalog
            # API in the project identified by the `parent` parameter (see
            # [Data Catalog Resource
            # Project](https://cloud.google.com/data-catalog/docs/concepts/resource-project)
            # for more information).
            rpc :CreateTagTemplateField, Google::Cloud::DataCatalog::V1::CreateTagTemplateFieldRequest, Google::Cloud::DataCatalog::V1::TagTemplateField
            # Updates a field in a tag template. This method cannot be used to update the
            # field type. Users should enable the Data Catalog API in the project
            # identified by the `name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :UpdateTagTemplateField, Google::Cloud::DataCatalog::V1::UpdateTagTemplateFieldRequest, Google::Cloud::DataCatalog::V1::TagTemplateField
            # Renames a field in a tag template. The user should enable the Data Catalog
            # API in the project identified by the `name` parameter (see [Data Catalog
            # Resource
            # Project](https://cloud.google.com/data-catalog/docs/concepts/resource-project)
            # for more information).
            rpc :RenameTagTemplateField, Google::Cloud::DataCatalog::V1::RenameTagTemplateFieldRequest, Google::Cloud::DataCatalog::V1::TagTemplateField
            # Deletes a field in a tag template and all uses of that field.
            # Users should enable the Data Catalog API in the project identified by
            # the `name` parameter (see [Data Catalog Resource Project]
            # (https://cloud.google.com/data-catalog/docs/concepts/resource-project) for
            # more information).
            rpc :DeleteTagTemplateField, Google::Cloud::DataCatalog::V1::DeleteTagTemplateFieldRequest, Google::Protobuf::Empty
            # Creates a tag on an [Entry][google.cloud.datacatalog.v1.Entry].
            # Note: The project identified by the `parent` parameter for the
            # [tag](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.entryGroups.entries.tags/create#path-parameters)
            # and the
            # [tag
            # template](https://cloud.google.com/data-catalog/docs/reference/rest/v1/projects.locations.tagTemplates/create#path-parameters)
            # used to create the tag must be from the same organization.
            rpc :CreateTag, Google::Cloud::DataCatalog::V1::CreateTagRequest, Google::Cloud::DataCatalog::V1::Tag
            # Updates an existing tag.
            rpc :UpdateTag, Google::Cloud::DataCatalog::V1::UpdateTagRequest, Google::Cloud::DataCatalog::V1::Tag
            # Deletes a tag.
            rpc :DeleteTag, Google::Cloud::DataCatalog::V1::DeleteTagRequest, Google::Protobuf::Empty
            # Lists the tags on an [Entry][google.cloud.datacatalog.v1.Entry].
            rpc :ListTags, Google::Cloud::DataCatalog::V1::ListTagsRequest, Google::Cloud::DataCatalog::V1::ListTagsResponse
            # Sets the access control policy for a resource. Replaces any existing
            # policy.
            # Supported resources are:
            #   - Tag templates.
            #   - Entries.
            #   - Entry groups.
            # Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
            # and any external Google Cloud Platform resources synced to Data Catalog.
            #
            # Callers must have following Google IAM permission
            #   - `datacatalog.tagTemplates.setIamPolicy` to set policies on tag
            #     templates.
            #   - `datacatalog.entries.setIamPolicy` to set policies on entries.
            #   - `datacatalog.entryGroups.setIamPolicy` to set policies on entry groups.
            rpc :SetIamPolicy, Google::Iam::V1::SetIamPolicyRequest, Google::Iam::V1::Policy
            # Gets the access control policy for a resource. A `NOT_FOUND` error
            # is returned if the resource does not exist. An empty policy is returned
            # if the resource exists but does not have a policy set on it.
            #
            # Supported resources are:
            #   - Tag templates.
            #   - Entries.
            #   - Entry groups.
            # Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
            # and any external Google Cloud Platform resources synced to Data Catalog.
            #
            # Callers must have following Google IAM permission
            #   - `datacatalog.tagTemplates.getIamPolicy` to get policies on tag
            #     templates.
            #   - `datacatalog.entries.getIamPolicy` to get policies on entries.
            #   - `datacatalog.entryGroups.getIamPolicy` to get policies on entry groups.
            rpc :GetIamPolicy, Google::Iam::V1::GetIamPolicyRequest, Google::Iam::V1::Policy
            # Returns the caller's permissions on a resource.
            # If the resource does not exist, an empty set of permissions is returned
            # (We don't return a `NOT_FOUND` error).
            #
            # Supported resources are:
            #   - Tag templates.
            #   - Entries.
            #   - Entry groups.
            # Note, this method cannot be used to manage policies for BigQuery, Pub/Sub
            # and any external Google Cloud Platform resources synced to Data Catalog.
            #
            # A caller is not required to have Google IAM permission to make this
            # request.
            rpc :TestIamPermissions, Google::Iam::V1::TestIamPermissionsRequest, Google::Iam::V1::TestIamPermissionsResponse
          end

          Stub = Service.rpc_stub_class
        end
      end
    end
  end
end