Для загрузки больших объемов данных стандартные методы API не удобны в плане кол-ва запросов (1 запрос — 1 ресурс) и времени выполнения. Чтобы оптимизировать и упростить процесс импорта необходимо использовать метод импорта.

Тело запроса для метода импорта имеет следующие параметры:

  Пример запроса на импорт Заказов:

{
  "dataType": "orders",
  "actionType": "create",
  "data": [{...}, {...}, {...}]
}

В качестве параметра data должен быть массив объектов. Эти объекты идентичны тем, что используются в обычных методах API. Другими словами модели данных одинаковы.

Запрос на импорт данных возвращает 202 код состояния HTTP. Это значит, что запрос был принят на обработку, но она не завершена. Импорт данных выполняется асинхронно и не требует активного клиентского соединения до окончания операции.

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

  Пример тела ответа:

{
  "id": "84935707-e53e-4f63-8381-a48bfc420c6b"
}
См. так же описание метода для получения статуса запроса на импорт.

  Пример тела ответа при получении статуса запроса на импорт:

{
   "id":"84935707-e53e-4f63-8381-a48bfc420c6b",
   "status":"сompleted",
   "startedOnUtc":"2017-09-28T10:13:50.8889015Z",
   "completePercent":100.0,
   "completedOnUtc":"2017-09-28T10:14:38.5171111Z"
}

Поддерживаемые типы данных и операции:

DataType ActionType
ProductPrices (цены на продукты) Replace
InvoiceDebts (долги по накладным) Replace
RelationshipDebts (долги по договорам) Replace
PersonalPrices (персональные цены) Replace
ProductImages (изображения продукции) CreateOrUpdate

  Пример запроса на импорт "Долги по договорам":

{
   "actionType":"Replace",
   "dataType":"RelationshipDebts",
   "data":[
      {
         "relationshipId":"000000044",
         "Debts":[
            {
               "CurrencyId":"980",
               "Sum":3326
            }
         ],
         "OverdueDebts":[
         ]
      },
      {
         "relationshipId":"000000402",
         "Debts":[
            {
               "CurrencyId":"980",
               "Sum":23415.55
            }
         ],
         "OverdueDebts":[
            {
               "CurrencyId":"980",
               "Sum":3326
            }
         ]
      }
   ]
}

  Пример запроса на импорт "Долги по накладным":

{
   "actionType":"Replace",
   "dataType":"InvoiceDebts",
   "data":[
      {
         "invoiceId":"906b0048-2068-11e8-80fe-00155d000703",
         "Debts":[
            {
               "CurrencyId":"980",
               "Sum":2032
            }
         ]
      },
      {
         "invoiceId":"93eeccd4-25cd-11e8-8101-00155d000703",
         "Debts":[
            {
               "CurrencyId":"980",
               "Sum":5105
            }
         ]
      }
   ]
}

  Пример запроса на импорт "Обновление цен номенклатуры":

{
   "actionType":"Replace",
   "dataType":"ProductPrices",
   "data":[
      {
         "ProductId":"000000009",
         "PriceCategoryId":"000000002",
         "Price":16,
         "CurrencyId":"980"
      },
      {
         "ProductId":"000005453",
         "PriceCategoryId":"000000002",
         "Price":43,
         "CurrencyId":"980"
      }
   ]
}

  Пример запроса на импорт "Персональных цен":

{
   "actionType":"Replace",
   "dataType":"PersonalPrices",
   "data":[
      {
        "TradeOutletId": "10",
        "GroupId": "1234567",
        "BrandId": null,
        "CurrencyId": "UAH",
        "Price": null,
        "Discount": 20
      },
      {
        "TradeOutletId": "11",
        "GroupId": "1234568",
        "BrandId": null,
        "CurrencyId": "UAH",
        "Price": null,
        "Discount": 15
      }
   ]
}

  Пример запроса на импорт "Изображения продукции":

{
  "dataType": "ProductImages",
  "actionType": "CreateOrUpdate",
  "data": [
    {
      "productId": "2",
      "images": [
        {
          "orderIndex": 1,
          "Url": "http://writingexercises.co.uk/images2/randomimage/slimy.jpg"
        },
        {
          "orderIndex": 2,
          "Url": "http://writingexercises.co.uk/images2/randomimage/fruit-stall.jpg"
        }
      ]
    }
  ]
}
{
  "dataType": "ProductImages",
  "actionType": "CreateOrUpdate",
  "data": [
    {
      "productId": "6",
      "images": [
        {
          "orderIndex": 1,
          "content": "/9j/4AAQSkZJRgABAQEAwIUp5niqdO9HAxr1fYUXiZynDkdSt+7hFRqTck/cUYylHvrY/BYfEYTC18VRpYnHyqRwVCc73FY223UCk9Btfa+0egfI7UAfBNFfS+s/sv+NrIu2lX+l6tGMlVLyWkxH0lDRg/9tMH2VcVKlT9rU9jFRlzKFP3pSbhFJr3m2ov8ARKiiivPOsKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKAKKKKAKKACiiigAooooAKKKKACiAKKKKAiigAooooAKKKKAKKKKAACiiigAAKKKKAooooAKKKKAP/2Q=="
        },
        {
          "orderIndex": 2,
          "content": "/9j/4AAQSkZJRgABAQEASABea8S139lzwrel5NG1K+0l23FY223UCk9Btfa+0egfI7UAfBNFfS+s/sv+NrIu2lX+l6tGMlVLyWkxH0lDRg/9tMH2rzPU/g/8RdKLfafDF86rnL2oW6TA7hoWbI70AeaUVs3Ph3XrMlbrR9SgI6iWznXHOOcpjrWW8E0ZIeGVCDgho3Xn8QKAIqKXBHUH8jSUAFFLg+h/KnrFK/CxSMfRUY/yBoAjorVt9C1q7IW20rUJyegitJ3z9MJiuu034UfEHVSv2TwvqW1ujzxfZ0/FpigH40AeeUV9G6P+zJ4+vyjajNpmkRnG4SzNcygHrhIAUyPQuPrXrmhfsr6DalH13WrzUXGC8Vsi2sJPoD88hHYncD6UAfDCo7kKis7HgKqliT6AAEmvQvDXwr8deKmQ6ZoN2luxGby8ja0tgp6sHmCmQDr+7DV+iXh/4WeBfDQRtN0CyEyYxcXES3E+RjnfKGweOoxXoCoiAKiqigYAUAAD0AAFAHyB4S/ZbtIjFc+LdUe5I2s9hYZjiPAJR5mG8jJwSoGccEV9NeHvBvhnwrbrbaFpKKKACiiigAooooA/9k="
        }
      ]
    }
  ]
}