Загрузка остатков товаров с помощью API
Общая информация
API позволяет автоматизировать загрузку и обновление остатков товаров. Для взаимодействия с API используется авторизация по APIKey, который вы можете получить в личном кабинете, в разделе «Мои остатки товаров» .
Получение API-ключа
- Перейдите в раздел «Мои остатки товаров» в личном кабинете.
- Активируйте способ загрузки «API». Способ загрузки «XML-фид» будет деактивирован автоматически.
- Нажмите кнопку «Сгенерировать API-ключ».
- Скопируйте «API-ключ» и используйте его при выполнении запросов.

Авторизация
Для авторизации запросов используется заголовок Authorization:
POST /api/v1/external/stocks HTTP/1.1
Host: https://лд.рф
Content-Type: application/json
Accept: application/json
Authorization: ApiKey <ВАШ_СГЕНЕРИРОВАННЫЙ_API_КЛЮЧ>Эндпоинты API
POST Загрузка остатков
URL: /api/v1/external/stocks/import
Предназначен для загрузки нового набора данных по остаткам товаров. При выполнении запроса все предыдущие данные об остатках очищаются и заменяются новыми. В минуту можно отправить до 5 запросов.
{
"stocks": [
{
"productSku": "LD 47.300.15",
"pointId": "А001",
"quantity": 300,
"price": 298.90,
"name": "Кран шаровой латунный LD Pride 47.15.В-В.Б Ду 15 Ру 40 бабочка"
},
{
"productSku": "11110509402MULD000000000",
"pointId": "А002",
"quantity": 25,
"price": 3000.14,
"name": "Кран шаровый LD КШЦФ из стали 20 Ду50 Ру4,0МПа"
}
]
} PUT Обновление количества товаров
URL: /api/v1/external/stocks/update/quantity
Предназначен для обновления количества товаров на указанном складе. В минуту можно отправить до 5 запросов.
{
"stocks": [
{
"productSku": "LD 47.300.15",
"pointId": "А001",
"quantity": 300
},
{
"productSku": "11110509402MULD000000000",
"pointId": "А002",
"quantity": 25
}
]
} PUT Обновление цены товара
URL: /api/v1/external/stocks/update/price
Позволяет обновить цену конкретного товара на определённом складе. В минуту можно отправить до 5 запросов.
{
"stocks": [
{
"productSku": "LD 47.300.15",
"pointId": "А001",
"price": 1298.90
},
{
"productSku": "11110509402MULD000000000",
"pointId": "А002",
"price": 1398.90
}
]
}Пример ответа API
{
"result": [
{
"productSku": "LD 47.300.15",
"pointId": "А001",
"updated": true,
"errors": []
},
{
"productSku": "11110509402MULD000000000",
"pointId": "А002",
"updated": false,
"errors": [
{ "code": "SKU_NOT_FOUND", "message": "Товар с указанным productSku не найден." },
{ "code": "POINT_NOT_FOUND", "message": "Указанная Вами точка продаж не найдена." },
{ "code": "EMPTY_QUANTITY", "message": "Количество товара на складе не указано или равно нулю." },
{ "code": "EMPTY_PRICE", "message": "Цена товара не указана или равна нулю." }
]
}
]
}Пример ответа при ошибках аутентификации
HTTP/1.1 401 Unauthorized
Content-Type: application/json
{
"code": "INVALID_APIKEY_FORMAT",
"message": "Неверный формат API-ключа (ожидается GUID)"
}Обязательные поля запроса
Каждый элемент в массиве "stocks" должен содержать следующие обязательные поля. Отсутствие любого из них приведёт к ошибке валидации и возврату статуса 400 Bad Request.
| Поле | Тип | Описание |
|---|---|---|
productSku | string | Артикул товара. Используется для идентификации товара в системе. |
pointId | string | Идентификатор торговой точки, на которую выгружается товар. |
quantity | integer | Остаток товара на указанной точке. Значение должно быть больше нуля. |
price | float | Цена товара. Не может быть равна нулю или отсутствовать. |
Возможные статусы ошибок
| Код | Описание | Рекомендации |
|---|---|---|
| 400 Bad Request | Неверный запрос или некорректные данные. |
Проверьте наличие и корректность обязательных полей (productSku, pointId, quantity,
price). Убедитесь, что данные отправлены в правильном JSON-формате и соответствуют ожидаемым типам данных. |
| 401 Unauthorized | Отсутствует или некорректный API-ключ. | Проверьте правильность API-ключа, указанного в заголовке Authorization. |
| 403 Forbidden | Доступ к ресурсу запрещён. | Убедитесь, что способ загрузки через API активирован в вашем личном кабинете и у вас есть необходимые права доступа. |
| 404 Not Found | Указанный эндпоинт не существует. | Проверьте URL-адрес запроса на корректность и отсутствие опечаток. |
| 429 Too Many Requests | Превышено допустимое количество запросов. | Снизьте частоту отправки запросов. Максимум – 5 запросов в минуту. |
| 500 Internal Server Error | Внутренняя ошибка сервера. | Повторите запрос через некоторое время. Если ошибка сохраняется, свяжитесь с вашим менеджером или отправьте обращение через форму обратной связи |
| 504 Gateway Timeout | Время ожидания ответа от сервера истекло. |
Сервер не успел обработать запрос в установленный лимит (5 минут). Повторите запрос через некоторое время. Если ошибка сохраняется, свяжитесь с вашим менеджером или отправьте обращение через форму обратной связи |
Ограничения
- Не более 5 запросов в минуту. В случае превышения, доступ может быть временно заблокирован.
- Максимальное время ожидания ответа от API - 5 минут. Если за это время сервер не ответит, запрос будет завершён с ошибкой таймаута. Пожалуйста, учитывайте это в своих интеграциях.
Список возможных ошибок валидации
| Код ошибки | Описание ошибки | Что делать? |
|---|---|---|
EMPTY_SKU | Не указан обязательный артикул товара (SKU) | Укажите артикул товара (SKU) в соответствии с требованиями API |
SKU_NOT_FOUND | Товар с указанным артикулом не найден | Проверьте правильность артикула и наличие товара в системе |
EMPTY_POINT_ID | Не указан идентификатор точки продаж (pointId) | Укажите артикул товара (SKU) в соответствии с требованиями API |
POINT_NOT_FOUND | Указанная точка продаж не найдена | Убедитесь, что выбранная точка продаж существует |
INVALID_POINT_ID | pointId имеет неверный формат (ожидается формат вида A001) | Исправьте формат идентификатора, следуя примеру (например, A001) |
INVALID_FIRST_LETTER | Первая буква pointId должна быть латинской (A-Z) | Исправьте формат идентификатора, следуя примеру (например, A001) |
EMPTY_QUANTITY | Количество товара в точке продаж не указано или равно нулю | Заполните поле количества товара |
INVALID_QUANTITY | Количество должно быть строго больше 0 | Укажите положительное количество, больше 0 |
INVALID_QUANTITY_FORMAT | Количество указано неверно | Введите корректное числовое значение для количества |
INVALID_QUANTITY_TYPE | Количество указано неверно (не является целым числом) | Введите корректное числовое значение для количества |
EMPTY_PRICE | Цена товара не указана или равна нулю | Заполните поле цены, убедившись, что значение больше нуля |
INVALID_PRICE_FORMAT | Цена указана неверно | Введите корректное числовое значение для цены |
PRICE_BELOW_MIN | Указанная цена ниже РРЦ | Проверьте, чтобы цена не была ниже минимально допустимой |
Ошибки аутентификации
При ошибках в заголовке авторизации сервис вернёт HTTP 401 Unauthorized и один из следующих кодов.
| Код ошибки | Описание | Рекомендации |
|---|---|---|
HEADER_MISSING | API-ключ не передан в заголовке Authorization |
Укажите в запросе заголовокAuthorization: ApiKey <ВАШ_КЛЮЧ> |
INVALID_HEADER_FORMAT | Заголовок Authorization имеет неверный формат | Убедитесь, что заголовок начинается с префикса ApiKey |
INVALID_APIKEY_FORMAT | Неверный формат API-ключа (ожидается GUID) | Проверьте, что ключ соответствует GUID |
APIKEY_NOT_FOUND | API-ключ не найден или неактивен | Проверьте, что ключ сгенерирован и активирован в личном кабинете |
USER_NOT_FOUND | Пользователь не найден для переданного API-ключа | Убедитесь, что ключ привязан к существующему пользователю |
Получение списка товаров
Для авторизации запросов используется заголовок Authorization:
POST /api/v1/external/export/products HTTP/1.1
Host: https://лд.рф
Content-Type: application/json
Accept: application/json
Authorization: ApiKey <ВАШ_СГЕНЕРИРОВАННЫЙ_API_КЛЮЧ> POST Получение списка товаров
URL: /api/v1/external/export/products
Данный эндпоинт позволяет получить данные о всех товарах на сайте лд.рф и их связанные атрибуты.
Можно запросить: идентификаторы товаров, цены РРЦ, артикулы, наименования, свойства, связанные файлы
и изображения.
Для оптимизации объёма данных укажите только необходимые поля в массиве SELECT.
Если выполнить запрос без тела запроса, в ответе будет возвращён только один параметр - "productSku" для каждого товара.
Тело запроса (опционально):
{
"SELECT": [
"id",
"price",
"productSku",
"name",
"properties",
"files",
"pictures"
]
} - id - идентификатор товара
- price - цена РРЦ
- productSku - артикул товара
- name - наименование товара
- properties - свойства товара
- files - файлы
- pictures - изображения
В ответе будут только те поля, которые вы указали в "SELECT".
Пример ответа:
{
"products": [
{
"id": 1,
"price": 196378,
"productSku": "11111509251RGLD000000000",
"name": "Кран шаровый LD КШЦФР Gas 150/125.025.Н/П.01. из стали 12Х18Н10Т Ду150/125 Ру2,5МПа с редуктором",
"properties": [
{
"name":"Тип продукта",
"value":"Кран шаровой"
},
{
"name":"Серия",
"value":"LD"
},
{
"name":"Рабочая среда",
"value":"Газ"
}
],
"files": [
"https://xn--d1an.xn--p1ai/api/v1/document/8d1f7e80-997b-11ee-89ce-005056a4b6de.pdf",
"https://xn--d1an.xn--p1ai/api/v1/document/3182b3ac-c18b-11ed-b250-005056a4b6de.pdf",
],
"pictures": [
"https://xn--d1an.xn--p1ai/upload/products/images/bbe/bbe018b25a032512e1a03985cb2f0ec8.png"
]
}
]
} Возможные ошибки:
| Код | Описание | Рекомендация |
|---|---|---|
| 400 | Некорректное значение в поле SELECT | Проверьте список доступных полей |
| 401 | Ошибка авторизации | Проверьте API-ключ |
| 500 | Внутренняя ошибка сервера | Повторите попытку позже |