// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/access_control/v1/keyapis_access_control_entrance_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 KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error;
@class KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_LinkedDevicesExists;
@class KEYAPISACCESSCONTROLV1Entrance;
@class KEYAPISACCESSCONTROLV1EntranceDevice;
@class KEYAPISACCESSCONTROLV1EntranceDeviceFilter;
@class KEYAPISACCESSCONTROLV1EntranceDevicePaging;
@class KEYAPISACCESSCONTROLV1EntranceFilter;
@class KEYAPISACCESSCONTROLV1EntrancePaging;
@class KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error;
@class KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error;
@class KEYAPISACCESSCONTROLV1PostEntranceResponse_Error;
@class KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error;
@class KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error;
@class KEYAPISACCESSCONTROLV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType

/** Справочник типов связи компании с подъездами */
typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType) {
  /**
   * 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.
   **/
  KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_CompanyRelationTypeUnknown = 0,

  /** Значение по умолчанию */
  KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_Default = 1,

  /** Управляющая компания владеет квартирограммой */
  KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_Management = 2,

  /** Домофонная компания обслуживает квартирограмму */
  KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_DeviceService = 3,
};

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_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 KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntrancePaging_OrderByType

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

  /** По ОРПОНу и номеру подъезда */
  KEYAPISACCESSCONTROLV1EntrancePaging_OrderByType_OrponThenEntranceNumber = 1,
};

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntrancePaging_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 KEYAPISACCESSCONTROLV1EntrancePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntrancePaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntrancePaging_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 KEYAPISACCESSCONTROLV1EntrancePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntranceDevice_RelationType

/** Тип связки */
typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceDevice_RelationType) {
  /**
   * 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.
   **/
  KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_RelationTypeUnknown = 0,

  /** Полная связь */
  KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_Full = 1,

  /** Частичная связь */
  KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_Partial = 2,
};

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_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 KEYAPISACCESSCONTROLV1EntranceDevice_RelationType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntranceDevicePaging_OrderByType

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

  /** По ОРПОНу и номеру подъезда */
  KEYAPISACCESSCONTROLV1EntranceDevicePaging_OrderByType_OrponThenEntranceNumber = 1,

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

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntranceDevicePaging_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 KEYAPISACCESSCONTROLV1EntranceDevicePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISACCESSCONTROLV1EntranceDevicePaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISACCESSCONTROLV1EntranceDevicePaging_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 KEYAPISACCESSCONTROLV1EntranceDevicePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISACCESSCONTROLV1KeyapisAccessControlEntranceV1Root

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

#pragma mark - KEYAPISACCESSCONTROLV1Entrance

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1Entrance_FieldNumber) {
  KEYAPISACCESSCONTROLV1Entrance_FieldNumber_Orpon = 1,
  KEYAPISACCESSCONTROLV1Entrance_FieldNumber_EntranceNumber = 2,
  KEYAPISACCESSCONTROLV1Entrance_FieldNumber_StartRoomNumber = 3,
  KEYAPISACCESSCONTROLV1Entrance_FieldNumber_RoomsCountPerFloor = 4,
  KEYAPISACCESSCONTROLV1Entrance_FieldNumber_FloorsCount = 5,
};

/**
 * Подъезд
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1Entrance : GPBMessage

/** ОРПОН дома */
@property(nonatomic, readwrite) int64_t orpon;

/**
 * Номер подъезда.
 * # Диапазон: 1..100
 **/
@property(nonatomic, readwrite) int32_t entranceNumber;

/**
 * Номер начального помещения.
 * # Диапазон: 1..9999
 **/
@property(nonatomic, readwrite) int32_t startRoomNumber;

/**
 * Количество помещений на этаже.
 * # Диапазон: 1..1000
 **/
@property(nonatomic, readwrite) int32_t roomsCountPerFloor;

/**
 * Количество этажей.
 * # Диапазон: 1..100
 **/
@property(nonatomic, readwrite) int32_t floorsCount;

@end

