// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/banner/v1/keyapis_banner_banner_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 KEYAPISBANNERV1Banner;
@class KEYAPISBANNERV1BannerFilter;
@class KEYAPISBANNERV1BannerLite;
@class KEYAPISBANNERV1BannerLiteFilter;
@class KEYAPISBANNERV1BannerLite_ImageLite;
@class KEYAPISBANNERV1BannerLite_LinkLite;
@class KEYAPISBANNERV1BannerPaging;
@class KEYAPISBANNERV1Banner_Gradient;
@class KEYAPISBANNERV1Banner_Gradient_Linear;
@class KEYAPISBANNERV1Banner_Gradient_Linear_Point;
@class KEYAPISBANNERV1Banner_Image;
@class KEYAPISBANNERV1Banner_Link;
@class KEYAPISBANNERV1Banner_SavingError;
@class KEYAPISBANNERV1Banner_SavingError_Conflict;
@class KEYAPISBANNERV1GetBannerCountResponse_Error;
@class KEYAPISBANNERV1GetBannerListResponse_Error;
@class KEYAPISBANNERV1GetBannerLiteListResponse_Error;
@class KEYAPISBANNERV1GetBannerLiteResponse_Error;
@class KEYAPISBANNERV1GetBannerResponse_Error;
@class KEYAPISBANNERV1PostBannerResponse_Error;
@class KEYAPISBANNERV1PostBannerUploadImageResponse_Error;
@class KEYAPISBANNERV1UploadImage;
@class KEYAPISBANNERV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISBANNERV1Banner_Type

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

  /** Стандартный баннер */
  KEYAPISBANNERV1Banner_Type_Standard = 1,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_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 KEYAPISBANNERV1Banner_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1Banner_PriorityType

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

  /**
   * Обычный.
   * Приоритет 31.
   * Вычисляется в логике приложения как priority меньше 64.
   * Извлекаются из базы по фильтру end_priority = 64
   **/
  KEYAPISBANNERV1Banner_PriorityType_Normal = 1,

  /**
   * Вайт-лейбл.
   * Приоритет 127.
   * Вычисляется в логике приложения как priority больше или равно 64 и priority меньше 160.
   * Извлекаются из базы по фильтру begin_priority = 64 и end_priority = 160
   **/
  KEYAPISBANNERV1Banner_PriorityType_WhiteLabel = 2,

  /**
   * Критикл.
   * Приоритет 191.
   * Вычисляется в логике приложения как priority больше или равно 160.
   * Извлекаются из базы по фильтру begin_priority = 160
   **/
  KEYAPISBANNERV1Banner_PriorityType_Critical = 3,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_PriorityType_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 KEYAPISBANNERV1Banner_PriorityType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1Banner_StatusType

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

  /**
   * Отложен.
   * Вычисляется в логике приложения как сurr_date меньше show_start_at.
   * Извлекаются из базы по фильтру end_show_start_at = сurr_date
   **/
  KEYAPISBANNERV1Banner_StatusType_Deferred = 1,

  /**
   * Активен.
   * Вычисляется в логике приложения как сurr_date больше или равно show_start_at и сurr_date меньше show_ended_at.
   * Извлекаются из базы по фильтру begin_show_start_at = сurr_date и end_show_ended_at = сurr_date
   **/
  KEYAPISBANNERV1Banner_StatusType_Active = 2,

  /**
   * Истёк.
   * Вычисляется в логике приложения как сurr_date больше или равно show_ended_at.
   * Извлекаются из базы по фильтру begin_show_ended_at = сurr_date
   **/
  KEYAPISBANNERV1Banner_StatusType_Expired = 3,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_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 KEYAPISBANNERV1Banner_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1Banner_PlatformType

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

  /**
   * Платформа iOS.
   * Приложение размещается в App Store
   **/
  KEYAPISBANNERV1Banner_PlatformType_Ios = 1,

  /**
   * Платформа Android.
   * Приложение размещается в Google Play, App Gallery или прочих сторах
   **/
  KEYAPISBANNERV1Banner_PlatformType_Android = 2,

  /**
   * Платформа Web.
   * Приложение размещается по интернет адресу
   **/
  KEYAPISBANNERV1Banner_PlatformType_Web = 3,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_PlatformType_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 KEYAPISBANNERV1Banner_PlatformType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1Banner_Image_Type

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

  /**
   * Пререндеренный баннер в портретном режиме.
   * В портретном режиме ширина меньше или равна высоте.
   * Представление характерно для телефонов.
   * Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
   * После загрузки изображения отрисовывается поверх цвета и градиента.
   * Если ссылки нет то нужно использовать ссылку из ландшафтного режима
   **/
  KEYAPISBANNERV1Banner_Image_Type_Portrait = 1,

  /**
   * Пререндеренный баннер в ландшафтном режиме.
   * В ландшафтном режиме ширина больше высоты.
   * Представление характерно для планшетов и декстопа.
   * Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
   * После загрузки изображения отрисовывается поверх цвета и градиента.
   * Если ссылки нет то нужно использовать ссылку из портретного режима
   **/
  KEYAPISBANNERV1Banner_Image_Type_Landscape = 2,

  /**
   * Иконка.
   * Может содержать дополнительные параметры запроса в ссылке(https://docs.imgproxy.net/generating_the_url?id=processing-options).
   * После загрузки изображения отрисовывается поверх цвета и градиента
   **/
  KEYAPISBANNERV1Banner_Image_Type_Icon = 3,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_Image_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 KEYAPISBANNERV1Banner_Image_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1Banner_Link_Type

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

  /** Ссылка для перехода на раздел текущего приложения */
  KEYAPISBANNERV1Banner_Link_Type_InternalApp = 1,

  /** Ссылка для перехода на стороннее приложение */
  KEYAPISBANNERV1Banner_Link_Type_ExternalApp = 2,

  /**
   * Ссылка для перехода на веб-вью внутренних (своих) приложений.
   * В окне отсутствует адресаная строка.
   * Для iOS используется WKWebView, для Android используется WebView
   **/
  KEYAPISBANNERV1Banner_Link_Type_WebView = 3,

  /** Ссылка для перехода на веб-браузер */
  KEYAPISBANNERV1Banner_Link_Type_WebBrowser = 4,

  /**
   * Ссылка для перехода на веб-вью внешних (партнёрских) приложений.
   * В окне присутствует адресаная строка.
   * Для iOS используется SFSafariViewController, для Android используется ChromeCustomTabs
   **/
  KEYAPISBANNERV1Banner_Link_Type_ExternalWebView = 5,
};

