From 211f34159baab3827776859fa6cfaa72c0baf9b1 Mon Sep 17 00:00:00 2001 From: Denis Larin Date: Wed, 2 Feb 2022 11:34:51 +0000 Subject: [PATCH 1/6] GitBook: [#277] No subject --- .gitbook/assets/image (1).png | Bin 0 -> 93717 bytes .gitbook/assets/image (2).png | Bin 0 -> 795 bytes .gitbook/assets/image (3).png | Bin 0 -> 116067 bytes .gitbook/assets/image.png | Bin 0 -> 93700 bytes README.md | 59 + SUMMARY.md | 11 + .../api-polucheniya-tovarnykh-rekomendacii.md | 622 ++++++++++ .../api-sponsorskikh-razmeshenii.md | 352 ++++++ .../http-tracking-api.md | 1066 +++++++++++++++++ ...i-retail-rocket-sponsorskoe-razmeshenie.md | 72 ++ ...hie-principy-integracii-s-retail-rocket.md | 86 ++ 11 files changed, 2268 insertions(+) create mode 100644 .gitbook/assets/image (1).png create mode 100644 .gitbook/assets/image (2).png create mode 100644 .gitbook/assets/image (3).png create mode 100644 .gitbook/assets/image.png create mode 100644 SUMMARY.md create mode 100644 integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md create mode 100644 integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md create mode 100644 integraciya-s-retail-rocket/http-tracking-api.md create mode 100644 integraciya-s-retail-rocket/instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md create mode 100644 integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md diff --git a/.gitbook/assets/image (1).png b/.gitbook/assets/image (1).png new file mode 100644 index 0000000000000000000000000000000000000000..a529f4c9971dcb1f8e24af536e36370e8f53ee6c GIT binary patch literal 93717 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 OxqVajMxpxsp#K9&r*%;P literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (2).png b/.gitbook/assets/image (2).png new file mode 100644 index 0000000000000000000000000000000000000000..8e1432e1902b10605a79d1549566c8e2fce0d475 GIT binary patch literal 795 zcmV+$1LXXPP) zbU1a94y7&}xDRweA9ODuaB%}}S79??R(KtUAp{H@TViOP36lD;D6 zp+9C%Q?;|j`-r_p^Y3`h`IT{M2d;LW`T{K`P5~F1gf;al4hShC%iW|!XPxqHm4yQ4 zk~P7HpIm%EMX%1|8-A0p#tD6Xe_#781>Rr(Or0noH|+47+;)YHNp5?Le@*IOf z{E45pcnsnJ(FhzmmwnD-Q}rcYH`83^yy<}8d+?>Kz-s`oMWO$w`3W7B(91?s21cF!VFOhdV!AfXjpXtF@zWl+5f zt{t!#7@B`Qj6XoY>fgIq&kA6;zF%_~x<%*;o;_j3BrHPN#s;Q8JpOk9gD&WU&NxWH Z@&}+AUE59RL6`sl002ovPDHLkV1mHEb+Z5f literal 0 HcmV?d00001 diff --git a/.gitbook/assets/image (3).png b/.gitbook/assets/image (3).png new file mode 100644 index 0000000000000000000000000000000000000000..f82a32548c460fc9b3946a317601ddac6f99f101 GIT binary patch literal 116067 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

Rz)Y>R`8mK4U2rOm7+@L16F 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 + На странице описываются термины, использующиеся более чем в одной системе + Retail Rocket +--- + +# Глоссарий Retail Rocket + +## Товар + +Товарное предложение интернет-магазина. + +## Групповой товар + +Товары разного размера или цвета, объединенные в группу. + +## Карточка товара + +Страница веб-сайта или экран мобильного приложения, на котором отображаются сведения о [товаре](./#tovar). + +## Карточка группового товара + +Страница веб-сайта или экран мобильного приложения, на котором отображаются сведения о [групповом товаре](./#gruppovoi-tovar). + +## Товарная категория + +Объединение товаров в рамках товарной категории (радиоуправляемые игрушки, молоко и т.д.). + +## Дерево товарных категорий + +Набор товарных категорий, объединенных в рамках древовидной структуры от общей товарной категории к частной. Например: Товары для дома -> Кухня -> Вилки. + +## Страница товарной категории + +Веб-страница или экран мобильного приложения, на котором отображаются товары, принадлежащие одной товарной категории. + +## Товарная база + +Для полноценной эффективной работы Retail Rocket требуется передать в систему товарную базу магазина. Из товарной базы магазина система формирует два основных набора данных: сведения о товарах и [дерево товарных категорий](./#derevo-tovarnykh-kategorii). + +Эти данные повышают качество рекомендаций, используются для фильтрации товарной выдачи от товаров вышедших из наличия и для отображения товарных предложений в письмах, веб-пушах и на сайте интернет магазина. + +## Пользовательское поведение + +Одно или более действий пользователя в интернет-магазине. Для системы Retail Rocket считаются значимыми следующие пользовательские действия в интернет-магазине: + +* Просмотр карточки товара; +* Просмотр карточки группового товара; +* Просмотр страницы товарной категории; +* Добавление товара в корзину; +* Совершение заказа; +* Ввод поисковой фразы. +* Аутификация пользователя + +## Контакт + +Система Retail Rocket позволяет коммуницировать с пользователями интернет-магазина через различные каналы: email, web-push, sms и т.д. Для того чтобы куммуникация была персонализированной, система позволяет накапливать и хранить данные полученные с сайта или других систем(кассовые аппараты, внешние системы CRM) о поведение пользователя на сайте, о его каналах коммуникация и его дополнительные данные. + +Совокупность накопленных данных о пользователе с каналами коммуникаций с ним, в системе Retail Rocket называется Контакт. diff --git a/SUMMARY.md b/SUMMARY.md new file mode 100644 index 0000000..485a34e --- /dev/null +++ b/SUMMARY.md @@ -0,0 +1,11 @@ +# Table of contents + +* [Глоссарий Retail Rocket](README.md) + +## Интеграция с Retail Rocket + +* [Общие принципы интеграции с Retail Rocket](integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md) +* [API трекинг пользовательского поведения](integraciya-s-retail-rocket/http-tracking-api.md) +* [Инструкция по интеграции продукта «Спонсорские размещения»](integraciya-s-retail-rocket/instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md) +* [API получения контента спонсорских размещений](integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md) +* [API получения товарных рекомендаций](integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md) diff --git a/integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md b/integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md new file mode 100644 index 0000000..1375e10 --- /dev/null +++ b/integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md @@ -0,0 +1,622 @@ +# API получения товарных рекомендаций + +## **Общие концепции** + +Для получение товарных рекомендаций от системы Retail Rocket необходимо обратиться к ресурсу, соответствующему типу рекомендаций. + +API получения товарных рекомендаций **** придерживается [общих принципов интеграционных API](obshie-principy-integracii-s-retail-rocket.md). + +{% hint style="info" %} +**Товарные параметры** + +Параметр `stockId` требуется для того, чтобы рекомендации содержали только товары в наличии на конкретном складе (регионе). Значение параметра, как и все товарные параметры, должно соответствовать значениям, переданным в Retail Rocket с товарной базой. +{% endhint %} + +{% hint style="info" %} +**Лимит частоты обращения к ресурсам** + +По умолчанию установлен лимит в 100 обращений в секунду на магазин (`partnerId`) в целом. Для изменения лимита необходимо обратиться к вашему аккаунт-менеджеру или через форму поддержки в личном кабинете. +{% endhint %} + +{% hint style="warning" %} +**Управление кешированием** + +Вместе с возвращаемыми данными передается http-заголовок `Cache-Control,` которому необходимо следовать при кешировании полученных данных. +{% endhint %} + +### **Base URL** + +`https://externalapi.retailrocket.net/api/3.0/` + +### HTTP-метод доступа + +Все ресурсы API доступны только по `GET` методу + +### HTTP-статусы обращения + +Успешность обращение к ресурсу можно оценить по полученному HTTP-статусу: + +* **200 OK** - запрос принят; +* **400 BadRequest** - ошибка в запросе, необходимо проверить правильность построения запроса; +* **401 Unauthorized** - ошибка аутентификации, проверьте корректность пары `partnerId`, `apiKey;` +* **403 Forbidden** - доступ запрещен; +* **404 NotFound** - запрошенный ресурс не найден, необходимо проверить правильность URL; +* **429 TooManyRequest** - слишком много запросов и/или лимит на количество запросов в интервал времени превышен; + +### Возвращаемое значение + +В случае успешного обращения к любому ресурсу, HTTP-статус будет 200 Ok, а в теле запроса будет возвращена строка, содержащая JSON-объект. + +{% tabs %} +{% tab title="Пример возвращаемых данных" %} +```javascript +{ + "recommendations": + [ + { + "productId": [53242, 41231] + } + ] +} +``` +{% endtab %} + +{% tab title="JSON Schema" %} +```javascript +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "type": "object", + "properties": { + "recommendations": { + "type": "array", + "items": { + "type": "object", + "properties": { + "productId": { + "type": "array", + "items": { + "type": "integer" + } + } + } + } + } + } +} +``` +{% endtab %} +{% endtabs %} + +Если рекомендаций по этим параметром нет, то вернётся пустой массив `recommendations` + +## Типы рекомендаций + +### **Популярные товары для главного экрана** + +Рассчитаны на основании поведения пользователя во всем интернет-магазине, без привязки к конкретным категориям, товарам, поисковым фразам т.д. + +Представляет из себя актуальные бестселлеры магазина. + +#### **Path** + +**`partnerRecommendations/popular`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/partnerRecommendations/popular/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017' +``` + +### **Популярные товары для экрана** товарной категории + +Предназначен для показа пользователю самых популярных товаров в рамках категорийной группы. Учитываются товары и пользовательское поведение в рамках конкретной категории и всех ее подкатегорий. + +{% hint style="warning" %} +В зависимости от того, как выполнена интеграция передачи [товарной базы](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza), необходимо вызывать разные методы для получения товарных рекомендаций для экрана товарной категории. + +[Интеграции через YML-файл](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-yml-fail) + +[Интеграции через Product API](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-product-api) +{% endhint %} + +#### При интеграции через YML-файл + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы для запроса на получение товарных рекомендаций категории. + +#### Path + +**`categoryRecommendations/popular`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | :----------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `categoryIds` | Да | number array | [Список идентификаторов товарных категорий, записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/popular/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryIds=123,234,254' +``` + +#### При интеграции через Product API + +При использовании product API категория передается как `categoryPath` также она должна быть передана и в метод для получения товарных рекомендаций. + +#### Path + +**`categoryRecommendations/popularByCategoryPath`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | :----------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `categoryPaths` | Да | string array | [Список путей товарных категорий, записанных как несколько параметров через &](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/popularByCategoryPath/?sessionExternalId=73018148&categoryPaths=katinwinkel&categoryPaths=accu-gereedschap%2Faccu&apiKey=5b333f5697a528b0184b6017&partnerId=59908d02c7d013ce40de715a&session=5bb7b6201323790001561024' +``` + +### **Популярные товары со скидкой для экрана** товарной категории + +Предназначен для показа пользователю самых популярных товаров в рамках категорийной группы с учетом скидки. Учитываются товары со скидкой и пользовательское поведение в рамках конкретной категории и всех ее подкатегорий. + +{% hint style="warning" %} +В зависимости от того, как выполнена интеграция передачи [товарной базы](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza), необходимо вызывать разные методы для получения товарных рекомендаций для экрана товарной категории. + +[Интеграции через YML-файл](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-yml-fail-1) + +[Интеграции через Product API ](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-product-api-1) +{% endhint %} + +#### При интеграции через YML-файл + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы для запроса на получение товарных рекомендаций категории. + +#### Path + +**`categoryRecommendations/saleByPopular`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | :----------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `categoryIds` | Да | number array | [Список идентификаторов товарных категорий, записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/saleByPopular/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryIds=123,234,254' +``` + +#### При интеграции через Product API + +При использовании product API категория передается как `categoryPath` также она должна быть передана и в метод для получения товарных рекомендаций. + +#### Path + +**`categoryRecommendations/saleByPopularByCategoryPath`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | :----------: | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `categoryPaths` | Да | string array | [Список путей товарных категорий, записанных как несколько параметров через &](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/saleByPopularByCategoryPath/?sessionExternalId=73018148&categoryPaths=katinwinkel&categoryPaths=accu-gereedschap%2Faccu&apiKey=5b333f5697a528b0184b6017&partnerId=59908d02c7d013ce40de715a&session=5bb7b6201323790001561024' +``` + +### **Поисковые рекомендации** + +Предназначен для показа пользователю товаров, наиболее подходящих под его поисковый запрос. Рекомендации рассчитываются на основе поведения других пользователей с подобным поисковым запросом и не учитывают смысл поисковых фраз. + +Поисковые рекомендации следует применять там, где известен поисковый запрос пользователя. Обычно это поисковый экран интернет-магазина. Рекомендации показывают свою эффективность, как и в роли дополнения к поисковой выдаче, так и в случае отсутствия поисковой выдачи. + +#### **Path** + +**`searchRecommendations/search`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `searchPhrase` | Да | string | Поисковый запрос пользователя | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/searchRecommendations/search/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&searchPhrase=skirts' +``` + +### **Похожие товары** + +Предназначен для показа товаров, наиболее похожих на просматриваемый пользователем товар. Рекомендации рассчитываются на основе поведения других пользователей и учитывают параметры товаров и настройки бизнес-правил в личном кабинете Retail Rocket. + +#### **Path** + +**`productRecommendations/alternatives`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/alternatives/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=93845,93846,93847' +``` + +### **Сопутствующие товары** + +Предназначен для показа комплементарных товаров к товару или товарам. Рекомендации рассчитываются на основание поведения других пользователей и учитывают параметры товаров и настройки бизнес-правил в личном кабинете Retail Rocket. + +#### **Path** + +**`productRecommendations/related`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/relatedByInterestedProperties/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=93845,93846,93847' +``` + +### **Сопутствующие товары, персонализированные с учетом интереса пользователя к свойствам товара** + +Предназначен для показа комплементарных товаров к товару или товарам, **** которые дополнительно ранжированны в зависимости от интереса пользователей к конкретным свойствам товара (размер, цвет). Рекомендации рассчитываются на основании поведения других пользователей и учитывают параметры товаров и настройки бизнес-правил в личном кабинете Retail Rocket. + +#### **Path** + +**`productRecommendations/relatedByInterestedProperties`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара, записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/relatedByInterestedProperties/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=93845,93846,93847' +``` + +### **Персональные рекомендации** + +Алгоритм персональных рекомендаций возвращает наиболее интересные товары для пользователя. + +#### **Path** + +**`partnerRecommendations/personalComposite`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/partnerRecommendations/personalComposite/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017' +``` + +### **Ранее купленные пользователем товары** + +Алгоритм возвращает ранее заказанные пользователем товары. + +#### **Path** + +**`partnerRecommendations/personalOrdered`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/partnerRecommendations/personalOrdered/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017'' +``` + +### **Аксессуары** + +Предназначен для показа товаров из аксессуарных категорий, которые приобретаются совместно с товаром или товарами, к которым запрашиваются рекомендации. Рекомендации рассчитываются на основании поведения других пользователей и учитывают параметры товаров и настройки бизнес-правил в личном кабинете Retail Rocket. + +#### Path + +**`productRecommendations/accessories`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/accessories/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=93845,93846,93847' +``` + +### Популярные товары к интересующим пользователя категориям + +Retail Rocket в реальном времени анализирует интересы пользователя и строит связи «пользователь» – «категория». Это позволяет демонстрировать хиты продаж только из категорий, которые наиболее интересны данному пользователю в долгосрочной перспективе. + +#### Path + +**`partnerRecommendations/popularInInterestedCategories`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/partnerRecommendations/popularInInterestedCategories/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017' +``` + +### Просмотренные товары + +Алгоритм возвращает просмотренные пользователем товары. + +#### Path + +**`partnerRecommendations/personalViewed`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/partnerRecommendations/personalViewed/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017' +``` + +### Сопутствующие товары из категорий, отличных от категории текущего товара + +Алгоритм возвращает сопутствующие товарные позиции, которые с максимальной вероятностью могут быть куплены вместе с товаром, к которому запрошены рекомендации. Из рекомендаций сопутствующих товаров удаляются товары, принадлежащие той же категории, что и текущий товар. + +#### Path + +**`productRecommendations/relatedWithoutCurrentCategory`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/relatedWithoutCurrentCategory/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=1254,2345,5484' +``` + +### Сопутствующие товары с учетом бизнес-правил + +Алгоритм возвращает сопутствующие товарные позиции, которые с максимальной вероятностью могут быть куплены вместе с товаром, к которому запрошены рекомендации. При этом данный алгоритм учитывает бизнес-правила и позволяет: + +* Продвинуть товары из непопулярных категорий (например, новая категория товаров в ассортименте); +* Реализовать “экспертные рекомендации” при продаже технически сложных товаров, когда покупатель может не знать что именно нужно докупить учесть пожелания партнера к подбору сопутствующих товаров; + +#### Path + +**`productRecommendations/relatedWithRules`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `productIds` | Да | number array | [Список идентификаторов товара записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/productRecommendations/relatedWithRules/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&productIds=1254,2345,5484' +``` + +### Новинки в категории + +Алгоритм возвращает новинки в категории. + +{% hint style="warning" %} +В зависимости от того, как выполнена интеграция передачи [товарной базы](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza), необходимо вызывать разные методы для получения товарных рекомендаций для экрана товарной категории. + +[Интеграции через YML-файл](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-yml-fail-2) + +[Интеграции через Product API ](api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-product-api-2) +{% endhint %} + +#### При интеграции через YML-файл + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы для запроса на получение товарных рекомендаций категории. + +#### Path + +**`categoryRecommendations/latest`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `categoryIds` | Да | number array | [Список идентификаторов товарных категорий, записанных через запятую](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/latest/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryIds=1254,2345,5484' +``` + +#### При интеграции через Product API + +При использовании product API категория передается как `categoryPath` также она должна быть передана и в метод для получения товарных рекомендаций. + +#### Path + +**`categoryRecommendations/latestByCategoryPath`** + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `categoryPaths` | Да | string array | [Список путей товарных категорий, записанных как несколько параметров через &](obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza) | + +#### Пример вызова + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/latestByCategoryPath/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryPaths=accu-gereedschap%2Faccu' +``` + +### Новинки со скидками + +Алгоритм возвращает новинки по категориям со скидками. + +{% hint style="warning" %} +В зависимости от того, как выполнена интеграция передачи [товарной базы](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza), необходимо вызывать разные методы для получения товарных рекомендаций для экрана товарной категории. + +[Интеграции через YML-файл](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-yml-fail-2) + +[Интеграции через Product API ](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/api-polucheniya-tovarnykh-rekomendacii.md#pri-integracii-cherez-product-api-2) +{% endhint %} + +**При интеграции через YML-файл** + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы для запроса на получение товарных рекомендаций категории. + +**Path** + +**`categoryRecommendations/saleByLatest`** + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| `apiKey` | Да | string | [Ключ авторизации](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `categoryIds` | Да | number array | [Список идентификаторов товарных категорий, записанных через запятую](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +**Пример вызова** + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/saleByLatest/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryIds=1254,2345,5484' +``` + +**При интеграции через Product API** + +При использовании product API категория передается как `categoryPath` также она должна быть передана и в метод для получения товарных рекомендаций. + +**Path** + +**`categoryRecommendations/saleByLatestByCategoryPath`** + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#upravlenie-sessiei) | +| `stockId` | Нет | string | [Идентификатор склада/региона](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#podderzhka-regionalnosti-sklad-region) | +| `categoryPaths` | Да | string array | [Список путей товарных категорий, записанных как несколько параметров через &](https://app.gitbook.com/s/-MYtMBMe1CFjdXfHKdxi/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md#tovarnaya-baza) | + +**Пример вызова** + +```bash +curl 'https://externalapi.retailrocket.net/api/3.0/categoryRecommendations/saleByLatestByCategoryPath/?sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&stockId=moscow&partnerId=69908d02c7d513ce40de715a&apiKey=5b333f5297a528b0184b6017&categoryPaths=accu-gereedschap%2Faccu' +``` diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md new file mode 100644 index 0000000..81f54eb --- /dev/null +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -0,0 +1,352 @@ +# API получения контента спонсорских размещений + +## Термины + +### **Рекламная площадка** + +Магазин, предоставляющий страницы своего web или мобильного приложения для размещения рекламных объявлений. Обладает идентификатором `partnerId`, который можно получить в личном кабинете или у аккаунт-менеджера. + +**Рекламодатель**: лицо/организация, которая заинтересована в том, чтобы показывать на рекламных площадках свое содержимое, чтобы достигать маркетинговые цели. + +### **Содержимое для показа** + +Объект, содержащий необходимые данные для показа пользователю рекламной площадки. Запрашивается рекламной площадкой у API спонсорских размещений. Показывается рекламной площадкой с целью получить плату от рекламодателя за просмотр этого содержимого пользователем площадки. + +При запросе необходимо использовать параметр строки запроса `acceptContent` для указания типа содержимого, который рекламная площадка готова разместить. + +Значения `acceptContent`: + +* `string` +* `productIds` + +Если рекламная площадка готова размещать более одного варианта содержимого, их можно указать через запятую, например: `acceptContent=string,productIds` + +### **Рекламное место** + +Область страницы web-приложения или экрана мобильного приложения рекламной площадки, предназначенная для размещения там платного содержимого. Бывает разных типов в зависимости от вида, места, области размещения: + +* **any placement –** место размещения рекламы, которое может находиться в любом разделе веб-сайта или мобильного приложения; +* **product placement** – место размещения в контексте карточки товара; +* **category placement** – место размещения в контексте категории; +* **search placement** – место размещения в контексте поисковой выдачи; +* **product group placement** – место размещения в контексте группы товаров, например, это может быть корзина или страница успешного завершения заказа. + +### **Товар** + +Позиция товарного каталога рекламной площадки. Обладает идентификатором `productId` типа «64-разрядное целое со знаком». + +### **Категория** + +Группа товаров, содержащая произвольный (существенный для рекламной площадки) признак. Обладает идентификатором `categoryId` типа «64-разрядное целое со знаком». Предоставляется рекламной площадкой. + +## Base URL + +`https://visitors-sp.retailrocket.net/v1/` + +## Resources + +### Спонсорский контент для товарных страниц + +#### Path + +`partners/{partnerId}/productPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `productId` | Да | integer | [Идентификатор товара, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +#### Пример вызова + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/productPlacements/a2837ec9-b000-46d7-9272-f64df080da51/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string&productId=93845&stockId=berlin13' +``` + +### Спонсорский контент для страниц групповых товаров + +#### Path + +`partners/{partnerId}/productGroupPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `productIds` | Да | number array | [Список идентификаторов товаров](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +#### Пример вызова + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/productGroupPlacements/545f2f85-dcbe-4d2d-8260-6ecdf6c8c415/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string&productIds=93845,93846,93847&stockId=berlin13' +``` + +### Спонсорский контент для страниц товарных категорий + +{% hint style="warning" %} +В зависимости от того, как выполнена интеграция [товарной базы](../#tovarnaya-baza), необходимо передавать определенный тип идентификатора категории в запросе спонсорского контента для страницы товарной категории. + +[Интеграции через YML-файл](api-sponsorskikh-razmeshenii.md#pri-integracii-cherez-yml-fail) + +[Интеграции через Product API](api-sponsorskikh-razmeshenii.md#pri-integracii-cherez-product-api) +{% endhint %} + +#### При интеграции через YML-файл + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы для запроса спонсорского контента для страниц товарных категорий. + +#### Path + +`partners/{partnerId}/categoryPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `categoryId` | Да | integer | [Идентификатор категории, в контексте которой находится пользователь](../#derevo-tovarnykh-kategorii) | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +#### Пример вызова + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/categoryPlacements/b17d8910-d0c5-4fd7-97d0-66b314f797f2/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string&categoryId=65' +``` + +#### При интеграции через Product API + +При использовании Product API категория передается как `categoryPath,` она должна быть передана в таком же виде и при запросе спонсорского контента для страницы товарной категории. + +#### Path + +`partners/{partnerId}/categoryPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `categoryPath` | Да | string | [Путь категории товара](../#derevo-tovarnykh-kategorii) | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +#### Пример вызова + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/categoryPlacements/b17d8910-d0c5-4fd7-97d0-66b314f797f2/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string&categoryPath=Electronics%2FTV' +``` + +### Спонсорский контент для страницы поиска + +#### Path + +`partners/{partnerId}/searchPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `searchQuery` | Да | string | Поисковый запрос, который ввел пользователь | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/searchPlacements/d34fa7a5-26fe-4cd4-af3f-a52362d90c80/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string&searchQuery=Red%20Apples' +``` + +### Спонсорский контент для прочих страниц + +#### Path + +`partners/{partnerId}/anyPlacements/{placementId}/impressions` + +#### Http Method + +`GET` + +#### Параметры пути запроса + +| Имя поля | Тип | Описание | +| ------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `partnerId` | string | [Идентификатор интернет-магазина](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#identifikator-internet-magazina) | +| `placementId` | string | Идентификатор места размещения. Выдается сотрудником Retail Rocket | + +#### Параметры строки запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | +| `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить, через запятую | +| `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | + +#### **Тип ответа** + +* [Impression](api-sponsorskikh-razmeshenii.md#impression) + +#### Пример вызова + +```bash +curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/anyPlacements/2e1f1f39-bad1-46a4-9488-c075dd95dc9b/impressions?apiKey=608423a104249fa8e9952323&sessionExternalId=3beb9714-82e9-4c08-938d-1391f5d86f2b&acceptContent=productIds,string' +``` + +## Responses + +### Impression + +Содержит данные для показа спонсорского содержимого. + +| Имя поля | Обязательное | Тип | Описание | +| --------- | ------------ | ------------------------------------------------------ | -------------------------------------------------------- | +| `id` | Да | string | Идентификатор запрошенного показа | +| `content` | Да | StringImpressionContent or ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | + +### StringImpressionContent + +Строковое содержимое для показа + +| Имя поля | Обязательное | Тип | Описание | +| -------- | ------------ | ------ | ------------------------- | +| `id` | Да | string | Идентификатор содержимого | +| `string` | Да | string | Произвольный текст | + +### Примеры + +Объект типа `Impression` с полем `content` типа «строка». + +```javascript +{ + "id": "impression identifier", + "content": { + "id": "content identifier", + "string": "any string" + } +} +``` + +### ProductIdsImpressionContent + +Cодержимое для показа товарной полки + +| Имя поля | Обязательное | Тип | Описание | +| ------------ | ------------ | ------------ | ---------------------------------------------- | +| `id` | Да | string | Идентификатор содержимого | +| `productIds` | Да | number array | Массив идентификаторов товаров для отображения | + +### Примеры + +Объект типа Impression с полем `content` типа «товарная полка». + +```javascript +{ + "id": "impression identifier", + "content": { + "id": "content identifier", + "productIds": [123, 321] + } +} +``` + +## Status codes + +| Код ответа | Название | Описание | +| ---------- | --------------- | --------------------------------------------------------------------------- | +| 200 | OK | Запрос принят | +| 204 | NoContent | По запросу ничего не найдено | +| 400 | BadRequest | Ошибка в запросе, необходимо проверить правильность построения запроса | +| 401 | Unauthorized | Ошибка авторизации, необходимо проверить корректность `partnerId`, `apiKey` | +| 403 | Forbidden | Доступ запрещен | +| 404 | NotFound | Запрошенный ресурс не найден, необходимо проверить правильность URL | +| 429 | TooManyRequests | Превышение лимита запросов | + +## Время ответа + +Ожидаемое время ответа – 100 мс для всех ресурсов (может отличаться из-за особенностей сетевой инфраструктуры). + +## Ограничения + +По умолчанию действует ограничение в 50 запросов/секунду для каждой рекламной площадки. При необходимости возможно изменить (с помощью аккаунт-менеджера). diff --git a/integraciya-s-retail-rocket/http-tracking-api.md b/integraciya-s-retail-rocket/http-tracking-api.md new file mode 100644 index 0000000..a7b1d0d --- /dev/null +++ b/integraciya-s-retail-rocket/http-tracking-api.md @@ -0,0 +1,1066 @@ +# API трекинг пользовательского поведения + +Данные о пользовательском поведении необходимы для работы многих продуктов Retail Rocket: товарных рекомендаций, автоматизированных коммуникационных кампаний, для отслеживания метрик эффективности коммуникаций и т.д. + +## **Общие концепции** + +Для передачи пользовательского поведения в систему Retail Rocket необходимо вызывать соответствующие действию методы трекинг API для всех значимых действий пользователя (просмотр товара, добавление в корзину и т.д.). Ниже описаны методы для каждого такого действия с их параметрами, возможными кодами ответов и примерами вызова. + +## **Base URL** + +`https://apptracking.retailrocket.net/1.0/` + +## Resources + +Трекинг API придерживается [общих принципов интеграционных API](obshie-principy-integracii-s-retail-rocket.md). + +### Просмотр карточки товара + +Должен быть вызван при каждом просмотре посетителем карточки товара. + +**Path** + +**`view`** + +**HTTP-метод** + +`POST` + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +**HTTP-заголовки** + +`Content-type: application/json` + +**Тело запроса** + +В теле запроса передается объект типа **`ViewEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `productId` | Да | integer | [Идентификатор товара](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +**Пример вызова** + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/view?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Просмотр карточки группового товара + +Должен быть вызван при каждом просмотре посетителем карточки товара, на которой представлен групповой товар. + +#### Path + +**`groupView`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`GroupViewEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `groupId` | Да | integer | [Идентификатор товарной группы](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `productIds` | Да | number array | [Список идентификаторов товаров](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/groupView?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"groupId\": 654321, + \"productIds\": [123456, 234567, 345678], + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Добавление товара в корзину + +Должен быть вызван при каждом добавлении посетителем товара в корзину. + +**Path** + +**`addToBasket`** + +**HTTP-метод** + +`POST` + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +**HTTP-заголовки** + +`Content-type: application/json` + +**Тело запроса** + +В теле запроса передается объект типа **`AddToBasketEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `productId` | Да | integer | [Идентификатор товара](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/addToBasket?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Просмотр страницы товарной категории + +Должен быть вызван при просмотре посетителем страницы товарной категории. + +{% hint style="warning" %} +В зависимости от того как выполнена интеграция передачи [товарной базы](../#tovarnaya-baza), необходимо вызывать разные методы для передачи факта просмотра пользователем страницы товарной категории. + +[Интеграции через YML-файл](http-tracking-api.md#pri-integracii-cherez-yml-fail) + +[Интеграции через Product API](http-tracking-api.md#pri-integracii-cherez-product-api) +{% endhint %} + +#### При интеграции через YML-файл + +В YML файле доступно дерево категорий с целочисленными идентификаторами категории, поэтому и товары имеют целочисленные идентификаторы категорий, что позволяет использовать такие идентификаторы в трекинге пользовательского поведения. + +**Path** + +**`categoryView`** + +**HTTP-метод** + +`POST` + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +**HTTP-заголовки** + +`Content-type: application/json` + +**Тело запроса** + +В теле запроса передается объект типа **`CategoryViewEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `categoryId` | Да | integer | [Идентификатор категории товара](obshie-principy-integracii-s-retail-rocket.md#sposoby-peredachi-tovarnoi-bazy) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/categoryView?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"categoryId\": 123456, + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +#### При интеграции через Product API + +При использовании product API категория передается как `categoryPath` также она должна быть передана и при просмотре страницы категории. + +#### Path + +**`categoryViewByCategoryPath`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`CategoryViewEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `categoryPath` | Да | string | [Путь категории товара](obshie-principy-integracii-s-retail-rocket.md#sposoby-peredachi-tovarnoi-bazy) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/categoryViewByCategoryPath?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"categoryPath\": \"Товары для дома/Кухня/Вилки\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Заказ товара + +​Должен быть вызван для каждой товарной позиции в заказе. + +#### Path + +**`order`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`OrderEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `productId` | Да | integer | [Идентификатор товара](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `price` | Да | number | Цена с учетом скидок за **единицу товара** | +| `quantity` | Да | number | Кол-во единиц товара в заказе | +| `transaction` | Да | string | Идентификатор покупки | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/order?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"quantity\": 2, + \"price\": 234, + \"transaction\": \"135243\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Поисковый запрос + +Должен быть вызван при вводе посетителем поисковой фразы. + +#### Path + +**`search`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`SearchEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `searchPhrase` | Да | string | Поисковая фраза, которую ввел пользователь | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит пользователь](obshie-principy-integracii-s-retail-rocket.md#podderzhka-regionalnosti-sklad-region) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/search?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"searchPhrase\": \"подгузник для новорожденных\", + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### **Аутентификация** пользователя + +Для того, чтобы пользовательское поведение было правильно учтено для [контакта](../#kontakt), в момент, когда становится известен идентификатор посетителя(логин на сайте), необходимо передать устойчивый идентификатор посетителя в систему Retail Rocket. + +{% hint style="info" %} +**`contactExternalId` -** уникальный идентификатор контакта, по которому пользователь может быть распознан в системе клиента. Служит для обмена информацией о контактах между платформой Retail Rocket и источниками данных клиента. +{% endhint %} + +{% hint style="warning" %} +**`phone -`** Номер телефона пользователя следует передавать в формате E.164 +{% endhint %} + +#### Требования к contactExternalId + +* Должен состоять только из цифр и букв; +* Не превышать 50 символов; + +#### Path + +**`setContact`** + +#### HTTP-метод + +`POST` + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### Тело запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `contactExternalId` | Да | string | [Уникальный идентификатор контакта](http-tracking-api.md#ustanovka-sessii) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | +| `email` | Нет | string | Адрес почты пользователя | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит пользователь](obshie-principy-integracii-s-retail-rocket.md#podderzhka-regionalnosti-sklad-region) | +| `phone` | Нет | string | [Номер телефона пользователя](http-tracking-api.md#autentifikaciya-polzovatelya) | +| `customData` | Нет | JSON Object | Пользовательские параметры | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/setContact?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"contactExternalId\": \"2342dfgf253454c645346wer3\", + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\", + \"email\": \"example@email.com\" + } + " +``` + +### Запуск сценария 'Welcome Sequence' + +Запускает цепочку email-сценария WelcomeSequence. + +{% hint style="info" %} +**Welcome-цепочка** — это приветственное письмо или серия писем, в которых интернет-магазин рассказывает о своем бренде, или об особенностях своей работы. +{% endhint %} + +{% hint style="warning" %} +На момент вызова метода, email-адрес должен быть в базе подписчиков партнера. +{% endhint %} + +#### Path + +**`welcomeSequence`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | +| `email` | Да | string | Адрес почты пользователя | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/welcomeSequence?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"email\": \"example@gmail.com\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Клик по содержимому письма + +Событие клика по содержимому письма. Должно вызываться, если пользователь переходит из письма. + +{% hint style="info" %} +Все ссылки в письме содержат GET параметр **`MailTrackingId`** с уникальным значением для каждого письма. При каждом переходе из письма на сайт, URL страницы будет содержать параметр **`MailTrackingId`**, значение которого следует передавать в тело запроса. +{% endhint %} + +#### Path + +**`emailClick`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------------- | ------------ | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | +| `mailTrackingId` | Да | string | [Метка пользователя из письма](http-tracking-api.md#zapusk-scenariya-welcome-sequence-1) | +| `customData` | Нет | JSON объект | Пользовательские параметры | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/emailClick?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"mailTrackingId\": \"5b488f277ecc191c98859541\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +## Передача данных о взаимодействии с рекомендациями + +Для оценки эффективности рекомендаций, а также для учета продаж через товарные рекомендации, необходимо передавать соответствующие события взаимодействия с рекомендациями. + +{% hint style="info" %} +Идентификатор блока рекомендаций `recomBlockId` **-** любая строка до 50 символов, используется для идентификации каждого блока рекомендаций +{% endhint %} + +### Просмотр блока рекомендаций + +Должен быть вызван при каждом показе блока рекомендаций пользователю приложения + +**Path** + +**`recomBlockViewed`** + +**HTTP-метод** + +`POST` + +**Параметры строки запроса** + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +**HTTP-заголовки** + +`Content-type: application/json` + +**Тело запроса** + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `recomBlockId` | Да | string | [Идентификатор блока рекомендаций](http-tracking-api.md#peredacha-dannykh-o-vzaimodeistvii-s-rekomendaciyami) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/recomBlockViewed?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"recomBlockId\": \"568da4f6-7952-49b1-afd3-9ac44d6e78c7\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Клик по блоку рекомендаций + +Нажатие по рекомендации – это, фактически, переход в карточку товара, рекомендованную в блоке. Элементы, такие как название товара, изображения товара, цена и другие, относящиеся к рекомендуемому товару из рекомендаций, должны содержать обработчик tap и вызывать событие recomTap. + +#### Path + +**`recomTap`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `productId` | Да | integer | [Идентификатор товара](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | +| `recomBlockId` | Да | string | [Идентификатор блока рекомендаций](http-tracking-api.md#peredacha-dannykh-o-vzaimodeistvii-s-rekomendaciyami) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/recomTap?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\", + \"recomBlockId\": \"5994d90bc7d0114fa0a26122\" + } + " +``` + +### Добавление в корзину из блока рекомендаций + +Если в блоке товарных рекомендаций используется кнопка добавления товара в корзину, то при каждом добавлении товара в корзину из блока рекомендаций (без перехода в карточку товара) необходимо вызывать обработчик добавления товара из блока в корзину. + +#### **Path** + +**`recomAddToBasket`** + +#### HTTP-метод + +`POST` + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### Тело запроса + +| Имя поля | Обязательное | Тип | Описание | +| ------------------- | ------------ | ------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `productId` | Да | integer | [Идентификатор товара](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `stockId` | Нет | string | [Идентификатор склада, к которому принадлежит товар](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#svedeniya-o-tovare) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | +| `recomBlockId` | Да | string | [Идентификатор блока рекомендаций](http-tracking-api.md#peredacha-dannykh-o-vzaimodeistvii-s-rekomendaciyami) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/recomAddToBasket?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\", + \"recomBlockId\": \"5994d90bc7d0114fa0a26122\" + } + " +``` + +## Передача данных о взаимодействии со спонсорским контентом + +### Просмотр спонсорского контента + +Должен быть вызван при каждом показе посетителю спонсорского контента. + +#### Path + +**`impressionContentViewed`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`ImpressionContentViewedEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| --------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `impressionContentId` | Да | string | [Идентификатор спонсорского контента](instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md#integraciya-sistem) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/impressionContentViewed?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"impressionContentId\": \"568da4f6-7952-49b1-afd3-9ac44d6e78c7\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +### Клик по спонсорскому контенту + +Должен быть вызван при каждом клике посетителем в спонсорский контент. + +#### Path + +**impressionContentClicked** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается объект типа **`ImpressionContentViewedEvent`** со следующими полями: + +| Имя поля | Обязательное | Тип | Описание | +| --------------------- | ------------ | ------ | ----------------------------------------------------------------------------------------------------------------------------------------------------- | +| `sessionExternalId` | Да | string | [Идентификатор пользователя](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#upravlenie-sessiei) | +| `impressionContentId` | Да | string | [Идентификатор спонсорского контента](instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md#integraciya-sistem) | +| `timestamp` | Да | string | [Метка времени вызова](https://docs.retailrocket.net/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket#metka-vremeni-vyzova) | + +#### Пример вызова + +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/impressionContentClicked?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"impressionContentId\": \"568da4f6-7952-49b1-afd3-9ac44d6e78c7\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + " +``` + +## Пакетная загрузка пользовательского поведения + +API предоставляет возможность пакетной загрузки пользовательского поведения. В теле вызова метода передается список пользовательских событий. Вызов гарантирует сохранение порядка переданных в него событий. + +### Специфика использования пакетной загрузки + +Метод API `visitorEvents` решает проблему сохранения порядка пользовательских событий. К примеру, при потере соединения с сетью интернет, когда нельзя передать события в режиме реального времени, но действия совершаются в приложении. Как только у приложения появится доступ к сети интернет, нам важно получить эти события, но если отправить их с помощью обычных вызовов `view`, `addToBasket` - есть вероятность потерять порядок, из-за того, что каждый из вызовов `view`, `addToBasket` обработается разным сервером. Для сохранения порядка действий есть метод `visitorEvents`, принимающий набор событий и гарантирующий, что события будут сохранены в том порядке в котором они переданы. + +### Особенности использования + +{% hint style="danger" %} +Для отправки двух пакетов событий, содержащих разное поведение одного пользователя, нужно отправить первый, дождаться успешного статуса ответа и после этого отправить второй; +{% endhint %} + +{% hint style="danger" %} +Нельзя параллельно совершать более одного вызова, в которых есть события по одному пользователю - это может нарушить порядок; +{% endhint %} + +{% hint style="warning" %} +Из-за необходимости вернуть подтверждение сохранения событий и порядка время ответа **`visitorEvents`**, как правило, на порядки больше времени ответа обычных (не пакетных) вызовов трекинга и может составлять порядка 1.5 секунд и более. В связи с этим не следует использовать данный вызов для передачи realtime-событий; +{% endhint %} + +{% hint style="info" %} +В вызове можно передать события для разных пользователей (**sessionExternalId**); +{% endhint %} + +{% hint style="info" %} +Можно параллельно вызывать **`visitorEvents`** с пакетами для разных пользователей, т.к. порядок важен только в рамках одного пользователя; +{% endhint %} + +#### Path + +**`visitorEvents`** + +#### HTTP-метод + +`POST` + +#### Параметры строки запроса + +| Имя параметра | Обязательное | Тип | Описание | +| ------------- | ------------ | ------ | ---------------------------------------------------------------------------------------------------------------- | +| `apiKey` | Да | string | [Ключ авторизации](obshie-principy-integracii-s-retail-rocket.md#avtorizaciya) | +| `partnerId` | Да | string | [Идентификатор интернет-магазина](obshie-principy-integracii-s-retail-rocket.md#identifikator-internet-magazina) | + +#### HTTP-заголовки + +`Content-type: application/json` + +#### Тело запроса + +В теле запроса передается список пользовательских событий любого из следующих типов: + +**`ViewEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| -------- | ------------ | ----------- | --------------------------------------------------------------------------------------- | +| `view` | Да | `ViewEvent` | Тип подробно описан в разделе «Просмотр карточки товара» как тип параметра тела запроса | + +**`GroupEventViewEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ----------- | ------------ | ---------------- | -------------------------------------------------------------------------------------------------- | +| `groupView` | Да | `GroupViewEvent` | Тип подробно описан в разделе «Просмотр карточки группового товара» как тип параметра тела запроса | + +**`AddToBasketEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ------------- | ------------ | ------------------ | ------------------------------------------------------------------------------------------ | +| `addToBasket` | Да | `addToBasketEvent` | Тип подробно описан в разделе «Добавление товара в корзину» как тип параметра тела запроса | + +**`OrderEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| -------- | ------------ | ------------ | --------------------------------------------------------------------------- | +| `order` | Да | `OrderEvent` | Тип подробно описан в разделе «Заказ товара» как тип параметра тела запроса | + +**`CategoryViewEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| -------------- | ------------ | ------------------- | ------------------------------------------------------------------------------------------------- | +| `categoryView` | Да | `CategoryViewEvent` | Тип подробно описан в разделе «Просмотр страницы категории товара» как тип параметра тела запроса | + +**`SearchViewEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| -------- | ------------ | ----------------- | ------------------------------------------------------------------------------------------------- | +| `search` | Да | `SearchViewEvent` | Тип подробно описан в разделе «Просмотр страницы категории товара» как тип параметра тела запроса | + +**`ImpressionContentViewedEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ------------------------- | ------------ | ------------------------------ | --------------------------------------------------------------------------------------------- | +| `impressionContentViewed` | Да | `ImpressionContentViewedEvent` | Тип подробно описан в разделе «Просмотр спонсорского контента» как тип параметра тела запроса | + +**`ImpressionContentClickedEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| -------------------------- | ------------ | ------------------------------- | -------------------------------------------------------------------------------------------- | +| `impressionContentClicked` | Да | `ImpressionContentClickedEvent` | Тип подробно описан в разделе «Клик по спонсорскому контенту» как тип параметра тела запроса | + +**`EmailClickEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ------------ | ------------ | ----------------- | ----------------------------------------------------------------------------------------- | +| `emailClick` | Да | `EmailClickEvent` | Тип подробно описан в разделе «Клик по содержимому письма» как тип параметра тела запроса | + +**`WelcomeSequenceEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ----------------- | ------------ | ---------------------- | ------------------------------------------------------------------------------------------------- | +| `welcomeSequence` | Да | `WelcomeSequenceEvent` | Тип подробно описан в разделе «Запуск сценария 'Welcome Sequence'» как тип параметра тела запроса | + +**`SetContactEventEnvelope`** + +| Имя поля | Обязательное | Тип | Описание | +| ------------ | ------------ | ----------------- | ------------------------------------------------------------------------------------------ | +| `setContact` | Да | `SetContactEvent` | Тип подробно описан в разделе «Аутентификация пользователя» как тип параметра тела запроса | + +**Пример вызова** + +{% tabs %} +{% tab title="Bash" %} +```bash +curl \ + -X POST "https://apptracking.retailrocket.net/1.0/visitorEvents?apiKey=608423a104249fa8e9952323&partnerId=608423a9b126ac6ab3f8f0a5" \ + -H "Content-type: application/json" \ + --data " + [ + { + \"view\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 123456, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"groupView\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"groupId\": 654321, + \"productIds\": [123456, 234567, 345678], + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"addToBasket\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 234567, + \"stockId\": \"NewYork\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"order\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"productId\": 234567, + \"stockId\": \"NewYork\", + \"quantity\": 3, + \"price\": 1321.43, + \"transaction\": \"135243\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"categoryView\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"categoryId\": 123456, + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"search\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"searchPhrase\": \"подгузник для новорожденных\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"recomBlockViewed\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"recomBlockId\": \"34453dffg34534te565\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"recomTap\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"recomBlockId\": \"34453dffg34534te55\", + \"productId\" : 123, + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"recomAddToBasket\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"recomBlockId\": \"34453dffg34534te54\", + \"productId\" : 123, + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"impressionContentViewed\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"impressionContentId\": \"568da4f6-7952-49b1-afd3-9ac44d6e78c7\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"impressionContentClicked\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"impressionContentId\": \"568da4f6-7952-49b1-afd3-9ac44d6e78c7\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"emailClick\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"mailTrackingId\": \"5b488f277ecc191c98859541\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"setContact\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"contactExternalId\": \"2342dfgf253454c645346wer3\", + \"email\": \"example@gmail.com\", + \"stockId\": \"Moscow\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + }, + { + \"welcomeSequence\": { + \"sessionExternalId\": \"60842392e4881c65e6c5e423\", + \"email\": \"example@gmail.com\", + \"timestamp\": \"2018-09-15T15:53:00+00:00\" + } + } + ] +" +``` +{% endtab %} +{% endtabs %} + +## Коды ответов + +| Код ответа | Описание | +| ---------- | ---------------------------------------------------------------------- | +| 200 | Запрос принят | +| 400 | Ошибка в запросе, необходимо проверить правильность построения запроса | +| 401 | Ошибка аутентификации, проверьте корректность пары `apiKey` | +| 403 | Доступ запрещен | +| 404 | Запрошенный ресурс не найден, необходимо проверить правильность URL | + +## Время ответа + +Ожидаемое время ответа – 100 мс для всех ресурсов (может отличаться из-за особенностей сетевой инфраструктуры). + +## Ограничения + +По умолчанию действует ограничение в 100 запросов/секунду для площадки. При необходимости возможно изменить (с помощью аккаунт-менеджера). diff --git a/integraciya-s-retail-rocket/instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md b/integraciya-s-retail-rocket/instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md new file mode 100644 index 0000000..8bda493 --- /dev/null +++ b/integraciya-s-retail-rocket/instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md @@ -0,0 +1,72 @@ +# Инструкция по интеграции продукта «Спонсорские размещения» + +## Общие сведения + +Продукт «Спонсорские размещения» предназначен для показа товарных промо-материалов от производителей товаров (рекламодателей) на страницах интернет-магазина и сбора метрик взаимодействия посетителей с показанным контентом. + +Для того, чтобы эффективность показов контента была выше, система позволяет магазинам задавать контекст рекламного блока в зависимости от типа страницы, а рекламодателям дается возможность ограничивать показы контента в зависимости от данных, доступных на каждом типе страниц. + +#### Типы страниц: + +* Страница товарной карточки; +* Страница группы товаров (корзина, успешное завершение заказа); +* Страница товарной категории; +* Страница поисковой выдачи; +* Прочие страницы (главная, 404 и т.д.). + +Так на странице товарной карточки имеется возможность запросить контент, показ которого рекламодатель ограничил по товарным параметрам (цене товара, категории и т.д.); на поисковой странице – по семантическому ядру; на странице товарной категории – по товарной категории, которую просматривает пользователь. На всех страницах рекламодатель может ограничить показы в зависимости от профиля посетителя. + +Система позволяет магазину в рамках одного места на странице запрашивать различный контент для показа. + +#### Типы контента: + +* Товарная полка; +* Баннер; +* Строка; +* В дальнейшем планируется расширять варианты контента. + +Если в рамках одного размещения доступно более одного типа контента, рекламодатель может выбрать тот тип, который посчитает наиболее подходящим для кампании. + +## Этапы подключения системы к интернет-магазину + +### Составление карты интеграции + +Необходимо составить список страниц/экранов с местами, где планируется показывать спонсорский контент. Для каждого места получить идентификатор, выбрать тип страницы и тип контента. + +Должна получиться таблица (карта интеграции): + +| Место размещения | Идентификатор блока | Тип страницы | Тип контента | +| ---------------------------------- | ------------------------ | ----------------- | ---------------------- | +| Карточка товара до комментариев | 608d286f30e9b69fee2be370 | Товарная карточка | Товарная полка | +| Карточка товара после комментариев | 608d28c10f3b6f6091ae818c | Товарная карточка | Товарная полка, баннер | +| Поисковая страница | 608d2887b50326449cb41224 | Поисковая выдача | Баннер | +| Главная страница, баннерное место | 608d28f9b0a04d23b9aea5e5 | Прочее | Баннер | + +Карту интеграции составляет сотрудник Retail Rocket при участии сотрудников интернет-магазина. + +### Интеграция систем + +Интеграция состоит из двух этапов: интеграция спонсорских блоков, передача пользовательского поведения. + +#### Интеграция спонсорских блоков + +Имея на руках карту интеграции, программист интернет-магазина, используя документацию [API для получения спонсорских размещений](api-sponsorskikh-razmeshenii.md), запрашивает контент при каждом показе страницы, в зависимости от полученного [типа контента](instrukciya-po-integracii-retail-rocket-sponsorskoe-razmeshenie.md#tip-kontenta) обрабатывает ответ и встраивает в интерфейс интернет-магазина промо-материал. + +#### Передача пользовательского поведения + +Для системы Retail Rocket «Спонсорские размещения» пользовательское поведение необходимо в двух аспектах: учет взаимодействия пользователей со спонсорским контентом – расчет эффективности показов, и получение пользовательских событий для предоставления рекламодателем функционала таргетирования контента на основе профиля пользователя – таргетирование по интересам пользователя к категориям. + +**Передача взаимодействия посетителя интернет-магазина с спонсорским контентом** + +Просмотр промо-контента + +В случае успешного показа контента пользователю необходимо вызвать метод трекинга «[Просмотр спонсорского контента](http-tracking-api.md#prosmotr-sponsorskogo-kontenta)» и в качестве значения параметра «Идентификатор спонсорского контента» передать значение `impressionContentId`, полученное вместе с промо-контентом от Retail Rocket. + +Клик в промо-контент + +Если посетитель интернет-магазина кликнул в промо-контент, необходимо вызвать метод трекинга «[Клик по спонсорскому контенту](http-tracking-api.md#klik-po-sponsorskomu-kontentu)» и в качестве значения параметра «Идентификатор спонсорского контента» передать значение `impressionContentId`, полученное вместе с промо-контентом от Retail Rocket. + +**Передача пользовательского поведения на интернет-магазине** + +Методы трекинга пользовательского поведения описаны в разделе "[API трекинг пользовательского поведения](http-tracking-api.md)" + diff --git a/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md b/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md new file mode 100644 index 0000000..96980bb --- /dev/null +++ b/integraciya-s-retail-rocket/obshie-principy-integracii-s-retail-rocket.md @@ -0,0 +1,86 @@ +# Общие принципы интеграции с Retail Rocket + +## Основные принципы + +Все API Retail Rocket доступны по протоколу HTTP/2. + +Если для вызова метода требуется передача данных в теле запроса, то система ожидает их в формате JSON и соответствующего http-заголовка: `content-type: application/json` + +Все данные, которые возвращаются в результате вызова, возвращаются в формате JSON. + +Статусы HTTP-ответа имеют значение. Возможные статусы метода описываются в его документации. + +В целях оптимизации скорости подключения и передачи данных соединение следует кешировать. + +При отправке событий ответ ждать не нужно, исключение составляет лишь пакетная загрузка событий, детали которой описаны в [соответствующем разделе](http-tracking-api.md#specifika-ispolzovaniya-paketnoi-zagruzki). + +## **Идентификатор интернет-магазина** + +Для идентификации интернет-магазина в API используется параметр`partnerId`. Значение параметра выдается при регистрации в системе Retail Rocket и может быть получено либо запросом к аккаунт-менеджеру Retail Rocket, либо обращением в службу поддержки (support@retailrocket.ru), либо в [личном кабинете Retail Rocket](https://my.retailrocket.ru). + +{% hint style="info" %} +Значение является **публичным** и может быть использовано в открытом виде. +{% endhint %} + +## Авторизация + +Доступ к некоторым методам API ограничен, и для их использования требуется передавать параметр `apiKey`, значение которого можно получить у сотрудника Retail Rocket. + +{% hint style="danger" %} +Значение `apiKey` является **секретным** и не должно передаваться третьим лицам. +{% endhint %} + +{% hint style="danger" %} +Значение `apiKey` не должно передаваться или храниться на клиентской стороне (на сайте или в мобильном приложении). +{% endhint %} + +{% hint style="warning" %} +В случае утечки значения `apiKey`следует запросить у аккаунт-менеджера новое. Старое значение перестанет действовать. +{% endhint %} + +{% hint style="info" %} +**Рекомендация** + +Хранить значение `apiKey` в хранилище, в котором его можно изменить без необходимости выпускать новую версию сайта/приложения. +{% endhint %} + +## **Управление сессией** + +Для некоторых вызовов API требуется идентифицировать посетителя, для которого этот запрос применим. Для этого требуется передавать идентификатор пользовательской сессии в параметре `sessionExternalId.` Идентификатор должен быть сгенерирован на стороне магазина и обладать следующими свойствами: + +* Состоять только из цифр и букв; +* Не превышать 50 символов; +* Быть уникальным для устройства/браузера; +* Не содержать персональных данных, например, телефона или адреса электронной почты; +* Не должен изменяться при авторизации или смене аккаунта. + +{% hint style="info" %} +**Рекомендация** + +При первом появлении посетителя на сайте или в мобильном приложении генерировать GUID и использовать его в качестве `sessionExternalId` для последующих вызовов API. +{% endhint %} + +## Метка времени вызова + +Для корректной работы многих продуктов Retail Rocket необходимо знать время, когда метод был вызван, для этого в некоторых методах API предусмотрен опциональный параметр `timestamp`, в значении которого система Retail Rocket ожидает дату и время в формате ISO 8601. + +Если опциональный параметр не задан, то в качестве временной метки будет использовано серверное время Retail Rocket на момент вызова. + +## Сведения о товаре + +Если в методе API требуются товарные данные (например, идентификатор товара/склада и т.д.), значение таких параметров должно совпадать со значениями, переданными с товарной базой в Retail Rocket. + +## Поддержка региональности (склад/регион) + +Функционал региональности позволяет передавать информацию о товарах (например: цену и наличие), актуальную для конкретного склада/региона. Это позволяет везде, где используются данные товара, опираться на данные для конкретного склада или региона. + +Данные, которые могут быть переопределены для конкретного склада: + +* Цена; +* Старая цена; +* Признак наличия товара; +* Название товара; +* Описание товара; +* Ссылка на товар; +* Ссылка на изображение; + From 4d924701ae2d8870757d32d917ba3ae8be2e7f47 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Wed, 2 Feb 2022 14:51:15 +0300 Subject: [PATCH 2/6] Update doc --- .../api-sponsorskikh-razmeshenii.md | 72 +++++++++++++++++-- 1 file changed, 67 insertions(+), 5 deletions(-) diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md index 81f54eb..758d4a4 100644 --- a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -18,6 +18,7 @@ * `string` * `productIds` +* `banners` Если рекламная площадка готова размещать более одного варианта содержимого, их можно указать через запятую, например: `acceptContent=string,productIds` @@ -278,12 +279,18 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ ### Impression -Содержит данные для показа спонсорского содержимого. +Содержит данные для показа спонсорского содержимого. Может принимать разные формы, в зависимости от значения переданного в запросе `acceptContent`. -| Имя поля | Обязательное | Тип | Описание | -| --------- | ------------ | ------------------------------------------------------ | -------------------------------------------------------- | -| `id` | Да | string | Идентификатор запрошенного показа | -| `content` | Да | StringImpressionContent or ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | +- `StringImpression` соответствует `acceptContent=string` +- `ProductIdsImpression` соответствует `acceptContent=productIds` +- `BannersImpression` соответствует `acceptContent=banners` + +### StringImpression + +| Имя поля | Обязательное | Тип | Описание | +|-----------|--------------|-------------------------|----------------------------------------------------------| +| `id` | Да | string | Идентификатор запрошенного показа | +| `content` | Да | StringImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | ### StringImpressionContent @@ -308,6 +315,13 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ } ``` +### ProductIdsImpression + +| Имя поля | Обязательное | Тип | Описание | +|-----------|--------------|-------------------------|----------------------------------------------------------| +| `id` | Да | string | Идентификатор запрошенного показа | +| `content` | Да | ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | + ### ProductIdsImpressionContent Cодержимое для показа товарной полки @@ -331,6 +345,54 @@ Cодержимое для показа товарной полки } ``` +### BannersImpression + +| Имя поля | Обязательное | Тип | Описание | +|-----------|--------------|-------------------------|----------------------------------------------------------| +| `id` | Да | string | Идентификатор запрошенного показа | +| `content` | Да | ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | + +### BannersImpression + +Cодержимое для показа баннеров + +| Имя поля | Обязательное | Тип | Описание | +|-----------|--------------|--------------|---------------------------------| +| `id` | Да | string | Идентификатор содержимого | +| `banners` | Да | Banner array | Массив баннеров для отображения | + +### Banner + +Информация о баннере + +| Имя поля | Обязательное | Тип | Описание | +|--------------|--------------|--------|--------------------------------------| +| `targetUrl` | Нет | string | URL для перехода при клике на баннер | +| `pictureUrl` | Да | string | URL изображения | + +### Примеры + +Объект типа Impression с полем `content` типа «баннеры». + +```javascript +{ + "id": "impression identifier", + "content": { + "id": "content identifier", + "banners": [ + { + "targetUrl" : "http://host/path", + "pictureUrl": "http://host/path/image.png" + }, + { + "targetUrl" : "http://host/path", + "pictureUrl": "http://host/path/image.png" + }, + ] + } +} +``` + ## Status codes | Код ответа | Название | Описание | From 4f961bc81d137f63867fad75800aeb87f87ea8d2 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Wed, 2 Feb 2022 21:03:54 +0300 Subject: [PATCH 3/6] Add stockid to all requests --- .../api-sponsorskikh-razmeshenii.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md index 758d4a4..c8387fc 100644 --- a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -152,11 +152,12 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -| ------------------- | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|---------------------|--------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | | `categoryId` | Да | integer | [Идентификатор категории, в контексте которой находится пользователь](../#derevo-tovarnykh-kategorii) | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | #### **Тип ответа** @@ -190,11 +191,12 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | | `categoryPath` | Да | string | [Путь категории товара](../#derevo-tovarnykh-kategorii) | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | #### **Тип ответа** @@ -226,11 +228,12 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | | `searchQuery` | Да | string | Поисковый запрос, который ввел пользователь | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | #### **Тип ответа** @@ -260,10 +263,11 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | +|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить, через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | +| `stockId` | Нет | string | [Идентификатор склада, в контексте которого находится пользователь](obshie-principy-integracii-s-retail-rocket.md#svedeniya-o-tovare) | #### **Тип ответа** From 25ea0bf4ef9a14238a9a070ef646502a6630ebb4 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Wed, 2 Feb 2022 21:28:20 +0300 Subject: [PATCH 4/6] Add common recommendations --- .../api-sponsorskikh-razmeshenii.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md index 758d4a4..e34f7bf 100644 --- a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -1,5 +1,19 @@ # API получения контента спонсорских размещений +## Общие рекомендации по интеграции + +При интеграции API на рекламную площадку, необходимо помнить, что обращение к внешнему API всегда может закончиться неудачно. +Причин для этого множество - нестабильность сетевой инфраструктуры, блокировки Роскомнадзора, ошибки на стороне сервера или просто человеческий фактор. +Поэтому мы рекомендуем учитывать возможность получения нестандартного ответа, и прорабатывать это с точки зрения внешнего вида веб-сайта или мобильного приложения. +Это особенно важно для главной страницы - если промо материал занимает большую часть экрана, то, возможно, следует предусмотреть заполнение этого пространства содержимым по умолчанию. + +Обязательно нужно устанавливать какой-то разумный таймаут на все внешние запросы, чтобы сохранить отзывчивость интерфейса. + +Так же, стоит не забывать, что получение пустого промо материала (ответ 204) - это вполне стандартная и частая ситуация, которая возникает, если для запрашиваемого сегмента пользвателей не запущено ни одной кампании. + +Стоит предусмотреть возможность того, что результат запроса может иметь неожиданный формат. Кампании могут предоставлять разные варианты содержимого, представленные в различной форме. Это могут быть баннеры, товарные полки, брендированные товарные полки, и т.д. Для кажого варианта содержимого будет своя логика отрисовки и учета факта просмотра. +Варианты этого содержимого всегда ограничиваются параметром `contentType`, что гарантирует предсказумость результата запроса, однако общей практикой является предусмотреть и обработать неизвестный формат содержимого. + ## Термины ### **Рекламная площадка** From 49ac489a1c9dd3b8053824bfee45087ac6e0bd7d Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Wed, 2 Feb 2022 21:35:37 +0300 Subject: [PATCH 5/6] fix typos --- integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md index e34f7bf..23c6e6d 100644 --- a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -9,10 +9,10 @@ Обязательно нужно устанавливать какой-то разумный таймаут на все внешние запросы, чтобы сохранить отзывчивость интерфейса. -Так же, стоит не забывать, что получение пустого промо материала (ответ 204) - это вполне стандартная и частая ситуация, которая возникает, если для запрашиваемого сегмента пользвателей не запущено ни одной кампании. +Так же, стоит не забывать, что получение пустого промо материала (ответ 204) - это вполне стандартная и частая ситуация, которая возникает, если для запрашиваемого сегмента пользователей не запущено ни одной кампании. Стоит предусмотреть возможность того, что результат запроса может иметь неожиданный формат. Кампании могут предоставлять разные варианты содержимого, представленные в различной форме. Это могут быть баннеры, товарные полки, брендированные товарные полки, и т.д. Для кажого варианта содержимого будет своя логика отрисовки и учета факта просмотра. -Варианты этого содержимого всегда ограничиваются параметром `contentType`, что гарантирует предсказумость результата запроса, однако общей практикой является предусмотреть и обработать неизвестный формат содержимого. +Варианты этого содержимого всегда ограничиваются параметром `acceptContent`, что гарантирует предсказумость результата запроса, однако общей практикой является предусмотреть и обработать неизвестный формат содержимого. ## Термины From fd9823cb2d76a46815d258ebf791c26915313350 Mon Sep 17 00:00:00 2001 From: Dmitry Ivanov Date: Wed, 9 Feb 2022 14:21:17 +0300 Subject: [PATCH 6/6] Update doc --- .../api-sponsorskikh-razmeshenii.md | 94 +++++++++++++++---- 1 file changed, 74 insertions(+), 20 deletions(-) diff --git a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md index 9450029..b6a7c14 100644 --- a/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md +++ b/integraciya-s-retail-rocket/api-sponsorskikh-razmeshenii.md @@ -33,11 +33,12 @@ * `string` * `productIds` * `banners` +* `sharedBanners` Если рекламная площадка готова размещать более одного варианта содержимого, их можно указать через запятую, например: `acceptContent=string,productIds` ### **Рекламное место** - +**** Область страницы web-приложения или экрана мобильного приложения рекламной площадки, предназначенная для размещения там платного содержимого. Бывает разных типов в зависимости от вида, места, области размещения: * **any placement –** место размещения рекламы, которое может находиться в любом разделе веб-сайта или мобильного приложения; @@ -166,7 +167,7 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -|---------------------|--------------|---------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | ------------ | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | @@ -205,7 +206,7 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | @@ -242,7 +243,7 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить. Через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | @@ -277,7 +278,7 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ #### Параметры строки запроса | Имя поля | Обязательное | Тип | Описание | -|---------------------|--------------|--------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| ------------------- | ------------ | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `sessionExternalId` | Да | string | [Идентификатор пользователя](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#upravlenie-sessiei) | | `acceptContent` | Да | string | Типы содержимого, которые площадка готова разместить, через запятую | | `apiKey` | Да | string | [Ключ авторизации](https://github.com/RetailRocket/Documentation/tree/117692a06b3c513e32856a45dee367feafada3cb/obshie-principy-integracii-s-retail-rocket/README.md#avtorizaciya) | @@ -302,13 +303,15 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ - `StringImpression` соответствует `acceptContent=string` - `ProductIdsImpression` соответствует `acceptContent=productIds` - `BannersImpression` соответствует `acceptContent=banners` +- `SharedBannersImpression` соответствует `acceptContent=sharedBanners` ### StringImpression -| Имя поля | Обязательное | Тип | Описание | -|-----------|--------------|-------------------------|----------------------------------------------------------| -| `id` | Да | string | Идентификатор запрошенного показа | -| `content` | Да | StringImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | +| Имя поля | Обязательное | Тип | Описание | +| ------------- | ------------ | ----------------------- | -------------------------------------------------------- | +| `id` | Да | string | Идентификатор запрошенного показа | +| `contentType` | Нет | string | Тип содержимого. Всегда равен `string` | +| `content` | Да | StringImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | ### StringImpressionContent @@ -326,6 +329,7 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ ```javascript { "id": "impression identifier", + "contentType": "string", "content": { "id": "content identifier", "string": "any string" @@ -335,10 +339,11 @@ curl 'https://visitors-sp.retailrocket.net/v1/partners/608423a9b126ac6ab3f8f0a5/ ### ProductIdsImpression -| Имя поля | Обязательное | Тип | Описание | -|-----------|--------------|-------------------------|----------------------------------------------------------| -| `id` | Да | string | Идентификатор запрошенного показа | -| `content` | Да | ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | +| Имя поля | Обязательное | Тип | Описание | +| ------------- | ------------ | --------------------------- | -------------------------------------------------------- | +| `id` | Да | string | Идентификатор запрошенного показа | +| `contentType` | Нет | string | Тип содержимого. Всегда равен `productIds` | +| `content` | Да | ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | ### ProductIdsImpressionContent @@ -356,6 +361,7 @@ Cодержимое для показа товарной полки ```javascript { "id": "impression identifier", + "contentType": "productIds", "content": { "id": "content identifier", "productIds": [123, 321] @@ -365,17 +371,18 @@ Cодержимое для показа товарной полки ### BannersImpression -| Имя поля | Обязательное | Тип | Описание | -|-----------|--------------|-------------------------|----------------------------------------------------------| -| `id` | Да | string | Идентификатор запрошенного показа | -| `content` | Да | ProductIdsImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | +| Имя поля | Обязательное | Тип | Описание | +| ------------- | ------------ | ------------------------ | -------------------------------------------------------- | +| `id` | Да | string | Идентификатор запрошенного показа | +| `contentType` | Нет | string | Тип содержимого. Всегда равен `banners` | +| `content` | Да | BannersImpressionContent | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | -### BannersImpression +### BannersImpressionContent Cодержимое для показа баннеров | Имя поля | Обязательное | Тип | Описание | -|-----------|--------------|--------------|---------------------------------| +| --------- | ------------ | ------------ | ------------------------------- | | `id` | Да | string | Идентификатор содержимого | | `banners` | Да | Banner array | Массив баннеров для отображения | @@ -384,7 +391,7 @@ Cодержимое для показа баннеров Информация о баннере | Имя поля | Обязательное | Тип | Описание | -|--------------|--------------|--------|--------------------------------------| +| ------------ | ------------ | ------ | ------------------------------------ | | `targetUrl` | Нет | string | URL для перехода при клике на баннер | | `pictureUrl` | Да | string | URL изображения | @@ -395,6 +402,7 @@ Cодержимое для показа баннеров ```javascript { "id": "impression identifier", + "contentType": "banners", "content": { "id": "content identifier", "banners": [ @@ -411,6 +419,52 @@ Cодержимое для показа баннеров } ``` +### SharedBannersImpression + +Содержимое для показа общих баннеров. Отличается от BannersImpression тем, что тут могут присутствовать баннеры разных рекламодателей. + +| Имя поля | Обязательное | Тип | Описание | +| ------------- | ------------ | ----------------------------- | -------------------------------------------------------- | +| `id` | Да | string | Идентификатор запрошенного показа | +| `contentType` | Нет | string | Тип содержимого. Всегда равен `sharedBanners` | +| `content` | Да | BannerImpressionContent array | [Содержимое для показа](api-sponsorskikh-razmeshenii.md) | + +### BannerImpressionContent + +Cодержимое для показа баннера + +| Имя поля | Обязательное | Тип | Описание | +| -------- | ------------ | ------ | ------------------------- | +| `id` | Да | string | Идентификатор содержимого | +| `banner` | Да | Banner | Баннер для отображения | + +### Примеры + +Объект типа Impression с полем `content` типа «общие баннеры». + +```javascript +{ + "id": "impression identifier", + "contentType": "sharedBanners", + "content": [ + { + "id": "content identifier", + "banner": { + "targetUrl" : "http://host/path", + "pictureUrl": "http://host/path/image.png" + } + }, + { + "id": "content identifier", + "banner": { + "targetUrl" : "http://host/path", + "pictureUrl": "http://host/path/image.png" + } + } + ] +} +``` + ## Status codes | Код ответа | Название | Описание |