#pragma mark - KEYAPISACCESSCONTROLV1EntranceFilter

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceFilter_FieldNumber) {
  KEYAPISACCESSCONTROLV1EntranceFilter_FieldNumber_FlatgrammIdsArray = 1,
  KEYAPISACCESSCONTROLV1EntranceFilter_FieldNumber_OrponsArray = 2,
  KEYAPISACCESSCONTROLV1EntranceFilter_FieldNumber_CompanyIdsArray = 3,
  KEYAPISACCESSCONTROLV1EntranceFilter_FieldNumber_CompanyRelationType = 4,
};

/**
 * Фильтр подъездов
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1EntranceFilter : GPBMessage

/** По идентификаторам квартирограмм */
@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) GPBInt64Array *orponsArray;
/** The number of items in @c orponsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger orponsArray_Count;

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

/** Тип связи компании с подъездами */
@property(nonatomic, readwrite) KEYAPISACCESSCONTROLV1EntranceFilter_CompanyRelationType companyRelationType;

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1EntrancePaging

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntrancePaging_FieldNumber) {
  KEYAPISACCESSCONTROLV1EntrancePaging_FieldNumber_OrderByType = 1,
  KEYAPISACCESSCONTROLV1EntrancePaging_FieldNumber_DirectionType = 2,
  KEYAPISACCESSCONTROLV1EntrancePaging_FieldNumber_Limit = 3,
  KEYAPISACCESSCONTROLV1EntrancePaging_FieldNumber_Offset = 4,
};

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

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

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

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceListRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceListRequest_FieldNumber_Filter = 1,
  KEYAPISACCESSCONTROLV1GetEntranceListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListRequest_Pagination_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка подъездов
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1GetEntranceListRequest : GPBMessage

/** Фильтр по подъездам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1EntranceFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceListResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Подъезд */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1Entrance *data_p;

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachRequest_FieldNumber_EntranceDevice = 1,
};

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

/** Связь подъезда и устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1EntranceDevice *entranceDevice;
/** Test to see if @c entranceDevice has been set. */
@property(nonatomic, readwrite) BOOL hasEntranceDevice;

@end

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Type_OneOfCase_Error = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PutEntranceDeviceAttachResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachRequest_FieldNumber_EntranceDevice = 1,
};

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

/** Связь подъезда и устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1EntranceDevice *entranceDevice;
/** Test to see if @c entranceDevice has been set. */
@property(nonatomic, readwrite) BOOL hasEntranceDevice;

@end

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Type_OneOfCase_Error = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PutEntranceDeviceDetachResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PostEntranceRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PostEntranceRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1PostEntranceRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1PostEntranceRequest : GPBMessage

/** Подъезд */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1Entrance *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISACCESSCONTROLV1PostEntranceResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PostEntranceResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1PostEntranceResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSCONTROLV1PostEntranceResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PostEntranceResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос сохранения подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1PostEntranceResponse : GPBMessage

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

/** Подъезд */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1Entrance *data_p;

/** Ошибка при удалении */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1PostEntranceResponse_Error *error;

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1PostEntranceResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PostEntranceResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1PostEntranceResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1PostEntranceResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка сохранения подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1PostEntranceResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1DeleteEntranceRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1DeleteEntranceRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1DeleteEntranceRequest_FieldNumber_Orpon = 1,
  KEYAPISACCESSCONTROLV1DeleteEntranceRequest_FieldNumber_EntranceNumber = 2,
};

/**
 * Запрос на удаление подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1DeleteEntranceRequest : GPBMessage

/** ОРПОН дома */
@property(nonatomic, readwrite) int64_t orpon;

/**
 * Номер подъезда.
 * # Диапазон: 1..100
 **/
@property(nonatomic, readwrite) int32_t entranceNumber;

@end

#pragma mark - KEYAPISACCESSCONTROLV1DeleteEntranceResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1DeleteEntranceResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_FieldNumber_Error = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Type_OneOfCase_Error = 1,
};

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

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