GPBEnumDescriptor *KEYAPISBANNERV1Banner_Link_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 KEYAPISBANNERV1Banner_Link_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1BannerPaging_OrderByType

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

  /** Дата последнего изменения */
  KEYAPISBANNERV1BannerPaging_OrderByType_ChangedAt = 1,

  /** По приоритету, затем по дате начала показа */
  KEYAPISBANNERV1BannerPaging_OrderByType_PriorityThenShowStartAt = 2,

  /** Дата создания */
  KEYAPISBANNERV1BannerPaging_OrderByType_CreatedAt = 3,

  /** Дата начала показа */
  KEYAPISBANNERV1BannerPaging_OrderByType_ShowStartAt = 4,

  /** Дата конца показа */
  KEYAPISBANNERV1BannerPaging_OrderByType_ShowEndedAt = 5,

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

GPBEnumDescriptor *KEYAPISBANNERV1BannerPaging_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 KEYAPISBANNERV1BannerPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISBANNERV1BannerPaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISBANNERV1BannerPaging_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 KEYAPISBANNERV1BannerPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISBANNERV1KeyapisBannerBannerV1Root

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

#pragma mark - KEYAPISBANNERV1Banner

typedef GPB_ENUM(KEYAPISBANNERV1Banner_FieldNumber) {
  KEYAPISBANNERV1Banner_FieldNumber_Id_p = 1,
  KEYAPISBANNERV1Banner_FieldNumber_Type = 2,
  KEYAPISBANNERV1Banner_FieldNumber_Priority = 3,
  KEYAPISBANNERV1Banner_FieldNumber_PriorityType = 4,
  KEYAPISBANNERV1Banner_FieldNumber_Title = 5,
  KEYAPISBANNERV1Banner_FieldNumber_Header = 6,
  KEYAPISBANNERV1Banner_FieldNumber_HeaderColor = 7,
  KEYAPISBANNERV1Banner_FieldNumber_Subtitle = 8,
  KEYAPISBANNERV1Banner_FieldNumber_SubtitleColor = 9,
  KEYAPISBANNERV1Banner_FieldNumber_BackgroundColor = 10,
  KEYAPISBANNERV1Banner_FieldNumber_BackgroundGradient = 11,
  KEYAPISBANNERV1Banner_FieldNumber_RepeatAfterDays = 12,
  KEYAPISBANNERV1Banner_FieldNumber_ShowStartAt = 13,
  KEYAPISBANNERV1Banner_FieldNumber_ShowEndedAt = 14,
  KEYAPISBANNERV1Banner_FieldNumber_StatusType = 15,
  KEYAPISBANNERV1Banner_FieldNumber_ImagesArray = 16,
  KEYAPISBANNERV1Banner_FieldNumber_LinksArray = 17,
  KEYAPISBANNERV1Banner_FieldNumber_UserTagsArray = 18,
  KEYAPISBANNERV1Banner_FieldNumber_AppTagsArray = 19,
  KEYAPISBANNERV1Banner_FieldNumber_CreatedAt = 20,
  KEYAPISBANNERV1Banner_FieldNumber_ChangedAt = 21,
};

