---
metadata:
  - name: generator
    content: Diplodoc Platform v5.70.0
alternate:
  - https://yandex.ru/support/kit/ru/site-editor/custom-sections/utilities/data.md
  - href: https://yandex.ru/support/kit/ru/site-editor/custom-sections/utilities/data.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.ru/support/kit/ru/llms.txt?revision=r22105010
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/support/kit/ru/llms.txt?revision=r22105010






# Модели данных 

Модели данных — это структурированные представления сущностей, которые определяют, какие данные используются в системе, как они связаны между собой и для каких задач применяются.

#|
|| [B](#b) | [C](#c) | [D](#d) | [E](#e) | [F](#f)| [G](#g) | [I](#i) | [M](#m) | [P](#p) | [R](#r) | [S](#s) | [T](#t) | [U](#u) | [V](#v) ||
|#


{#b}

## BlogListingModel {#blog-listing}

Модель списка статей с метаданными.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `total` | `number` | Общее количество статей, соответствующих текущим фильтрам. | Да ||
|| `items` | `BlogModel[]` | Массив статей на текущей странице. | Да ||
|| `pagination.current` | `number` | Номер текущей страницы (начинается с 1). | Да ||
|| `pagination.total` | `number` | Общее количество страниц. | Да ||
|#

{% endcut %}

Связанные модели: [BlogSnippetModel](#blog-snippet).

## BlogModel {#blog}

Модель статьи блога с контентом, метаданными и мультимедиа.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор статьи блога. | Да ||
|| `slug` | `string` | ЧПУ идентификатор статьи. | Да ||
|| `url` | `string` | Относительный канонический URL. | Да ||
|| `title` | `string` | Заголовок статьи блога. | Да ||
|| `content` | `string` | Полный текст статьи в формате markdown. | Да ||
|| `shortDescription` | `string` | Краткое описание/выдержка из статьи. Рекомендуется 120-160 символов. | Нет ||
|| `pubDate` | `string` | Дата и время публикации статьи. Формат: ISO 8601 строка. | Да ||
|| `endDate` | `string` | Дата окончания актуальности/снятия с публикации. Формат: ISO 8601 строка. | Нет ||
|| `tags` | `string[]` | Массив тегов для классификации статьи. | Да ||
|| `previewMedia` | `ImageModel` | Обложка для сниппетов в списках статей. | Нет ||
|| `desktopMedia` | `ImageModel` | Обложка для десктопной версии статьи. | Нет ||
|| `mobileMedia` | `ImageModel` | Обложка для мобильной версии статьи. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## BlogSnippetModel {#blog-snippet}

Компактная модель карточки статьи блога для списков и подборок.


{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор статьи. | Да ||
|| `slug` | `string` | ЧПУ-идентификатор статьи. | Да ||
|| `title` | `string` | Заголовок статьи. | Да ||
|| `shortDescription` | `string` | Готовый или вычисленный текстовый анонс.| Нет ||
|| `pubDate` | `string` | Дата публикации в формате ISO 8601. | Да ||
|| `endDate` | `string` | Дата окончания актуальности в формате ISO 8601. | Нет ||
|| `tags` | `string[]` | Теги статьи. | Да ||
|| `previewMedia` | `ImageModel` | Обложка карточки. Если в ответе API нет корректного preview, система подставляет корректную мобильную обложку. | Нет ||
|| `url` | `string` | Относительный канонический URL. | Да ||
|| `linkUrl` | `string` | URL статьи из API. | Да ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## BreadcrumbModel {#breadcrumb}

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `title` | `string` | Заголовок хлебной крошки. | Да ||
|| `url` | `string` | URL-адрес для навигации при клике на элемент хлебных крошек. | Нет ||
|#

{% endcut %}

{#c}

## CartBundleDiscountLadder {#cart-bundle-discount-ladder}

Модель лестницы скидок — показывает, какая скидка действует при определенном количестве товаров.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Идентификатор акции. | Да ||
|| `title` | `string` | Название акции. | Да ||
|| `badge` | `ProductBadgeModel`, `undefined` | Бейдж акции. | Нет ||
|| `stages` | `CartBundleDiscountLadderStage[]` | Массив ступеней лестницы скидок. Каждая ступень содержит порог количества товаров и размер скидки. | Да ||
|#

{% endcut %}

Связанные модели: [CartBundleDiscountLadderStage](#cart-bundle-discount-ladder-stage), [ProductBadgeModel](#product-badge).

## CartBundleDiscountLadderStage {#cart-bundle-discount-ladder-stage}

Модель ступени скидки — показывает сколько товаров нужно купить, чтобы получить определенную скидку.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `quantity` | `number` | Количество товаров, необходимое для достижения ступени. | Да ||
|| `discount` | `string` | Размер скидки ступени в процентах, записанный строкой без знака `%`. Например, `"5.00"` означает скидку 5%. | Да ||
|#

{% endcut %}

Связанные модели: [CartBundleDiscountLadder](#cart-bundle-discount-ladder).

## CategoryModel {#category}

Модель категории товаров с поддержкой иерархической структуры (древовидное представление). Используется для навигации по каталогу, построения меню и фильтрации товаров.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор категории. | Да ||
|| `url` | `string` | Полный URL-адрес страницы категории. | Да ||
|| `slug` | `string` | URL-friendly идентификатор категории. | Да ||
|| `title` | `string` | Отображаемое название категории. | Да ||
|| `Media` | `ImageModel` | Изображение категории. | Нет ||
|| `children` | `CategoryModel[]` | Массив дочерних (вложенных) категорий. | Да ||
|#

{% note info %}

Рекурсивная структура позволяет создавать категории любой глубины вложенности.

{% endnote %}

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## CollectionModel {#collection}

Модель коллекции товаров.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор коллекции. | Да ||
|| `url` | `string` | Полный URL-адрес страницы коллекции. | Да ||
|| `slug` | `string` | URL-friendly идентификатор коллекции. | Да ||
|| `title` | `string` | Отображаемое название категории. | Да ||
|| `media` | `ImageModel` | Изображение коллекции. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## CompanyModel {#company}

Модель компании, включающая контактные данные и логотип.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `mail` | `CompanyCharacteristicModel[]` | Массив адресов электронной почты компании. | Да ||
|| `phone` | `CompanyCharacteristicModel[]` | Массив телефонных номеров компании. | Да ||
|| `address` | `CompanyCharacteristicModel[]` | Массив физических адресов компании. | Да ||
|| `workingMode` | `CompanyCharacteristicModel[]` | Массив режимов работы компании/отделов | Да ||
|| `socialNetworks` | `CompanyCharacteristicModel[]` | Массив ссылок на страницы компании в социальных сетях. | Нет ||
|| `logo` | `ImageModel` | Логотип компании с метаданными изображения. | Нет ||
|#

{% endcut %}

Связанные модели: [CompanyCharacteristicModel](#company-characteristic), [ImageModel](#ImageModel).

## CompanyCharacteristicModel {#company-characteristic}

Базовая модель для представления пары «название-значение» характеристики компании.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `name` | `string` | Название характеристики. | Да ||
|| `value` | `string` | Значение характеристики. | Да ||
|#

{% endcut %}

{#d}

## DeliveryOptionModel {#delivery-option}

Модель опции доставки товара. Содержит информацию о способе доставки, сроках и стоимости. Используется для отображения доступных вариантов доставки на странице оформления заказа или в карточке товара.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `method` | `COURIER`, `PICKUP_POINT` | Способ доставки. | Да ||
|| `serviceType` | `YANDEX_DELIVERY`, `CDEK`, `META_SHIP_DALLI`, `META_SHIP_RUSSIAN_POST`, `OZON`, `META_SHIP_PECOM`, `META_SHIP_FIVE_POST`, `MERCHANT_SHIP` | Тип службы доставки или конкретного сервиса. | Да ||
|| `serviceName` | `string` | Название и тип службы доставки в человекочитаемом формате. | Да ||
|| `formattedDate` | `string` | Отформатированная дата доставки в человекочитаемом формате. | Да ||
|| `price` | `number` | Стоимость доставки. | Да ||
|#

{% endcut %}

## DiscountLadderModel {#discount-ladder}

Модель списка вариантов товаров, участвующих в лестнице скидок, с данными акции и метаданными.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `discountLadder` | `CartBundleDiscountLadder`, `undefined` | Данные лестницы скидок из текущей корзины. Значение равно`undefined`, если данные акции отсутствуют. | Нет ||
|| `items` | `ShoppingCartVariantModel[]` | Варианты товаров на текущей странице списка акции. При отсутствии данных содержит пустой массив. | Да ||
|| `total` | `number` | Общее количество вариантов товаров в списке акции, а не только на текущей странице. При отсутствии данных — `0`. | Да ||
|| `productsQuantity` | `number` | Количество единиц товаров по акции, добавленных в корзину. Рассчитывается как сумма `quantity` позиций первого набора с признаком `isLadder`. Если такого набора нет — `0`. Не равно количеству карточек в `items` или количеству разных вариантов товаров. | Да ||
|| `pagination.current` | `number` | Номер текущей страницы из параметра `page` URL. Начинается с `1`. 
По умолчанию — `1`. | Да ||
|| `pagination.total` | `number` | Общее количество страниц с учетом размера страницы. Для пустого списка — `0`. | Да ||
|| `sorting.value` | `string` | Выбранное значение сортировки из параметра `sorting` URL. Если параметр отсутствует или не соответствует доступным опциям, используется `popularity`.
Доступные значения `sorting.value`:

* `popularity` — по популярности.
* `new` — новые.
* `price_asc` — сначала дешевле.
* `price_desc` — сначала дороже.
* `rating_desc` — по рейтингу; доступно только при включённых отзывах о товарах. | Да ||
|| `sorting.options` | `ProductSortOption[]` | Список доступных опций сортировки. Каждая опция содержит:
* `value` — значение для выбора;
* `displayText` — подпись;
* `sort_by` — поле сортировки;
* `sort_order` — направление сортировки. | Да ||
|#


{% note info %}

Для компонента `ya-kit-products-sorting` передавайте `model.sorting.value`. В отличие от `ProductsListingModel`, эта модель не содержит поля `sorting.option`.

{% endnote %}

{% endcut %}

Связанные модели: [CartBundleDiscountLadder](#cart-bundle-discount-ladder), [ShoppingCartVariantModel](#VariantModel).

## DOMBoundaryRectModel {#boundary-rect}

Модель границ и размеров DOM‑элемента.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `width` | `number` | Ширина элемента. | Да ||
|| `height` | `number` | Высота элемента. | Да ||
|| `top` | `number` | Расстояние от верхнего края `viewport` до верхнего края элемента. | Да ||
|| `left` | `number` | Расстояние от левого края `viewport` до левого края элемента. | Да ||
|| `bottom` | `number` | Расстояние от верхнего края `viewport` до нижнего края элемента. | Да ||
|| `right` | `number` | Расстояние от левого края `viewport` до правого края элемента. | Да ||
|| `x` | `number` | Псевдоним для `left`. | Да ||
|| `y` | `number` | Псевдоним для `top`. | Да ||
|#

{% endcut %}



{#e}

## EmailSubscriptionModel {#EmailSubs}

Модель формы подписки на рассылку.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `currentStep` | `FORM`, `SUCCESS` | Общее количество статей, соответствующих текущим фильтрам.
 Значения:
 - `FORM` — отображается форма для ввода данных.
 - `SUCCESS` — успешная подписка. | Да ||
|| `email` | `string` | Введенный пользователем адрес электронной почты. | Да ||
|| `agreement` | `boolean` | Состояние чекбокса согласия на обработку персональных данных. | Нет ||
|| `errors.email` | `number` | Сообщение об ошибке валидации адреса электронной почты. | Да ||
|| `errors.agreement` | `number` | Сообщение об ошибке согласия. | Да ||
|#

{% endcut %}

{#f}

## FavouriteProductsListingModel {#FavouriteModel}

Модель списка избранных товаров с метаданными.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `total` | `number` | Общее количество товаров, соответствующих текущим фильтрам.  | Да ||
|| `items` | `ProductSnippetModel[]` | Массив товаров на текущей странице. | Да ||
|#

{% endcut %}

Связанные модели: [ProductSnippetModel](#snippet-model).

## FeedbackModel {#feedback-model}

Модель отзыва о варианте товара.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `feedbackId` | `string` | Уникальный идентификатор отзыва. | Да ||
|| `pros` | `string` | Достоинства товара, указанные автором отзыва. | Нет ||
|| `cons` | `string` | Недостатки товара, указанные автором отзыва. | Нет ||
|| `comment` | `string` | Основной текст отзыва. | Да ||
|| `userName` | `string` | Имя автора отзыва. | Нет ||
|| `source` | `'YANDEX_MARKET'`, `'OZON'` | Источник отзыва. | Да ||
|| `publishedAt` | `string` | Дата публикации отзыва. | Да ||
|| `rating` | `number` | Оценка товара автором отзыва. | Да ||
|| `media` | `FeedbackMediaItemModel[]` | Изображения и видео, прикреплённые к отзыву. | Да ||
|#

{% endcut %}

Связанные модели: [FeedbackMediaItemModel](#feedback-media-item-model).

## FeedbackFilterModel {#filter-model}

Модель фильтра списка отзывов.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `title` | `string` | Отображаемое название фильтра. | Да ||
|| `slug` | `string` | Значение фильтра для параметра `filter` URL. | Да ||
|| `feedbackCount` | `number` | Количество отзывов, которые соответствуют фильтру. | Да ||
|#

{% endcut %}

## FeedbackMediaItemModel {#feedback-media-item-model}

Модель медиа, которое прикреплено к отзыву.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `feedbackMediaId` | `string` | Уникальный идентификатор медиа в отзыве. | Да ||
|| `feedbackId` | `string` | Идентификатор связанного отзыва. | Да ||
|| `media` | `MediaModel` | Изображение, видео или другой медиафайл. | Да ||
|#

{% endcut %}

Связанные модели: 

* [MediaModel](#media).
* [FeedbackModel](#feedback-model).

## FeedbackRatingDistributionModel {#feedback-rating}

Модель распределения оценок товара по количеству звезд.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `oneStar` | `number` | Количество оценок в одну звезду. | Да ||
|| `twoStars` | `number` | Количество оценок в две звезды. | Да ||
|| `threeStars` | `number` | Количество оценок в три звезды. | Да ||
|| `fourStars` | `number` | Количество оценок в четыре звезды. | Да ||
|| `fiveStars` | `number` | Количество оценок в пять звёзд. | Да ||
|#

{% endcut %}

## FeedbackShortMetaModel {#feedback-short-meta-model}

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `url` | `string` | Ссылка на страницу всех отзывов товара на текущем домене магазина. Передавайте значение в `url` компонента или `to` ссылки. | Да ||
|| `rating` | `number` | Средний рейтинг товара. | Да ||
|| `feedbackCount` | `number` | Количество всех оценок, включая оценки без текста отзыва. | Да ||
|| `textFeedbackCount` | `number` | Количество отзывов с текстом. | Да ||
|| `ratingDistribution` | `FeedbackRatingDistributionModel` | Распределение оценок по количеству звёзд. | Да ||
|| `source` | `Array<'YANDEX_MARKET', 'OZON'>` | Источники рейтинга и отзывов: Яндекс Маркет (`YANDEX_MARKET`) и Ozon (`OZON`). | Да ||
|| `neuroSummary` | `string` | Нейросетевое саммари отзывов. | Нет ||
|#

{% endcut %}

Связанные модели: [FeedbackRatingDistributionModel](#feedback-rating).

{#g}

## GroupingCharacteristicModel {#CharacteristicModel}

Модель для группирующей характеристики товара, используется для переключения вариантов на странице товара.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Идентификатор характеристики. | Да ||
|| `slug` | `string` | ЧПУ‑идентификатор характеристики. | Да ||
|| `title` | `string` | Отображаемое название характеристики. Пример: «Цвет», «Размер». | Да ||
|| `image` | `ImageModel` | Определяет способ отображения значений характеристики в интерфейсе. Возможные значения:
* `SELECT` — значения отображаются в виде выпадающего списка (`<select>`). Подходит для длинных списков опций.
* `TEXT` — значения отображаются как простой текст или метки (tags). Подходит для краткой информации.
* `IMAGE` — значения сопровождаются изображениями. Выбор опцию по картинке.
* `COLOR` — значения отображаются в виде цветовых образцов (кругов/квадратов). Подходит для характеристик типа «Цвет». | Нет ||
|| `selectedValue` | `string` | Значение текущей выбранной опции. Должно соответствовать одному из `value` в массиве `values`. | Да ||
|| `values` | `GroupingCharacteristicOptionModel[]` | Массив доступных значений для этой характеристики. | Да ||
|#

{% endcut %}

Связанные модели: [GroupingCharacteristicValueModel](#ValueModel).

## GroupingCharacteristicValueModel {#ValueModel}

Модель описывает отдельное значение характеристики (например, конкретный цвет или размер).

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `value` | `string` | Уникальное значение опции. | Да ||
|| `status` | `UNAVAILABLE`, `AVAILABLE`, `PARTIALLY_AVAILABLE` | Текущий статус доступности этой опции. Определяет доступность опции для выбора и способ ее отображения (например, в виде неактивной кнопки). | Да ||
|| `image` | `ImageModel` | Опциональное изображение, ассоциированное с этим значением. Используется, если `displayType` равен `'IMAGE'`. | Нет ||
|| `color` | `string` | HEX‑код цвета (например, `"ff0000"`) или `null`. Используется, если `displayType` равен `'COLOR'`. Позволяет отобразить цветовой образец. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## GiftSlot {#giftslot}

Слот подарка для отображения прогресс‑бара.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `giftId` | `string` | Идентификатор подарка (слота). | Да ||
|| `isAvailable` | `boolean` | Указывает, разблокирован ли подарок (порог достигнут). Значение `true` означает, что подарок уже разблокирован. | Да ||
|| `threshold` | `number` | Порог разблокировки в валюте корзины. | Да ||
|| `progress` | `number` | Заполненность прогресс‑бара, значение от 0 до 100. | Да ||
|| `remainingCartPrice` | `number` | Остаток стоимости корзины до разблокировки подарка. | Да ||
|| `current` | `number` | Позиция подарка для счетчика вида (например, 2/3). | Да ||
|| `total` | `number` | Полное число подарков, включая уже выбранные. | Да ||
|#

{% endcut %}

## GiftVariantOption {#VariantOption}

Один вариант подарка для выбора.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Идентификатор варианта подарка. | Да ||
|| `variant` | `ShoppingCartVariantModel` | Данные варианта товара‑подарка (название, цены, фото, ссылка). | Да ||
|#

{% endcut %}

Связанные модели: [ShoppingCartVariantModel](#VariantModel).


{#i}

## ImageModel {#ImageModel}

Модель для изображений.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `filePath` | `string` | URL-адрес оригинального изображения. | Да ||
|| `metadata` | `ImageMetaModel` | Мета-информация изображения. | Да ||
|#

{% endcut %}

Связанные модели: [ImageMetaModel](#MetaModel).

## ImageMetaModel {#MetaModel}

Модель для мета-информации изображений.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `thumbHash` | `string` | Компактное представление placeholder-изображения. | Нет ||
|| `backgroundColors` | `Dictionary<string` , `null>` | Объект с цветом соответствующей границы, если она однородная. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

{#m}

## MediaModel {#media}

Универсальную модель медиа-контента, которая может содержать как изображения, так и видео. Используется для единообразной работы с различными типами медиа в компонентах галерей, каруселей и других UI элементов.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `type` | `IMAGE` `VIDEO` | Тип медиа‑контента. | Да ||
|| `payload` | `ImageModel` `VideoModel` | Данные медиа‑контента. | Да ||
|#

{% endcut %}

Связанные модели: <!--[VideoModel](#video)--> [ImageModel](#ImageModel). 

## MenuModel {#menu}

Корневая модель меню, содержащая метаданные и список элементов верхнего уровня.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор меню. | Да ||
|| `title` | `string` | Заголовок меню. | Да ||
|| `items` | `MenuItemModel[]` | Массив элементов меню. Может быть пустым массивом. Элементы могут иметь вложенные дочерние элементы через свойство `children`. | Да ||
|#

{% endcut %}

Связанные модели: [MenuItemModel](#menu-item).

## MenuItemModel {#menu-item}

Модель отдельного элемента меню с поддержкой иерархической структуры.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор элемента меню. | Да ||
|| `title` | `string` | Заголовок пункта меню. | Да ||
|| `url` | `string` | URL‑адрес, на который ведет элемент меню. Форматы:
* Относительный путь: `/about`, `/products/123`
* Абсолютный URL: `https://example.com/page`
* Mailto: `mailto:info@example.com`
* Tel: `tel:+1234567890` | Да ||
|| `children` | `MenuItemModel[]` | Рекурсивный массив вложенных дочерних элементов. Может быть пустым массивом `[]` для элементов без подменю. Глубина вложенности технически не ограничена, но рекомендуется 2–3 уровня для UX. | Да ||
|#

{% endcut %}


{#p}

## PointModel {#point}

Модель точки на плоскости с координатами `x` и `y`.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `x` | `number` | Координата по оси X. | Да ||
|| `y` | `number` | Координата по оси Y. | Да ||
|#

{% endcut %}

## PromocodeModel {#product-promocode}

Используется для представления информации о скидках и специальных предложениях.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор g. | Да ||
|| `discountType` | `string` | Тип скидки, определяет как применяется `discountValue`. Возможные значения:
* `percent` — процентная скидка.
* `fixed_amount` — фиксированная сумма скидки. | Да ||
|| `discountValue` | `string` | Числовое значение скидки в виде строки. | Да ||
|| `firstOrderOnly` | `boolean` | Признак применения только к первому заказу. | Да ||
|#

{% endcut %}

## ProductDetailModel {#product-detail}

Полная модель карточки товара.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `variant` | `ProductVariantModel` | Выбранный вариант карточки товара. | Да ||
|| `quantity` | `number` | Количество текущего варианта товара в корзине. | Да ||
|| `groupingCharacteristics` | `GroupingCharacteristicModel[]` | Массив группирующий вариантов карточки товара. | Да ||
|| `sizeTable` | `ProductSizeTableModel` | Таблица размеров, если она задана. | Да ||
|#

{% endcut %}

Связанные модели: [GroupingCharacteristicModel](#product-characteristic),[ProductSizeTableModel](#table-model), [ProductVariantModel](#product-variant).

## ProductBadgeModel {#product-badge}

Модель бейджа продукта.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `label` | `string` | Заголовок бейджа. | Да ||
|| `backgroundColor` | `string` | Цвет фона бейджа. | Нет ||
|#

{% endcut %}

## ProductCharacteristicModel {#product-characteristic}

Модель характеристики/атрибута продукта для описания его свойств.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор характеристики. | Да ||
|| `slug` | `string` | ЧПУ‑идентификатор характеристики. | Нет ||
|| `title` | `string` | Название/метка характеристики. | Да ||
|| `value` | `string` | Значение характеристики. | Да ||
|| `isGrouping` | `boolean` | Флаг, указывающий, что характеристика используется для группировки вариантов. | Нет ||
|#

{% endcut %}

## ProductFilterModel {#product-filter}

Модель отдельного фильтра в системе фильтрации товаров. Модель унифицирует представление различных типов фильтров (диапазон, одиночный выбор, множественный выбор, булево значение) и содержит все необходимые данные для их отображения и обработки пользовательского ввода.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `type` | `RANGE`, `SINGLE`, `MULTIPLE`, `BOOLEAN` | Тип фильтра, определяющий его поведение и способ отображения в интерфейсе:

 * `RANGE` — фильтр с диапазоном значений (например, цена, дата);
 * `SINGLE` — фильтр с одиночным выбором из списка опций (радиокнопки, выпадающий список);
 * `MULTIPLE` — фильтр с множественным выбором (чекбоксы, мультиселект);
 * `BOOLEAN` — булевый фильтр (пункты «да/нет», «в наличии» и т. д.). | Да ||
|| `name` | `string` | Уникальное имя фильтра. | Да ||
|| `title` | `string` | Отображаемое название фильтра в интерфейсе (например, «Цена», «Категория», «В наличии», «Цвет»). | Да ||
|| `value` | `TValue` | Текущее значение фильтра. Тип зависит от `type`. | Да ||
|| `options` | `ProductFilterOption[]` | Массив опций для фильтров с выбором значений (`SINGLE`, `MULTIPLE`). Не используется для `RANGE` и `BOOLEAN`. Каждая опция имеет тип `FieldOption` и содержит:
 * `label: string` — текстовая метка для пользователя;
 * `value: string` — внутреннее значение опции;
 * `color?: string` — опциональный цвет для визуализации в HEX‑формате;
 * `image?: ImageModel` — опциональное изображение для визуализации. | Нет ||
|| `config` | `{ min?: number; max?: number }` | Конфигурация для фильтров типа `RANGE`. Задает границы диапазона:
 * `min: number` — минимальное допустимое значение;
 * `max: number` — максимальное допустимое значение.
Свойство опциональное — может отсутствовать или содержать только одно из значений. | Нет ||
|| `onMinChange` | `(min: number) => void` | Обработчик изменения минимального значения диапазона. Присутствует только для `RANGE`. | Нет ||
|| `onMaxChange` | `(max: number) => void` | Обработчик изменения максимального значения диапазона. Присутствует только для `RANGE`. | Нет ||
|| `onChange` | `(value: TValue) => void` | Обработчик изменения значения фильтра. | Да ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel).

## ProductVariantModel {#product-variant}

Модель варианта продукта.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор варианта продукта. | Да ||
|| `seoId` | `string` | SEO‑идентификатор варианта продукта. | Да ||
|| `sku` | `string` | Артикул товара. | Да ||
|| `url` | `string` | Относительный URL страницы продукта. | Да ||
|| `name` | `string` | Полное название варианта продукта. | Да ||
|| `model` | `string` | Модель продукта. | Да ||
|| `brand` | `string` | Бренд/производитель продукта. | Да ||
|| `slug` | `string` | ЧПУ‑идентификатор варианта продукта. | Да ||
|| `description` | `string` | Описание продукта в формате Markdown. | Да ||
|| `price` | `string` | Базовая цена без скидок. | Нет ||
|| `finalPrice` | `string` | Финальная цена с учетом всех скидок. | Да ||
|| `characteristics` | `ProductCharacteristicModel[]` | Массив характеристик/атрибутов продукта. | Да ||
|| `badges` | `ProductBadgeModel[]` | Массив бейджей/меток для продукта. | Да ||
|| `totalQuantity` | `number` | Общее количество товара на всех складах. | Да ||
|| `mediaItems` | `ImageModel[]` | Массив изображений и медиа‑контента продукта. | Да ||
|| `isFavourite` | `boolean` | Признак добавления товара в избранное текущим пользователем. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel), [ProductBadgeModel](#product-badge), [ProductCharacteristicModel](#product-characteristic).

## ProductsListingModel {#products-listing}

Модель списка товаров с метаданными.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `total` | `number` | Общее количество товаров, соответствующих текущим фильтрам. | Да ||
|| `items` | `ProductSnippetModel[]` | Массив товаров на текущей странице. | Да ||
|| `categories.selected` | `CategoryModel`, `null` | Текущая выбранная категория или `null`, если категория не выбрана. | Да ||
|| `categories.items` | `CategoryModel[]` | Полный список всех доступных категорий. | Да ||
|| `pagination.current` | `number` | Номер текущей страницы (начинается с 1). | Да ||
|| `pagination.total` | `number` | Общее количество страниц. | Да ||
|| `sorting.option` | `ProductSortingOptionModel` | Выбранная опция сортировки. | Да ||
|| `sorting.options` | `ProductSortingOptionModel[]` | Список доступных опций сортировок. | Да ||
|| `filters.values` | `Dictionary<unknown>` | Объект с текущими примененными фильтрами. Ключи — названия фильтров. Значения — выбранные значения фильтров. | Да ||
|#

{% note info %}

 * Структура значений зависит от типа фильтра.
 
 * Пустой объект `{}` означает отсутствие активных фильтров.
 
 * Используется для восстановления состояния фильтров в UI.

{% endnote %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `filters.schema` | `ProductFiltersModel` | Схема доступных фильтров с их конфигурацией и возможными значениями. | Да ||
|#

{% note info %}

Определяет UI компоненты фильтров и правила их валидации.

{% endnote %}

{% endcut %}

Связанные модели: [ProductSnippetModel](#snippet-model), [ProductSortingOptionModel](#sorting-model), [CategoryModel](#category).

## ProductSizeTableModel {#table-model}

Модель для таблицы размеров продукта.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `filePath` | `string` | URL-адрес оригинального изображения с таблицей размеров. | Да ||
|| `enabled` | `boolean` | Признак включения/отключения таблицы размеров. | Да ||
|#

{% endcut %}

## ProductSnippetModel {#snippet-model}

Модель варианта продукта для отображения в списках/полках товаров.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор варианта продукта. | Да ||
|| `url` | `string` | Относительный URL страницы продукта. | Да ||
|| `slug` | `string` | ЧПУ‑идентификатор варианта продукта. | Да ||
|| `name` | `string` | Полное название варианта продукта. | Да ||
|| `mediaItems` | `ImageModel[]` | Массив изображений и медиа‑контента продукта. | Да ||
|| `badges` | `ProductBadgeModel[]` | Массив бейджей/меток для продукта. | Да ||
|| `price` | `string` | Базовая цена без скидок. | Нет ||
|| `finalPrice` | `string` | Финальная цена с учетом всех скидок. | Да ||
|| `currencyCode` | `RUB` | Код валюты. | Да ||
|| `totalQuantity` | `number` | Общее количество товара на всех складах. | Да ||
|| `isFavourite` | `boolean` | Признак добавления товара в избранное текущим пользователем. | Нет ||
|#

{% endcut %}

Связанные модели: [ImageModel](#ImageModel), [ProductBadgeModel](#product-badge).

## ProductSortingOptionModel {#sorting-model}

Модель опции сортировки товаров.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `value` | `string` | Внутреннее значение опции, используемое для программной обработки. | Да ||
|| `displayText` | `ProductSnippetModel[]` | Название сортировки, отображаемое в интерфейсе. | Да ||
|#

{% endcut %}

{#r}

## RegionModel {#region}

Модель региона/города для определения местоположения пользователя.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `number` | Уникальный числовой идентификатор региона. | Да ||
|| `name` | `string` | Название региона/города. Пример: «Москва», «Санкт‑Петербург», «Казань». | Да ||
|#

{% endcut %}

{#s}

## ShoppingCartModel {#shopping-cart}

Модель корзины покупок, содержащая все добавленные товары и итоговые расчеты.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `price` | `number` | Общая базовая стоимость всех товаров в корзине без скидок. | Да ||
|| `finalPrice` | `number` | Итоговая стоимость корзины с учетом всех скидок (без учета доставки). | Да ||
|| `items` | `ShoppingCartItem[]` | Массив товаров в корзине. | Да ||
|| `bundles` | `CartBundleModel[]` | Бандлы в корзине — это наборы товаров со своим составом, количеством и ценами. Чтобы отобразить конкретный бандл на странице, оберните его в контроллер `ya‑kit‑shopping‑cart‑bundle‑controller`. | Нет ||
|| `totalQuantity` | `number` | Общее количество единиц товара во всей корзине. | Да ||
|| `gifts` | `ShoppingCartSelectedGift[]` | Данные о выбранных подарках в корзине обрабатываются контроллером `ya‑kit‑shopping‑cart‑controller`. Он заменяет исходное поле на `gifts.selectedGifts` — именно этот массив поступает в шаблон.

{% note info %}

Информация о доступных и предстоящих подарках хранится в `cart.giftSlots`.

{% endnote %} | Да (всегда массив, может быть пустым) ||
|#

{% endcut %}

Связанные модели: [ShoppingCartItemModel](#shopping-cart-item).

## ShoppingCartItemModel {#shopping-cart-item}

Модель корзины покупок, содержащая все добавленные товары и итоговые расчеты.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `variant` | `ProductVariantModel` | Полная информация о варианте продукта в корзине. | Да ||
|| `quantity` | `number` | Количество единиц товара в корзине. | Да ||
|| `price` | `number` | Базовая цена за группу товаров без скидок. | Да ||
|| `finalPrice` | `number` | Финальная цена за группу товаров с учетом всех скидок. | Да ||
|#

{% endcut %}

Связанные модели: [ShoppingCartModel](#shopping-cart).

## ShoppingCartBundleItem {#BundleItem}

Позиция товара в составе бандла.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `variant` | `ShoppingCartVariantModel` | Вариант товара (конкретное торговое предложение). | Да ||
|| `quantity` | `number` | Количество единиц товара в бандле. | Да ||
|| `price` | `number` | Цена товара без учета скидок. | Да ||
|| `finalPrice` | `number` | Итоговая цена товара с учетом скидок. | Да ||
|#

{% endcut %}

Связанные модели: [ShoppingCartVariantModel](#VariantModel).

## ShoppingCartBundleModel {#BundleModel}

Модель бандла (набора товаров) в корзине с составом, ценами и количеством.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `bundleId` | `string` | Уникальный идентификатор бандла. | Да ||
|| `bundleLink` | `string` | Относительный URL страницы бандла. | Да ||
|| `totalPrice` | `string` | Суммарная цена бандла без учета скидок. | Да ||
|| `finalTotalPrice` | `string` | Итоговая цена бандла с учетом скидок. | Да ||
|| `quantity` | `number` | Количество бандлов в корзине. | Да ||
|| `maxQuantity` | `number` | Максимально доступное количество бандлов. | Да ||
|| `items` | `CartBundleItem[]` | Состав бандла — список товаров с их количеством и ценами. | Да ||
|#

{% endcut %}

Связанные модели: [ShoppingCartBundleItem](#BundleItem).

## ShoppingCartSelectedGift {#SelectedGift}

Выбранный подарок в корзине.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `giftId` | `string` | Идентификатор подарка (слота). | Да ||
|| `variant` | `ShoppingCartVariantModel`, `null` | Выбранный вариант подарка или `null`, если вариант еще не выбран. | Нет ||
|| `canChangeGiftVariant` | `boolean` | Значение `true` означает, что у подарка есть несколько вариантов и его можно поменять. | Да ||
|#

{% endcut %}

Связанные модели: [ShoppingCartVariantModel](#VariantModel).

## ShoppingCartVariantModel {#VariantModel}

Вариант товара в контексте корзины. Расширяет базовую модель варианта товара характеристиками.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Идентификатор варианта товара. | Да ||
|| `name` | `string` | Название товара. | Да ||
|| `price` | `string`, `undefined` | Базовая цена варианта без скидок. | Нет ||
|| `finalPrice` | `string` | Итоговая цена варианта с учетом скидок. | Да ||
|| `totalQuantity` | `number` | Доступное количество товара на складе. | Да ||
|| `mediaItems` | `MediaModel[]` | Медиа‑материалы товара (фото). | Да ||
|| `url` | `string` | Ссылка на карточку товара. | Да ||
|| `giftId` | `string` | Идентификатор подарка, если данный вариант является подарком. | Нет ||
|| `characteristics` | `ProductCharacteristicModel[]` | Характеристики варианта товара. | Нет ||
|#

{% endcut %}

Связанные модели: [MediaModel](#media), [ProductCharacteristicModel](#product-characteristic).

## SelfPickupModel {#self-pickup}

Модель точки самовывоза.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `fullAddress` | `string` | Полный адрес точки самовывоза. | Да ||
|#

{% endcut %}

{#t}

## TimeLeftModel {#time}

Модель оставшегося времени до целевой даты.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `days` | `number` | Количество дней до целевой даты. | Да ||
|| `hours` | `number` | Количество часов до целевой даты. | Да ||
|| `minutes` | `number` | Количество минут до целевой даты. | Да ||
|| `seconds` | `number` | Количество секунд до целевой даты. | Да ||
|#

{% endcut %}

{#u}

## UserModel {#user}

Полная модель пользователя с профильными данными, настройками и информацией о местоположении.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `id` | `string` | Уникальный идентификатор пользователя. | Да ||
|| `firstName` | `string` | Имя пользователя. | Нет ||
|| `lastName` | `string` | Фамилия пользователя. | Нет ||
|| `isRegistered` | `boolean` | Признак, определяющий статус регистрации пользователя. Значения:
* `true` — пользователь прошел полную регистрацию;
* `false` — гостевой/анонимный пользователь. | Да ||
|| `favouriteProductsCount` | `number` | Количество товарных вариантов в избранном текущего пользователя. 
Неотрицательное целое число. Если избранное пустое или поле отсутствует в ответе сервера, значение — `0`. | Да ||
|| `autoCity` | `RegionModel` | Автоматически определенный регион пользователя. Может быть неточным, требует подтверждения. | Нет ||
|| `manualCity` | `RegionModel` | Город, выбранный пользователем вручную. Имеет приоритет над autoCity. | Нет ||
|| `avatarUrl` | `string` | Полный URL для отображения аватара. | Нет ||
|| `email` | `string` | Адрес электронной почты пользователя. | Нет ||
|| `phone` | `string` | Номер телефона пользователя. | Нет ||
|| `isSubscribed` | `boolean` | Флаг подписки на почтовые рассылки. | Да ||
|#

{% endcut %}

Связанные модели: [RegionModel](#region).

{#v}

## VideoModel {#video}

Модель для видео.

{% cut "Свойства" %}

#|
|| **Название** | **Тип** | **Описание** | **Обязательное** ||
|| `filePath` | `string` | URL-адрес видео. | Да ||
|| `metadata` | `ImageMetaModel` | Мета-информация изображения первого кадра. | Да ||
|| `video` | `VideoSourceModel` | Мета-информация видео. | Да ||
|#

{% endcut %}

<!-- source: ru/_includes/support.md -->


## Обратиться в службу поддержки


[Написать в чат](https://yandex.ru/chat/#/user/6c041b05-07a4-99cc-79be-8670b7aff93d){.button}

[Написать письмо](https://yandex.ru/support/kit/ru/feedback.md){.button}

[Яндекс KITᵝ в Telegram](https://t.me/kityandex_support_bot){.button}

[Яндекс KITᵝ в МАКС](https://max.ru/yandex_kit_bot){.button}
<!-- endsource: ru/_includes/support.md -->
