// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/device/v1/keyapis_device_device_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 KEYAPISDEVICEV1CameraStatus;
@class KEYAPISDEVICEV1Device;
@class KEYAPISDEVICEV1DeviceConfigurationStatus;
@class KEYAPISDEVICEV1DeviceConfigurationStatusGrouped;
@class KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter;
@class KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging;
@class KEYAPISDEVICEV1DeviceConfigurationStatus_Payload;
@class KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect;
@class KEYAPISDEVICEV1DeviceFilter;
@class KEYAPISDEVICEV1DeviceLite;
@class KEYAPISDEVICEV1DevicePaging;
@class KEYAPISDEVICEV1Device_AutochangePasswordSettings;
@class KEYAPISDEVICEV1Device_Credentials;
@class KEYAPISDEVICEV1Device_Dispatching;
@class KEYAPISDEVICEV1Device_Location;
@class KEYAPISDEVICEV1Device_Redirect;
@class KEYAPISDEVICEV1Device_SavingError;
@class KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice;
@class KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported;
@class KEYAPISDEVICEV1Device_SavingError_ConciergeRoomNotFound;
@class KEYAPISDEVICEV1Device_SavingError_CredentialsAreRequired;
@class KEYAPISDEVICEV1Device_SavingError_FieldIsNotSupported;
@class KEYAPISDEVICEV1Device_SavingError_LoginIsExist;
@class KEYAPISDEVICEV1Device_SavingError_MacAddressInvalid;
@class KEYAPISDEVICEV1Device_SavingError_MacAddressIsExist;
@class KEYAPISDEVICEV1Device_SavingError_NotAllowedForModel;
@class KEYAPISDEVICEV1Device_SavingError_NotAllowedForType;
@class KEYAPISDEVICEV1Device_SavingError_PublicIdentityIsExist;
@class KEYAPISDEVICEV1Device_SavingError_SerialNumberForModelIsExist;
@class KEYAPISDEVICEV1Device_SavingError_SerialNumberInvalid;
@class KEYAPISDEVICEV1Device_Settings;
@class KEYAPISDEVICEV1Device_Settings_Autocollect;
@class KEYAPISDEVICEV1Device_Settings_ConciergeCall;
@class KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch;
@class KEYAPISDEVICEV1Device_Settings_EmergencyCall;
@class KEYAPISDEVICEV1Device_Settings_FaceRecognition;
@class KEYAPISDEVICEV1Device_Settings_Sl3Mode;
@class KEYAPISDEVICEV1Device_SipTrunk;
@class KEYAPISDEVICEV1Device_SputnikCredentials;
@class KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error;
@class KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error;
@class KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses;
@class KEYAPISDEVICEV1GetDeviceCountResponse_Error;
@class KEYAPISDEVICEV1GetDeviceListResponse_Error;
@class KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error;
@class KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error;
@class KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_PresetStatusIsProcessing;
@class KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_HostExists;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginExists;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginIsRequired;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_MacAddressExists;
@class KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_SerialNumberExists;
@class KEYAPISDEVICEV1PostDeviceResponse_Error;
@class KEYAPISDEVICEV1Preset_Dtmf;
@class KEYAPISDEVICEV1Preset_FaceRecognition;
@class KEYAPISDEVICEV1Preset_Ntp;
@class KEYAPISDEVICEV1Preset_Room;
@class KEYAPISDEVICEV1Preset_SavingError_Conflict;
@class KEYAPISDEVICEV1Preset_SavingError_NotAllowedForDefault;
@class KEYAPISDEVICEV1Preset_Sip;
@class KEYAPISDEVICEV1Preset_Syslog;
@class KEYAPISDEVICEV1Preset_VideoConfig;
@class KEYAPISDEVICEV1Preset_VideoConfig_RtspUser;
@class KEYAPISDEVICEV1ReinstallError;
@class KEYAPISDEVICEV1ReinstallError_SipLoginIsMissing;
@class KEYAPISDEVICEV1SyncStatus;
@class KEYAPISDEVICEV1ValidationError;
GPB_ENUM_FWD_DECLARE(KEYAPISDEVICEV1Model_CapabilityType);

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISDEVICEV1Device_PresetStatusType

/**
 * Справочник статусов установки пресета.
 * # Тип: byte
 **/
