// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/access_management/v1/keyapis_access_management_group_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers.h>
#else
 #import "GPBProtocolBuffers.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

CF_EXTERN_C_BEGIN

@class KEYAPISACCESSMANAGEMENTV1Claim;
@class KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError;
@class KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1Group;
@class KEYAPISACCESSMANAGEMENTV1GroupClaimFilter;
@class KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData;
@class KEYAPISACCESSMANAGEMENTV1GroupClaimPaging;
@class KEYAPISACCESSMANAGEMENTV1GroupFilter;
@class KEYAPISACCESSMANAGEMENTV1GroupPaging;
@class KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError;
@class KEYAPISACCESSMANAGEMENTV1GroupUserFilter;
@class KEYAPISACCESSMANAGEMENTV1GroupUserPaging;
@class KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error;
@class KEYAPISACCESSMANAGEMENTV1UserGroup;
@class KEYAPISACCESSMANAGEMENTV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType

/**
 * Справочник типов значений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По идентификатору */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Id = 1,

  /** По наименованию */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_Title = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType

/**
 * Справочник типов направлений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType

/** Справочник типов сортировки */
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По Идентификатору группы */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_GroupId = 1,

  /** По Идентификатору пользователя */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_UserId = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType

/**
 * Справочник типов значений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По ключу атрибута */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Key = 1,

  /** По значению атрибута */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_Value = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType

/**
 * Справочник типов направлений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root

/**
 * Exposes the extension registry for this file.
 *
 * The base class provides:
 * @code
 *   + (GPBExtensionRegistry *)extensionRegistry;
 * @endcode
 * which is a @c GPBExtensionRegistry that includes all the extensions defined by
 * this file and all files that it depends on.
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1KeyapisAccessManagementGroupV1Root : GPBRootObject
@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest_FieldNumber_GroupId = 1,
};

/**
 * Запрос на добавления группе ключа доступа ApiKey
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateRequest : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupId;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос на добавления группе ключа доступа ApiKey
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_Type_OneOfCase typeOneOfCase;

/**
 * Значение ключа доступа ApiKey.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyCreateResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest_FieldNumber_GroupId = 1,
};

/**
 * Запрос на удаление ключей доступа ApiKey
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteRequest : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupId;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse

/**
 * Ответ на запрос на удаление ключей доступа ApiKey
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupApiKeyDeleteResponse : GPBMessage

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1Claim

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1Claim_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1Claim_FieldNumber_Key = 1,
  KEYAPISACCESSMANAGEMENTV1Claim_FieldNumber_Value = 2,
};

/**
 * Атрибут пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1Claim : GPBMessage

/** Ключ атрибута */
@property(nonatomic, readwrite, copy, null_resettable) NSString *key;

/** Значение атрибута */
@property(nonatomic, readwrite, copy, null_resettable) NSString *value;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1UserGroup

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1UserGroup_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1UserGroup_FieldNumber_UserId = 1,
  KEYAPISACCESSMANAGEMENTV1UserGroup_FieldNumber_GroupId = 2,
};

/**
 * Связка пользователя с группой
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1UserGroup : GPBMessage

/**
 * Идентификатор пользователя.
 * Соответствует subject, sub, client_id из JWT.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *userId;

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupId;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1Group

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1Group_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Id_p = 1,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Title = 2,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_Description_p = 3,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_ClaimsArray = 4,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_RequirementsArray = 5,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_DeletedAt = 6,
  KEYAPISACCESSMANAGEMENTV1Group_FieldNumber_TagsArray = 7,
};

/**
 * Группа атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1Group : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

/**
 * Наименование.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/**
 * Описание.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *description_p;

/**
 * Массив атрибутов группы.
 * Эти атрибуты назначены пользователям, которые принадлежат группе.
 * # Диапазон: 0..100
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISACCESSMANAGEMENTV1Claim*> *claimsArray;
/** The number of items in @c claimsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger claimsArray_Count;

/**
 * Требования, означающие принадлежность пользователя к данной группе.
 * Пользователь принадлежит группе, если все атрибуты требований группы присутствуют у пользователя и имеют те же значения.
 * # Диапазон: 0..10
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISACCESSMANAGEMENTV1Claim*> *requirementsArray;
/** The number of items in @c requirementsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger requirementsArray_Count;

/**
 * Дата удаления группы из использования.
 * Группа не участвует в определении разрешений пользователя, если дата deleted_at непустая и уже в прошлом
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *deletedAt;
/** Test to see if @c deletedAt has been set. */
@property(nonatomic, readwrite) BOOL hasDeletedAt;

