Методы Partner API позволяют настроить автоматическую загрузку товаров в UDS и обновление информации по загруженным товарам (цены, описание, количество, фотографии и т.п.) из Вашей учетной системы.
Загрузить товар возможно через Partner API согласно нашей документацией в пункте Items
Примечание: В каждой категории может быть не больше 20 подкатегорий, количество товаров ограничено согласно лимиту в разделе Товары и услуги в UDS Бизнес. Возможность загрузить картинки товаров через Partner API на данный момент не поддерживается
Важно! В компании должен быть подключен модуль Товары и услуги в UDS Store.
1. Загрузка категории товаров.
Для начала нужно загрузить категории товаров - нужно отправить POST запрос на https://api.uds.app/partner/v2/goods и в теле запроса указать название категории ("name"), идентификатор категории ("externalId" - может состоять только из цифр и латинских букв), тип - CATEGORY, параметр "hidden" - скрыть ли категорию и "nodeId" - id категории, для которой эта категория является подкатегорией.
{
"name": "Кофе",
"nodeId": null,
"externalId": "category_coffee",
"data":
{
"type": "CATEGORY"
},
"hidden": false
}
Если информация заполнена корректно, то в ответ придет статус 200 ОК, информация о загруженной категории и в разделе Товары и услуги в UDS Бизнес появится новая категория. Вы можете сохранить из ответа id категории (далее он используется как параметр nodeId )- он нужен будет для загрузки подкатегорий и товаров в эту категорию или для обновления инфромации о категории.
После загрузки всех категорий, можно начать загрузку товаров.
2. Загрузка товаров
Для примера рассмотрим загрузку товара Капучино разного объема (маленький 100 мл - 100 рублей, средний 200 мл - 150 рублей и большой 300 мл - 200 рублей).
Для этого нужно отправить POST запрос на https://api.uds.app/partner/v2/goods и в теле запроса указать название товара ("name"), id категории ("nodeId"), id товара ("externalId"- может состоять только из цифр и латинских букв), тип товара - ITEM (обычный товар), VARYING_ITEM (товар с вариантами), описание товара ( "description"), артикул( "sku") и параметр "hidden" - скрыть ли товар. Если товар имеет несколько вариантов, то необходимо добавить названия вариантов товара и их цены.
Если товар акционный, то нужно передать в объекте "offer" параметры "skipLoyalty" - применять ли бонусную программу к товару и "offerPrice" - акционную цену товара. Если у товара тип VARYING_ITEM, то объект "offer" должен быть у каждого варианта товара.
Если у товара нужно указать доступное количество, то нужно передать в объекте "inventory" параметр "inStock" количество товара (только целое число) . Если у товара неограниченное количество, то нужно передать "inStock":null. Если у товара тип VARYING_ITEM, то объекте "inventory" должен быть у каждого варианта товара.
Для загрузки весового товара (только для товара с type=ITEM) нужно передать "increment": минимальная единица, на которую клиент может изменять количество товара; "measurement": единица измерения товара: по-умолчанию PIECE (штуки, целое число), CENTIMETRE (целое число), METRE (дробное число),
MILLILITRE (целое число), LITRE (дробное число), GRAM (целое число), KILOGRAM (дробное число); "minQuantity": минимальное количество товара, доступное к заказу.
Для загрузки товара с изображением загрузите сначала изображение на наш сервер и передайте список идентификаторов изображений в параметре "photos" в "data". (процесс загрузки изображений более описан в инструкция по загрузке изображений)
{
"name": "Капучино",
"nodeId": 123456,
"externalId": "coffee_cappuccino",
"data": {
"type": "VARYING_ITEM",
"description": "Классический капучино",
"photos": ["id1", "id2"],
"variants": [
{
"name": "Маленький 100 мл",
"price": 100.0,
"sku": 1,
"offer": {
"skipLoyalty": true,
"offerPrice": 90
},
"inventory": {
"inStock": 100,
}
},
{
"name": "Средний 200 мл",
"price": 150.0,
"sku": 2,
"offer": {
"skipLoyalty": true,
"offerPrice": 130
},
"inventory": {
"inStock": 70,
}
},
{
"name": "Большой 300 мл",
"price": 200.0,
"sku": 3,
"offer": {
"skipLoyalty": true,
"offerPrice": null
},
"inventory": {
"inStock": null,
}
}
]
},
"hidden": false
}
Если информация заполнена корректно, то в ответ придет статус 200 ОК и информация о загруженном товаре. Вы можете сохранить id товара- он нужен будет для внесении изменении в информацию о товаре.
В случае успешной загрузки товара в разделе Товары и услуги в UDS Бизнес должен появится загруженный товар в соответствующей категории.
3. Изменение информации о товаре
При необходимости Вы можете внести изменения в информацию о товаре: поменять цену, описание, поменять категорию или добавить/удалить варианты.
Для внесения изменения через Partner API в информацию о товаре необходимо отправить PUT запрос https://api.uds.app/partner/v2/goods/{id} и вместо {id} указать id товара.
Если у товара нужно указать доступное количество, то нужно передать в объекте "inventory" параметр "inStock" количество товара (только целое число) . Если у товара неограниченное количество, то нужно передать "inStock":null. Если у товара тип VARYING_ITEM, то объекте "inventory" должен быть у каждого варианта товара.
Для примера удалим у товара одну фотографию, установим неограниченное количество товара и добавим еще один вариант товара и поменяем цены другим:
{
"name": "Капучино",
"nodeId": 123456,
"externalId": "coffee_cappuccino",
"data":
{
"type": "VARYING_ITEM",
"description": "Классический капучино",
"photos": ["id2"],
"variants":
[
{
"name": "Маленький 100 мл",
"price": 110.0,
"sku": 1,
"inventory": {
"inStock": null,
}
},
{
"name": "Средний 200 мл",
"price": 160.0,
"sku": 2,
"inventory": {
"inStock": null,
}
},
{
"name": "Большой 300 мл",
"price": 220.0,
"sku": 3,
"inventory": {
"inStock": null,
}
},
{
"name": "Мега 500 мл",
"price": 300.0,
"sku": 4,
"inventory": {
"inStock": null,
}
}
]
},
"hidden": false
}
Если информация заполнена корректно, то в ответ придет статус 200 ОК, информация о загруженном товаре и поменяется информация о товаре в UDS Бизнес.
4. Удаления товара/категории
Для удаление через Partner API в информацию о товаре/категории необходимо отправить DELETE запрос https://api.uds.app/partner/v2/goods/{id} и вместо {id} указать id товара.
Весовые товары
Например, необходимо создать товар, который продается в метрах (measurement) наотрез и его можно отрезать в сантиметрах. Всего длина товара 10 м (inventory). Минимальная длина покупки товара 1 м (minQuantity), отрезается по 0.05 м (increment) (то есть нельзя купить 1.23 м, можно или 1.25 м, или 1.2 м). Цена товара указывается за единицу измерения, в нашем случае за метр товара (price).
Тогда inventory =10, increment = 0.05, minQuantity=1, measurement = METRE, price = 1000,
Запрос на создание товара:
{
"name": "Товар (на отрез)",
"nodeId": null,
"externalId": "atest1234",
"data": {
"type": "ITEM",
"description": "Пробный товар",
"sku": "123",
"price": 1000,
"offer": null,
"inventory": {
"inStock": 10
},
"photos": null,
"increment":0.05,
"measurement": "METRE",
"minQuantity": 1
},
"hidden": false
}
Важно! Для совместимости с предыдущими версиями в ответе количество товара, цену за товар, шаг заказа и минимальное количество товара для заказа конвертируется в минимальную единицу, то есть метры в сантиметры, литры в миллилитры, килограммы в граммы
Ответ на создание дробного товара в метрах
{
"blocked": false,
"dateCreated": "2022-04-14T13:42:23.825Z",
"id": 599779,
"hidden": false,
"data": {
"photos": [],
"increment": 5,
"type": "ITEM",
"offer": null,
"measurement": "CENTIMETRE",
"price": 10.00,
"description": "Пробный товар",
"minQuantity": 100,
"sku": "123",
"inventory": {
"inStock": 1000
}
},
"imageUrls": [],
"externalId": "ates01234",
"name": "Товар (на отрез)"
}
inventory = 10 м переведено в 1000 см, increment = 0.05 м переведено в 5 см, minQuantity= 1м переведено в 100 см, measurement = METRE переведено в CANTIMETRE , price = 1000 за 1м переведено в 10 за 1 сантиметр товара