# Получение кампаний

Для получения кампаний необходимо отправить запрос /choose. В запросе должен быть указан селектор кампании, который вы задали при создании кампании.


# choose: запрос кампаний

# Типы кампаний

Метод choose поддерживает два типа кампаний: товарные и нетоварные. Тип указывается при создании кампании.

  1. Товарные кампании:
  • Это кампании с типом Recommendations (Рекомендации) и Product listing (Листинг товаров).
  • В ответе эти кампании можно идентифицировать по choices[].type = RECS_DECISION и choices[].variations[].payload.type = RECS.
  • В ответе возвращаются только те параметры товаров, которые указаны в разделе Product Fields (Поля товара) в настройках фида.
  • Для изменения списка полей обратитесь к вашему персональному менеджеру.
  1. Нетоварные кампании:
  • Это кампании с типом Custom JSON.
  • В ответе эти кампании можно идентифицировать по choices[].type = DECISION и choices[].variations[].payload.type = CUSTOM_JSON.

# Пояснения к параметрам запроса

Селектор кампании (selector): Укажите селектор для получения кампании, в которой он установлен. Если передать несколько селекторов, кампании в ответе будут упорядочены по алфавиту.

Групповые селекторы (selector.groups): Используйте для получения кампаний, у которых установлен селектор группы кампаний (selector group).

Implicit Pageview (options.isImplicitPageview): Добавьте этот параметр, чтобы передать информацию о просмотре страницы вместе с запросом.

curl --request POST 
--url 'https://evs-01.gravityfield.ai/ssapi/choose'
--header 'content-type: application/json' 
--header 'Authorization: Bearer your-api-key' 
--data '
{
	"user": {
		"id": "638073ccfb53d530340043f2"
	},
	"session": {
		"custom": "E4EE9F9C-72AC-4036-A3A6-F3874E779FC1"
	},
	"context": {
		"page": {
			"type": "PRODUCT",
			"data": ["123456"],
			"location": "shop.ru/p/red_socks_123456/",
			"lng": "MOW"
		},
		"device": {
			"userAgent": "AliExpress/13.2 (Linux; Android 13; SM-A536B; Build/1452)",
			"ip": "54.100.200.255"
		},
		"pageAttributes": {
			"source": "mobileApp",
			"geo": "Moscow",
			"crm_segment": "loyal_buyers"
		},
		"user_time": "2024-08-14T17:28:31+02:00"
	},
	"selector": {
		"names": [
			"pdp_recs",
			"pdp_CTA_test"
		]
	},
	"options": {
		"isImplicitPageview": true,
		"returnAnalyticsMetadata": false,
		"recsProductData": {
			"skusOnly": true,
			"fieldFilter": {
				"whatever": "whatever"
			}
		}
	}
}'
curl --request POST  
--url 'https://evs-01.gravityfield.ai/ssapi/choose'
--header 'content-type: application/json' 
--header 'Authorization: Bearer: your-api-key' 
--data '
{
	"context": {
		"page": {
			"type": "HOMEPAGE",
			"data": [],
			"location": "shop.ru"
		},
		"device": {
			"userAgent": "Mozilla/5.0 (Linux; U; Android 8.1.0; zh-CN; EML-AL00 Build/HUAWEIEML-AL00) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/57.0.2987.108 baidu.sogo.uc.UCBrowser/11.9.4.974 UWS/2.13.1.48 Mobile Safari/537.36 AliApp(DingTalk/4.5.11) com.alibaba.android.rimet/10487439 Channel/227200 language/zh-CN"
		}
	},
	"selector": {
		"names": [
			"test1"
		]
	}
}

# Обработка ответа

  1. Если вы передали selector.names или selector.groups, и в ответе вернулось { "choices": [] } , то платформа не нашла кампании с таким селектором в этой секции. Проверьте, что вы используете API ключ той секции, где есть кампания с таким селектором.
  2. Если в ответе есть товарная кампания с вариацией, но в slots пусто, то стратегия не возвращает товары. Проверьте, что контекст запроса соответсвует контексту стратегии, нет слишком жестких ограничей (правил, динамических фильтров)
  3. В ответе на choose запрос товарной кампании возвращаются только те параметры товаров, которые указаны в Product Fields (Поля товара) в настройках фида. Для изменения списка указанных параметров обратитесь к вашему персональному менеджеру.
{
	"choices": [
		{
			"id": 1,
			"name": "Campaign_Name",
			"type": "RECS_DECISION",
			"variations": [
				{
					"id": 1,
					"name": "Variation_Name",
					"payload": {
						"type": "RECS",
						"data": {
							"custom": {
								// Custom Code, описанный в вариации
							},
							"slots": [
								{
									"sku": "12345",
									"productData": {},
									"slotId": "63gf:63bd:63bc4d2:63bdba:63bc91:63a17:0:104445:0:3:0"
								}
														]
						}
					}
				}
			],
			"groups": [],
			"decisionId": "63bca:63bd:63bc48d2:63bdba"
		}
	],
	"session": {
		"sl": "C7-EA-48-83-5706"
	},
	"user": {
		"slid": "63c7fgn6"
	}
}

# Обработка ошибок

  1. Установите таймаут для ожидания ответа от сервера.
  2. Если полученный ответ имеет статус, отличный от 200, выполните одно из следующих действий:
    • Не отображайте ничего.
    • Отобразите заглушку, например, стандартный баннер или предустановленный набор продуктов в виджете.

# Лимиты по количеству запросов

rate_limits.md
./rate_limits.md