/**
 * Теги группы.
 * # Диапазон: 0..10
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *tagsArray;
/** The number of items in @c tagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger tagsArray_Count;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupRequest : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Type_OneOfCase typeOneOfCase;

/** Группа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Group *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса получения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_FieldNumber_Filter = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_Pagination_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupListRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListRequest *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения списка групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Type_OneOfCase typeOneOfCase;

/** Группа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Group *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса получения списка групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupListResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupCountRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения количества групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего групп */
@property(nonatomic, readwrite) int32_t data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса получения количества групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupCountResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupFilter

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Text = 1,
  KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Requirements = 2,
  KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_Claims = 3,
  KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_TagsArray = 4,
  KEYAPISACCESSMANAGEMENTV1GroupFilter_FieldNumber_HideDeleted = 5,
};

/**
 * Фильтр групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupFilter : GPBMessage

/**
 * По тексту.
 * Если значение не передано то поиск по нему не производится.
 * # Диапазон: 3..64.
 * # Поиск производится по полям:
 * # - Наименование
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *text;

/**
 * По requirements группы.
 * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
 * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
 * При передаче нескольких элементов map они работают в выборке через И
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary<NSString*, NSString*> *requirements;
/** The number of items in @c requirements without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger requirements_Count;

/**
 * По claims группы.
 * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
 * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
 * При передаче нескольких элементов map они работают в выборке через И
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary<NSString*, NSString*> *claims;
/** The number of items in @c claims without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger claims_Count;

/**
 * По тегам.
 * # Диапазон: 0..10
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *tagsArray;
/** The number of items in @c tagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger tagsArray_Count;

/**
 * Скрывать удалённые элементы.
 * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
 * Если значение — false или не задано, возвращаются все записи, включая удалённые
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *hideDeleted;
/** Test to see if @c hideDeleted has been set. */
@property(nonatomic, readwrite) BOOL hasHideDeleted;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupPaging

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_OrderByType = 1,
  KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_DirectionType = 2,
  KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_Limit = 3,
  KEYAPISACCESSMANAGEMENTV1GroupPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupPaging : GPBMessage

/**
 * Тип значения сортировки.
 * Если значение не передано, то будет взято значение по умолчанию.
 * # По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * # По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Если значение 0 (не передано), то будет взято значение по умолчанию.
 * # Диапазон: 0..100.
 * # По умолчанию: 20
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupPaging *message, int32_t value);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupRequest : GPBMessage

/** Группа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Group *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupTemplateId = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupTitle = 2,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest_FieldNumber_GroupRequirementsArray = 3,
};

/**
 * Запрос создания группы по шаблону
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateRequest : GPBMessage

/**
 * Идентификатор шаблона группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupTemplateId;

/**
 * Наименование создаваемой по шаблону группы.
 * В наименование группы будет добавлен суффикс GroupTemplate.group_title_suffix.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupTitle;

/**
 * Специфичные для создаваемой по шаблону группы Claim requirements, они будут добавлены к requirements создаваемой по шаблону группы.
 * # Диапазон: 0..10
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISACCESSMANAGEMENTV1Claim*> *groupRequirementsArray;
/** The number of items in @c groupRequirementsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger groupRequirementsArray_Count;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос сохранения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Type_OneOfCase typeOneOfCase;

/** Группа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Group *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1PostGroupResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса сохранения группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1ValidationError *validation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос создания группы по шаблону
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Type_OneOfCase typeOneOfCase;

/** Группа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Group *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_FieldNumber_Validation = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_FieldNumber_GroupTemplateNotFoundError = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_Reason_OneOfCase_GroupTemplateNotFoundError = 2,
};

/**
 * Ошибка запроса создания группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1ValidationError *validation;

/** Шаблон не найден */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError *groupTemplateNotFoundError;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1PostGroupByTemplateResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос удаления группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1DeleteGroupRequest : GPBMessage

