// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/user/v1/keyapis_user_user_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 KEYAPISUSERV1DeleteUserResponse_Error;
@class KEYAPISUSERV1DeleteUserSessionsResponse_Error;
@class KEYAPISUSERV1GetUserCodeResponse_Error;
@class KEYAPISUSERV1GetUserCodeResponse_Error_UserCodeNotFound;
@class KEYAPISUSERV1GetUserCountResponse_Error;
@class KEYAPISUSERV1GetUserListResponse_Error;
@class KEYAPISUSERV1GetUserResponse_Error;
@class KEYAPISUSERV1PostUserCodeCreateResponse_Error;
@class KEYAPISUSERV1PostUserResponse_Error;
@class KEYAPISUSERV1User;
@class KEYAPISUSERV1UserCode;
@class KEYAPISUSERV1UserFilter;
@class KEYAPISUSERV1UserPaging;
@class KEYAPISUSERV1User_SavingError;
@class KEYAPISUSERV1User_SavingError_Conflict;
@class KEYAPISUSERV1User_SavingError_CreatorMustBeAdmin;
@class KEYAPISUSERV1User_SavingError_EmailIsAlreadyTaken;
@class KEYAPISUSERV1User_SavingError_EntityNotFound;
@class KEYAPISUSERV1User_SavingError_MrfIdRequiredForUserType;
@class KEYAPISUSERV1User_SavingError_RfIdDoesNotMatchMrfId;
@class KEYAPISUSERV1User_SavingError_UserStatusForbidden;
@class KEYAPISUSERV1User_SavingError_UserTypeForbidden;
@class KEYAPISUSERV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISUSERV1User_Type

/**
 * Справочник типов пользователей.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISUSERV1User_Type) {
  /**
   * 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.
   **/
  KEYAPISUSERV1User_Type_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISUSERV1User_Type_TypeUnknown = 0,

  /** Владелец УК */
  KEYAPISUSERV1User_Type_Owner = 1,

  /** Сотрудник УК */
  KEYAPISUSERV1User_Type_Employee = 2,

  /** Мастер житель */
  KEYAPISUSERV1User_Type_Master = 3,

  /** Подчиненный житель */
  KEYAPISUSERV1User_Type_Slave = 4,

  /** Администратор */
  KEYAPISUSERV1User_Type_Admin = 5,

  /** Сотрудники ГАП */
  KEYAPISUSERV1User_Type_Seller = 6,

  /** МРФ */
  KEYAPISUSERV1User_Type_Mrf = 7,

  /** ГРЗУК */
  KEYAPISUSERV1User_Type_Backoffice = 8,

  /** Сервис */
  KEYAPISUSERV1User_Type_Service = 9,

  /** Супер админ */
  KEYAPISUSERV1User_Type_Root = 10,

  /** Сотрудник БТИ */
  KEYAPISUSERV1User_Type_Bti = 11,

  /** Сотрудник 1 ЛТП */
  KEYAPISUSERV1User_Type_LtpFirst = 12,

  /** Сотрудник ГАП */
  KEYAPISUSERV1User_Type_ExternalSeller = 13,

  /** Приложение */
  KEYAPISUSERV1User_Type_Application = 14,

  /** Администратор точек продаж */
  KEYAPISUSERV1User_Type_Manager = 15,

  /** Администратор устройств */
  KEYAPISUSERV1User_Type_DeviceAdmin = 16,
};

GPBEnumDescriptor *KEYAPISUSERV1User_Type_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 KEYAPISUSERV1User_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISUSERV1User_StatusType

/**
 * Справочник типов статусов пользователей.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISUSERV1User_StatusType) {
  /**
   * 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.
   **/
  KEYAPISUSERV1User_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISUSERV1User_StatusType_StatusTypeUnknown = 0,

  /** Не активный пользователь */
  KEYAPISUSERV1User_StatusType_New = 1,

  /** Демо пользователь */
  KEYAPISUSERV1User_StatusType_Demo = 2,

  /** Активный пользователь */
  KEYAPISUSERV1User_StatusType_Active = 3,

  /** Архивный пользователь */
  KEYAPISUSERV1User_StatusType_Blocked = 4,
};

GPBEnumDescriptor *KEYAPISUSERV1User_StatusType_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 KEYAPISUSERV1User_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISUSERV1UserPaging_OrderByType

