/api/lite/settings/promocode
Получить список промокодов аккаунта (/api/lite/settings/promocode)
/api/lite/settings/promocode
Загрузка списка неудаленных промокодов аккаунта
Результат запроса:
{
"success": true,
"recordsTotal": 2,
"promocodes": [
{
"code": "leto",
"isActive": true,
"discountType": "PERCENT",
"discountValue": 20,
"conditions": null,
'useCount":20
},
{
"code": "test",
"isActive": true,
"discountType": "FIX",
"discountValue": 12,
"conditions": [ //Условия действия (опционально). null для промокода без условий.
{
"type": "TIME_LIMIT",
"name": "Срок действия промокода",
"num": 0,
"mandatory": true,
"unsuccessMessage": "Срок действия акции истёк",
"applyDiscount": false,
"applyDeliveryDiscount": false,
"fromDate": "2018-10-08 16:21:57",
"toDate": "2019-10-08 16:21:57",
"maxNumberOfUse": 0
},
{
"type": "USE_LIMIT",
"name": "Максимальное кол-во использований промокода",
"num": 1,
"mandatory": true,
"unsuccessMessage": "Промокод более недействителен",
"applyDiscount": false,
"applyDeliveryDiscount": false,
"maxNumberOfUse": 100
},
{
"type": "ORDER_SUM",
"name": "Бесплатная доставка курьером при заказе от 5000 р",
"num": 2,
"mandatory": true,
"unsuccessMessage": "Сумма заказа меньше 5000 рублей",
"applyDiscount": false,
"applyDeliveryDiscount": true,
"deliveryDiscountType": "PERCENT",
"deliveryDiscountValue": 100,
"deliveryCodes": [
"GLOBAL_DELIVERY"
],
"maxNumberOfUse": 0,
"fromSum": 5000,
"toSum": -1
},
{
"type": "ORDER_SUM",
"name": "Скидка 200р при заказе от 2000 р",
"num": 3,
"mandatory": true,
"unsuccessMessage": "Сумма заказа меньше 2000 рублей",
"applyDiscount": true,
"discountType": "FIX",
"discountValue": 200,
"applyDeliveryDiscount": false,
"maxNumberOfUse": 0,
"fromSum": 2000,
"toSum": -1
},
{
"type": "DELIVERY_LOCATION",
"name": "Скидка 10% на доставку по Москве при оплате онлайн",
"num": 4,
"mandatory": false,
"unsuccessMessage": "Данный промокод недействителен",
"applyDiscount": false,
"applyDeliveryDiscount": true,
"deliveryDiscountType": "PERCENT",
"deliveryDiscountValue": 10,
"paymentMethodCodes": [
"online"
],
"maxNumberOfUse": 0,
"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
"cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5"
},
{
"type": "SKU_COMBINATION",
"name": "2 + 1 Купи 2 товара, 3й в подарок",
"num": 5,
"mandatory": true,
"unsuccessMessage": "Промокод не применён. В корзине отсутствуют товары, соответствующие условию акции.",
"applyDiscount": true,
"discountType": "FIX",
"discountValue": 250,
"applyDeliveryDiscount": false,
"bonusSkus": [
{
"variantId": "1042",
"quantity": 1
}
],
"maxNumberOfUse": 0,
"requiredSkus": [
{
"variantId": "1042",
"quantity": 1
}
]
},
{
"type": "MULTI",
"anyOfSkus": [ //true, если пристутствует хотя бы 1 товар из списка (sku1 || sku2 || sku3)
{
"variantId": "1042",
"quantity": 1
},
{
"variantId": "1043",
"quantity": 1
}
],
"applyDeliveryDiscount": false, //Применять ли скидку на доставку
"applyDiscount": true, //Применять ли скидку на товары
"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
"areaFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"bonusSkus": [
{
"variantId": "1042",
"quantity": 1
}
],
"cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"deliveryCodes": [ //Коды служб доставки
"GLOBAL_DELIVERY"
],
"deliveryDiscountType": "PERCENT", //FIX
"deliveryDiscountValue": 100,
"discountType": "PERCENT",
"discountValue": 13,
"fromDate": "2018-10-08 16:21:57", //Дата, с которой действует промокод
"fromSum": 5000, //Сумма, с которой действует промокод
"mandatory": false, //Обязательность условия. В случае MULTI не проверяется
"maxNumberOfUse": 100, //Максимальное кол-во применений промокода
"minSkuCount": 2, //Минимальное общее кол-во товаров в корзине
"maxSkuCount": 4 //Максимальное общее кол-во товаров в корзине
"name": "",
"num": 6,
"paymentMethodCodes": [ //Коды способов оплаты
"online"
],
"regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"requiredSkus": [ //true, если пристутствуют все товары из списка (sku1 && sku2 && sku3)
{
"variantId": "1042",
"quantity": 1
}
],
"toDate": "2019-10-08 16:21:57", //Дата, до которой действует промокод
"toSum": -1, //Сумма, с которой действует промокод. Отрицательное значение - без ограничений
"unwantedSkus": [ //true, если отсутствуют все товары из списка (!sku1 && !sku2 && !sku3)
{
"variantId": "1042",
"quantity": 1
}
],
"skusToApplyDiscount": [ //Товары, к которым примеяется скидка
{
"variantId": "1066",
"quantity": 1
}
],
}
],
'useCount":100 //Счётчик использований
}
]
}
Пейджинация
Для пейджинации используются параметры page и size: size - промокодов на странице, page - номер страницы.
Пример: /api/lite/settings/promocode?page=0&size=200
Если параметры не переданы, то дефолтные значения page=0&size=15
Также, для отображение пейджинации следует анализировать параметр recordsTotal, возвращающий общее количество записей (с учетом примененной фильтрации, если она есть).
Поиск по коду(неполное соответствие, регистронезависимый)
параметр: codeSearch (часть наименования промокода , если передано, возвращается отфильтрованный список промокодов, аналогичный списку выше. Подробная информация по списку товаров также не возвращается).
например /api/lite/settings/promocode?codeSearch=ET
Поиск производится sql запросом вида: code LIKE '%et%'
Если параметр не задан(или пустой), возвращается полный список промокодов.
Пейджинация также есть.
Поиск по коду(точное значение, регистронезависимый)
параметр: code (наименование промокода , если передано, возвращается найденный промокод)
например /api/lite/settings/promocode?code=LETO
Возвращается всегда либо 1 промокод с подробными списками товаров (anyOfskus, bonusSkus, requiredSkus, unwantedSkus), либо ошибка "Не найден промокод со значением: %сcode%"
Является приоритетным по отношению к параметру codeSearch. Если параметр code задан, поиск происходит только по его точному значению.
Положительный результат запроса:
{
"success":true,
"code":"leto20",
"isActive":true,
"useCount":241,
"discountType":"FIX",
"discountValue":0,
"conditions":[
{
"type":"SKU_COMBINATION",
"name":"Танк в подарок",
"num":1,
"mandatory":true,
"unsuccessMessage":"В корзине отсутствует волшебный дрон.",
"applyDiscount":true,
"discountType":"FIX",
"discountValue":399,
"applyDeliveryDiscount":false,
"bonusSkus":[
{
"variantId":"1041",
"quantity":1,
"product":{
"id":"1030",
"extId":"955-2",
"extId2":null,
"shortName":"волшебный дрон (синий)",
"description":"волшебный дрон (синий)",
"available":true,
"deleted":false,
"brandName":null,
"countryOfOrigin":null,
"tnvedCode":null,
"internationalDescription":null,
"additionalDescriptions":null,
"isBestseller":null,
"isNovelty":null,
"type":"SKU",
"vat":"NO_VAT",
"reviewScore":null,
"options":null,
"images":[
{
"success":true,
"url":"https://storage.yandexcloud.net/images-k2c/1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
"id":"1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
"pos":"0.000000000000000"
}
],
"variants":[
{
"id":"1041",
"extId":"955-2",
"extId2":null,
"article":"",
"price":1390.00,
"oldPrice":null,
"stock":[
{
"warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
"stockTotal":553,
"stockAvailable":552,
"stockReserved":1
}
],
"ordering":null,
"defaultImage":null,
"weight":300,
"dimensions":{
"height":15,
"width":16,
"depth":7
},
"barcodes":[
{
"value":"6900000138113",
"isDefault":false
},
{
"value":"6900000138129",
"isDefault":false
}
],
"vat":"NO_VAT",
"type":"SKU",
"optionsUsed":null
}
],
"collections":[
"1001"
],
"attributes":null,
"collectionPos":null,
"anyPublicCollections":null
}
}
],
"requiredSkus":[
],
"anyOfSkus":[
{
"variantId":"1041",
"quantity":1,
"product":{
"id":"1030",
"extId":"955-2",
"extId2":null,
"shortName":"волшебный дрон (синий)",
"description":"волшебный дрон (синий)",
"available":true,
"deleted":false,
"brandName":null,
"countryOfOrigin":null,
"tnvedCode":null,
"internationalDescription":null,
"additionalDescriptions":null,
"isBestseller":null,
"isNovelty":null,
"type":"SKU",
"vat":"NO_VAT",
"reviewScore":null,
"options":null,
"images":[
{
"success":true,
"url":"https://storage.yandexcloud.net/images-k2c/1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
"id":"1ed9d2ee-1c3e-49cc-a798-2dfc93f30f79.jpg",
"pos":"0.000000000000000"
}
],
"variants":[
{
"id":"1041",
"extId":"955-2",
"extId2":null,
"article":"",
"price":1390.00,
"oldPrice":null,
"stock":[
{
"warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
"stockTotal":553,
"stockAvailable":552,
"stockReserved":1
}
],
"ordering":null,
"defaultImage":null,
"weight":300,
"dimensions":{
"height":15,
"width":16,
"depth":7
},
"barcodes":[
{
"value":"6900000138113",
"isDefault":false
},
{
"value":"6900000138129",
"isDefault":false
}
],
"vat":"NO_VAT",
"type":"SKU",
"optionsUsed":null
}
],
"collections":[
"1001"
],
"attributes":null,
"collectionPos":null,
"anyPublicCollections":null
}
},
{
"variantId":"1040",
"quantity":1,
"product":{
"id":"1029",
"extId":"955-1",
"extId2":null,
"shortName":"волшебный дрон (красный)",
"description":"волшебный дрон (красный)",
"available":true,
"deleted":false,
"brandName":null,
"countryOfOrigin":null,
"tnvedCode":null,
"internationalDescription":null,
"additionalDescriptions":null,
"isBestseller":null,
"isNovelty":null,
"type":"SKU",
"vat":"NO_VAT",
"reviewScore":null,
"options":null,
"images":[
{
"success":true,
"url":"https://storage.yandexcloud.net/images-k2c/99eec60a-a8a8-4393-9a72-0ea990e86114.jpg",
"id":"99eec60a-a8a8-4393-9a72-0ea990e86114.jpg",
"pos":"0.000000000000000"
}
],
"variants":[
{
"id":"1040",
"extId":"955-1",
"extId2":null,
"article":"",
"price":1390.00,
"oldPrice":null,
"stock":[
{
"warehouseCode":"8b57ff7a-e63f-ecf4-2adf-8cdb093cb2c3",
"stockTotal":283,
"stockAvailable":283,
"stockReserved":0
}
],
"ordering":null,
"defaultImage":null,
"weight":300,
"dimensions":{
"height":16,
"width":15,
"depth":7
},
"barcodes":[
{
"value":"6900000138120",
"isDefault":false
}
],
"vat":"NO_VAT",
"type":"SKU",
"optionsUsed":null
}
],
"collections":[
"1001"
],
"attributes":null,
"collectionPos":null,
"anyPublicCollections":null
}
}
],
"unwantedSkus":[
],
"minSkuCount":1
},
{
"type":"PAYMENT_METHOD",
"name":"Способ оплаты",
"num":2,
"mandatory":true,
"unsuccessMessage":"Промокод не применён. Способ оплаты не соответствует правилам акции",
"applyDiscount":false,
"applyDeliveryDiscount":false,
"bonusSkus":[
],
"requiredSkus":[
],
"anyOfSkus":[
],
"unwantedSkus":[
],
"skusToApplyDiscount": [
],
"paymentMethodCodes":[
"online",
"cod-card"
]
}
]
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Создать/изменить промокод (/api/lite/settings/promocode)
/api/lite/settings/promocode
Создать / изменить промокод.
Ключ для изменения - поле code - уникальное.
Регистр поля не имеет значения
все поля обязательны
Пример запроса:
{
"code": "leto",
"isActive": true,
"discountType": "PERCENT",
"discountValue": 20,
"conditions": [ //Условия действия (опционально). null для промокода без условий.
{
"type": "MULTI",
"anyOfSkus": [ //true, если пристутствует хотя бы 1 товар из списка (sku1 || sku2 || sku3)
{
"variantId": "1042",
"quantity": 1
},
{
"variantId": "1043",
"quantity": 1
}
],
"applyDeliveryDiscount": false, //Применять ли скидку на доставку
"applyDiscount": true, //Применять ли скидку на товары
"fullAddress": "Москва" //В этом поле хранится текстовый адрес для отображения в ЛК
"areaFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"bonusSkus": [
{
"variantId": "1042",
"quantity": 1
}
],
"cityFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"deliveryCodes": [ //Коды служб доставки
"GLOBAL_DELIVERY"
],
"deliveryDiscountType": "PERCENT", //FIX
"deliveryDiscountValue": 100,
"discountType": "PERCENT",
"discountValue": 13,
"fromDate": "2018-10-08 16:21:57", //Дата, с которой действует промокод
"fromSum": 5000, //Сумма, с которой действует промокод
"mandatory": false, //Обязательность условия. В случае MULTI не проверяется
"maxNumberOfUse": 100, //Максимальное кол-во применений промокода
"minSkuCount": 2, //Минимальное общее кол-во товаров в корзине
"maxSkuCount": 4 //Максимальное общее кол-во товаров в корзине
"name": "",
"num": 6,
"paymentMethodCodes": [ //Коды способов оплаты
"online"
],
"regionFias": "0c5b2444-70a0-4932-980c-b4dc0d3f02b5",
"requiredSkus": { //Товары, каждый из которых должен присутствовать в заказе в заданном кол-ве (т1 и т2 и т3)
"djburbanbackpack": 1
}
"anyOfSkus": { //Товары, хотя бы одни из которых должен присутствовать в заказе в заданном кол-ве (т1 || т2 || т3)
"1002": 2,
"1003": 1,
"1000": 1
},
"unwantedSkus": { //Товары, присутствие хотя бы одного из которых в заданном кол-ве не подходит под условие (!т1 || !т2 || !т3)
"1005": 1
},
"bonusSkus": { //Бонусные товары, добавляемые к заказу
"1000": 1
},
"toDate": "2019-10-08 16:21:57", //Дата, до которой действует промокод
"toSum": -1, //Сумма, с которой действует промокод. Отрицательное значение - без ограничений
"skusToApplyDiscount": ["1066", "1067"], //Товары, к которым применяется скидка(например, скидка 20% только на товар 1066)
},
{
"type": "SKU_COMBINATION",
"name": "Рюкзак URBAN BACKPACK",
"num": 0,
"mandatory": true,
"unsuccessMessage": "Промокод не применён. В корзине отстутствует товар: Рюкзак URBAN BACKPACK",
"applyDiscount": true,
"discountType": "FIX",
"discountValue": 1500,
"applyDeliveryDiscount": false,
"maxNumberOfUse": 0,
"requiredSkus": { //Товары, каждый из которых должен присутствовать в заказе в заданном кол-ве (т1 и т2 и т3)
"djburbanbackpack": 1
}
"anyOfSkus": { //Товары, хотя бы одни из которых должен присутствовать в заказе в заданном кол-ве (т1 || т2 || т3)
"1002": 2,
"1003": 1,
"1000": 1
},
"unwantedSkus": { //Товары, присутствие хотя бы одного из которых в заданном кол-ве не подходит под условие (!т1 || !т2 || !т3)
"1005": 1
},
"bonusSkus": { //Бонусные товары, добавляемые к заказу
"1000": 1
},
"skusToApplyDiscount": ["1066", "1067"], //Товары, к которым применяется скидка(например, скидка 20% только на товар 1066)
"minSkuCount" : 2 //Минимальное общее кол-во товаров, удовлетворяющих условию акции (сумма [товар • кол-во] всех позиций заказа)
},
{
"type": "PAYMENT_METHOD",
"name": "Обязательный способ оплаты",
"num": 5,
"mandatory": true,
"unsuccessMessage": "Промокод действителен только по предоплате картой на сайте",
"applyDiscount": false,
"applyDeliveryDiscount": false,
"maxNumberOfUse": 0,
"paymentMethodCodes": [
"online"
]
}
]
}
Результат запроса:
{
"success": true
}
Ошибка:
{
"success": false,
"errors": [
{
"code": 0,
"message": "текст ошибки"
}
]
}
Удалить промокод (/api/lite/settings/promocode)
/api/lite/settings/promocode
Удаление одного промокода. Использовать параметр в url вида ?code=test
Результат запроса:
{
"success": true
}
Проверить действие промокода (публичный) (/api/lite/pub/promocode)
/api/lite/pub/promocode
Проверка переданного промокода на активность
параметр: code
например /api/lie/pub/promocode?code=test
Положительный результат запроса:
{
"success": true,
"code": "test",
"isActive": true,
"discountType": "FIX", // FIX/PERCENT
"discountValue": 13
}
Ошибка, если у промокода заданы условия:
{
"success":false,
"errors":[
{
"code":1,
"message":"У промокода заданы условия применения. Для валидации, воспользуйтесь методом /api/lite/pub/check-promocode-conditions/"
}
]
}
Отрицательный результат запроса:
{
"success": false,
"errors": []
}
Проверить действие промокода С УСЛОВИЯМИ (публичный)
/api/lite/pub/check-promocode-conditions
Для валидации условий промокода, необходимо передать весь заказ целиком, с заполненным промокодом (аналогично /api/lite/pub/order)
Пример запроса:
{
"comment":"",
"confirmStatus":"APPROVED",
"paymentStatus":"NOT_PAID",
"paymentMethodCode":"no-cod",
"totalOrderSum":1590,
"delivery":{
"receiver":{
"name":"",
"phone":"",
"alternativePhone":"",
"email":"",
"surname":"",
"patronymic":""
},
"deliveryCode":"RUSSIAN_POST_TEMPOLINE",
"timeFrom":"09:00",
"timeTo":"20:00",
"desiredDeliveryDate":null,
"deliveryComment":"",
"address":{
"region":"Московская",
"area":"Пушкинский",
"city":"Пушкино",
"settlement":null,
"street":"",
"house":"",
"block":"",
"building":"",
"flat":"",
"fullAddress":"",
"zip":"",
"regionFias":"29251dcf-00a1-4e34-98d4-5c47484a36d4",
"areaFias":"2f88bc57-5096-4aee-bcfc-fe26d4dd3a26",
"cityFias":"7f22cfa4-34fa-4fa0-bcb0-620cd8402cfa",
"settlementFias":null,
"country":"RU"
},
"pickupPointId":""
},
"items":[
{
"num":1,
"id":"1000",
"quantity":1,
"variants":[
]
},
{
"num":2,
"id":"delivery"
}
],
"promocode":"CODE"
}
Результат запроса:
{
"success":true,
"code":"code",
"isActive":true,
"discountType":"FIX",
"discountValue":836,
"hasConditions":true,
"deliveryDiscountValue":50, //Скидка на доставку в %
"bonusSkus":{
"1000":1 //Бонусные товары по промокоду в формате id : количество
}
}