typedef GPB_DEPRECATED_MSG("keyapis.device.v1.Device.PresetStatusType is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") GPB_ENUM(KEYAPISDEVICEV1Device_PresetStatusType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1Device_PresetStatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1Device_PresetStatusType_PresetStatusTypeUnknown GPB_DEPRECATED_MSG("keyapis.device.v1.Device.PRESET_STATUS_TYPE_UNKNOWN is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 0,

  /** Устанавливается */
  KEYAPISDEVICEV1Device_PresetStatusType_Processing GPB_DEPRECATED_MSG("keyapis.device.v1.Device.PROCESSING is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 1,

  /** Установлен */
  KEYAPISDEVICEV1Device_PresetStatusType_Success GPB_DEPRECATED_MSG("keyapis.device.v1.Device.SUCCESS is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 2,

  /** Ошибка */
  KEYAPISDEVICEV1Device_PresetStatusType_Error GPB_DEPRECATED_MSG("keyapis.device.v1.Device.ERROR is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 3,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_PresetStatusType_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 KEYAPISDEVICEV1Device_PresetStatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Device_Type

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

  /** Домофон */
  KEYAPISDEVICEV1Device_Type_Intercom = 1,

  /** Видеокамера */
  KEYAPISDEVICEV1Device_Type_Videocamera GPB_DEPRECATED_MSG("keyapis.device.v1.Device.VIDEOCAMERA is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 2,

  /** Шлагбаум */
  KEYAPISDEVICEV1Device_Type_Barrier = 3,

  /** Калитка */
  KEYAPISDEVICEV1Device_Type_Gate = 4,

  /** СКУД */
  KEYAPISDEVICEV1Device_Type_AccessControlPanel GPB_DEPRECATED_MSG("keyapis.device.v1.Device.ACCESS_CONTROL_PANEL is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 5,

  /** Наружняя видеокамера */
  KEYAPISDEVICEV1Device_Type_OutdoorCamera GPB_DEPRECATED_MSG("keyapis.device.v1.Device.OUTDOOR_CAMERA is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).") = 6,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_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 KEYAPISDEVICEV1Device_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Device_ModelType

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

  /** Модель RODOS-8 */
  KEYAPISDEVICEV1Device_ModelType_Rodos8 = 1,

  /** Модель Beward */
  KEYAPISDEVICEV1Device_ModelType_Beward = 2,

  /** Модель QTECH */
  KEYAPISDEVICEV1Device_ModelType_Qtech = 3,

  /** Модель Натекс */
  KEYAPISDEVICEV1Device_ModelType_Nateks = 4,

  /** Модель ТНБ */
  KEYAPISDEVICEV1Device_ModelType_Tnb = 5,

  /** Модель Maxet Line */
  KEYAPISDEVICEV1Device_ModelType_Maxetline = 6,

  /** Модель Двойная открывашка */
  KEYAPISDEVICEV1Device_ModelType_TnbDo2 = 7,

  /** Модель Beward DS86017CP */
  KEYAPISDEVICEV1Device_ModelType_BewardDs86017Cp = 8,

  /** Модель Beward DS85006MP */
  KEYAPISDEVICEV1Device_ModelType_BewardDs85006Mp = 9,

  /** Модель Dahua DHI-VTO2101E-P */
  KEYAPISDEVICEV1Device_ModelType_DahuaVto2101EP = 10,

  /** Модель Hikvision DS-KV8155-IM */
  KEYAPISDEVICEV1Device_ModelType_HikvisionDsKv8155Im = 11,

  /** Модель RODOS-8-2 */
  KEYAPISDEVICEV1Device_ModelType_Rodos82 = 12,

  /** Модель Akuvox R29C */
  KEYAPISDEVICEV1Device_ModelType_AkuvoxR29C = 13,

  /** Модель Safe-logic */
  KEYAPISDEVICEV1Device_ModelType_SafeLogic = 14,

  /** Модель Beward DS86006AP */
  KEYAPISDEVICEV1Device_ModelType_BewardDs86006Ap = 15,

  /** Модель Спутник Ио */
  KEYAPISDEVICEV1Device_ModelType_SputnikIo = 16,

  /** Модель Beward c FR */
  KEYAPISDEVICEV1Device_ModelType_BewardFr = 17,

  /** Модель QTECH с FR */
  KEYAPISDEVICEV1Device_ModelType_QtechFr = 18,

  /** Модель Eltex IPA-ER-10 */
  KEYAPISDEVICEV1Device_ModelType_EltexIpaEr010 = 19,

  /** Модель Beward с новым API ключей */
  KEYAPISDEVICEV1Device_ModelType_BewardMifare = 20,

  /** Модель BAS-IP AA-12FB */
  KEYAPISDEVICEV1Device_ModelType_BasIpAa12Fb = 21,

  /** Модель Akuvox X915S */
  KEYAPISDEVICEV1Device_ModelType_AkuvoxX915S = 22,

  /** Модель Rubetek RV-3434 */
  KEYAPISDEVICEV1Device_ModelType_RubetekRv3434 = 23,

  /** Модель Сокол плюс */
  KEYAPISDEVICEV1Device_ModelType_SokolPlus = 24,

  /** Модель Beward Эконом */
  KEYAPISDEVICEV1Device_ModelType_BewardLowCost = 25,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_ModelType_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 KEYAPISDEVICEV1Device_ModelType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Device_StatusType

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

  /** Не в сети */
  KEYAPISDEVICEV1Device_StatusType_Offline = 1,

  /** В сети */
  KEYAPISDEVICEV1Device_StatusType_Online = 2,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_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 KEYAPISDEVICEV1Device_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Device_SipTrunk_SipType

/**
 * Тип сети связи.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1Device_SipTrunk_SipType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1Device_SipTrunk_SipType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1Device_SipTrunk_SipType_SipTypeUnknown = 0,

  /** Тип Viprtual IP Multimedia Subsystem */
  KEYAPISDEVICEV1Device_SipTrunk_SipType_Vims = 1,

  /** Тип Next Generation Networks */
  KEYAPISDEVICEV1Device_SipTrunk_SipType_Ngn = 2,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_SipTrunk_SipType_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 KEYAPISDEVICEV1Device_SipTrunk_SipType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Device_Credentials_UserAccessType

/**
 * Тип доступа пользователя.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1Device_Credentials_UserAccessType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_UserAccessTypeUnknown = 0,

  /** Доступ к api */
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_Api = 1,

  /** Доступ к web-интерфейсу */
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_Web = 2,

  /** Доступ к rtsp-потоку */
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_Rtsp = 3,

  /** Полный доступ */
  KEYAPISDEVICEV1Device_Credentials_UserAccessType_Su = 4,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Device_Credentials_UserAccessType_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 KEYAPISDEVICEV1Device_Credentials_UserAccessType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType

/**
 * Тип конфигурации.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_ConfigurationTypeUnknown = 0,

  /** Пресет */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Preset = 1,

  /** Сип-аккаунт */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_SipAccount = 2,

  /** сип-номера в помещениях */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_SipRooms = 3,

  /** Калитка */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Gate = 4,

  /** Ключи */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Rfids = 5,

  /** Коды */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Codes = 6,

  /** Распознование лиц */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_FaceRecognition = 7,

  /** Консьерж */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Concierge = 8,

  /** Автосбор */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Autocollect = 9,

  /** Режим Sl3 */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_Sl3 = 10,

  /** Вызов экстренной службы */
  KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_EmergencyCall = 11,
};

GPBEnumDescriptor *KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_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 KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType

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

  /** Настроен */
  KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType_Success = 1,

  /** Ошибка */
  KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType_Error = 2,

  /** В ожидании обработки */
  KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType_Pending = 3,

  /** В процессе обработки */
  KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType_Processing = 4,
};

GPBEnumDescriptor *KEYAPISDEVICEV1DeviceConfigurationStatus_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 KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1CameraStatus_StatusType

/**
 * Статус камеры.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1CameraStatus_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.
   **/
  KEYAPISDEVICEV1CameraStatus_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1CameraStatus_StatusType_StatusTypeUnknown = 0,

  /** В процессе регистрации */
  KEYAPISDEVICEV1CameraStatus_StatusType_Processing = 1,

  /** Ошибка регистрации */
  KEYAPISDEVICEV1CameraStatus_StatusType_ProcessingError = 2,

  /** Активна */
  KEYAPISDEVICEV1CameraStatus_StatusType_Active = 3,
};

GPBEnumDescriptor *KEYAPISDEVICEV1CameraStatus_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 KEYAPISDEVICEV1CameraStatus_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1SyncStatus_StatusType

/**
 * Статус синхронизации.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1SyncStatus_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.
   **/
  KEYAPISDEVICEV1SyncStatus_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1SyncStatus_StatusType_StatusTypeUnknown = 0,

  /** Новый */
  KEYAPISDEVICEV1SyncStatus_StatusType_New = 1,

  /** В процессе */
  KEYAPISDEVICEV1SyncStatus_StatusType_Pending = 2,

  /** Ошибка */
  KEYAPISDEVICEV1SyncStatus_StatusType_Error = 3,

  /** Успешно */
  KEYAPISDEVICEV1SyncStatus_StatusType_Success = 4,

  /** Выключено */
  KEYAPISDEVICEV1SyncStatus_StatusType_Disabled = 5,
};

GPBEnumDescriptor *KEYAPISDEVICEV1SyncStatus_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 KEYAPISDEVICEV1SyncStatus_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DevicePaging_OrderByType

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

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

  /** По наименованию */
  KEYAPISDEVICEV1DevicePaging_OrderByType_Title = 2,

  /** По дате последней попытки синхронизации */
  KEYAPISDEVICEV1DevicePaging_OrderByType_SyncAt = 3,
};

GPBEnumDescriptor *KEYAPISDEVICEV1DevicePaging_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 KEYAPISDEVICEV1DevicePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DevicePaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISDEVICEV1DevicePaging_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 KEYAPISDEVICEV1DevicePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_OrderByType

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

  /** По идентификатору устройства */
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_OrderByType_DeviceId = 1,
};

GPBEnumDescriptor *KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_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 KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_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 KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Preset_StatusType

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

  /** Активный */
  KEYAPISDEVICEV1Preset_StatusType_Active = 1,

  /** Архивный */
  KEYAPISDEVICEV1Preset_StatusType_Archive = 2,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Preset_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 KEYAPISDEVICEV1Preset_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Preset_Syslog_ProtocolType

/**
 * Тип протокола.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Syslog_ProtocolType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1Preset_Syslog_ProtocolType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1Preset_Syslog_ProtocolType_ProtocolTypeUnknown = 0,

  /** Протокол UDP */
  KEYAPISDEVICEV1Preset_Syslog_ProtocolType_Udp = 1,

  /** Протокол TCP */
  KEYAPISDEVICEV1Preset_Syslog_ProtocolType_Tcp = 2,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Preset_Syslog_ProtocolType_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 KEYAPISDEVICEV1Preset_Syslog_ProtocolType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Preset_VideoConfig_QualityType

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

  /** Высокое качество */
  KEYAPISDEVICEV1Preset_VideoConfig_QualityType_High = 1,

  /** Среднее качество */
  KEYAPISDEVICEV1Preset_VideoConfig_QualityType_Medium = 2,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Preset_VideoConfig_QualityType_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 KEYAPISDEVICEV1Preset_VideoConfig_QualityType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType

/**
 * Тип конфигурации.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType) {
  /**
   * 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.
   **/
  KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType_ConfigurationTypeUnknown = 0,

  /** По умолчанию */
  KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType_Default = 1,
};

GPBEnumDescriptor *KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType_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 KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType_IsValidValue(int32_t value);

#pragma mark - KEYAPISDEVICEV1KeyapisDeviceDeviceV1Root

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

#pragma mark - KEYAPISDEVICEV1Device

typedef GPB_ENUM(KEYAPISDEVICEV1Device_FieldNumber) {
  KEYAPISDEVICEV1Device_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1Device_FieldNumber_PresetId = 2,
  KEYAPISDEVICEV1Device_FieldNumber_PresetStatusType = 3,
  KEYAPISDEVICEV1Device_FieldNumber_PresetConfiguredAt = 4,
  KEYAPISDEVICEV1Device_FieldNumber_IsSl3ModeEnabled = 5,
  KEYAPISDEVICEV1Device_FieldNumber_Type = 6,
  KEYAPISDEVICEV1Device_FieldNumber_MacAddress = 7,
  KEYAPISDEVICEV1Device_FieldNumber_Title = 8,
  KEYAPISDEVICEV1Device_FieldNumber_ModelType = 9,
  KEYAPISDEVICEV1Device_FieldNumber_OwnerCompanyId = 10,
  KEYAPISDEVICEV1Device_FieldNumber_SerialNumber = 11,
  KEYAPISDEVICEV1Device_FieldNumber_FlatgrammId = 12,
  KEYAPISDEVICEV1Device_FieldNumber_UtcOffset = 13,
  KEYAPISDEVICEV1Device_FieldNumber_StatusType = 14,
  KEYAPISDEVICEV1Device_FieldNumber_IpAddress = 15,
  KEYAPISDEVICEV1Device_FieldNumber_Port = 16,
  KEYAPISDEVICEV1Device_FieldNumber_SputnikCredentials = 17,
  KEYAPISDEVICEV1Device_FieldNumber_Location = 18,
  KEYAPISDEVICEV1Device_FieldNumber_CameraId = 19,
  KEYAPISDEVICEV1Device_FieldNumber_TagsArray = 20,
  KEYAPISDEVICEV1Device_FieldNumber_Settings = 21,
  KEYAPISDEVICEV1Device_FieldNumber_HardwareVersion = 22,
  KEYAPISDEVICEV1Device_FieldNumber_SoftwareVersion = 23,
  KEYAPISDEVICEV1Device_FieldNumber_Dispatching = 24,
  KEYAPISDEVICEV1Device_FieldNumber_SipTrunk = 25,
  KEYAPISDEVICEV1Device_FieldNumber_Redirect = 26,
  KEYAPISDEVICEV1Device_FieldNumber_AutochangePasswordSettings = 27,
  KEYAPISDEVICEV1Device_FieldNumber_CredentialsArray = 28,
  KEYAPISDEVICEV1Device_FieldNumber_SipAccount = 29,
  KEYAPISDEVICEV1Device_FieldNumber_SyncStatus = 30,
};

