// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/telemetry_control/v1/keyapis_telemetry_control_metric_point_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 KEYAPISTELEMETRYCONTROLV1Device_MetricPoint;
@class KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1MetricPointFilter;
@class KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1MetricPointPaging;
@class KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError;
@class KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_LimitInvalid;
@class KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_OffsetInvalid;
@class KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error;
@class KEYAPISTELEMETRYCONTROLV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointPaging_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.
   **/
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_OrderByTypeUnknown = 0,

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

  /** По типу энергоресурса */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_MetricType = 2,

  /** По типу статуса */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_StatusType = 3,

  /** По Номеру помещения */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_RoomNumber = 4,

  /** По Лейблу помещения */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_RoomLabel = 5,

  /** По идентификатору объекта строительства */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_BuildingId = 6,
};

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1MetricPointPaging_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 KEYAPISTELEMETRYCONTROLV1MetricPointPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISTELEMETRYCONTROLV1MetricPointPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointPaging_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.
   **/
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_DirectionType_DirectionTypeUnknown = 0,

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

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

GPBEnumDescriptor *KEYAPISTELEMETRYCONTROLV1MetricPointPaging_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 KEYAPISTELEMETRYCONTROLV1MetricPointPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISTELEMETRYCONTROLV1KeyapisTelemetryControlMetricPointV1Root

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения ТУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1GetMetricPointRequest : GPBMessage

/** Идентификатор ТУ */
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Точка учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device_MetricPoint *data_p;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_FieldNumber_Filter = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_Pagination_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListRequest_Pagination_OneOfCase_Paging = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointPaging

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointPaging_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_FieldNumber_OrderByType = 1,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_FieldNumber_DirectionType = 2,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_FieldNumber_Limit = 3,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1MetricPointPaging : GPBMessage

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

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

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

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

@end

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

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

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

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

/** Количество передано некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_LimitInvalid *limit;

/** Сдвиг передан некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_OffsetInvalid *offset;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_LimitInvalid

/**
 * Причины:
 * - Значение количества < 0 или > 100
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_LimitInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_OffsetInvalid

/**
 * Причины:
 * - Значение сдвига < 0
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError_OffsetInvalid : GPBMessage

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointFilter

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_DeviceMetricPointMetricTypesArray = 1,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_DeviceMetricPointStatusTypesArray = 2,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_RoomNumbersArray = 3,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_RoomLabelsArray = 4,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_BuildingIdsArray = 5,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_FiasIdsArray = 6,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_DeviceIdsArray = 7,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_DeviceSerialNumbersArray = 8,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_FieldNumber_OrponsArray = 9,
};

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

/** По типу энергоресурса */
// |deviceMetricPointMetricTypesArray| contains |KEYAPISTELEMETRYCONTROLV1Device_MetricPoint_MetricType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *deviceMetricPointMetricTypesArray;
/** The number of items in @c deviceMetricPointMetricTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceMetricPointMetricTypesArray_Count;

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

/** По Номеру помещения */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *roomNumbersArray;
/** The number of items in @c roomNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger roomNumbersArray_Count;

/** По Лейблу помещения */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *roomLabelsArray;
/** The number of items in @c roomLabelsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger roomLabelsArray_Count;

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

/** По ФИАС */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *fiasIdsArray;
/** The number of items in @c fiasIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger fiasIdsArray_Count;

/** По ID привязанных через индикаторы ПУ */
@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;

/** По серийным номерам привязанных через индикаторы ПУ */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *deviceSerialNumbersArray;
/** The number of items in @c deviceSerialNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger deviceSerialNumbersArray_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;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError_FieldNumber_Message = 2,
};

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

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

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

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Точка учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device_MetricPoint *data_p;

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_FieldNumber_MetricPointFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_FieldNumber_MetricPointPagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_Reason_OneOfCase_MetricPointFilterValidation = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointListResponse_Error_Reason_OneOfCase_MetricPointPagingValidation = 2,
};

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

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

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError *metricPointFilterValidation;

/** Ошибка пагинации  по страницам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1MetricPointPaging_ValidationError *metricPointPagingValidation;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointCountRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointCountRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Всего ТУ */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error_FieldNumber_MetricPointFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1GetMetricPointCountResponse_Error_Reason_OneOfCase_MetricPointFilterValidation = 1,
};

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

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

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1MetricPointFilter_ValidationError *metricPointFilterValidation;

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostMetricPointRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostMetricPointRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostMetricPointRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения ТУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostMetricPointRequest : GPBMessage

/** Точка учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device_MetricPoint *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_FieldNumber_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Type_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос сохранения ТУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse : GPBMessage

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

/** Точка учета */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISTELEMETRYCONTROLV1Device_MetricPoint *data_p;

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error_Reason_OneOfCase) {
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса сохранения ТУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1PostMetricPointResponse_Error : GPBMessage

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

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

@end

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

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteMetricPointRequest

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1DeleteMetricPointRequest_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1DeleteMetricPointRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос удаления ТУ
 **/
GPB_FINAL @interface KEYAPISTELEMETRYCONTROLV1DeleteMetricPointRequest : GPBMessage

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

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1DeleteMetricPointResponse

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

@end

#pragma mark - KEYAPISTELEMETRYCONTROLV1ValidationError

typedef GPB_ENUM(KEYAPISTELEMETRYCONTROLV1ValidationError_FieldNumber) {
  KEYAPISTELEMETRYCONTROLV1ValidationError_FieldNumber_Path = 1,
  KEYAPISTELEMETRYCONTROLV1ValidationError_FieldNumber_Message = 2,
};

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

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

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

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