/**
 * Идентификатор группы.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse

/**
 * Ответ на запрос удаления группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1DeleteGroupResponse : GPBMessage

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest_FieldNumber_UserGroup = 1,
};

/**
 * Запрос на добавление связи пользователя и группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachRequest : GPBMessage

/** Связь пользователя и группы */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1UserGroup *userGroup;
/** Test to see if @c userGroup has been set. */
@property(nonatomic, readwrite) BOOL hasUserGroup;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse

/**
 * Ответ на добавление связи пользователя и группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupUserAttachResponse : GPBMessage

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest_FieldNumber_UserGroup = 1,
};

/**
 * Запрос на удаление связи пользователя и группы
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachRequest : GPBMessage

/** Связь пользователя и группы */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1UserGroup *userGroup;
/** Test to see if @c userGroup has been set. */
@property(nonatomic, readwrite) BOOL hasUserGroup;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_FieldNumber_Filter = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_Pagination_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка связей пользователей и групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest : GPBMessage

/** Фильтр связей пользователей и групп */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupUserFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupUserPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserListRequest *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupUserPaging

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_OrderByType = 1,
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_DirectionType = 2,
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_Limit = 3,
  KEYAPISACCESSMANAGEMENTV1GroupUserPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация связей пользователей и групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupUserPaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано), то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupUserPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupUserPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupUserPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupUserPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupUserPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupUserPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupUserPaging *message, int32_t value);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupUserFilter

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupUserFilter_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupUserFilter_FieldNumber_GroupIdsArray = 1,
  KEYAPISACCESSMANAGEMENTV1GroupUserFilter_FieldNumber_UserIdsArray = 2,
};

/**
 * Фильтр для запроса связей пользователей и групп.
 * При передаче массива в параметр фильтра элементы массива работают в выборке через ИЛИ.
 * При передаче нескольких разных параметров фильтра они работают в выборке через И
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupUserFilter : GPBMessage

/** По Идентификаторам группы */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *groupIdsArray;
/** The number of items in @c groupIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger groupIdsArray_Count;

/** По Идентификаторам пользователя */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *userIdsArray;
/** The number of items in @c userIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userIdsArray_Count;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения списка связей пользователей и групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_Type_OneOfCase typeOneOfCase;

/** Связь пользователя и группы */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1UserGroup *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserListResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества связей пользователей и групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupUserCountRequest : GPBMessage

/** Фильтр связей пользователей и групп */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupUserFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества связей пользователей и групп
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего связей пользователей и групп */
@property(nonatomic, readwrite) int32_t data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupUserCountResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse

/**
 * Ответ на запрос удаления точки доступа в профиль
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1PutGroupUserDetachResponse : GPBMessage

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества уникальных назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountRequest : GPBMessage

/** Фильтр атрибутов пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества уникальных назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего уникальных атрибутов пользователя */
@property(nonatomic, readwrite) int32_t data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimCountResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос проверки назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistRequest : GPBMessage

/** Фильтр атрибутов пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос проверки назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Type_OneOfCase typeOneOfCase;

/** Флаг наличия */
@property(nonatomic, readwrite) BOOL data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_FieldNumber_ClaimFilterEmpty = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_Reason_OneOfCase_ClaimFilterEmpty = 1,
};

