RUS
  • ENG
  • RUS

Интеграция товаров

Последние изменения: 08.09.2023

Методы Partner API позволяют настроить автоматическую загрузку товаров в UDS и обновление информации по загруженным товарам (цены, описание, количество, фотографии и т.п.) из Вашей учетной системы. 

 

Загрузить товар возможно через Partner API согласно нашей документацией в пункте Items 

Примечание: В каждой категории может быть не больше 20 подкатегорий, количество товаров ограничено согласно лимиту в разделе Товары и услуги в UDS Бизнес. 

Примеры запросов в Partner API

 

Важно! В компании должен быть подключен модуль Товары и услуги в UDS Store.

mceclip0.png


Первичная загрузка товаров в UDS:

1. В учетной системе должен быть выбор товаров, которые будут синхронизироваться в UDS. Например, это может быть флаг в карточке товара ( загружать в UDS) или выбор категорий товаров, которые будут загружаться.

2. При первичной выгрузки товаров из учетной системы в UDS сначала создается дерево категорий товаров: сначала необходимо выгрузить категории первого уровня, далее загружаются категории второго уровня с указанием идентификатора (nodeId)  категории первого уровня в UDS, затем загружаются категории третьего уровня с указанием идентификатора (nodeId) категории второго уровня в UDS.

3. Затем загружаются товары с указанием nodeId категории, в которой должен находиться товар

4. В учетной системе должен быть сохранен id товара или категории, который вернулся в ответе от UDS при создании - это необходимо для дальнейшего обновления информации о товаре или категории

5. Также рекомендуется сохранять в учетной системе контрольную сумму данных (применять хеш-функцию) по каждому товару или категорий, которые отправляются в UDS - это может быть полезно для обновления товаров в UDS. В случае внесения изменений в карточку товара на стороне учетной системы новая контрольная сумма не будет совпадать с сохраненной и это может быть триггером для обновления товара в UDS. 


Обновление списка товаров в UDS:

1. Массовое обновление списков товаров в компании рекомендуется осуществлять в нерабочее время не чаще двух раз в сутки для избежания превышения ограничений по количеству запросов по API.

2. Интеграционный модуль должен понимать какие товары необходимо обновлять в UDS из-за изменений в товаре в учетной системе. На стороне учетной системы проверяется контрольная сумма данных по товару или категории на текущий момент и сравнивается с сохраненной, которая была отправлена в UDS. Если сумма не совпадает, то необходимо отправить в UDS запрос на изменение товара или категории и сохранить новую контрольную сумму в учетную систему.

3. Отправлять в UDS запрос на обновление информации по товару или категории только при условии наличия изменений в учетной системе.

4. Если при обновлении товара от UDS вернулась ошибка, необходимо ее обработать и внести корректировку. Без внесения изменений в отправляемые данные повторная отправка запроса на обновление товара нее допускается

1. Загрузка категории товаров.

Для начала нужно загрузить категории товаров - нужно отправить POST запрос на https://api.uds.app/partner/v2/goods и в теле запроса указать название категории ("name"),  идентификатор категории ("externalId" - может состоять только из цифр и латинских букв), тип  - CATEGORY, параметр "hidden" - скрыть ли категорию и "nodeId" - id категории, для которой эта категория является подкатегорией.

 

mceclip1.png
{
 "name": "Кофе",
 "nodeId": null,
 "externalId": "category_coffee",
 "data": 
   {
   "type": "CATEGORY"
   },
"hidden": false
}

Если информация заполнена корректно, то в ответ придет статус 200 ОК, информация о загруженной категории и в разделе Товары и услуги в UDS Бизнес появится новая категория. Вы можете сохранить из ответа id категории (далее он используется как параметр nodeId )- он нужен будет для загрузки подкатегорий и товаров в эту категорию или для обновления инфромации о категории. 

mceclip2.png

После загрузки всех категорий, можно начать загрузку товаров.

 

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 и кроме единицы измерения PIECE) нужно передать:

  • "increment": минимальная единица, на которую клиент может изменять количество товара; 

  • "measurement": единицы измерения товара: CENTIMETRE (целое число), METRE (дробное число), MILLILITRE (целое число), LITRE (дробное число), GRAM (целое число), KILOGRAM (дробное число); 

  • "minQuantity": минимальное количество товара, доступное к заказу.