/**
 * Устройство.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device : GPBMessage

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

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

/**
 * Статус установки пресета.
 * # Поле вычисляется в коде приложения
 **/
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_PresetStatusType presetStatusType GPB_DEPRECATED_MSG("keyapis.device.v1.Device.preset_status_type is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");

/**
 * Дата установки пресета на устройство.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *presetConfiguredAt GPB_DEPRECATED_MSG("keyapis.device.v1.Device.preset_configured_at is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");
/** Test to see if @c presetConfiguredAt has been set. */
@property(nonatomic, readwrite) BOOL hasPresetConfiguredAt GPB_DEPRECATED_MSG("keyapis.device.v1.Device.preset_configured_at is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");

/** Настройка режима SL3 */
@property(nonatomic, readwrite) BOOL isSl3ModeEnabled GPB_DEPRECATED_MSG("keyapis.device.v1.Device.is_sl3_mode_enabled is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");

/** Тип назначения устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_Type type;

/**
 * MAC-адрес.
 * # Диапазон: 17..17.
 * # Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *macAddress;

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

/** Модель устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_ModelType modelType;

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

/**
 * Серийный номер.
 * # Диапазон: 1..16
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *serialNumber;

/**
 * Идентификатор квартирограммы.
 * # Диапазон: 1..2147483647
 **/
@property(nonatomic, readwrite) int32_t flatgrammId;

/**
 * Смещение таймзоны в минутах.
 * # Диапазон: -720..840
 **/
@property(nonatomic, readwrite) int32_t utcOffset;

/** Статус устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_StatusType statusType;

/**
 * Сетевой адрес.
 * # Диапазон: 0..250
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *ipAddress;
/** Test to see if @c ipAddress has been set. */
@property(nonatomic, readwrite) BOOL hasIpAddress;

/**
 * Сетевой порт.
 * # Диапазон: 0..65535
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *port;
/** Test to see if @c port has been set. */
@property(nonatomic, readwrite) BOOL hasPort;

/**
 * Учетные данные.
 * Используется для устройств с типом модели SPUTNIK_IO
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SputnikCredentials *sputnikCredentials;
/** Test to see if @c sputnikCredentials has been set. */
@property(nonatomic, readwrite) BOOL hasSputnikCredentials;

/** Координаты */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Location *location;
/** Test to see if @c location has been set. */
@property(nonatomic, readwrite) BOOL hasLocation;

/**
 * Идентификатор камеры uid.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *cameraId;
/** Test to see if @c cameraId has been set. */
@property(nonatomic, readwrite) BOOL hasCameraId;

/**
 * Список тегов устройства.
 * # Диапазон: 1..50
 **/
@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;

/** Настройки устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings *settings;
/** Test to see if @c settings has been set. */
@property(nonatomic, readwrite) BOOL hasSettings;

/** Версия аппаратного обеспенения */
@property(nonatomic, readwrite, copy, null_resettable) NSString *hardwareVersion;

/** Версия программного обеспенения */
@property(nonatomic, readwrite, copy, null_resettable) NSString *softwareVersion;

/** Диспетчеризации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Dispatching *dispatching;
/** Test to see if @c dispatching has been set. */
@property(nonatomic, readwrite) BOOL hasDispatching;

/** Транк */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SipTrunk *sipTrunk;
/** Test to see if @c sipTrunk has been set. */
@property(nonatomic, readwrite) BOOL hasSipTrunk;

/** Переадресация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Redirect *redirect;
/** Test to see if @c redirect has been set. */
@property(nonatomic, readwrite) BOOL hasRedirect;

/** Настройки автозамены пароля */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_AutochangePasswordSettings *autochangePasswordSettings;
/** Test to see if @c autochangePasswordSettings has been set. */
@property(nonatomic, readwrite) BOOL hasAutochangePasswordSettings;

/** Учетные данные пользователей */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISDEVICEV1Device_Credentials*> *credentialsArray;
/** The number of items in @c credentialsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger credentialsArray_Count;

/** Сип-аккаунт */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *sipAccount;
/** Test to see if @c sipAccount has been set. */
@property(nonatomic, readwrite) BOOL hasSipAccount;

/** Статус синхронизации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1SyncStatus *syncStatus;
/** Test to see if @c syncStatus has been set. */
@property(nonatomic, readwrite) BOOL hasSyncStatus;

@end

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

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

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

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

#pragma mark - KEYAPISDEVICEV1Device_SputnikCredentials

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SputnikCredentials_FieldNumber) {
  KEYAPISDEVICEV1Device_SputnikCredentials_FieldNumber_Login = 1,
  KEYAPISDEVICEV1Device_SputnikCredentials_FieldNumber_Password = 2,
};

/**
 * Учетные данные.
 * Используется для устройств с типом модели SPUTNIK_IO
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SputnikCredentials : GPBMessage

/**
 * Логин.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *login;

/**
 * Пароль.
 * На чтение выводится только для пользователя с типом service
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *password;
/** Test to see if @c password has been set. */
@property(nonatomic, readwrite) BOOL hasPassword;

@end

#pragma mark - KEYAPISDEVICEV1Device_Location

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Location_FieldNumber) {
  KEYAPISDEVICEV1Device_Location_FieldNumber_Latitude = 1,
  KEYAPISDEVICEV1Device_Location_FieldNumber_Longitude = 2,
};

/**
 * Координаты
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Location : GPBMessage

/** Широта */
@property(nonatomic, readwrite) float latitude;

/** Долгота */
@property(nonatomic, readwrite) float longitude;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_FieldNumber_CoordinateMatrixSwitch = 1,
  KEYAPISDEVICEV1Device_Settings_FieldNumber_ConciergeCall = 2,
  KEYAPISDEVICEV1Device_Settings_FieldNumber_Autocollect = 3,
  KEYAPISDEVICEV1Device_Settings_FieldNumber_FaceRecognition = 4,
  KEYAPISDEVICEV1Device_Settings_FieldNumber_Sl3Mode = 5,
  KEYAPISDEVICEV1Device_Settings_FieldNumber_EmergencyCall = 6,
};

/**
 * Настройки устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings : GPBMessage

/** Настройки ККМ */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch *coordinateMatrixSwitch;
/** Test to see if @c coordinateMatrixSwitch has been set. */
@property(nonatomic, readwrite) BOOL hasCoordinateMatrixSwitch;

/**
 * Настройки вызова консьержа.
 * Требуется капабилити CONCIERGE_CALL
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_ConciergeCall *conciergeCall;
/** Test to see if @c conciergeCall has been set. */
@property(nonatomic, readwrite) BOOL hasConciergeCall;

/** Настройки автосбора */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_Autocollect *autocollect;
/** Test to see if @c autocollect has been set. */
@property(nonatomic, readwrite) BOOL hasAutocollect;

/** Настройки распознования лиц */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_FaceRecognition *faceRecognition;
/** Test to see if @c faceRecognition has been set. */
@property(nonatomic, readwrite) BOOL hasFaceRecognition;

/** Настройки режима SL3 */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_Sl3Mode *sl3Mode;
/** Test to see if @c sl3Mode has been set. */
@property(nonatomic, readwrite) BOOL hasSl3Mode;

/**
 * Настройки вызова экстренной службы.
 * Только для устройств с CapabilityType=EMERGENCY_CALL
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Settings_EmergencyCall *emergencyCall;
/** Test to see if @c emergencyCall has been set. */
@property(nonatomic, readwrite) BOOL hasEmergencyCall;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch_FieldNumber_IsEnabled = 1,
};

/**
 * Настройки ККМ.
 * Коммутатор координатно-матричный (устройство для подключения аналоговых трубок к домофону)
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_CoordinateMatrixSwitch : GPBMessage

/** Состояние */
@property(nonatomic, readwrite) BOOL isEnabled;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_ConciergeCall

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_ConciergeCall_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_ConciergeCall_FieldNumber_IsEnabled = 1,
  KEYAPISDEVICEV1Device_Settings_ConciergeCall_FieldNumber_Orpon = 2,
  KEYAPISDEVICEV1Device_Settings_ConciergeCall_FieldNumber_RoomNumber = 3,
  KEYAPISDEVICEV1Device_Settings_ConciergeCall_FieldNumber_SipNumber = 4,
};

/**
 * Настройки вызова консьержа
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_ConciergeCall : GPBMessage

/** Статус настройки вызова консьержа */
@property(nonatomic, readwrite) BOOL isEnabled;

/** Идентификатор ОРПОН */
@property(nonatomic, readwrite) int64_t orpon;

