Appearance
Товары API v1
Формат товара
Legacy-товар использует UMI object ID и хранит большинство полей в форме { name, value, field_id, uid }. Ниже приведен сокращенный production-пример:
json
{
"id": 57114409,
"name": "E500RM9",
"fullName": "E500RM9",
"url": "https://nnz-ipc.ru/catalogue/rugged_mobile_computers/rugged_handheld/e500rm9/",
"stockNumber": {
"name": "Артикул",
"value": "6156782",
"field_id": 102678,
"uid": "artikul"
},
"price": {
"name": "Розничная цена",
"value": "1137.04",
"field_id": 203252,
"uid": "roznica_price"
},
"inStock": {
"name": "В наличии",
"value": 0,
"field_id": 283,
"uid": "common_quantity"
},
"shipping": {
"name": "В пути",
"value": null
},
"photos": {
"name": "Фотографии",
"value": [
"https://nnz-ipc.ru//images/cms/data/import_files/bd/bd0c65ba71ac11eeb91d00155d50c111_8a1c4858724611eeb91d00155d50c111.png"
],
"field_id": 3202,
"uid": "photos"
}
}Точный набор характеристик зависит от типа товара. Ключи внутри features сформированы legacy-транслитерацией и не совпадают с uid API v2. Фотографии возвращаются в стабильном порядке, одинаковом для разных маршрутов; порядок из неупорядоченных SQL-выборок v1 не воспроизводится.
Персональная цена
Для пользователя с уровнем цены, отличным от Розн, после поля price может появиться:
json
{
"personalPrice": {
"name": "Персональная цена",
"value": "1039.56",
"field_id": 169652,
"uid": "personalPrice"
}
}Цена сохраняет исходный legacy-тип и обычно возвращается строкой.
Один товар
http
GET /api/v1/get/item/:idid — UMI object ID товара.
Если товар не найден или недоступен, маршрут возвращает status=true, data=[] и сообщение в message.
Товары по UMI ID
http
GET /api/v1/get/items?id_list=57114409,5366035Возвращает массив найденных товаров в порядке UMI ID. Неизвестные ID пропускаются. Повторяющиеся ID не добавляют повторные карточки.
Остатки warehouseList не зависят от количества ID в запросе: один и тот же товар возвращает одинаковое количество в одиночной и пакетной выдаче. Ошибочное умножение складских количеств из production v1 исправлено.
Сокращенный batch-ответ, одинаковый по форме для трех списочных маршрутов:
json
{
"status": true,
"data": [
{
"id": 5366035,
"name": "E500RM8-4EH",
"stockNumber": {
"name": "Артикул",
"value": "6129678",
"field_id": 102678,
"uid": "artikul"
},
"price": {
"name": "Розничная цена",
"value": "0",
"field_id": 203252,
"uid": "roznica_price"
}
},
{
"id": 57114409,
"name": "E500RM9",
"stockNumber": {
"name": "Артикул",
"value": "6156782",
"field_id": 102678,
"uid": "artikul"
},
"price": {
"name": "Розничная цена",
"value": "1137.04",
"field_id": 203252,
"uid": "roznica_price"
}
}
],
"error": {},
"message": ""
}Товары по артикулам
http
GET /api/v1/get/items/by-stock?stock_list=6156782,ABC-123Возвращает массив товаров. Результат дедуплицируется по строковому значению stockNumber.value. Для числовых артикулов сохраняется совместимый numeric fallback старой MySQL-схемы.
Товары разделов
http
GET /api/v1/get/items/from?id_list=128491id_list содержит UMI object ID разделов. Выбираются только товары, напрямую связанные с указанными разделами; дочерние разделы автоматически не обходятся.
Необязательный фильтр производителей:
http
GET /api/v1/get/items/from?id_list=128491&vendors=Winmate,GETACФильтр регистронезависимый и ищет буквальное вхождение строки в название производителя.
Inline-документация
Любой товарный маршрут принимает:
text
include_documentation=true
include_documentation=1В каждый товар добавляется массив:
json
{
"documentation": [
{
"title": "Руководство пользователя",
"url": "https://example.com/manual.pdf",
"fileType": "pdf",
"size": "1.2 MB",
"sizeBytes": 1258291
}
]
}Отдельные маршруты документации входят в контракт production v1, но пока ожидают реализации в compatibility-слое v2.
Поля конфигуратора в товаре
Поля hasConfigurator и исходные configurator characteristics видны только администратору или пользователю с configurator=true. Сам конфигуратор описан отдельно.
Уточнения совместимости
В выдаче из разделов shipping.value — строка либо null. В одиночной карточке и списках по ID/артикулу — число либо null. Эти маршрутные JSON-типы сохраняются. Inline documentation использует тот же индекс UMI-документов, что и отдельные маршруты документации: известные размеры сохраняются, неизвестные остаются null. Документы другого UMI-объекта того же артикула не подставляются.
Информационный список названий object_configurator_options, доступный при разрешенном конфигураторе, сортируется по названиям. Он не задает бизнес-порядок категорий: порядок категорий и их опций из JSON конфигуратора сохраняется.