// Code generated by gRPC proto compiler.  DO NOT EDIT!
// source: keyapis/access_management/v1/keyapis_access_management_group_v1.proto

#if !defined(GPB_GRPC_PROTOCOL_ONLY) || !GPB_GRPC_PROTOCOL_ONLY
#import "keyapis/access_management/v1/KeyapisAccessManagementGroupV1.pbrpc.h"
#import "keyapis/access_management/v1/KeyapisAccessManagementGroupV1.pbobjc.h"
#import <ProtoRPC/ProtoRPCLegacy.h>
#import <RxLibrary/GRXWriter+Immediate.h>

#import "google/api/Annotations.pbobjc.h"
#import "google/api/FieldBehavior.pbobjc.h"
#if defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) && GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
#import <Protobuf/GPBWrappers.pbobjc.h>
#else
#import "GPBWrappers.pbobjc.h"
#endif
#if defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS) && GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
#import <Protobuf/GPBTimestamp.pbobjc.h>
#else
#import "GPBTimestamp.pbobjc.h"
#endif

@implementation KEYAPISACCESSMANAGEMENTV1GroupService

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wobjc-designated-initializers"

// Designated initializer
- (instancetype)initWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [super initWithHost:host
                 packageName:@"keyapis.access_management.v1"
                 serviceName:@"GroupService"
                 callOptions:callOptions];
}

- (instancetype)initWithHost:(NSString *)host {
  return [super initWithHost:host
                 packageName:@"keyapis.access_management.v1"
                 serviceName:@"GroupService"];
}

#pragma clang diagnostic pop

// Override superclass initializer to disallow different package and service names.
- (instancetype)initWithHost:(NSString *)host
                 packageName:(NSString *)packageName
                 serviceName:(NSString *)serviceName {
  return [self initWithHost:host];
}

- (instancetype)initWithHost:(NSString *)host
                 packageName:(NSString *)packageName
                 serviceName:(NSString *)serviceName
                 callOptions:(GRPCCallOptions *)callOptions {
  return [self initWithHost:host callOptions:callOptions];
}

#pragma mark - Class Methods

+ (instancetype)serviceWithHost:(NSString *)host {
  return [[self alloc] initWithHost:host];
}

+ (instancetype)serviceWithHost:(NSString *)host callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [[self alloc] initWithHost:host callOptions:callOptions];
}

#pragma mark - Method Implementations

#pragma mark GetGroup(GetGroupRequest) returns (GetGroupResponse)

/**
 * Метод получения группы.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetGroupWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения группы.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetGroup"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения группы.
 * Метод доступен для: admin, service, bti, seller
 */
- (GRPCUnaryProtoCall *)getGroupWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroup"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupResponse class]];
}

#pragma mark GetGroupList(GetGroupListRequest) returns (stream GetGroupListResponse)

/**
 * Метод получения списка групп.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  [[self RPCToGetGroupListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка групп.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  return [self RPCToMethod:@"GetGroupList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка групп.
 * Метод доступен для: admin, service, bti, seller
 */
- (GRPCUnaryProtoCall *)getGroupListWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupListResponse class]];
}

#pragma mark GetGroupCount(GetGroupCountRequest) returns (GetGroupCountResponse)

/**
 * Метод получения количества групп.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetGroupCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества групп.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetGroupCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества групп.
 * Метод доступен для: admin, service, bti, seller
 */
- (GRPCUnaryProtoCall *)getGroupCountWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse class]];
}

#pragma mark PostGroup(PostGroupRequest) returns (PostGroupResponse)

/**
 * Метод сохранения группы.
 * Поддерживает создание и обновление как UPSERT по Group.id.
 * Метод доступен для: admin, service
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1PostGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PostGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPostGroupWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод сохранения группы.
 * Поддерживает создание и обновление как UPSERT по Group.id.
 * Метод доступен для: admin, service
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1PostGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PostGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PostGroup"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PostGroupResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод сохранения группы.
 * Поддерживает создание и обновление как UPSERT по Group.id.
 * Метод доступен для: admin, service
 */