/**
 * Номер квартиры.
 * # Диапазон: 1..5
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *roomNumber;

/** Номер сип-трубки */
@property(nonatomic, readwrite, copy, null_resettable) NSString *sipNumber;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_Autocollect

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_Autocollect_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_Autocollect_FieldNumber_IsEnabled = 1,
};

/**
 * Настройки автосбора
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_Autocollect : GPBMessage

/** Статус настройки автосбора */
@property(nonatomic, readwrite) BOOL isEnabled;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_FaceRecognition

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_FaceRecognition_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_FaceRecognition_FieldNumber_IsEnabled = 1,
};

/**
 * Настройки распознования лиц
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_FaceRecognition : GPBMessage

/** Статус настройки */
@property(nonatomic, readwrite) BOOL isEnabled;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_Sl3Mode

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_Sl3Mode_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_Sl3Mode_FieldNumber_IsEnabled = 1,
  KEYAPISDEVICEV1Device_Settings_Sl3Mode_FieldNumber_EncryptionProfileId = 2,
};

/**
 * Настройки режима SL3
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_Sl3Mode : GPBMessage

/** Статус настройки */
@property(nonatomic, readwrite) BOOL isEnabled;

/** Идентификатор профиля шифрования */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *encryptionProfileId;
/** Test to see if @c encryptionProfileId has been set. */
@property(nonatomic, readwrite) BOOL hasEncryptionProfileId;

@end

#pragma mark - KEYAPISDEVICEV1Device_Settings_EmergencyCall

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Settings_EmergencyCall_FieldNumber) {
  KEYAPISDEVICEV1Device_Settings_EmergencyCall_FieldNumber_IsCallAvailable = 1,
  KEYAPISDEVICEV1Device_Settings_EmergencyCall_FieldNumber_EmergencyNumber = 2,
};

/**
 * Настройки вызова экстренной службы.
 * Только для устройств с CapabilityType=EMERGENCY_CALL
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Settings_EmergencyCall : GPBMessage

/** Возможность вызова экстренной службы */
@property(nonatomic, readwrite) BOOL isCallAvailable;

/**
 * АБС-номер экстренной службы.
 * # Паттерн: /^\\+[1-9][0-9]{10}$/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *emergencyNumber;

@end

#pragma mark - KEYAPISDEVICEV1Device_Dispatching

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Dispatching_FieldNumber) {
  KEYAPISDEVICEV1Device_Dispatching_FieldNumber_IsEnabled = 1,
  KEYAPISDEVICEV1Device_Dispatching_FieldNumber_PublicIdentity = 2,
};

/**
 * Диспетчеризации
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Dispatching : GPBMessage

/** Статус настройки диспетчеризации */
@property(nonatomic, readwrite) BOOL isEnabled;

/**
 * Публичный номер.
 * # Паттерн: /^[1-9]\\d{3,7}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *publicIdentity;
/** Test to see if @c publicIdentity has been set. */
@property(nonatomic, readwrite) BOOL hasPublicIdentity;

@end

#pragma mark - KEYAPISDEVICEV1Device_SipTrunk

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SipTrunk_FieldNumber) {
  KEYAPISDEVICEV1Device_SipTrunk_FieldNumber_AbcNumber = 1,
  KEYAPISDEVICEV1Device_SipTrunk_FieldNumber_Host = 2,
  KEYAPISDEVICEV1Device_SipTrunk_FieldNumber_Port = 3,
  KEYAPISDEVICEV1Device_SipTrunk_FieldNumber_SipType = 4,
};

/**
 * Транк.
 * Параметры для соединения между устрйоством и телефонной сетью общего пользования.
 * Требуется капабилити SIP_CALLS
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SipTrunk : GPBMessage

/**
 * ABC-номер.
 * # Паттерн: /^(\\+7)(\\d{10})$/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *abcNumber;

/**
 * Хост.
 * # Диапазон: 0..250
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *host;
/** Test to see if @c host has been set. */
@property(nonatomic, readwrite) BOOL hasHost;

/**
 * Порт.
 * # Диапазон: 0..65535
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *port;
/** Test to see if @c port has been set. */
@property(nonatomic, readwrite) BOOL hasPort;

/** Тип сети связи */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_SipTrunk_SipType sipType;

@end

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

#pragma mark - KEYAPISDEVICEV1Device_Redirect

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Redirect_FieldNumber) {
  KEYAPISDEVICEV1Device_Redirect_FieldNumber_IsEnabledSip = 1,
  KEYAPISDEVICEV1Device_Redirect_FieldNumber_IsEnabledPhone = 2,
};

/**
 * Переадресация.
 * Требуется капабилити SIP_CALLS
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Redirect : GPBMessage

/** Переадресация на SIP */
@property(nonatomic, readwrite) BOOL isEnabledSip;

/** Переадресация на телефон */
@property(nonatomic, readwrite) BOOL isEnabledPhone;

@end

#pragma mark - KEYAPISDEVICEV1Device_AutochangePasswordSettings

typedef GPB_ENUM(KEYAPISDEVICEV1Device_AutochangePasswordSettings_FieldNumber) {
  KEYAPISDEVICEV1Device_AutochangePasswordSettings_FieldNumber_IsEnabled = 1,
};

/**
 * Настройки автозамены пароля
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_AutochangePasswordSettings : GPBMessage

/** Статус настройки автозамены пароля */
@property(nonatomic, readwrite) BOOL isEnabled;

@end

#pragma mark - KEYAPISDEVICEV1Device_Credentials

typedef GPB_ENUM(KEYAPISDEVICEV1Device_Credentials_FieldNumber) {
  KEYAPISDEVICEV1Device_Credentials_FieldNumber_Login = 1,
  KEYAPISDEVICEV1Device_Credentials_FieldNumber_Password = 2,
  KEYAPISDEVICEV1Device_Credentials_FieldNumber_UserAccessType = 3,
};

/**
 * Учетные данные пользователей
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_Credentials : GPBMessage

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

/**
 * Пароль.
 * # Диапазон: 0..100
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *password;
/** Test to see if @c password has been set. */
@property(nonatomic, readwrite) BOOL hasPassword;

/** Тип доступа пользователя */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_Credentials_UserAccessType userAccessType;

@end

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

#pragma mark - KEYAPISDEVICEV1Device_SavingError

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SavingError_FieldNumber) {
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_MacAddressInvalid = 1,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_SerialNumberInvalid = 2,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_NotAllowedForType = 3,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_NotAllowedForModel = 4,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_SerialNumberForModelIsExist = 5,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_MacAddressIsExist = 6,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_CapabilityIsNotSupported = 7,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_AbcNumberIsExistOnAnotherDevice = 8,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_PublicIdentityIsExist = 9,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_ConciergeRoomNotFound = 10,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_LoginIsExist = 11,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_CredentialsAreRequired = 12,
  KEYAPISDEVICEV1Device_SavingError_FieldNumber_FieldIsNotSupported = 13,
};

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase) {
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_MacAddressInvalid = 1,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_SerialNumberInvalid = 2,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_NotAllowedForType = 3,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_NotAllowedForModel = 4,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_SerialNumberForModelIsExist = 5,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_MacAddressIsExist = 6,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_CapabilityIsNotSupported = 7,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_AbcNumberIsExistOnAnotherDevice = 8,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_PublicIdentityIsExist = 9,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_ConciergeRoomNotFound = 10,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_LoginIsExist = 11,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_CredentialsAreRequired = 12,
  KEYAPISDEVICEV1Device_SavingError_Reason_OneOfCase_FieldIsNotSupported = 13,
};

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

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

/** Переданный мак-адрес не валидный */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_MacAddressInvalid *macAddressInvalid GPB_DEPRECATED_MSG("keyapis.device.v1.Device.SavingError.mac_address_invalid is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");

/** Переданный серийный номер не валидный */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_SerialNumberInvalid *serialNumberInvalid GPB_DEPRECATED_MSG("keyapis.device.v1.Device.SavingError.serial_number_invalid is deprecated (see keyapis/device/v1/keyapis_device_device_v1.proto).");

/** Нельзя изменить тип назначения девайса */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_NotAllowedForType *notAllowedForType;

/** Нельзя изменить модель девайса */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_NotAllowedForModel *notAllowedForModel;

/** Серийный номер для данной модели уже существует на платформе */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_SerialNumberForModelIsExist *serialNumberForModelIsExist;

/** MAC-адрес уже существует на платформе */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_MacAddressIsExist *macAddressIsExist;

/** Настройка не поддерживается */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported *capabilityIsNotSupported;

/** ABC-номер присвоен другому устройству */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice *abcNumberIsExistOnAnotherDevice;

/** Публичный номер уже существует на платформе */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_PublicIdentityIsExist *publicIdentityIsExist;

/** Не найдена квартира для консьержа */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_ConciergeRoomNotFound *conciergeRoomNotFound;

/** Логин уже существует на платформе */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_LoginIsExist *loginIsExist;

/** Отсутствуют реквизиты для модели "Спутник" */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_CredentialsAreRequired *credentialsAreRequired;

/** Переданное поле не поддерживается */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_SavingError_FieldIsNotSupported *fieldIsNotSupported;

@end

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

#pragma mark - KEYAPISDEVICEV1Device_SavingError_MacAddressInvalid