/**
 * Справочник типов значений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISUSERV1UserPaging_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.
   **/
  KEYAPISUSERV1UserPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISUSERV1UserPaging_OrderByType_OrderByTypeUnknown = 0,

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

  /** По времени создания */
  KEYAPISUSERV1UserPaging_OrderByType_CreatedAt = 2,

  /** По времени изменения */
  KEYAPISUSERV1UserPaging_OrderByType_ChangedAt = 3,

  /** По электронной почте */
  KEYAPISUSERV1UserPaging_OrderByType_Email = 4,

  /**
   * По рангу для поиска по тексту.
   * Применяется когда передано поле для поиска по тексту.
   * В случае если текстовое поле не передано, применяется значение по умолчанию
   **/
  KEYAPISUSERV1UserPaging_OrderByType_Rank = 5,

  /** По описанию (collate-agnostic ordering) */
  KEYAPISUSERV1UserPaging_OrderByType_Description = 6,
};

GPBEnumDescriptor *KEYAPISUSERV1UserPaging_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 KEYAPISUSERV1UserPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISUSERV1UserPaging_DirectionType

/**
 * Справочник типов направлений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISUSERV1UserPaging_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.
   **/
  KEYAPISUSERV1UserPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISUSERV1UserPaging_DirectionType_DirectionTypeUnknown = 0,

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

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

GPBEnumDescriptor *KEYAPISUSERV1UserPaging_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 KEYAPISUSERV1UserPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISUSERV1KeyapisUserUserV1Root