/**
 * Баннер.
 * # Описание модели
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner : GPBMessage

/**
 * Идентификатор.
 * Если не передан создаётся сервером.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

/**
 * Тип баннера.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_Type type;

/**
 * Приоритет.
 * Обязательное.
 * # Диапазон: 1..255
 **/
@property(nonatomic, readwrite) int32_t priority;

/**
 * Тип приоритета.
 * # Поле вычисляется в коде приложения
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_PriorityType priorityType;

/**
 * Название.
 * Обязательное.
 * Обычно это название рекламной компании.
 * Не отображается пользователям.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/**
 * Заголовок.
 * # Диапазон: 3..64
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *header;
/** Test to see if @c header has been set. */
@property(nonatomic, readwrite) BOOL hasHeader;

/**
 * Цвет текста заголовка.
 * Все цвета должны быть в формате hex #RRGGBBAA.
 * Пример: #7e00c380.
 * # Диапазон: 9..9.
 * # Паттерн: /^#[0-9a-fA-F]{8}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *headerColor;
/** Test to see if @c headerColor has been set. */
@property(nonatomic, readwrite) BOOL hasHeaderColor;

/**
 * Подзаголовок.
 * # Диапазон: 3..256
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *subtitle;
/** Test to see if @c subtitle has been set. */
@property(nonatomic, readwrite) BOOL hasSubtitle;

/**
 * Цвет текста подзаголовка.
 * Все цвета должны быть в формате hex #RRGGBBAA.
 * Пример: #7e00c380.
 * # Диапазон: 9..9.
 * # Паттерн: /^#[0-9a-fA-F]{8}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *subtitleColor;
/** Test to see if @c subtitleColor has been set. */
@property(nonatomic, readwrite) BOOL hasSubtitleColor;

/**
 * Цвет заднего плана(подложки).
 * Отрисовывается до загрузки картинки и градиента.
 * Все цвета должны быть в формате hex #RRGGBBAA.
 * Пример: #7e00c380.
 * # Диапазон: 9..9.
 * # Паттерн: /^#[0-9a-fA-F]{8}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *backgroundColor;
/** Test to see if @c backgroundColor has been set. */
@property(nonatomic, readwrite) BOOL hasBackgroundColor;

/** Градиент */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner_Gradient *backgroundGradient;
/** Test to see if @c backgroundGradient has been set. */
@property(nonatomic, readwrite) BOOL hasBackgroundGradient;

/**
 * Количество дней через которое можно повторно показать баннер.
 * Если null, то закрыть нельзя, баннер повторно выводится каждый раз.
 * # Диапазон: 0..366
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *repeatAfterDays;
/** Test to see if @c repeatAfterDays has been set. */
@property(nonatomic, readwrite) BOOL hasRepeatAfterDays;

/**
 * Дата начала показа.
 * Обязательное.
 * Бессрочно если значение 2000-01-01.
 * # Тип: DateOnly.
 * # Диапазон: 730119..1095362
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *showStartAt;
/** Test to see if @c showStartAt has been set. */
@property(nonatomic, readwrite) BOOL hasShowStartAt;

/**
 * Дата конца показа.
 * Обязательное.
 * Бессрочно если значение 3000-01-01.
 * # Тип: DateOnly.
 * # Диапазон: 730119..1095362
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *showEndedAt;
/** Test to see if @c showEndedAt has been set. */
@property(nonatomic, readwrite) BOOL hasShowEndedAt;