/**
 * Ошибка запроса
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка пустого фильтра по атрибутам пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError *claimFilterEmpty;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClearReasonOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError

/**
 * Ошибка пустого фильтра по атрибутам пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimExistResponse_Error_ClaimFilterEmptyError : GPBMessage

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_FieldNumber_Filter = 1,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_Pagination_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос уникального списка назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest : GPBMessage

/** Фильтр атрибутов пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupClaimFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация по атрибутам пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest_ClearPaginationOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListRequest *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_Type_OneOfCase) {
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос уникального списка назначенных атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_Type_OneOfCase typeOneOfCase;

/** Атрибут пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1Claim *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse_ClearTypeOneOfCase(KEYAPISACCESSMANAGEMENTV1GetGroupClaimListResponse *message);

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimFilter

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_UserId = 1,
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_Claims = 2,
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_UserData = 3,
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_FieldNumber_ApiKeyHash = 4,
};

/**
 * Фильтр атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupClaimFilter : GPBMessage

/**
 * По идентификатору пользователя.
 * Соответствует subject, sub, client_id из JWT.
 * Для пользователя Ключа это user_id Ключа
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *userId;
/** Test to see if @c userId has been set. */
@property(nonatomic, readwrite) BOOL hasUserId;

/**
 * По назначенным атрибутам пользователя.
 * Фильтр ограничивает возвращаемые атрибуты данным списком.
 * Возвращаем атрибуты групп, у которых Claim.key=claims[n].key И (Claim.value=claims[n].value ИЛИ claims[n].value пустой).
 * При пустом GroupClaimFilter.claims не ограничиваем выдачу, отдаем все Claims, назначенные пользователю
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary<NSString*, NSString*> *claims;
/** The number of items in @c claims without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger claims_Count;

/**
 * По условию принадлежности к группе.
 * Пользователь принадлежит группе, если user_data полностью удовлетворяет требованиям группы, то есть user_data содержит в себе Group.requirements целиком
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData *userData;
/** Test to see if @c userData has been set. */
@property(nonatomic, readwrite) BOOL hasUserData;

/** Хешированное SHA256 значение ключа доступа ApiKey */
@property(nonatomic, readwrite, copy, null_resettable) NSString *apiKeyHash;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData_FieldNumber_Claims = 1,
};

/**
 * Условие принадлежности к группе
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupClaimFilter_UserData : GPBMessage

/** Атрибуты пользователя, claims которого мы хотим получить */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableDictionary<NSString*, NSString*> *claims;
/** The number of items in @c claims without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger claims_Count;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupClaimPaging

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_OrderByType = 1,
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_DirectionType = 2,
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_Limit = 3,
  KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация атрибутов пользователя
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupClaimPaging : GPBMessage

/**
 * Тип значения сортировки.
 * Если значение не передано, то будет взято значение по умолчанию.
 * # По умолчанию: KEY
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * # По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Если значение 0 (не передано), то будет взято значение по умолчанию.
 * # Диапазон: 0..100.
 * # По умолчанию: 20
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupClaimPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupClaimPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupClaimPaging_OrderByType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISACCESSMANAGEMENTV1GroupClaimPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message);
/**
 * Sets the raw value of an @c KEYAPISACCESSMANAGEMENTV1GroupClaimPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISACCESSMANAGEMENTV1GroupClaimPaging_DirectionType_RawValue(KEYAPISACCESSMANAGEMENTV1GroupClaimPaging *message, int32_t value);

#pragma mark - KEYAPISACCESSMANAGEMENTV1ValidationError

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1ValidationError_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1ValidationError_FieldNumber_Path = 1,
  KEYAPISACCESSMANAGEMENTV1ValidationError_FieldNumber_Message = 2,
};

/**
 * Ошибки валидации.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1ValidationError : GPBMessage

/** Путь к полю в формате наименования protobuf */
@property(nonatomic, readwrite, copy, null_resettable) NSString *path;

/** Валидационное сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

#pragma mark - KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError

typedef GPB_ENUM(KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError_FieldNumber) {
  KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError_FieldNumber_GroupTemplateId = 1,
  KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError_FieldNumber_Message = 2,
};

/**
 * Ошибки создания группы по шаблону
 **/
GPB_FINAL @interface KEYAPISACCESSMANAGEMENTV1GroupTemplateNotFoundError : GPBMessage

/** Идентификатор шаблона группы, который не найден */
@property(nonatomic, readwrite, copy, null_resettable) NSString *groupTemplateId;

/** Сообщение */
@property(nonatomic, readwrite, copy, null_resettable) NSString *message;

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