/**
 * Переданный мак-адрес не валидный
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_MacAddressInvalid : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_SerialNumberInvalid

/**
 * Переданный серийный номер не валидный
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_SerialNumberInvalid : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_NotAllowedForType

/**
 * Нельзя изменить тип назначения девайса
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_NotAllowedForType : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_NotAllowedForModel

/**
 * Нельзя изменить модель девайса
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_NotAllowedForModel : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_SerialNumberForModelIsExist

/**
 * Серийный номер для данной модели уже существует на платформе
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_SerialNumberForModelIsExist : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_MacAddressIsExist

/**
 * MAC-адрес уже существует на платформе
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_MacAddressIsExist : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported_FieldNumber) {
  KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported_FieldNumber_ModelCapabilityType = 1,
};

/**
 * Функциональность не поддерживается моделью устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_CapabilityIsNotSupported : GPBMessage

/** Возможность */
@property(nonatomic, readwrite) enum KEYAPISDEVICEV1Model_CapabilityType modelCapabilityType;

@end

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

#pragma mark - KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice

typedef GPB_ENUM(KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice_FieldNumber) {
  KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice_FieldNumber_DeviceId = 1,
};

/**
 * ABC-номер присвоен другому устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_AbcNumberIsExistOnAnotherDevice : GPBMessage

/** Идентификатор устройства на котором находится ABC-номер */
@property(nonatomic, readwrite) int32_t deviceId;

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_PublicIdentityIsExist

/**
 * Публичный номер уже существует на платформе
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_PublicIdentityIsExist : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_ConciergeRoomNotFound

/**
 * Не найдена квартира для консьержа
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_ConciergeRoomNotFound : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_LoginIsExist

/**
 * Логин уже существует на платформе
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_LoginIsExist : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_CredentialsAreRequired

/**
 * Отсутствуют реквизиты для модели "Спутник"
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_CredentialsAreRequired : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1Device_SavingError_FieldIsNotSupported

/**
 * Переданное поле не поддерживается
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Device_SavingError_FieldIsNotSupported : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1DeviceLite

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceLite_FieldNumber) {
  KEYAPISDEVICEV1DeviceLite_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1DeviceLite_FieldNumber_Type = 2,
  KEYAPISDEVICEV1DeviceLite_FieldNumber_Title = 3,
  KEYAPISDEVICEV1DeviceLite_FieldNumber_Location = 4,
  KEYAPISDEVICEV1DeviceLite_FieldNumber_StatusType = 5,
};

/**
 * Облегчённое устройство.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceLite : GPBMessage

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

/** Тип назначения устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_Type type;

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

/** Координаты */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device_Location *location;
/** Test to see if @c location has been set. */
@property(nonatomic, readwrite) BOOL hasLocation;

/** Статус устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_StatusType statusType;

@end

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

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

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatus

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_DeviceId = 2,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_ConfigurationType = 3,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_StatusType = 4,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_ConfiguredAt = 5,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_ErrorMessage = 6,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_RetryCount = 7,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_Payload = 8,
  KEYAPISDEVICEV1DeviceConfigurationStatus_FieldNumber_NextRetryAt = 9,
};

/**
 * Статус конфигурации устройства.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatus : GPBMessage

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

/** Идентификатор устройства */
@property(nonatomic, readwrite) int32_t deviceId;

/** Тип конфигурации */
@property(nonatomic, readwrite) KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType configurationType;

/** Статус конфигурации настройки устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType statusType;

/**
 * Дата последней конфигурации устройства.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *configuredAt;
/** Test to see if @c configuredAt has been set. */
@property(nonatomic, readwrite) BOOL hasConfiguredAt;

/** Текст ошибки */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *errorMessage;
/** Test to see if @c errorMessage has been set. */
@property(nonatomic, readwrite) BOOL hasErrorMessage;

/** Количество попыток */
@property(nonatomic, readwrite) int32_t retryCount;

/** Дополнительная полезная нагрузка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceConfigurationStatus_Payload *payload;
/** Test to see if @c payload has been set. */
@property(nonatomic, readwrite) BOOL hasPayload;

/**
 * Минимально возможная дата выполнения следующей попытки.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *nextRetryAt;
/** Test to see if @c nextRetryAt has been set. */
@property(nonatomic, readwrite) BOOL hasNextRetryAt;

@end

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

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

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatus_Payload

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_FieldNumber_Autocollect = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Attribute_OneOfCase) {
  KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Attribute_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Attribute_OneOfCase_Autocollect = 1,
};

/**
 * Дополнительная полезная нагрузка
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatus_Payload : GPBMessage

/** Атрибут */
@property(nonatomic, readonly) KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Attribute_OneOfCase attributeOneOfCase;

/** Автоколлект */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect *autocollect;

@end

/**
 * Clears whatever value was set for the oneof 'attribute'.
 **/
void KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_ClearAttributeOneOfCase(KEYAPISDEVICEV1DeviceConfigurationStatus_Payload *message);

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect_FieldNumber_EnabledAt = 1,
  KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect_FieldNumber_ToBeDisabledAt = 2,
};

/**
 * Автоколлект
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatus_Payload_Autocollect : GPBMessage

/**
 * Дата включения автосбора.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *enabledAt;
/** Test to see if @c enabledAt has been set. */
@property(nonatomic, readwrite) BOOL hasEnabledAt;

/**
 * Дата отключения автосбора.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *toBeDisabledAt;
/** Test to see if @c toBeDisabledAt has been set. */
@property(nonatomic, readwrite) BOOL hasToBeDisabledAt;

@end

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatusGrouped

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatusGrouped_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatusGrouped_FieldNumber_DeviceId = 1,
  KEYAPISDEVICEV1DeviceConfigurationStatusGrouped_FieldNumber_StatusesArray = 2,
};

/**
 * Сгруппированный по устройству список конфигураций
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatusGrouped : GPBMessage

/** Идентификатор устройства */
@property(nonatomic, readwrite) int32_t deviceId;

/** Список конфигураций */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISDEVICEV1DeviceConfigurationStatus*> *statusesArray;
/** The number of items in @c statusesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger statusesArray_Count;

@end

#pragma mark - KEYAPISDEVICEV1CameraStatus

typedef GPB_ENUM(KEYAPISDEVICEV1CameraStatus_FieldNumber) {
  KEYAPISDEVICEV1CameraStatus_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1CameraStatus_FieldNumber_StatusType = 2,
  KEYAPISDEVICEV1CameraStatus_FieldNumber_ErrorMessage = 3,
};

/**
 * Статус камеры.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISDEVICEV1CameraStatus : GPBMessage

/**
 * Идентификатор камеры uid.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *id_p;
/** Test to see if @c id_p has been set. */
@property(nonatomic, readwrite) BOOL hasId_p;

/** Статус камеры */
@property(nonatomic, readwrite) KEYAPISDEVICEV1CameraStatus_StatusType statusType;

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

@end

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

#pragma mark - KEYAPISDEVICEV1SyncStatus

typedef GPB_ENUM(KEYAPISDEVICEV1SyncStatus_FieldNumber) {
  KEYAPISDEVICEV1SyncStatus_FieldNumber_StatusType = 1,
  KEYAPISDEVICEV1SyncStatus_FieldNumber_ErrorMessage = 2,
  KEYAPISDEVICEV1SyncStatus_FieldNumber_RetryCount = 3,
  KEYAPISDEVICEV1SyncStatus_FieldNumber_SuccessfulAt = 4,
  KEYAPISDEVICEV1SyncStatus_FieldNumber_SyncAt = 5,
};

/**
 * Статус синхронизации.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISDEVICEV1SyncStatus : GPBMessage

/** Статус синхронизации */
@property(nonatomic, readwrite) KEYAPISDEVICEV1SyncStatus_StatusType statusType;

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

/** Количество попыток */
@property(nonatomic, readwrite) int32_t retryCount;

/**
 * Дата последней успешной синхронизации.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *successfulAt;
/** Test to see if @c successfulAt has been set. */
@property(nonatomic, readwrite) BOOL hasSuccessfulAt;

/**
 * Дата последней синхронизации.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *syncAt;
/** Test to see if @c syncAt has been set. */
@property(nonatomic, readwrite) BOOL hasSyncAt;

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceRequest_FieldNumber_Id_p = 1,
};

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

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

@end

#pragma mark - KEYAPISDEVICEV1GetDeviceResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device *data_p;

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceLiteRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceLiteRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceLiteRequest_FieldNumber_Id_p = 1,
};

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

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

@end

