# Generated by the protocol buffer compiler.  DO NOT EDIT!
# Source: keyapis/access_management/v1/keyapis_access_management_group_v1.proto for package 'Keyapis.AccessManagement.V1'
# Original file comments:
#
# Сервис реализует функционал управления доступом пользователями к ресурсам

require 'grpc'
require 'keyapis/access_management/v1/keyapis_access_management_group_v1_pb'

module Keyapis
  module AccessManagement
    module V1
      module GroupService
        # Сервис управления доступом пользователей
        class Service

          include ::GRPC::GenericService

          self.marshal_class_method = :encode
          self.unmarshal_class_method = :decode
          self.service_name = 'keyapis.access_management.v1.GroupService'

          # Метод получения группы.
          # Метод доступен для: admin, service, bti, seller
          rpc :GetGroup, ::Keyapis::AccessManagement::V1::GetGroupRequest, ::Keyapis::AccessManagement::V1::GetGroupResponse
          # Метод получения списка групп.
          # Метод доступен для: admin, service, bti, seller
          rpc :GetGroupList, ::Keyapis::AccessManagement::V1::GetGroupListRequest, stream(::Keyapis::AccessManagement::V1::GetGroupListResponse)
          # Метод получения количества групп.
          # Метод доступен для: admin, service, bti, seller
          rpc :GetGroupCount, ::Keyapis::AccessManagement::V1::GetGroupCountRequest, ::Keyapis::AccessManagement::V1::GetGroupCountResponse
          # Метод сохранения группы.
          # Поддерживает создание и обновление как UPSERT по Group.id.
          # Метод доступен для: admin, service
          rpc :PostGroup, ::Keyapis::AccessManagement::V1::PostGroupRequest, ::Keyapis::AccessManagement::V1::PostGroupResponse
          # Метод удаления группы.
          # Метод доступен для: admin, service
          rpc :DeleteGroup, ::Keyapis::AccessManagement::V1::DeleteGroupRequest, ::Keyapis::AccessManagement::V1::DeleteGroupResponse
          # Метод создания группы по шаблону.
          # Метод доступен для: admin, service, bti, seller
          rpc :PostGroupByTemplate, ::Keyapis::AccessManagement::V1::PostGroupByTemplateRequest, ::Keyapis::AccessManagement::V1::PostGroupByTemplateResponse
          # Метод привязки пользователя к группе.
          # Метод доступен для: admin, owner, service, bti, seller
          rpc :PutGroupUserAttach, ::Keyapis::AccessManagement::V1::PutGroupUserAttachRequest, ::Keyapis::AccessManagement::V1::PutGroupUserAttachResponse
          # Метод удаления привязки пользователя к группе.
          # Метод доступен для: admin, owner, service, bti, seller
          rpc :PutGroupUserDetach, ::Keyapis::AccessManagement::V1::PutGroupUserDetachRequest, ::Keyapis::AccessManagement::V1::PutGroupUserDetachResponse
          # Метод получения списка связей пользователей и групп.
          # Метод доступен для: admin, owner, service, bti, seller
          rpc :GetGroupUserList, ::Keyapis::AccessManagement::V1::GetGroupUserListRequest, stream(::Keyapis::AccessManagement::V1::GetGroupUserListResponse)
          # Метод получения количества связей пользователей и групп.
          # Метод доступен для: admin, owner, service, bti, seller
          rpc :GetGroupUserCount, ::Keyapis::AccessManagement::V1::GetGroupUserCountRequest, ::Keyapis::AccessManagement::V1::GetGroupUserCountResponse
          # Метод получения уникальных назначенных атрибутов пользователя.
          # Метод также возвращает группы пользователя в виде атрибута (Claim) {key=GROUP_ID,value=Group.id}.
          # Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
          # Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
          # Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
          # Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
          rpc :GetGroupClaimList, ::Keyapis::AccessManagement::V1::GetGroupClaimListRequest, stream(::Keyapis::AccessManagement::V1::GetGroupClaimListResponse)
          # Метод получения количества уникальных назначенных атрибутов пользователя.
          # Метод также сосчитает и атрибуты групп {key=GROUP_ID,value=Group.id}.
          # Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
          # Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
          # Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
          # Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
          rpc :GetGroupClaimCount, ::Keyapis::AccessManagement::V1::GetGroupClaimCountRequest, ::Keyapis::AccessManagement::V1::GetGroupClaimCountResponse
          # Метод проверки наличия назначенных атрибутов пользователя.
          # Метод также проверит и атрибуты групп {key=GROUP_ID,value=Group.id}.
          # Бизнес-пользователи получают только свои разрешения, поэтому для всех пользователей, кроме admin, owner, service, bti, seller игнорируются GroupClaimFilter.user_id, GroupClaimFilter.user_data, GroupClaimFilter.api_key_hash, а значения для них берутся из токена.
          # Для admin, owner, service, bti, seller при наличии GroupClaimFilter.user_id отдаем разрешения для указанного GroupClaimFilter.user_id и GroupClaimFilter.user_data, при отсутствии GroupClaimFilter.user_id значения берутся из токена.
          # Для admin, service при наличии GroupClaimFilter.api_key_hash возвращаем Claim с учетом только GroupClaimFilter.api_key_hash.
          # Метод доступен для: admin, master, slave, owner, employee, service, bti, seller, external_seller, ltp_first, mrf, manager
          rpc :GetGroupClaimExist, ::Keyapis::AccessManagement::V1::GetGroupClaimExistRequest, ::Keyapis::AccessManagement::V1::GetGroupClaimExistResponse
          # Метод добавления ключа доступа ApiKey.
          # Метод доступен для: admin
          rpc :PutGroupApiKeyCreate, ::Keyapis::AccessManagement::V1::PutGroupApiKeyCreateRequest, ::Keyapis::AccessManagement::V1::PutGroupApiKeyCreateResponse
          # Метод удаления ключей доступа ApiKey.
          # Метод доступен для: admin
          rpc :PutGroupApiKeyDelete, ::Keyapis::AccessManagement::V1::PutGroupApiKeyDeleteRequest, ::Keyapis::AccessManagement::V1::PutGroupApiKeyDeleteResponse
        end

        Stub = Service.rpc_stub_class
      end
    end
  end
end