- (GRPCUnaryProtoCall *)postGroupWithMessage:(KEYAPISACCESSMANAGEMENTV1PostGroupRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PostGroup"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PostGroupResponse class]];
}

#pragma mark DeleteGroup(DeleteGroupRequest) returns (DeleteGroupResponse)

/**
 * Метод удаления группы.
 * Метод доступен для: admin, service
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)deleteGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToDeleteGroupWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления группы.
 * Метод доступен для: admin, service
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToDeleteGroupWithRequest:(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"DeleteGroup"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления группы.
 * Метод доступен для: admin, service
 */
- (GRPCUnaryProtoCall *)deleteGroupWithMessage:(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"DeleteGroup"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse class]];
}

#pragma mark PostGroupByTemplate(PostGroupByTemplateRequest) returns (PostGroupByTemplateResponse)

/**
 * Метод создания группы по шаблону.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)postGroupByTemplateWithRequest:(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPostGroupByTemplateWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод создания группы по шаблону.
 * Метод доступен для: admin, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPostGroupByTemplateWithRequest:(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PostGroupByTemplate"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод создания группы по шаблону.
 * Метод доступен для: admin, service, bti, seller
 */
- (GRPCUnaryProtoCall *)postGroupByTemplateWithMessage:(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PostGroupByTemplate"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse class]];
}

#pragma mark PutGroupUserAttach(PutGroupUserAttachRequest) returns (PutGroupUserAttachResponse)

/**
 * Метод привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putGroupUserAttachWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPutGroupUserAttachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutGroupUserAttachWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PutGroupUserAttach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 */
- (GRPCUnaryProtoCall *)putGroupUserAttachWithMessage:(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutGroupUserAttach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse class]];
}

#pragma mark PutGroupUserDetach(PutGroupUserDetachRequest) returns (PutGroupUserDetachResponse)

/**
 * Метод удаления привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putGroupUserDetachWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPutGroupUserDetachWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutGroupUserDetachWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PutGroupUserDetach"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления привязки пользователя к группе.
 * Метод доступен для: admin, owner, service, bti, seller
 */
- (GRPCUnaryProtoCall *)putGroupUserDetachWithMessage:(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutGroupUserDetach"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse class]];
}

#pragma mark GetGroupUserList(GetGroupUserListRequest) returns (stream GetGroupUserListResponse)

/**
 * Метод получения списка связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupUserListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  [[self RPCToGetGroupUserListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения списка связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupUserListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  return [self RPCToMethod:@"GetGroupUserList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения списка связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 */
- (GRPCUnaryProtoCall *)getGroupUserListWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupUserList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse class]];
}

#pragma mark GetGroupUserCount(GetGroupUserCountRequest) returns (GetGroupUserCountResponse)

/**
 * Метод получения количества связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupUserCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetGroupUserCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupUserCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetGroupUserCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества связей пользователей и групп.
 * Метод доступен для: admin, owner, service, bti, seller
 */
- (GRPCUnaryProtoCall *)getGroupUserCountWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupUserCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse class]];
}

#pragma mark GetGroupClaimList(GetGroupClaimListRequest) returns (stream GetGroupClaimListResponse)

/**
 * Метод получения уникальных назначенных атрибутов пользователя.
 * Метод также возвращает группы пользователя в виде атрибута (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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupClaimListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  [[self RPCToGetGroupClaimListWithRequest:request eventHandler:eventHandler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения уникальных назначенных атрибутов пользователя.
 * Метод также возвращает группы пользователя в виде атрибута (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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupClaimListWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest *)request eventHandler:(void(^)(BOOL done, KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse *_Nullable response, NSError *_Nullable error))eventHandler{
  return [self RPCToMethod:@"GetGroupClaimList"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse class]
        responsesWriteable:[GRXWriteable writeableWithEventHandler:eventHandler]];
}
/**
 * Метод получения уникальных назначенных атрибутов пользователя.
 * Метод также возвращает группы пользователя в виде атрибута (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
 */