/**
 * Статус баннера.
 * # Поле вычисляется в коде приложения
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_StatusType statusType;

/**
 * Картинки.
 * # Диапазон: 0..20
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISBANNERV1Banner_Image*> *imagesArray;
/** The number of items in @c imagesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger imagesArray_Count;

/**
 * Ссылки для переходов.
 * # Диапазон: 0..100
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISBANNERV1Banner_Link*> *linksArray;
/** The number of items in @c linksArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger linksArray_Count;

/**
 * Список тегов пользователей.
 * Обязательное.
 * Описывает кто может видеть баннер.
 * Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
 * # Диапазон: 1..100.
 * # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *userTagsArray;
/** The number of items in @c userTagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userTagsArray_Count;

/**
 * Список тегов приложений.
 * Обязательное.
 * Описывает какие клиенты могут видеть баннер.
 * Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
 * # Диапазон: 1..20.
 * # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *appTagsArray;
/** The number of items in @c appTagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger appTagsArray_Count;

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

@end

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

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

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

#pragma mark - KEYAPISBANNERV1Banner_Gradient

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Gradient_FieldNumber) {
  KEYAPISBANNERV1Banner_Gradient_FieldNumber_Linear = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Gradient_Type_OneOfCase) {
  KEYAPISBANNERV1Banner_Gradient_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1Banner_Gradient_Type_OneOfCase_Linear = 1,
};

/**
 * Градиент
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner_Gradient : GPBMessage

/** Тип градиента */
@property(nonatomic, readonly) KEYAPISBANNERV1Banner_Gradient_Type_OneOfCase typeOneOfCase;

/** Линейный градиент */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner_Gradient_Linear *linear;

@end

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

#pragma mark - KEYAPISBANNERV1Banner_Gradient_Linear

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Gradient_Linear_FieldNumber) {
  KEYAPISBANNERV1Banner_Gradient_Linear_FieldNumber_Angle = 1,
  KEYAPISBANNERV1Banner_Gradient_Linear_FieldNumber_PointsArray = 2,
};

/**
 * Линейный градиент
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner_Gradient_Linear : GPBMessage

/**
 * Угол направления линейного градиента в градусах.
 * # Диапазон: 0..360
 **/
@property(nonatomic, readwrite) float angle;

/**
 * Точки градиента.
 * Обязательное.
 * # Диапазон: 2..20
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISBANNERV1Banner_Gradient_Linear_Point*> *pointsArray;
/** The number of items in @c pointsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger pointsArray_Count;

@end

#pragma mark - KEYAPISBANNERV1Banner_Gradient_Linear_Point

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Gradient_Linear_Point_FieldNumber) {
  KEYAPISBANNERV1Banner_Gradient_Linear_Point_FieldNumber_Color = 1,
  KEYAPISBANNERV1Banner_Gradient_Linear_Point_FieldNumber_Stop = 2,
};

/**
 * Точка
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner_Gradient_Linear_Point : GPBMessage

/**
 * Цвет линейного градиента.
 * Обязательное.
 * Отрисовывается до загрузки картинки и градиента.
 * Все цвета должны быть в формате hex #RRGGBBAA.
 * Пример: #7e00c380.
 * # Диапазон: 9..9.
 * # Паттерн: /^#[0-9a-fA-F]{8}$/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *color;

/**
 * Стоп линейного градиента.
 * Записывается в процентах.
 * # Диапазон: 0..100
 **/
@property(nonatomic, readwrite) float stop;

@end

#pragma mark - KEYAPISBANNERV1Banner_Image

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Image_FieldNumber) {
  KEYAPISBANNERV1Banner_Image_FieldNumber_Type = 1,
  KEYAPISBANNERV1Banner_Image_FieldNumber_URL = 2,
};

/**
 * Объект картинки
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner_Image : GPBMessage

/**
 * Тип картинки.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_Image_Type type;

/**
 * Значение ссылки на картинку.
 * Обязательное.
 * # Диапазон: 12..512
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *URL;

@end

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

#pragma mark - KEYAPISBANNERV1Banner_Link

typedef GPB_ENUM(KEYAPISBANNERV1Banner_Link_FieldNumber) {
  KEYAPISBANNERV1Banner_Link_FieldNumber_PlatformType = 1,
  KEYAPISBANNERV1Banner_Link_FieldNumber_Type = 2,
  KEYAPISBANNERV1Banner_Link_FieldNumber_URL = 3,
  KEYAPISBANNERV1Banner_Link_FieldNumber_PackagesArray = 4,
};

/**
 * Ссылка
 **/
GPB_FINAL @interface KEYAPISBANNERV1Banner_Link : GPBMessage

