Перейти к содержимому

Публичное API: цены

Раздел «Цены» внешнего API — основной для интеграции с 1С и учётными системами. Он позволяет читать текущие цены и обновлять их по категориям. Общие правила (базовый URL, ключ sync_key, применение изменений) — в статье «Публичное API: обзор».

После обновления цен вызывайте GET ОсновнойURL/api/apply_data?sync_key=..., чтобы изменения попали на сцену.

GET ОсновнойURL/api/prices/get?sync_key=ВАШ_КЛЮЧ

В ответ приходит JSON-объект с разделами цен:

ПолеТипЧто внутри
corpusобъектцены ДСП по толщинам
cokolмассивцены цоколя
glassмассивцены витрин
tabletopмассивцены столешниц
tabletop_plintsмассивцены бортика (структура идентична tabletop, отличаются только цены)
wallpanelмассивцены стеновых панелей (фартуков)

Объект corpus устроен как «толщина → массив категорий». Толщины ДСП на текущий момент: 16, 18, 22, 25, 28, 32 (мм).

Каждый элемент массива категорий — это объект:

ПолеТипОписание
idstringID категории
namestringназвание категории
parentstringID родительской категории ("0" — категория верхнего уровня)
pricestringцена; допускает десятичные через точку, например "220.10"

Пример фрагмента ответа:

{
"corpus": {
"16": [
{"id":"46","name":"ДСП EGGER","parent":"0","price":"2500"},
{"id":"45","name":"Древесные декоры","parent":"46","price":"2500"}
],
"18": [ ... ]
},
"cokol": [ {"id":"46","name":"ДСП EGGER","parent":"0","price":"2500"} ],
"glass": [ {"id":"1","name":"Стекло","parent":"0","price":"5000.00"} ],
"tabletop":[ {"id":"22","name":"Grandex","parent":"0","price":"20000"} ]
}

Этим методом удобно сначала получить структуру категорий с их id, а затем отправлять обновления именно по этим id.

POST ОсновнойURL/api/prices/update

Тело запроса:

  • data — JSON со всеми разделами цен (та же структура, что в ответе prices/get: corpus, cokol, glass, tabletop, tabletop_plints, wallpanel);
  • sync_key — ключ из кабинета.

Формат ответа: "success" при успехе, "error" при ошибке.

Когда нужно обновить только один раздел (например, только корпус), удобнее точечный метод:

POST ОсновнойURL/api/prices/update/<ключ_раздела>

Где <ключ_раздела> — один из: corpus (ДСП), cokol (цоколь), glass (витрины), tabletop (столешница), tabletop_plints (бортик), wallpanel (стеновые панели).

Тело запроса: data (JSON) + sync_key.

Формат data для corpus — «толщина → { id категории: цена }»:

{ "16": {"45":"1946","46":"25000"}, "18": {"45":"1870"} }

Формат data для остальных разделов — просто «id категории → цена»:

{ "45":"1946", "46":"25000", "450":"19460" }

Цена — строка, десятичные через точку ("220.10").

Ответ — объект с результатом и разбивкой:

{
"result": "error",
"updated": { "46":"25000", "45":"1946" },
"failed": { "450":"19460" }
}
  • result = "success", если обновились все категории; "error", если хотя бы одна категория (в любой толщине для corpus) не найдена;
  • updated — что реально обновилось;
  • failed — что не удалось (например, несуществующий id категории).

Практический вывод. Всегда проверяйте failed в ответе: если там есть записи, значит часть id категорий в вашей системе устарела — сверьтесь через prices/get.

Помимо цен материалов, через API синхронизируются цены прайс-листа по артикулам. Это отдельный механизм синхронизации (передаётся массив {code, price}) — он подробно описан в статье «Синхронизация по API». Используйте его, когда цены привязаны к материалам/фурнитуре по артикулу, а не по категориям.

  1. GET api/prices/get — получить текущие категории и их id.
  2. Сопоставить категории с номенклатурой 1С.
  3. POST api/prices/update/corpus (и при необходимости другие разделы) — отправить новые цены.
  4. Проверить failed в ответе.
  5. GET api/apply_data — применить изменения на сцене.
  6. Запланировать шаги 3–5 по расписанию (CRON).

Раздел «Цены» API: GET api/prices/get — прочитать все цены (corpus по толщинам + массивы cokol/glass/tabletop/tabletop_plints/wallpanel); POST api/prices/update — обновить всё; POST api/prices/update/<раздел> — обновить один раздел (ответ содержит updated/failed). Цены — строки с точкой. После записи вызывайте api/apply_data. Цены по артикулам прайс-листа — через синхронизацию по API.