/** Ошибка при удалении */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error *error;

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_FieldNumber_Validation = 1,
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_FieldNumber_LinkedDevicesExists = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_Reason_OneOfCase_LinkedDevicesExists = 2,
};

/**
 * Ошибка удаления подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error : GPBMessage

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

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

/** Существуют связанные устройства */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_LinkedDevicesExists *linkedDevicesExists;

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_LinkedDevicesExists

/**
 * Существуют устройства, связанные с квартирами данного подъезда.
 * Следует отвязать устройства перед удалением подъезда
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1DeleteEntranceResponse_Error_LinkedDevicesExists : GPBMessage

@end

#pragma mark - KEYAPISACCESSCONTROLV1EntranceDevice

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceDevice_FieldNumber) {
  KEYAPISACCESSCONTROLV1EntranceDevice_FieldNumber_Orpon = 1,
  KEYAPISACCESSCONTROLV1EntranceDevice_FieldNumber_EntranceNumber = 2,
  KEYAPISACCESSCONTROLV1EntranceDevice_FieldNumber_DeviceId = 3,
  KEYAPISACCESSCONTROLV1EntranceDevice_FieldNumber_RelationType = 4,
};

/**
 * Связка подъезда и устройства.
 * Реализуется через связь всех помещений в подъезде и устройства
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1EntranceDevice : GPBMessage

/** ОРПОН дома */
@property(nonatomic, readwrite) int64_t orpon;

/**
 * Номер подъезда.
 * # Диапазон: 1..100
 **/
@property(nonatomic, readwrite) int32_t entranceNumber;

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

/**
 * Тип связки.
 * Игнорируется в методах создания и удаления связи
 **/
@property(nonatomic, readwrite) KEYAPISACCESSCONTROLV1EntranceDevice_RelationType relationType;

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1EntranceDeviceFilter

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceDeviceFilter_FieldNumber) {
  KEYAPISACCESSCONTROLV1EntranceDeviceFilter_FieldNumber_FlatgrammIdsArray = 1,
  KEYAPISACCESSCONTROLV1EntranceDeviceFilter_FieldNumber_OrponsArray = 2,
  KEYAPISACCESSCONTROLV1EntranceDeviceFilter_FieldNumber_EntranceNumbersArray = 3,
  KEYAPISACCESSCONTROLV1EntranceDeviceFilter_FieldNumber_DeviceIdsArray = 4,
};

/**
 * Фильтр связок подъезд-устройство
 **/
GPB_FINAL @interface KEYAPISACCESSCONTROLV1EntranceDeviceFilter : GPBMessage

/** По идентификаторам квартирограмм */
@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) GPBInt64Array *orponsArray;
/** The number of items in @c orponsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger orponsArray_Count;

/** По номерам подъезда */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *entranceNumbersArray;
/** The number of items in @c entranceNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger entranceNumbersArray_Count;

/** По идентификаторам привязанных устройств */
@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;

@end

#pragma mark - KEYAPISACCESSCONTROLV1EntranceDevicePaging

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1EntranceDevicePaging_FieldNumber) {
  KEYAPISACCESSCONTROLV1EntranceDevicePaging_FieldNumber_OrderByType = 1,
  KEYAPISACCESSCONTROLV1EntranceDevicePaging_FieldNumber_DirectionType = 2,
  KEYAPISACCESSCONTROLV1EntranceDevicePaging_FieldNumber_Limit = 3,
  KEYAPISACCESSCONTROLV1EntranceDevicePaging_FieldNumber_Offset = 4,
};

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

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

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

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_FieldNumber_Filter = 1,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_Pagination_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListRequest_Pagination_OneOfCase_Paging = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_FieldNumber_Data_p = 1,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Type_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Связка подъезд-устройство */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISACCESSCONTROLV1EntranceDevice *data_p;

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

@end

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

#pragma mark - KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error_FieldNumber) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error_Reason_OneOfCase) {
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISACCESSCONTROLV1GetEntranceDeviceListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