/**
 * Тип платформы.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_PlatformType platformType;

/**
 * Тип ссылки.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_Link_Type type;

/**
 * Значение ссылки для перехода.
 * Обязательное.
 * # Диапазон: 12..512
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *URL;

/**
 * Список пакетов.
 * Если пусто попытка перехода осуществляется безусловно.
 * Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве, иначе обработка переходит к следующей ссылке.
 * # Диапазон: 0..20
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *packagesArray;
/** The number of items in @c packagesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger packagesArray_Count;

@end

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

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

#pragma mark - KEYAPISBANNERV1Banner_SavingError

typedef GPB_ENUM(KEYAPISBANNERV1Banner_SavingError_FieldNumber) {
  KEYAPISBANNERV1Banner_SavingError_FieldNumber_Conflict = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1Banner_SavingError_Reason_OneOfCase) {
  KEYAPISBANNERV1Banner_SavingError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1Banner_SavingError_Reason_OneOfCase_Conflict = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1Banner_SavingError_Conflict

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

@end

#pragma mark - KEYAPISBANNERV1BannerLite

typedef GPB_ENUM(KEYAPISBANNERV1BannerLite_FieldNumber) {
  KEYAPISBANNERV1BannerLite_FieldNumber_Id_p = 1,
  KEYAPISBANNERV1BannerLite_FieldNumber_RepeatAfterDays = 2,
  KEYAPISBANNERV1BannerLite_FieldNumber_ImagesArray = 3,
  KEYAPISBANNERV1BannerLite_FieldNumber_LinksArray = 4,
};

/**
 * Облегчённый баннер
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerLite : GPBMessage

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

/**
 * Количество дней через которое можно повторно показать баннер.
 * Если Значение не указано то повторного показа баннера не будет
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *repeatAfterDays;
/** Test to see if @c repeatAfterDays has been set. */
@property(nonatomic, readwrite) BOOL hasRepeatAfterDays;

/** Картинки */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISBANNERV1BannerLite_ImageLite*> *imagesArray;
/** The number of items in @c imagesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger imagesArray_Count;

/**
 * Ссылки для переходов.
 * Возвращаются отфильтрованные по платформе
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISBANNERV1BannerLite_LinkLite*> *linksArray;
/** The number of items in @c linksArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger linksArray_Count;

@end

#pragma mark - KEYAPISBANNERV1BannerLite_ImageLite

typedef GPB_ENUM(KEYAPISBANNERV1BannerLite_ImageLite_FieldNumber) {
  KEYAPISBANNERV1BannerLite_ImageLite_FieldNumber_Type = 1,
  KEYAPISBANNERV1BannerLite_ImageLite_FieldNumber_URL = 2,
};

/**
 * Упрощённый объект картинки
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerLite_ImageLite : GPBMessage

/**
 * Тип картинки.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_Image_Type type;

/**
 * Значение ссылки на картинку.
 * Обязательное
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *URL;

@end

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

#pragma mark - KEYAPISBANNERV1BannerLite_LinkLite

typedef GPB_ENUM(KEYAPISBANNERV1BannerLite_LinkLite_FieldNumber) {
  KEYAPISBANNERV1BannerLite_LinkLite_FieldNumber_Type = 1,
  KEYAPISBANNERV1BannerLite_LinkLite_FieldNumber_URL = 2,
  KEYAPISBANNERV1BannerLite_LinkLite_FieldNumber_PackagesArray = 3,
  KEYAPISBANNERV1BannerLite_LinkLite_FieldNumber_PlatformType = 4,
};

/**
 * Упрощённая ссылка
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerLite_LinkLite : GPBMessage

/**
 * Тип ссылки.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_Link_Type type;

/**
 * Значение ссылки.
 * Обязательное
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *URL;

/**
 * Список пакетов.
 * Если пусто попытка перехода осуществляется безусловно.
 * Если заполнено, то переход осуществляется только в случае если хоть один пакет есть на устройстве иначе обработка переходит к следующей ссылке
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *packagesArray;
/** The number of items in @c packagesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger packagesArray_Count;

/**
 * Тип платформы.
 * Обязательное
 **/
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_PlatformType platformType;

@end

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

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

#pragma mark - KEYAPISBANNERV1BannerFilter