/**
 * 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 KEYAPISUSERV1KeyapisUserUserV1Root : GPBRootObject
@end

#pragma mark - KEYAPISUSERV1DeleteUserSessionsRequest

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserSessionsRequest_FieldNumber) {
  KEYAPISUSERV1DeleteUserSessionsRequest_FieldNumber_Id_p = 1,
};

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

/**
 * Идентификатор пользователя.
 * # Диапазон: 1..2147483647
 **/
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISUSERV1DeleteUserSessionsResponse

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserSessionsResponse_FieldNumber) {
  KEYAPISUSERV1DeleteUserSessionsResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserSessionsResponse_Type_OneOfCase) {
  KEYAPISUSERV1DeleteUserSessionsResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1DeleteUserSessionsResponse_Type_OneOfCase_Error = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1DeleteUserSessionsResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserSessionsResponse_Error_FieldNumber) {
  KEYAPISUSERV1DeleteUserSessionsResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserSessionsResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1DeleteUserSessionsResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1DeleteUserSessionsResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1User

typedef GPB_ENUM(KEYAPISUSERV1User_FieldNumber) {
  KEYAPISUSERV1User_FieldNumber_Id_p = 1,
  KEYAPISUSERV1User_FieldNumber_Type = 2,
  KEYAPISUSERV1User_FieldNumber_StatusType = 3,
  KEYAPISUSERV1User_FieldNumber_Login = 4,
  KEYAPISUSERV1User_FieldNumber_Email = 5,
  KEYAPISUSERV1User_FieldNumber_PhoneNumber = 6,
  KEYAPISUSERV1User_FieldNumber_CompanyId = 7,
  KEYAPISUSERV1User_FieldNumber_MrfId = 8,
  KEYAPISUSERV1User_FieldNumber_RfId = 9,
  KEYAPISUSERV1User_FieldNumber_CreatedAt = 10,
  KEYAPISUSERV1User_FieldNumber_ChangedAt = 11,
  KEYAPISUSERV1User_FieldNumber_ActivatedAt = 12,
  KEYAPISUSERV1User_FieldNumber_BlockedAt = 13,
  KEYAPISUSERV1User_FieldNumber_CreatorUserId = 14,
  KEYAPISUSERV1User_FieldNumber_OwnerUserId = 15,
  KEYAPISUSERV1User_FieldNumber_InvoiceEmail = 16,
  KEYAPISUSERV1User_FieldNumber_VcUserId = 17,
  KEYAPISUSERV1User_FieldNumber_Description_p = 18,
  KEYAPISUSERV1User_FieldNumber_UstoreUserId = 19,
  KEYAPISUSERV1User_FieldNumber_EnvURL = 20,
};

/**
 * Пользователь
 **/
GPB_FINAL @interface KEYAPISUSERV1User : GPBMessage

/**
 * Идентификатор.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t id_p;

/** Тип пользователя */
@property(nonatomic, readwrite) KEYAPISUSERV1User_Type type;

/** Статус пользователя */
@property(nonatomic, readwrite) KEYAPISUSERV1User_StatusType statusType;

/**
 * Логин.
 * # Диапазон: 3..64
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *login;
/** Test to see if @c login has been set. */
@property(nonatomic, readwrite) BOOL hasLogin;

/**
 * Электронная почта.
 * # Диапазон: 4..256
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *email;
/** Test to see if @c email has been set. */
@property(nonatomic, readwrite) BOOL hasEmail;

/**
 * Номер телефона.
 * # Диапазон: 5..14
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *phoneNumber;
/** Test to see if @c phoneNumber has been set. */
@property(nonatomic, readwrite) BOOL hasPhoneNumber;

/**
 * Идентификатор компании.
 * # Диапазон: 1..2147483647
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *companyId;
/** Test to see if @c companyId has been set. */
@property(nonatomic, readwrite) BOOL hasCompanyId;

/** Идентификатор МРФ */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *mrfId;
/** Test to see if @c mrfId has been set. */
@property(nonatomic, readwrite) BOOL hasMrfId;

/** Идентификатор РФ */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *rfId;
/** Test to see if @c rfId has been set. */
@property(nonatomic, readwrite) BOOL hasRfId;

/**
 * Дата создания.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата изменения.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *changedAt;
/** Test to see if @c changedAt has been set. */
@property(nonatomic, readwrite) BOOL hasChangedAt;

/**
 * Дата активации.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *activatedAt;
/** Test to see if @c activatedAt has been set. */
@property(nonatomic, readwrite) BOOL hasActivatedAt;

/**
 * Дата активации.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *blockedAt;
/** Test to see if @c blockedAt has been set. */
@property(nonatomic, readwrite) BOOL hasBlockedAt;

/**
 * Идентификатор создавшего пользователя.
 * Берется из токена.
 * # Диапазон: 1..2147483647
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *creatorUserId;
/** Test to see if @c creatorUserId has been set. */
@property(nonatomic, readwrite) BOOL hasCreatorUserId;

/**
 * Идентификатор пользователя-владельца.
 * # Диапазон: 1..2147483647
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *ownerUserId;
/** Test to see if @c ownerUserId has been set. */
@property(nonatomic, readwrite) BOOL hasOwnerUserId;

/**
 * Электронная почта для чеков.
 * # Диапазон: 4..256
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *invoiceEmail;
/** Test to see if @c invoiceEmail has been set. */
@property(nonatomic, readwrite) BOOL hasInvoiceEmail;

/**
 * Идентификатор пользователя в Видеонаблюдении.
 * Вычисляется на стороне сервера при создании пользователя
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *vcUserId;
/** Test to see if @c vcUserId has been set. */
@property(nonatomic, readwrite) BOOL hasVcUserId;

/** Описание */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *description_p;
/** Test to see if @c description_p has been set. */
@property(nonatomic, readwrite) BOOL hasDescription_p;

/**
 * Идентификатор пользователя в сервисе ustore.
 * Вычисляется на стороне сервера при создании пользователя
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *ustoreUserId;
/** Test to see if @c ustoreUserId has been set. */
@property(nonatomic, readwrite) BOOL hasUstoreUserId;

/** Адрес окружения для внутренних пользователей */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *envURL;
/** Test to see if @c envURL has been set. */
@property(nonatomic, readwrite) BOOL hasEnvURL;

@end

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

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

#pragma mark - KEYAPISUSERV1User_SavingError

typedef GPB_ENUM(KEYAPISUSERV1User_SavingError_FieldNumber) {
  KEYAPISUSERV1User_SavingError_FieldNumber_Conflict = 1,
  KEYAPISUSERV1User_SavingError_FieldNumber_UserTypeForbidden = 2,
  KEYAPISUSERV1User_SavingError_FieldNumber_UserStatusForbidden = 3,
  KEYAPISUSERV1User_SavingError_FieldNumber_MrfIdIsRequiredForUserType = 4,
  KEYAPISUSERV1User_SavingError_FieldNumber_CreatorMustBeAdmin = 5,
  KEYAPISUSERV1User_SavingError_FieldNumber_RfIdDoesNotMatchMrfId = 6,
  KEYAPISUSERV1User_SavingError_FieldNumber_EmailIsAlreadyTaken = 7,
  KEYAPISUSERV1User_SavingError_FieldNumber_EntityNotFound = 8,
};

typedef GPB_ENUM(KEYAPISUSERV1User_SavingError_Reason_OneOfCase) {
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_Conflict = 1,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_UserTypeForbidden = 2,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_UserStatusForbidden = 3,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_MrfIdIsRequiredForUserType = 4,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_CreatorMustBeAdmin = 5,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_RfIdDoesNotMatchMrfId = 6,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_EmailIsAlreadyTaken = 7,
  KEYAPISUSERV1User_SavingError_Reason_OneOfCase_EntityNotFound = 8,
};

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

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

/** Конфликт версий */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_Conflict *conflict;

/** Нельзя удалять пользователя с данным типом */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_UserTypeForbidden *userTypeForbidden;

/** Нельзя удалять пользователя в текущем статусе */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_UserStatusForbidden *userStatusForbidden;

/** Идентификатор МРФ обязателен */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_MrfIdRequiredForUserType *mrfIdIsRequiredForUserType;

/** Создатель пользователя должен иметь роль Admin */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_CreatorMustBeAdmin *creatorMustBeAdmin;

/** Идентификатор РФ не соответствует идентификатору МРФ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_RfIdDoesNotMatchMrfId *rfIdDoesNotMatchMrfId;

/** Email уже занят */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_EmailIsAlreadyTaken *emailIsAlreadyTaken;

/** Связанная с пользователем сущность не найдена */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError_EntityNotFound *entityNotFound;

@end

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

#pragma mark - KEYAPISUSERV1User_SavingError_Conflict

/**
 * Конфликт версий.
 * Причины:
 * - В базе хранится другая версия строки, значения changed_at отличаются
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_Conflict : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_UserTypeForbidden

/**
 * Нельзя удалять пользователя с данным типом.
 * Доступные типы:
 * - Жилец (мастер)
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_UserTypeForbidden : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_UserStatusForbidden

/**
 * Нельзя удалять пользователя в текущем статусе.
 * В каких статусах можно удалить пользователя:
 * - demo
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_UserStatusForbidden : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_MrfIdRequiredForUserType

/**
 * Для данного типа пользователя идентификатор МРФ обязателен
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_MrfIdRequiredForUserType : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_CreatorMustBeAdmin

/**
 * Создатель пользователя должен иметь роль Admin
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_CreatorMustBeAdmin : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_RfIdDoesNotMatchMrfId

/**
 * Идентификатор РФ не соответствует идентификатору МРФ
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_RfIdDoesNotMatchMrfId : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_EmailIsAlreadyTaken

/**
 * Email уже занят
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_EmailIsAlreadyTaken : GPBMessage

@end

#pragma mark - KEYAPISUSERV1User_SavingError_EntityNotFound

typedef GPB_ENUM(KEYAPISUSERV1User_SavingError_EntityNotFound_FieldNumber) {
  KEYAPISUSERV1User_SavingError_EntityNotFound_FieldNumber_Field = 1,
};

/**
 * Связанная с пользователем сущность не найдена.
 * Например: компания по company_id, пользователь по owner_user_id
 **/
GPB_FINAL @interface KEYAPISUSERV1User_SavingError_EntityNotFound : GPBMessage

/** Поле */
@property(nonatomic, readwrite, copy, null_resettable) NSString *field;

@end

#pragma mark - KEYAPISUSERV1UserCode

typedef GPB_ENUM(KEYAPISUSERV1UserCode_FieldNumber) {
  KEYAPISUSERV1UserCode_FieldNumber_Code = 1,
  KEYAPISUSERV1UserCode_FieldNumber_UserId = 2,
  KEYAPISUSERV1UserCode_FieldNumber_CreatedAt = 3,
  KEYAPISUSERV1UserCode_FieldNumber_CreatorUserId = 4,
  KEYAPISUSERV1UserCode_FieldNumber_CreatorUserType = 5,
};

/**
 * Идентификационный код пользователя
 **/
GPB_FINAL @interface KEYAPISUSERV1UserCode : GPBMessage

/**
 * Идентификационный код.
 * Если поле не заполнено, генерируется автоматически.
 * # Диапазон: 10000..99999
 **/
@property(nonatomic, readwrite) int32_t code;

/**
 * Идентификатор пользователя.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t userId;

/**
 * Дата создания.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/** Идентификатор создателя кода */
@property(nonatomic, readwrite) int32_t creatorUserId;

/** Тип создателя кода */
@property(nonatomic, readwrite) KEYAPISUSERV1User_Type creatorUserType;

@end

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

#pragma mark - KEYAPISUSERV1GetUserRequest

typedef GPB_ENUM(KEYAPISUSERV1GetUserRequest_FieldNumber) {
  KEYAPISUSERV1GetUserRequest_FieldNumber_Id_p = 1,
};

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

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISUSERV1GetUserResponse

typedef GPB_ENUM(KEYAPISUSERV1GetUserResponse_FieldNumber) {
  KEYAPISUSERV1GetUserResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1GetUserResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserResponse_Type_OneOfCase) {
  KEYAPISUSERV1GetUserResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1GetUserResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Пользователь */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User *data_p;

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1GetUserResponse_Error_FieldNumber) {
  KEYAPISUSERV1GetUserResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1GetUserResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserListRequest

typedef GPB_ENUM(KEYAPISUSERV1GetUserListRequest_FieldNumber) {
  KEYAPISUSERV1GetUserListRequest_FieldNumber_Filter = 1,
  KEYAPISUSERV1GetUserListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserListRequest_Pagination_OneOfCase) {
  KEYAPISUSERV1GetUserListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserListRequest_Pagination_OneOfCase_Paging = 2,
};

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

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

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

/** Стандартный постраничный вывод */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1UserPaging *paging;

@end

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

#pragma mark - KEYAPISUSERV1GetUserListResponse

typedef GPB_ENUM(KEYAPISUSERV1GetUserListResponse_FieldNumber) {
  KEYAPISUSERV1GetUserListResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1GetUserListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserListResponse_Type_OneOfCase) {
  KEYAPISUSERV1GetUserListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1GetUserListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Пользователь */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User *data_p;

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserListResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1GetUserListResponse_Error_FieldNumber) {
  KEYAPISUSERV1GetUserListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserListResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1GetUserListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserCountRequest

typedef GPB_ENUM(KEYAPISUSERV1GetUserCountRequest_FieldNumber) {
  KEYAPISUSERV1GetUserCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISUSERV1GetUserCountResponse

typedef GPB_ENUM(KEYAPISUSERV1GetUserCountResponse_FieldNumber) {
  KEYAPISUSERV1GetUserCountResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1GetUserCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserCountResponse_Type_OneOfCase) {
  KEYAPISUSERV1GetUserCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1GetUserCountResponse_Type_OneOfCase_Error = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserCountResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1GetUserCountResponse_Error_FieldNumber) {
  KEYAPISUSERV1GetUserCountResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserCountResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1GetUserCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserCountResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1DeleteUserRequest

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserRequest_FieldNumber) {
  KEYAPISUSERV1DeleteUserRequest_FieldNumber_Id_p = 1,
};

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

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISUSERV1DeleteUserResponse

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserResponse_FieldNumber) {
  KEYAPISUSERV1DeleteUserResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserResponse_Type_OneOfCase) {
  KEYAPISUSERV1DeleteUserResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1DeleteUserResponse_Type_OneOfCase_Error = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISUSERV1DeleteUserResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserResponse_Error_FieldNumber) {
  KEYAPISUSERV1DeleteUserResponse_Error_FieldNumber_Validation = 1,
  KEYAPISUSERV1DeleteUserResponse_Error_FieldNumber_Saving = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1DeleteUserResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1DeleteUserResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1DeleteUserResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISUSERV1DeleteUserResponse_Error_Reason_OneOfCase_Saving = 2,
};

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

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

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

/** Ошибка сохранения */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError *saving;

@end

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

#pragma mark - KEYAPISUSERV1GetUserCodeRequest

typedef GPB_ENUM(KEYAPISUSERV1GetUserCodeRequest_FieldNumber) {
  KEYAPISUSERV1GetUserCodeRequest_FieldNumber_Id_p = 1,
};

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

/**
 * Идентификатор.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISUSERV1GetUserCodeResponse

typedef GPB_ENUM(KEYAPISUSERV1GetUserCodeResponse_FieldNumber) {
  KEYAPISUSERV1GetUserCodeResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1GetUserCodeResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserCodeResponse_Type_OneOfCase) {
  KEYAPISUSERV1GetUserCodeResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserCodeResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1GetUserCodeResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Идентификационный код */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1UserCode *data_p;

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

@end

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

#pragma mark - KEYAPISUSERV1GetUserCodeResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1GetUserCodeResponse_Error_FieldNumber) {
  KEYAPISUSERV1GetUserCodeResponse_Error_FieldNumber_Validation = 1,
  KEYAPISUSERV1GetUserCodeResponse_Error_FieldNumber_UserCodeNotFound = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1GetUserCodeResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1GetUserCodeResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1GetUserCodeResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISUSERV1GetUserCodeResponse_Error_Reason_OneOfCase_UserCodeNotFound = 2,
};

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

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

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

/** У пользователя отсутствует идентификационный код */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1GetUserCodeResponse_Error_UserCodeNotFound *userCodeNotFound;

@end

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

#pragma mark - KEYAPISUSERV1GetUserCodeResponse_Error_UserCodeNotFound

/**
 * У пользователя отсутствует идентификационный код
 **/
GPB_FINAL @interface KEYAPISUSERV1GetUserCodeResponse_Error_UserCodeNotFound : GPBMessage

@end

#pragma mark - KEYAPISUSERV1PostUserCodeCreateRequest

typedef GPB_ENUM(KEYAPISUSERV1PostUserCodeCreateRequest_FieldNumber) {
  KEYAPISUSERV1PostUserCodeCreateRequest_FieldNumber_UserCode = 1,
};

/**
 * Запрос создания идентификационного кода пользователя
 **/
GPB_FINAL @interface KEYAPISUSERV1PostUserCodeCreateRequest : GPBMessage

/** Идентификационный код пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1UserCode *userCode;
/** Test to see if @c userCode has been set. */
@property(nonatomic, readwrite) BOOL hasUserCode;

@end

#pragma mark - KEYAPISUSERV1PostUserCodeCreateResponse

typedef GPB_ENUM(KEYAPISUSERV1PostUserCodeCreateResponse_FieldNumber) {
  KEYAPISUSERV1PostUserCodeCreateResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1PostUserCodeCreateResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1PostUserCodeCreateResponse_Type_OneOfCase) {
  KEYAPISUSERV1PostUserCodeCreateResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1PostUserCodeCreateResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1PostUserCodeCreateResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Идентификационный код пользователя */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1UserCode *data_p;

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

@end

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

#pragma mark - KEYAPISUSERV1PostUserCodeCreateResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1PostUserCodeCreateResponse_Error_FieldNumber) {
  KEYAPISUSERV1PostUserCodeCreateResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISUSERV1PostUserCodeCreateResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1PostUserCodeCreateResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1PostUserCodeCreateResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса создания идентификационного кода пользователя
 **/
GPB_FINAL @interface KEYAPISUSERV1PostUserCodeCreateResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISUSERV1UserFilter

typedef GPB_ENUM(KEYAPISUSERV1UserFilter_FieldNumber) {
  KEYAPISUSERV1UserFilter_FieldNumber_CompanyIdsArray = 1,
  KEYAPISUSERV1UserFilter_FieldNumber_UserTypesArray = 2,
  KEYAPISUSERV1UserFilter_FieldNumber_UserStatusTypesArray = 3,
  KEYAPISUSERV1UserFilter_FieldNumber_EmailsArray = 4,
  KEYAPISUSERV1UserFilter_FieldNumber_PhoneNumbersArray = 5,
  KEYAPISUSERV1UserFilter_FieldNumber_LoginsArray = 6,
  KEYAPISUSERV1UserFilter_FieldNumber_Text = 7,
  KEYAPISUSERV1UserFilter_FieldNumber_Contacts = 8,
};

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

/** По идентификаторам компаний */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *companyIdsArray;
/** The number of items in @c companyIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger companyIdsArray_Count;

/** По типам */
// |userTypesArray| contains |KEYAPISUSERV1User_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *userTypesArray;
/** The number of items in @c userTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userTypesArray_Count;

/** По статусам */
// |userStatusTypesArray| contains |KEYAPISUSERV1User_StatusType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *userStatusTypesArray;
/** The number of items in @c userStatusTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userStatusTypesArray_Count;

/** По электронной почте */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *emailsArray;
/** The number of items in @c emailsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger emailsArray_Count;

/** По номеру телефона */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *phoneNumbersArray;
/** The number of items in @c phoneNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger phoneNumbersArray_Count;

/** По логину */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *loginsArray;
/** The number of items in @c loginsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger loginsArray_Count;

/**
 * Поиск по тексту.
 * Если значение не передано то поиск по нему не производится.
 * # Диапазон: 3..64.
 * # Поиск производится по полям:
 * # - Описание
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *text;
/** Test to see if @c text has been set. */
@property(nonatomic, readwrite) BOOL hasText;

/**
 * Поиск по контактным данным пользователя (электронная почта или номер телефона).
 * Если значение не передано то поиск по нему не производится.
 * # Диапазон: 3..64.
 * # Поиск производится по полям:
 * # - Электронная почта;
 * # - Номер телефона
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *contacts;
/** Test to see if @c contacts has been set. */
@property(nonatomic, readwrite) BOOL hasContacts;

@end

#pragma mark - KEYAPISUSERV1UserPaging

typedef GPB_ENUM(KEYAPISUSERV1UserPaging_FieldNumber) {
  KEYAPISUSERV1UserPaging_FieldNumber_OrderByType = 1,
  KEYAPISUSERV1UserPaging_FieldNumber_DirectionType = 2,
  KEYAPISUSERV1UserPaging_FieldNumber_Limit = 3,
  KEYAPISUSERV1UserPaging_FieldNumber_Offset = 4,
};

/**
 * Постраничный вывод
 **/
GPB_FINAL @interface KEYAPISUSERV1UserPaging : GPBMessage

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

/**
 * Тип направления сортировки.
 * # По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISUSERV1UserPaging_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 KEYAPISUSERV1UserPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISUSERV1UserPaging_OrderByType_RawValue(KEYAPISUSERV1UserPaging *message);
/**
 * Sets the raw value of an @c KEYAPISUSERV1UserPaging'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 SetKEYAPISUSERV1UserPaging_OrderByType_RawValue(KEYAPISUSERV1UserPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISUSERV1UserPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISUSERV1UserPaging_DirectionType_RawValue(KEYAPISUSERV1UserPaging *message);
/**
 * Sets the raw value of an @c KEYAPISUSERV1UserPaging'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 SetKEYAPISUSERV1UserPaging_DirectionType_RawValue(KEYAPISUSERV1UserPaging *message, int32_t value);

#pragma mark - KEYAPISUSERV1PostUserRequest

typedef GPB_ENUM(KEYAPISUSERV1PostUserRequest_FieldNumber) {
  KEYAPISUSERV1PostUserRequest_FieldNumber_Data_p = 1,
};

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

/** Пользователь */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISUSERV1PostUserResponse

typedef GPB_ENUM(KEYAPISUSERV1PostUserResponse_FieldNumber) {
  KEYAPISUSERV1PostUserResponse_FieldNumber_Data_p = 1,
  KEYAPISUSERV1PostUserResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1PostUserResponse_Type_OneOfCase) {
  KEYAPISUSERV1PostUserResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1PostUserResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISUSERV1PostUserResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос на создание пользователя
 **/
GPB_FINAL @interface KEYAPISUSERV1PostUserResponse : GPBMessage

/** Тип ответа */
@property(nonatomic, readonly) KEYAPISUSERV1PostUserResponse_Type_OneOfCase typeOneOfCase;

/** Пользователь */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User *data_p;

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

@end

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

#pragma mark - KEYAPISUSERV1PostUserResponse_Error

typedef GPB_ENUM(KEYAPISUSERV1PostUserResponse_Error_FieldNumber) {
  KEYAPISUSERV1PostUserResponse_Error_FieldNumber_Validation = 1,
  KEYAPISUSERV1PostUserResponse_Error_FieldNumber_Saving = 2,
};

typedef GPB_ENUM(KEYAPISUSERV1PostUserResponse_Error_Reason_OneOfCase) {
  KEYAPISUSERV1PostUserResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISUSERV1PostUserResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISUSERV1PostUserResponse_Error_Reason_OneOfCase_Saving = 2,
};

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

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

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

/** Ошибка сохранения */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISUSERV1User_SavingError *saving;

@end

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

#pragma mark - KEYAPISUSERV1ValidationError

typedef GPB_ENUM(KEYAPISUSERV1ValidationError_FieldNumber) {
  KEYAPISUSERV1ValidationError_FieldNumber_Path = 1,
  KEYAPISUSERV1ValidationError_FieldNumber_Message = 2,
};

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

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

/** Валидационное сообщение */
@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