#pragma mark - KEYAPISDEVICEV1GetDeviceLiteResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceLiteResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceLiteResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceLiteResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceLiteResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceLiteResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceLite *data_p;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceRequest_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос на создание/изменение устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceRequest : GPBMessage

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceResponse_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1PostDeviceResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1PostDeviceResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос на создание/изменение устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceResponse : GPBMessage

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device *data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceResponse_Error_FieldNumber_Validation = 1,
  KEYAPISDEVICEV1PostDeviceResponse_Error_FieldNumber_Saving = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISDEVICEV1PostDeviceResponse_Error_Reason_OneOfCase_Saving = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceListRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceListRequest_FieldNumber_Filter = 1,
  KEYAPISDEVICEV1GetDeviceListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListRequest_Pagination_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceListRequest_Pagination_OneOfCase_Paging = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceListResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceListResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device *data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceListResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceListResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceCountRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceCountRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISDEVICEV1GetDeviceCountResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceCountResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceCountResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceCountResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Количество */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceCountResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceCountResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceCountResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceCountResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceCountResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceCountResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1PutDeviceRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PutDeviceRequest_FieldNumber) {
  KEYAPISDEVICEV1PutDeviceRequest_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1PutDeviceRequest_FieldNumber_PresetId = 2,
  KEYAPISDEVICEV1PutDeviceRequest_FieldNumber_IsSl3ModeEnabled = 3,
};

/**
 * Запрос изменения устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PutDeviceRequest : GPBMessage

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

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

/** Настройка режима SL3 */
@property(nonatomic, readwrite) BOOL isSl3ModeEnabled;

@end

#pragma mark - KEYAPISDEVICEV1PutDeviceResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PutDeviceResponse_FieldNumber) {
  KEYAPISDEVICEV1PutDeviceResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PutDeviceResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PutDeviceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PutDeviceResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * ответ на завпрос изменения устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PutDeviceResponse : GPBMessage

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Device *data_p;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceInstallPresetRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceInstallPresetRequest_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceInstallPresetRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос установки пресета на устройство
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceInstallPresetRequest : GPBMessage

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

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceInstallPresetResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceInstallPresetResponse_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Type_OneOfCase_Error = 1,
};

/**
 * Ответ на запрос установки пресета на устройство
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceInstallPresetResponse : GPBMessage

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

/** Ошибка при установке пресета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error *error;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_FieldNumber_PresetStatusIsProcessing = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_Reason_OneOfCase_PresetStatusIsProcessing = 1,
};

/**
 * Ошибка при установке пресета
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error : GPBMessage

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

/** Пресет в процессе установки */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_PresetStatusIsProcessing *presetStatusIsProcessing;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_PresetStatusIsProcessing

/**
 * Пресет в процессе установки
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceInstallPresetResponse_Error_PresetStatusIsProcessing : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber_Host = 2,
  KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber_MacAddress = 3,
  KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber_SerialNumber = 4,
  KEYAPISDEVICEV1PostDeviceReplaceRequest_FieldNumber_Login = 5,
};

/**
 * Запрос на замену устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceRequest : GPBMessage

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

/** Хост */
@property(nonatomic, readwrite, copy, null_resettable) NSString *host;

/**
 * MAC-адрес.
 * # Диапазон: 17..17.
 * # Паттерн: /^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *macAddress;

/** Серийный номер */
@property(nonatomic, readwrite, copy, null_resettable) NSString *serialNumber;

/** Логин (для модели спутник) */
@property(nonatomic, readwrite, copy, null_resettable) NSString *login;

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReplaceResponse_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReplaceResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReplaceResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Type_OneOfCase_Error = 1,
};

/**
 * Ответ на запрос на замену устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse : GPBMessage

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

/** Ошибка замены устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error *error;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_ValidationError = 1,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_HostExists = 2,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_MacAddressExists = 3,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_SerialNumberExists = 4,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_LoginExists = 5,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_LoginIsRequired = 6,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_FieldNumber_ReinstallError = 7,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_ValidationError = 1,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_HostExists = 2,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_MacAddressExists = 3,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_SerialNumberExists = 4,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_LoginExists = 5,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_LoginIsRequired = 6,
  KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_Reason_OneOfCase_ReinstallError = 7,
};

/**
 * Ошибка замены устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error : GPBMessage

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

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

/** На платформе уже существует устройство с таким хостом */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_HostExists *hostExists;

/** На платформе уже существует устройство с таким MAC-адресом */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_MacAddressExists *macAddressExists;

/** На платформе уже существует устройство с таким серийным номером */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_SerialNumberExists *serialNumberExists;

/** На платформе уже существует устройство с таким логином (для устройст модели "Спутник") */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginExists *loginExists;

/** Отсутствует поле Login для модели "Спутник" */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginIsRequired *loginIsRequired;

/** Ошибка реинстала */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1ReinstallError *reinstallError;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_HostExists

/**
 * На платформе уже существует устройство с таким хостом
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_HostExists : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_MacAddressExists

/**
 * На платформе уже существует устройство с таким MAC-адресом
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_MacAddressExists : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_SerialNumberExists

/**
 * На платформе уже существует устройство с таким серийным номером
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_SerialNumberExists : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginExists

/**
 * На платформе уже существует устройство с таким логином (для устройст модели "Спутник")
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginExists : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginIsRequired

/**
 * Отсутствует поле Login для модели "Спутник"
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReplaceResponse_Error_LoginIsRequired : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReconfigureRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReconfigureRequest_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReconfigureRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос на переконфигурирование устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReconfigureRequest : GPBMessage

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

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceReconfigureResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReconfigureResponse_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReconfigureResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Type_OneOfCase_Error = 1,
};

/**
 * Ответ на запрос на переконфигурирование устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReconfigureResponse : GPBMessage

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

/** Ошибка переконфигурирования устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error *error;

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_FieldNumber_ValidationError = 1,
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_FieldNumber_ReinstallError = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_Reason_OneOfCase_ValidationError = 1,
  KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error_Reason_OneOfCase_ReinstallError = 2,
};

/**
 * Ошибка переконфигурирования устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceReconfigureResponse_Error : GPBMessage

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

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

/** Ошибка реинстала */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1ReinstallError *reinstallError;

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusesRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesRequest_FieldNumber_Id_p = 1,
};

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

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

@end

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses *data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses_FieldNumber_DeviceConfigurationStatusesArray = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses_FieldNumber_CameraStatus = 2,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses_FieldNumber_SyncStatus = 3,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses_FieldNumber_DeviceStatusType = 4,
};

/**
 * Статусы
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Statuses : GPBMessage

/** Статусы конфигурации устройства */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISDEVICEV1DeviceConfigurationStatus*> *deviceConfigurationStatusesArray;
/** The number of items in @c deviceConfigurationStatusesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceConfigurationStatusesArray_Count;

/** Статус камеры */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1CameraStatus *cameraStatus;
/** Test to see if @c cameraStatus has been set. */
@property(nonatomic, readwrite) BOOL hasCameraStatus;

/** Статус синхронизации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1SyncStatus *syncStatus;
/** Test to see if @c syncStatus has been set. */
@property(nonatomic, readwrite) BOOL hasSyncStatus;

/** Статус устройства */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Device_StatusType deviceStatusType;

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error_FieldNumber_ValidationError = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error_Reason_OneOfCase_ValidationError = 1,
};

/**
 * Ошибка
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusesResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceConfigurationStatusRequest

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceConfigurationStatusRequest_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceConfigurationStatusRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос на изменение статуса конфигурации устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceConfigurationStatusRequest : GPBMessage

/** Статус конфигурации устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceConfigurationStatus *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос на изменение статуса конфигурации устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse : GPBMessage

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

/** Статус конфигурации устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceConfigurationStatus *data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса сохранения статуса конфигурации устройства
 **/
GPB_FINAL @interface KEYAPISDEVICEV1PostDeviceConfigurationStatusResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_FieldNumber_Filter = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_Pagination_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListRequest : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_FieldNumber_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения списка конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse : GPBMessage

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

/** Конфигурации устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1DeviceConfigurationStatusGrouped *data_p;

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error_Reason_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedListResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountRequest

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountRequest_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountRequest : GPBMessage

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

@end

#pragma mark - KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse_FieldNumber) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse_Type_OneOfCase) {
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения количества конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1GetDeviceConfigurationStatusGroupedCountResponse : GPBMessage

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

/** Количество */
@property(nonatomic, readwrite) int32_t data_p;

@end

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

#pragma mark - KEYAPISDEVICEV1DeleteDeviceRequest

typedef GPB_ENUM(KEYAPISDEVICEV1DeleteDeviceRequest_FieldNumber) {
  KEYAPISDEVICEV1DeleteDeviceRequest_FieldNumber_Id_p = 1,
};

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

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

@end

#pragma mark - KEYAPISDEVICEV1DeleteDeviceResponse

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

@end

#pragma mark - KEYAPISDEVICEV1ReinstallError

typedef GPB_ENUM(KEYAPISDEVICEV1ReinstallError_FieldNumber) {
  KEYAPISDEVICEV1ReinstallError_FieldNumber_SipLoginIsMissing = 1,
};

typedef GPB_ENUM(KEYAPISDEVICEV1ReinstallError_Reason_OneOfCase) {
  KEYAPISDEVICEV1ReinstallError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1ReinstallError_Reason_OneOfCase_SipLoginIsMissing = 1,
};