Для загрузки товара с изображением загрузите сначала изображение на наш сервер и передайте список идентификаторов изображений в параметре "photos" в "data". (процесс загрузки изображений более описан в инструкция по загрузке изображений

mceclip3.png
{
    "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 товара- он нужен будет для внесении изменении в информацию о товаре.

mceclip4.png

В случае успешной загрузки товара в разделе Товары и услуги в UDS Бизнес должен появится загруженный товар в соответствующей категории.

 

3. Изменение информации о товаре

При необходимости Вы можете внести изменения в информацию о товаре: поменять цену, описание, поменять категорию или добавить/удалить варианты.

Для внесения изменения через Partner API в информацию о товаре необходимо отправить PUT запрос https://api.uds.app/partner/v2/goods/{id} и вместо {id} указать id товара.

Если у товара нужно указать доступное количество, то нужно передать в объекте "inventory" параметр "inStock" количество товара (только целое число) . Если у товара неограниченное количество, то нужно передать "inStock":null. Если у товара тип VARYING_ITEM, то объекте "inventory" должен быть у каждого варианта товара.

Для примера удалим у товара одну фотографию, установим неограниченное количество товара и добавим еще один вариант товара и поменяем цены другим:

mceclip5.png
{
  "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 товара.

mceclip7.png

 

Весовые товары

Например, необходимо создать товар, который продается в метрах (measurement) наотрез и его можно отрезать в сантиметрах. Всего длина товара 10 м (inventory). Минимальная длина покупки товара 1 м (minQuantity), отрезается по 0.05 м (increment) (то есть нельзя купить 1.23 м, можно или 1.25 м, или 1.2 м). Цена товара указывается за единицу измерения, в нашем случае за метр товара (price).

Допускается создание товаров с increment и minQuntity с типом CENTIMETRE, GRAM, MILLILITRE; для LITRE, KILOGRAM, METRE нужно создавать без этих значений.

Логика такая, что единица товара граммы(миллилитры) - целое число и не может быть дробным.

Килограммы(литры) могут быть целыми и дробными. Если нужно создать товар, который заказывается в целых числах, то указывается KILOGRAM, если десятичный, то указывается GRAM, increment и minQuantity

Тогда inventory =10, increment = 0.05, minQuantity=1, measurement = CENTIMETRE, price = 1000,

Запрос на создание товара:

{
"name": "Товар (на отрез)",
"nodeId": null,
"externalId": "atest1234",
    "data": {
         "type": "ITEM",
         "description": "Пробный товар",
         "sku": "123",
         "price": 10,
         "offer": null,
         "inventory": {
             "inStock": 10000
         },
         "photos": null,
         "increment":5,
         "measurement": "CENTIMETRE",
         "minQuantity": 100
    },
"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 сантиметр товара

Список возможных ошибок:

Статус

Текст ошибки

Описание

400

badRequest

Произошла ошибка проверки достоверности формы. Например, это может быть несоответствие типов или ошибки нарушения ограничений.

Возникает при передаче некорректного запроса

400

goods.levelLimitIsReached

Превышен лимит по количеству вложенных категорий, доступных для создания в UDS Бизнес для компании.
Допускается только три уровня вложенности

400

goods.limitIsReached

Превышен лимит по количеству товаров, доступных для создания в UDS Бизнес для компании.
Необходимо приостановить импорт товаров или приобрести дополнительный позиции для загрузки

401

unauthorized

Доступ запрещен, данный токен аутентификации не установлен или не имеет соответствующего разрешения.

Необходимо проверить актуальность API Key и ID компании и корректность аутентификации Basic

404

notFound

Запрошенный объект, API-метод или путь не существует.

405

methodNotAllowed

Запрошенный метод не существует.

Ошибка может возникать в случае неправильного метода запроса, например, GET вместо POST.

Необходимо внести корректировку в метод


Помогла ли вам статья?