typedef GPB_ENUM(KEYAPISBANNERV1BannerFilter_FieldNumber) {
  KEYAPISBANNERV1BannerFilter_FieldNumber_Text = 1,
  KEYAPISBANNERV1BannerFilter_FieldNumber_TypesArray = 2,
  KEYAPISBANNERV1BannerFilter_FieldNumber_BeginPriority = 3,
  KEYAPISBANNERV1BannerFilter_FieldNumber_EndPriority = 4,
  KEYAPISBANNERV1BannerFilter_FieldNumber_PriorityTypesArray = 5,
  KEYAPISBANNERV1BannerFilter_FieldNumber_BeginShowStartAt = 6,
  KEYAPISBANNERV1BannerFilter_FieldNumber_EndShowStartAt = 7,
  KEYAPISBANNERV1BannerFilter_FieldNumber_BeginShowEndedAt = 8,
  KEYAPISBANNERV1BannerFilter_FieldNumber_EndShowEndedAt = 9,
  KEYAPISBANNERV1BannerFilter_FieldNumber_StatusTypesArray = 10,
  KEYAPISBANNERV1BannerFilter_FieldNumber_UserTagsArray = 11,
  KEYAPISBANNERV1BannerFilter_FieldNumber_AppTagsArray = 12,
};

/**
 * Фильтр баннеров
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerFilter : GPBMessage

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

/** По типам баннеров */
// |typesArray| contains |KEYAPISBANNERV1Banner_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *typesArray;
/** The number of items in @c typesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger typesArray_Count;

/** От приоритета включительно (больше или равно) */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *beginPriority;
/** Test to see if @c beginPriority has been set. */
@property(nonatomic, readwrite) BOOL hasBeginPriority;

/** До приоритета (меньше) */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *endPriority;
/** Test to see if @c endPriority has been set. */
@property(nonatomic, readwrite) BOOL hasEndPriority;

/**
 * По типам приоритетов.
 * Переписывает значения фильтров по приоритету.
 * Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
 **/
// |priorityTypesArray| contains |KEYAPISBANNERV1Banner_PriorityType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *priorityTypesArray;
/** The number of items in @c priorityTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger priorityTypesArray_Count;

/** От даты начала показа включительно (больше или равно) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beginShowStartAt;
/** Test to see if @c beginShowStartAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeginShowStartAt;

/** До даты начала показа (меньше) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *endShowStartAt;
/** Test to see if @c endShowStartAt has been set. */
@property(nonatomic, readwrite) BOOL hasEndShowStartAt;

/** От даты конца показа включительно (больше или равно) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *beginShowEndedAt;
/** Test to see if @c beginShowEndedAt has been set. */
@property(nonatomic, readwrite) BOOL hasBeginShowEndedAt;

/** До даты конца показа (меньше) */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *endShowEndedAt;
/** Test to see if @c endShowEndedAt has been set. */
@property(nonatomic, readwrite) BOOL hasEndShowEndedAt;

/**
 * По статусам баннеров.
 * Переписывает значения фильтров по датам.
 * Если переданы все типы, то фильтр игнорируется(так как нужно вернуть всё)
 **/
// |statusTypesArray| contains |KEYAPISBANNERV1Banner_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;

/**
 * По пользовательским тегам.
 * Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
 * # Диапазон: 0..20.
 * # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *userTagsArray;
/** The number of items in @c userTagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userTagsArray_Count;

/**
 * По тегам приложений.
 * Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
 * # Диапазон: 0..20.
 * # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *appTagsArray;
/** The number of items in @c appTagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger appTagsArray_Count;

@end

#pragma mark - KEYAPISBANNERV1BannerLiteFilter

typedef GPB_ENUM(KEYAPISBANNERV1BannerLiteFilter_FieldNumber) {
  KEYAPISBANNERV1BannerLiteFilter_FieldNumber_TypesArray = 1,
  KEYAPISBANNERV1BannerLiteFilter_FieldNumber_AppName = 2,
  KEYAPISBANNERV1BannerLiteFilter_FieldNumber_PlatformType = 3,
  KEYAPISBANNERV1BannerLiteFilter_FieldNumber_Version = 4,
  KEYAPISBANNERV1BannerLiteFilter_FieldNumber_UserTagsArray = 5,
};

/**
 * Упрощённый фильтр по баннерам
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerLiteFilter : GPBMessage

/** По типам баннеров */
// |typesArray| contains |KEYAPISBANNERV1Banner_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *typesArray;
/** The number of items in @c typesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger typesArray_Count;

/**
 * Название приложения.
 * # Диапазон: 1..19.
 * # Паттерн: /^[0-9A-Z-]{1,19}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *appName;
/** Test to see if @c appName has been set. */
@property(nonatomic, readwrite) BOOL hasAppName;

/** Тип платформы */
@property(nonatomic, readwrite) KEYAPISBANNERV1Banner_PlatformType platformType;

/**
 * Версия приложения.
 * # Диапазон: 1..19.
 * # Паттерн: /^[0-9A-Z-]{1,19}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *version;
/** Test to see if @c version has been set. */
@property(nonatomic, readwrite) BOOL hasVersion;