/**
 * Ошибки реинстала
 **/
GPB_FINAL @interface KEYAPISDEVICEV1ReinstallError : GPBMessage

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

/** Сип-логин отсутствует на устройстве */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1ReinstallError_SipLoginIsMissing *sipLoginIsMissing;

@end

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

#pragma mark - KEYAPISDEVICEV1ReinstallError_SipLoginIsMissing

/**
 * Сип-логин отсутствует на устройстве
 **/
GPB_FINAL @interface KEYAPISDEVICEV1ReinstallError_SipLoginIsMissing : GPBMessage

@end

#pragma mark - KEYAPISDEVICEV1DeviceFilter

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceFilter_FieldNumber) {
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_OwnerCompanyIdsArray = 1,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_Text = 2,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_FlatgrammIdsArray = 3,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_SerialNumbersArray = 4,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_DeviceStatusTypesArray = 5,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_DeviceTypesArray = 6,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_DeviceModelTypesArray = 7,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_IsConciergeEnabled = 8,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_IsDispatchingEnabled = 9,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_DispatchingPublicNumber = 10,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_HardwareVersion = 11,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_SoftwareVersion = 12,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_IsAutochangePasswordEnabled = 13,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_AbcNumberArray = 14,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_CameraIdsArray = 15,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_SyncStatusStatusTypesArray = 16,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_SyncRetryCountLessThen = 17,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_BeginSyncSuccessfulAt = 18,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_EndSyncSuccessfulAt = 19,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_BeginSyncAt = 20,
  KEYAPISDEVICEV1DeviceFilter_FieldNumber_EndSyncAt = 21,
};

/**
 * Фильтр устройств
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceFilter : GPBMessage

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

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

/** Идентификатор квартирограммы */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *flatgrammIdsArray;
/** The number of items in @c flatgrammIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger flatgrammIdsArray_Count;

/** Серийный номер */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *serialNumbersArray;
/** The number of items in @c serialNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger serialNumbersArray_Count;

/** Статус устройства */
// |deviceStatusTypesArray| contains |KEYAPISDEVICEV1Device_StatusType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *deviceStatusTypesArray;
/** The number of items in @c deviceStatusTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceStatusTypesArray_Count;

/** Тип назначения устройства */
// |deviceTypesArray| contains |KEYAPISDEVICEV1Device_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *deviceTypesArray;
/** The number of items in @c deviceTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceTypesArray_Count;

/** Модель устройства */
// |deviceModelTypesArray| contains |KEYAPISDEVICEV1Device_ModelType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *deviceModelTypesArray;
/** The number of items in @c deviceModelTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceModelTypesArray_Count;

/** Переадресация на консъержа */
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isConciergeEnabled;
/** Test to see if @c isConciergeEnabled has been set. */
@property(nonatomic, readwrite) BOOL hasIsConciergeEnabled;

/** Диспетчеризация */
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isDispatchingEnabled;
/** Test to see if @c isDispatchingEnabled has been set. */
@property(nonatomic, readwrite) BOOL hasIsDispatchingEnabled;

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

/**
 * Версия аппаратного обеспенения.
 * # Диапазон: 3..64
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *hardwareVersion;
/** Test to see if @c hardwareVersion has been set. */
@property(nonatomic, readwrite) BOOL hasHardwareVersion;

/**
 * Версия программного обеспенения.
 * # Диапазон: 3..64
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *softwareVersion;
/** Test to see if @c softwareVersion has been set. */
@property(nonatomic, readwrite) BOOL hasSoftwareVersion;

/** Автозамена пароля */
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isAutochangePasswordEnabled;
/** Test to see if @c isAutochangePasswordEnabled has been set. */
@property(nonatomic, readwrite) BOOL hasIsAutochangePasswordEnabled;

/** ABC-номер */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *abcNumberArray;
/** The number of items in @c abcNumberArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger abcNumberArray_Count;

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

/** Фильтр по статусу синхронизации (SyncStatus.status_type) */
// |syncStatusStatusTypesArray| contains |KEYAPISDEVICEV1SyncStatus_StatusType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *syncStatusStatusTypesArray;
/** The number of items in @c syncStatusStatusTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger syncStatusStatusTypesArray_Count;

/**
 * Пороговое значение количества попыток синхронизации.
 * Возвращает записи, у которых sync_retry_count меньше этого значения
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *syncRetryCountLessThen;
/** Test to see if @c syncRetryCountLessThen has been set. */
@property(nonatomic, readwrite) BOOL hasSyncRetryCountLessThen;

/** От даты успешной синхронизации включительно (>=) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beginSyncSuccessfulAt;
/** Test to see if @c beginSyncSuccessfulAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeginSyncSuccessfulAt;

/** До даты успешной синхронизации (<) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *endSyncSuccessfulAt;
/** Test to see if @c endSyncSuccessfulAt has been set. */
@property(nonatomic, readwrite) BOOL hasEndSyncSuccessfulAt;

/** От даты синхронизации включительно (>=) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beginSyncAt;
/** Test to see if @c beginSyncAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeginSyncAt;

/** До даты синхронизации (<) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *endSyncAt;
/** Test to see if @c endSyncAt has been set. */
@property(nonatomic, readwrite) BOOL hasEndSyncAt;

@end

#pragma mark - KEYAPISDEVICEV1DevicePaging

typedef GPB_ENUM(KEYAPISDEVICEV1DevicePaging_FieldNumber) {
  KEYAPISDEVICEV1DevicePaging_FieldNumber_OrderByType = 1,
  KEYAPISDEVICEV1DevicePaging_FieldNumber_DirectionType = 2,
  KEYAPISDEVICEV1DevicePaging_FieldNumber_Limit = 3,
  KEYAPISDEVICEV1DevicePaging_FieldNumber_Offset = 4,
};

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

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

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

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

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber_DeviceIdsArray = 1,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber_ConfigurationTypesArray = 2,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber_StatusTypesArray = 3,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber_IsReadyForRetry = 4,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter_FieldNumber_RetryCountLessThen = 5,
};

/**
 * Фильтр конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatusGroupedFilter : GPBMessage

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

/** По типам конфигурации */
// |configurationTypesArray| contains |KEYAPISDEVICEV1DeviceConfigurationStatus_ConfigurationType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *configurationTypesArray;
/** The number of items in @c configurationTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger configurationTypesArray_Count;

/** По статусам конфигурации настройки */
// |statusTypesArray| contains |KEYAPISDEVICEV1DeviceConfigurationStatus_StatusType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *statusTypesArray;
/** The number of items in @c statusTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger statusTypesArray_Count;

/**
 * Флаг, указывающий на готовность настройки к конфигурированию.
 * Значение next_retry_at меньше текущей даты
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBBoolValue *isReadyForRetry;
/** Test to see if @c isReadyForRetry has been set. */
@property(nonatomic, readwrite) BOOL hasIsReadyForRetry;

/**
 * Пороговое значение количества попыток.
 * Возвращает записи, у которых retry_count меньше этого значения
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *retryCountLessThen;
/** Test to see if @c retryCountLessThen has been set. */
@property(nonatomic, readwrite) BOOL hasRetryCountLessThen;

@end

#pragma mark - KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging

typedef GPB_ENUM(KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_FieldNumber) {
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_FieldNumber_OrderByType = 1,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_FieldNumber_DirectionType = 2,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_FieldNumber_Limit = 3,
  KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging_FieldNumber_Offset = 4,
};

/**
 * Постраничный вывод конфигураций сгруппированных по устройству
 **/
GPB_FINAL @interface KEYAPISDEVICEV1DeviceConfigurationStatusGroupedPaging : GPBMessage

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

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

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

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

@end

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

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

#pragma mark - KEYAPISDEVICEV1ValidationError

typedef GPB_ENUM(KEYAPISDEVICEV1ValidationError_FieldNumber) {
  KEYAPISDEVICEV1ValidationError_FieldNumber_Path = 1,
  KEYAPISDEVICEV1ValidationError_FieldNumber_Message = 2,
};

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

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

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

@end

#pragma mark - KEYAPISDEVICEV1Preset

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_FieldNumber) {
  KEYAPISDEVICEV1Preset_FieldNumber_Id_p = 1,
  KEYAPISDEVICEV1Preset_FieldNumber_Title = 2,
  KEYAPISDEVICEV1Preset_FieldNumber_MrfIdsArray = 3,
  KEYAPISDEVICEV1Preset_FieldNumber_RfIdsArray = 4,
  KEYAPISDEVICEV1Preset_FieldNumber_Description_p = 5,
  KEYAPISDEVICEV1Preset_FieldNumber_CreatedAt = 6,
  KEYAPISDEVICEV1Preset_FieldNumber_ChangedAt = 7,
  KEYAPISDEVICEV1Preset_FieldNumber_StatusType = 8,
  KEYAPISDEVICEV1Preset_FieldNumber_Sip = 9,
  KEYAPISDEVICEV1Preset_FieldNumber_Ntp = 10,
  KEYAPISDEVICEV1Preset_FieldNumber_Syslog = 11,
  KEYAPISDEVICEV1Preset_FieldNumber_RoomsArray = 12,
  KEYAPISDEVICEV1Preset_FieldNumber_VideoConfig = 13,
  KEYAPISDEVICEV1Preset_FieldNumber_DtmfArray = 14,
  KEYAPISDEVICEV1Preset_FieldNumber_FaceRecognition = 15,
};