- (GRPCUnaryProtoCall *)getGroupClaimListWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupClaimList"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse class]];
}

#pragma mark GetGroupClaimCount(GetGroupClaimCountRequest) returns (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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupClaimCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetGroupClaimCountWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод получения количества уникальных назначенных атрибутов пользователя.
 * Метод также сосчитает и атрибуты групп {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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupClaimCountWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetGroupClaimCount"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод получения количества уникальных назначенных атрибутов пользователя.
 * Метод также сосчитает и атрибуты групп {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
 */
- (GRPCUnaryProtoCall *)getGroupClaimCountWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupClaimCount"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse class]];
}

#pragma mark GetGroupClaimExist(GetGroupClaimExistRequest) returns (GetGroupClaimExistResponse)

/**
 * Метод проверки наличия назначенных атрибутов пользователя.
 * Метод также проверит и атрибуты групп {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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)getGroupClaimExistWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToGetGroupClaimExistWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод проверки наличия назначенных атрибутов пользователя.
 * Метод также проверит и атрибуты групп {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
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToGetGroupClaimExistWithRequest:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"GetGroupClaimExist"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод проверки наличия назначенных атрибутов пользователя.
 * Метод также проверит и атрибуты групп {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
 */
- (GRPCUnaryProtoCall *)getGroupClaimExistWithMessage:(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"GetGroupClaimExist"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse class]];
}

#pragma mark PutGroupApiKeyCreate(PutGroupApiKeyCreateRequest) returns (PutGroupApiKeyCreateResponse)

/**
 * Метод добавления ключа доступа ApiKey.
 * Метод доступен для: admin
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putGroupApiKeyCreateWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPutGroupApiKeyCreateWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод добавления ключа доступа ApiKey.
 * Метод доступен для: admin
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutGroupApiKeyCreateWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PutGroupApiKeyCreate"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод добавления ключа доступа ApiKey.
 * Метод доступен для: admin
 */
- (GRPCUnaryProtoCall *)putGroupApiKeyCreateWithMessage:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutGroupApiKeyCreate"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse class]];
}

#pragma mark PutGroupApiKeyDelete(PutGroupApiKeyDeleteRequest) returns (PutGroupApiKeyDeleteResponse)

/**
 * Метод удаления ключей доступа ApiKey.
 * Метод доступен для: admin
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (void)putGroupApiKeyDeleteWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse *_Nullable response, NSError *_Nullable error))handler{
  [[self RPCToPutGroupApiKeyDeleteWithRequest:request handler:handler] start];
}
// Returns a not-yet-started RPC object.
/**
 * Метод удаления ключей доступа ApiKey.
 * Метод доступен для: admin
 *
 * This method belongs to a set of APIs that have been deprecated. Using the v2 API is recommended.
 */
- (GRPCProtoCall *)RPCToPutGroupApiKeyDeleteWithRequest:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest *)request handler:(void(^)(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse *_Nullable response, NSError *_Nullable error))handler{
  return [self RPCToMethod:@"PutGroupApiKeyDelete"
            requestsWriter:[GRXWriter writerWithValue:request]
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse class]
        responsesWriteable:[GRXWriteable writeableWithSingleHandler:handler]];
}
/**
 * Метод удаления ключей доступа ApiKey.
 * Метод доступен для: admin
 */
- (GRPCUnaryProtoCall *)putGroupApiKeyDeleteWithMessage:(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest *)message responseHandler:(id<GRPCProtoResponseHandler>)handler callOptions:(GRPCCallOptions *_Nullable)callOptions {
  return [self RPCToMethod:@"PutGroupApiKeyDelete"
                   message:message
           responseHandler:handler
               callOptions:callOptions
             responseClass:[KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse class]];
}

@end
#endif