/**
 * По тегам пользователя.
 * Тэг - максимум 5 символов, значение - максимум 19 символов, количество сегментов - максимум 10.
 * # Диапазон: 1..20.
 * # Паттерн: /^[A-Z-]{1,5}_[0-9A-Z-]{1,19}(?:\\.[A-Z-]{1,5}_[0-9A-Z-]{1,19}){0,9}$/
 **/
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *userTagsArray;
/** The number of items in @c userTagsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger userTagsArray_Count;

@end

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

#pragma mark - KEYAPISBANNERV1BannerPaging

typedef GPB_ENUM(KEYAPISBANNERV1BannerPaging_FieldNumber) {
  KEYAPISBANNERV1BannerPaging_FieldNumber_OrderByType = 1,
  KEYAPISBANNERV1BannerPaging_FieldNumber_DirectionType = 2,
  KEYAPISBANNERV1BannerPaging_FieldNumber_Limit = 3,
  KEYAPISBANNERV1BannerPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация баннеров
 **/
GPB_FINAL @interface KEYAPISBANNERV1BannerPaging : GPBMessage

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

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

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

#pragma mark - KEYAPISBANNERV1PostBannerRequest

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerRequest_FieldNumber) {
  KEYAPISBANNERV1PostBannerRequest_FieldNumber_Data_p = 1,
};

/**
 * Запрос сохранения баннера
 **/
GPB_FINAL @interface KEYAPISBANNERV1PostBannerRequest : GPBMessage

/** Баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner *data_p;
/** Test to see if @c data_p has been set. */
@property(nonatomic, readwrite) BOOL hasData_p;

@end

#pragma mark - KEYAPISBANNERV1PostBannerResponse

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerResponse_FieldNumber) {
  KEYAPISBANNERV1PostBannerResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1PostBannerResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerResponse_Type_OneOfCase) {
  KEYAPISBANNERV1PostBannerResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1PostBannerResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1PostBannerResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1PostBannerResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerResponse_Error_FieldNumber) {
  KEYAPISBANNERV1PostBannerResponse_Error_FieldNumber_Validation = 1,
  KEYAPISBANNERV1PostBannerResponse_Error_FieldNumber_Saving = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1PostBannerResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1PostBannerResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISBANNERV1PostBannerResponse_Error_Reason_OneOfCase_Saving = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerRequest

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerRequest_FieldNumber) {
  KEYAPISBANNERV1GetBannerRequest_FieldNumber_Id_p = 1,
};

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

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

@end

#pragma mark - KEYAPISBANNERV1GetBannerResponse

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerResponse_FieldNumber) {
  KEYAPISBANNERV1GetBannerResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1GetBannerResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerResponse_Type_OneOfCase) {
  KEYAPISBANNERV1GetBannerResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1GetBannerResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerResponse_Error_FieldNumber) {
  KEYAPISBANNERV1GetBannerResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1GetBannerResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerLiteRequest

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteRequest_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения упрощённого баннера
 **/
GPB_FINAL @interface KEYAPISBANNERV1GetBannerLiteRequest : GPBMessage

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

@end

#pragma mark - KEYAPISBANNERV1GetBannerLiteResponse

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteResponse_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1GetBannerLiteResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteResponse_Type_OneOfCase) {
  KEYAPISBANNERV1GetBannerLiteResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerLiteResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1GetBannerLiteResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Упрощённый баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1BannerLite *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerLiteResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteResponse_Error_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1GetBannerLiteResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerLiteResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerListRequest

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListRequest_FieldNumber) {
  KEYAPISBANNERV1GetBannerListRequest_FieldNumber_Filter = 1,
  KEYAPISBANNERV1GetBannerListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListRequest_Pagination_OneOfCase) {
  KEYAPISBANNERV1GetBannerListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerListRequest_Pagination_OneOfCase_Paging = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerListResponse

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListResponse_FieldNumber) {
  KEYAPISBANNERV1GetBannerListResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1GetBannerListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListResponse_Type_OneOfCase) {
  KEYAPISBANNERV1GetBannerListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1GetBannerListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1Banner *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerListResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListResponse_Error_FieldNumber) {
  KEYAPISBANNERV1GetBannerListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerListResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1GetBannerListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerLiteListRequest

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteListRequest_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteListRequest_FieldNumber_Filter = 1,
  KEYAPISBANNERV1GetBannerLiteListRequest_FieldNumber_IsLinkFilterDisabled = 2,
};