/**
 * Пресет.
 * Пресет с id=1 устанавливается при создании устройства по умолчанию
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset : GPBMessage

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

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

/**
 * Идентификатор МРФ.
 * # Диапазон: 0..10
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *mrfIdsArray;
/** The number of items in @c mrfIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger mrfIdsArray_Count;

/**
 * Идентификатор РФ.
 * # Диапазон: 0..100
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *rfIdsArray;
/** The number of items in @c rfIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger rfIdsArray_Count;

/**
 * Описание.
 * # Диапазон: 3..1024
 **/
@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;

/**
 * Дата и время создания.
 * # Тип: 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;

/** Статус */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Preset_StatusType statusType;

/** Параметр SIP */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_Sip *sip;
/** Test to see if @c sip has been set. */
@property(nonatomic, readwrite) BOOL hasSip;

/** Параметр NTP */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_Ntp *ntp;
/** Test to see if @c ntp has been set. */
@property(nonatomic, readwrite) BOOL hasNtp;

/** Параметр Syslog */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_Syslog *syslog;
/** Test to see if @c syslog has been set. */
@property(nonatomic, readwrite) BOOL hasSyslog;

/**
 * Помещения.
 * # Диапазон: 0..10000
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISDEVICEV1Preset_Room*> *roomsArray;
/** The number of items in @c roomsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger roomsArray_Count;

/** Параметры конфигурации видео */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_VideoConfig *videoConfig;
/** Test to see if @c videoConfig has been set. */
@property(nonatomic, readwrite) BOOL hasVideoConfig;

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

/** Распознование лиц */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_FaceRecognition *faceRecognition;
/** Test to see if @c faceRecognition has been set. */
@property(nonatomic, readwrite) BOOL hasFaceRecognition;

@end

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

#pragma mark - KEYAPISDEVICEV1Preset_Sip

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Sip_FieldNumber) {
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_Host = 1,
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_Port = 2,
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_RegHost = 3,
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_RegPort = 4,
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_ProxyHost = 5,
  KEYAPISDEVICEV1Preset_Sip_FieldNumber_ProxyPort = 6,
};

/**
 * Параметр SIP
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_Sip : GPBMessage

/**
 * Хост.
 * # Диапазон: 5..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *host;

/**
 * Порт.
 * # Диапазон: 1..65536
 **/
@property(nonatomic, readwrite) int32_t port;

/**
 * Хост reg.
 * # Диапазон: 5..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *regHost;

/**
 * Порт reg.
 * # Диапазон: 1..65536
 **/
@property(nonatomic, readwrite) int32_t regPort;

/**
 * Хост proxy.
 * # Диапазон: 5..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *proxyHost;

/**
 * Порт proxy.
 * # Диапазон: 1..65536
 **/
@property(nonatomic, readwrite) int32_t proxyPort;

@end

#pragma mark - KEYAPISDEVICEV1Preset_Ntp

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Ntp_FieldNumber) {
  KEYAPISDEVICEV1Preset_Ntp_FieldNumber_Host = 1,
  KEYAPISDEVICEV1Preset_Ntp_FieldNumber_Port = 2,
};

/**
 * Параметр NTP
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_Ntp : GPBMessage

/**
 * Хост.
 * # Диапазон: 5..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *host;

/**
 * Порт.
 * # Диапазон: 1..65536
 **/
@property(nonatomic, readwrite) int32_t port;

@end

#pragma mark - KEYAPISDEVICEV1Preset_Syslog

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Syslog_FieldNumber) {
  KEYAPISDEVICEV1Preset_Syslog_FieldNumber_Host = 1,
  KEYAPISDEVICEV1Preset_Syslog_FieldNumber_Port = 2,
  KEYAPISDEVICEV1Preset_Syslog_FieldNumber_ProtocolType = 3,
};

/**
 * Параметр Syslog
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_Syslog : GPBMessage

/**
 * Хост.
 * # Диапазон: 5..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *host;

/**
 * Порт.
 * # Диапазон: 1..65536
 **/
@property(nonatomic, readwrite) int32_t port;

/** Протокол */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Preset_Syslog_ProtocolType protocolType;

@end

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

#pragma mark - KEYAPISDEVICEV1Preset_Room

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Room_FieldNumber) {
  KEYAPISDEVICEV1Preset_Room_FieldNumber_Phone = 1,
  KEYAPISDEVICEV1Preset_Room_FieldNumber_Num = 2,
};

/**
 * Помещение
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_Room : GPBMessage

/**
 * Номер телефона.
 * # Диапазон: 5..14
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *phone;

/**
 * Номер помещения.
 * # Диапазон: 1..10000
 **/
@property(nonatomic, readwrite) int32_t num;

@end

#pragma mark - KEYAPISDEVICEV1Preset_VideoConfig

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_VideoConfig_FieldNumber) {
  KEYAPISDEVICEV1Preset_VideoConfig_FieldNumber_QualityType = 1,
  KEYAPISDEVICEV1Preset_VideoConfig_FieldNumber_RtspUser = 2,
};

/**
 * Параметры конфигурации видео
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_VideoConfig : GPBMessage

/** Тип пресета */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Preset_VideoConfig_QualityType qualityType;

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

@end

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

#pragma mark - KEYAPISDEVICEV1Preset_VideoConfig_RtspUser

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_VideoConfig_RtspUser_FieldNumber) {
  KEYAPISDEVICEV1Preset_VideoConfig_RtspUser_FieldNumber_Username = 1,
  KEYAPISDEVICEV1Preset_VideoConfig_RtspUser_FieldNumber_Password = 2,
};

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

/**
 * Имя пользователя.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *username;

/**
 * Пароль.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *password;

@end

#pragma mark - KEYAPISDEVICEV1Preset_Dtmf

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_Dtmf_FieldNumber) {
  KEYAPISDEVICEV1Preset_Dtmf_FieldNumber_Code = 1,
  KEYAPISDEVICEV1Preset_Dtmf_FieldNumber_RelayIndex = 2,
};

/**
 * Параметр DTMF
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_Dtmf : GPBMessage

/**
 * Код.
 * # Диапазон: 1..1
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *code;

/**
 * Индекс реле.
 * # Диапазон: 0..64
 **/
@property(nonatomic, readwrite) int32_t relayIndex;

@end

#pragma mark - KEYAPISDEVICEV1Preset_FaceRecognition

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber) {
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_Host = 1,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_AltHost = 2,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_Endpoint = 3,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_AuthToken = 4,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_ConfigurationType = 5,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_OriginId = 6,
  KEYAPISDEVICEV1Preset_FaceRecognition_FieldNumber_GroupIdsArray = 7,
};

/**
 * Распознование лиц
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_FaceRecognition : GPBMessage

/** Адрес */
@property(nonatomic, readwrite, copy, null_resettable) NSString *host;

/** Альтернативный адрес */
@property(nonatomic, readwrite, copy, null_resettable) NSString *altHost;

/** Путь запроса к серверу */
@property(nonatomic, readwrite, copy, null_resettable) NSString *endpoint;

/** Токен */
@property(nonatomic, readwrite, copy, null_resettable) NSString *authToken;

/** Тип конфигурации */
@property(nonatomic, readwrite) KEYAPISDEVICEV1Preset_FaceRecognition_ConfigurationType configurationType;

/** Идентификатор источника в identix */
@property(nonatomic, readwrite, copy, null_resettable) NSString *originId;

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

@end

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

#pragma mark - KEYAPISDEVICEV1Preset_SavingError

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_SavingError_FieldNumber) {
  KEYAPISDEVICEV1Preset_SavingError_FieldNumber_Conflict = 1,
  KEYAPISDEVICEV1Preset_SavingError_FieldNumber_NotAllowedForDefault = 2,
};

typedef GPB_ENUM(KEYAPISDEVICEV1Preset_SavingError_Reason_OneOfCase) {
  KEYAPISDEVICEV1Preset_SavingError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISDEVICEV1Preset_SavingError_Reason_OneOfCase_Conflict = 1,
  KEYAPISDEVICEV1Preset_SavingError_Reason_OneOfCase_NotAllowedForDefault = 2,
};

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

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

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

/** Запрещено для дефолтного пресета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISDEVICEV1Preset_SavingError_NotAllowedForDefault *notAllowedForDefault;

@end

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

#pragma mark - KEYAPISDEVICEV1Preset_SavingError_Conflict

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

@end

#pragma mark - KEYAPISDEVICEV1Preset_SavingError_NotAllowedForDefault

/**
 * Недоступно для дефолтного пресета.
 * Причины:
 * - Смена статуса на Архивный
 **/
GPB_FINAL @interface KEYAPISDEVICEV1Preset_SavingError_NotAllowedForDefault : GPBMessage

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
