Публичное 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 (мм).
Каждый элемент массива категорий — это объект:
| Поле | Тип | Описание |
|---|---|---|
id | string | ID категории |
name | string | название категории |
parent | string | ID родительской категории ("0" — категория верхнего уровня) |
price | string | цена; допускает десятичные через точку, например "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С → PlanPlace)
Заголовок раздела «Типовой сценарий (1С → PlanPlace)»GET api/prices/get— получить текущие категории и их id.- Сопоставить категории с номенклатурой 1С.
POST api/prices/update/corpus(и при необходимости другие разделы) — отправить новые цены.- Проверить
failedв ответе. GET api/apply_data— применить изменения на сцене.- Запланировать шаги 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.