#
Миграция с API V1 на API V2
API V2 можно внедрять постепенно. V1-документация и существующие /ssapi/* интеграции остаются доступными, поэтому миграцию лучше начинать с нового placement, нового канала или ограниченного набора кампаний.
При миграции ориентируйтесь не только на замену URL, но и на новую форму payload: ctx, user.uid, user.ses, data[], customProps и tracking URL из ответа /choose.
#
Краткая схема замены
#
Основные изменения payload
#
Контекст
В V1 контекст страницы передавался в context.page:
{
"context": {
"page": {
"type": "PRODUCT",
"data": ["sku-123"],
"location": "https://example.com/product/sku-123"
}
}
}
В V2 тот же смысл передаётся в ctx:
{
"ctx": {
"type": "PRODUCT",
"data": ["sku-123"],
"location": "https://example.com/product/sku-123"
}
}
#
Пользователь и сессия
В V1 часто использовались user.slid и session.sl. В V2 используйте user.uid и user.ses:
{
"user": {
"uid": "USER_UID",
"ses": "SESSION_ID"
}
}
После ответов API сохраняйте новые значения uid и ses, если Gateway вернул их в user.
#
События
В V1 custom event properties обычно передавались в events[].properties. В V2 события передаются в data[], а дополнительные свойства - в customProps:
{
"data": [
{
"type": "purchase-v1",
"name": "Purchase",
"productId": "sku-123",
"quantity": 1,
"value": 1990,
"currency": "RUB",
"uniqueTransactionId": "order-100500",
"customProps": {
"paymentMethod": "card"
}
}
]
}
#
Миграция /choose
V1 selector request:
{
"selector": {
"names": ["homepage-recommendations"]
}
}
V2 selector request:
{
"data": [
{
"selector": "homepage-recommendations"
}
]
}
Для in-app или trigger-based сценариев используйте activation flow:
- Отправьте
/visitили/event. - Получите
campaigns[].campaignId. - Вызовите
/chooseсdata[].campaignId. - Отрендерите контент и отправьте engagement по URL из ответа.
#
Миграция engagement
В V2 для ручного рендеринга включите:
{
"options": {
"isBuildEngagementUrl": true
}
}
После этого Gateway добавит готовые tracking URL в ответ /choose. Используйте:
content.events[].urls[]для content-level tracking;products.slots[].events[].urls[]для product-level tracking.
Не заменяйте product-level tracking content-level tracking-ом: для рекомендаций важно отправлять события конкретных слотов.
#
Рекомендуемый порядок перехода
- Выберите один selector или placement, который можно безопасно перевести на V2.
- Реализуйте хранение
uidиses. - Замените
context.pageнаctx,selector.namesнаdata[].selector. - Включите
isBuildEngagementUrlи подключите вызов URL изcontent.events[]иproducts.slots[].events[]. - Сравните показы, клики и бизнес-события в отчётах.
- После проверки переносите следующие placements.
#
Что проверить после миграции
ctx.type,ctx.dataиctx.locationсовпадают с настройками кампаний и фидом.uidсохраняется между сессиями,sesобновляется после ответов API.- Для
/chooseс pageview используетсяisImplicitPageviewтолько один раз на страницу. - Для товаров отправляются
products.slots[].events[], а не только content-level events. - Для login/signup передаются одинаковые
cuidиcuidTypeво всех каналах интеграции.