/**
 * Запрос получения списка упрощённого баннеров
 **/
GPB_FINAL @interface KEYAPISBANNERV1GetBannerLiteListRequest : GPBMessage

/** Упрощённый фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1BannerLiteFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Признак отключения фильтрации по типу платформы */
@property(nonatomic, readwrite) BOOL isLinkFilterDisabled;

@end

#pragma mark - KEYAPISBANNERV1GetBannerLiteListResponse

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteListResponse_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteListResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1GetBannerLiteListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteListResponse_Type_OneOfCase) {
  KEYAPISBANNERV1GetBannerLiteListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerLiteListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1GetBannerLiteListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Упрощённый баннер */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1BannerLite *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerLiteListResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteListResponse_Error_FieldNumber) {
  KEYAPISBANNERV1GetBannerLiteListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerLiteListResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1GetBannerLiteListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerLiteListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerCountRequest

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerCountRequest_FieldNumber) {
  KEYAPISBANNERV1GetBannerCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISBANNERV1GetBannerCountResponse

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerCountResponse_FieldNumber) {
  KEYAPISBANNERV1GetBannerCountResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1GetBannerCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerCountResponse_Type_OneOfCase) {
  KEYAPISBANNERV1GetBannerCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1GetBannerCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Всего баннеров */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1GetBannerCountResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerCountResponse_Error_FieldNumber) {
  KEYAPISBANNERV1GetBannerCountResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1GetBannerCountResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1GetBannerCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1GetBannerCountResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1UploadImage

typedef GPB_ENUM(KEYAPISBANNERV1UploadImage_FieldNumber) {
  KEYAPISBANNERV1UploadImage_FieldNumber_Base64 = 1,
};

/**
 * Объект загружаемой картинки
 **/
GPB_FINAL @interface KEYAPISBANNERV1UploadImage : GPBMessage

/**
 * Картинка в формате инлайн base64.
 * Обязательное.
 * Пример: "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADIA...".
 * # Паттерн: /^data:\\s*image\\/(png|jpeg|jpg);\\s*base64/
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *base64;

@end

#pragma mark - KEYAPISBANNERV1PostBannerUploadImageRequest

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerUploadImageRequest_FieldNumber) {
  KEYAPISBANNERV1PostBannerUploadImageRequest_FieldNumber_BannerId = 1,
  KEYAPISBANNERV1PostBannerUploadImageRequest_FieldNumber_UploadImage = 2,
};

/**
 * Запрос загрузки картинки баннера
 **/
GPB_FINAL @interface KEYAPISBANNERV1PostBannerUploadImageRequest : GPBMessage

/**
 * Идентификатор баннера.
 * Используется для складывания картинок баннера в папку баннера в бакете.
 * Название картинки в папке создаётся из случайного Guid.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *bannerId;

/** Загружаемая картинка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISBANNERV1UploadImage *uploadImage;
/** Test to see if @c uploadImage has been set. */
@property(nonatomic, readwrite) BOOL hasUploadImage;

@end

#pragma mark - KEYAPISBANNERV1PostBannerUploadImageResponse

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerUploadImageResponse_FieldNumber) {
  KEYAPISBANNERV1PostBannerUploadImageResponse_FieldNumber_Data_p = 1,
  KEYAPISBANNERV1PostBannerUploadImageResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerUploadImageResponse_Type_OneOfCase) {
  KEYAPISBANNERV1PostBannerUploadImageResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1PostBannerUploadImageResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISBANNERV1PostBannerUploadImageResponse_Type_OneOfCase_Error = 2,
};

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

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

/**
 * Ссылка на баннер на imageproxy cdn сервер.
 * Общедоступна в интернете
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *data_p;

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

@end

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

#pragma mark - KEYAPISBANNERV1PostBannerUploadImageResponse_Error

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerUploadImageResponse_Error_FieldNumber) {
  KEYAPISBANNERV1PostBannerUploadImageResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISBANNERV1PostBannerUploadImageResponse_Error_Reason_OneOfCase) {
  KEYAPISBANNERV1PostBannerUploadImageResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISBANNERV1PostBannerUploadImageResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

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

@end

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

#pragma mark - KEYAPISBANNERV1ValidationError

typedef GPB_ENUM(KEYAPISBANNERV1ValidationError_FieldNumber) {
  KEYAPISBANNERV1ValidationError_FieldNumber_Path = 1,
  KEYAPISBANNERV1ValidationError_FieldNumber_Message = 2,
};

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

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

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

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
