Интеграция с «1С», «ERP», CRM-системами и CommerceAPI

Назад

Интеграция с «1С», «ERP», CRM-системами и CommerceAPI

Автоматический экспорт при заказе / Отправка POST данных о заказе в JSON формате

Автоматический экспорт при заказе вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.
На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, в том числе и контактные данные заказчика, и перечень товаров. Контактные данные и информация о заказе будет передаваться в JSON формате, POST запросом.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»

После оформления заказа, на указанный выше адрес будет отправлен POST запрос, со следующими данными:
 Code: JSON
{
  "ORDER": {
    "buyer_name": "NAME",
    "buyer_soname": "SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_email": "email@email.com",
    "buyer_address": "ADDRESS",
    "delivery_storehouse_title": "Extend PICKUP POINT (Selected)",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "FLAT",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_sendedtext": "ADD TEXT",
    "post": "1596538754",
    "lang": "en",
    "form_delivery": "",
    "form_delivery_country_code": "",
    "order_id": "XXXXX",
    "customer_id": "XXXX",
    "order_discount": "",
    "order_hash": "55d4ed2ed42b2c116d9927c2b2ce7fef",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": "",
    "delivery_id": 0,
    "abtesting": 0,
    "referral_group": "",
    "group": "",
    "referral_url": "https://boostore.pro/....",
    "referral_utm": "",
    "site_id": "10954",
    "site_url": "boostore.pro",
    "transaction_id": "XXXXX",
    "total": 2264,
    "currency": "UAH",
    "shipping": "0",
    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701 (42)",
        "sku": "200976_42",
        "sku_parent": "200976",
        "variant": "42",
        "category": "sport_shoes",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151"
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "sku_parent": "200982",
        "variant": "",
        "category": "bags_for_shoes",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": 0
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers (43)",
        "sku": "200984_43",
        "sku_parent": "200984",
        "variant": "43",
        "category": "sport_shoes",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154"
      }
    ]
  }
}


Если после отправки запроса, ваш сервис вернет JSON данные, с содержанием «Number» или «crm_order_id», то к заказу будет добавлен внешний номер заказа.

Автоматический экспорт статистики продаж / Отправка POST данных о заказе в JSON формате

Автоматический экспорт статистики продаж вы можете включить в настройках сайта, во вкладке «Магазин», указав путь для отправки данных.
На указанный адрес будет отправляться POST запрос, со всеми данными о заказе, которые изменяются в Статистике продаж. Информация будет передаваться POST запросом в JSON формате.
Например, в 1с вы можете реализовать прием заказов через «HTTP сервис»->«SiteExchange» -> «POSTData»
Кроме того вы можете включить внешний доступ к вашей статистике, указав «Ключ для доступа к статистике продаж».

После изменения статуса заказа (кроме быстрого редактирования статусов), на указанный выше адрес будет отправлен POST запрос в JSON формате, со следующими данными:
 Code: JSON
{
  "ORDER": {
    "crm_order_id": "123",
    "total": "2264",
    "currency": "UAH",
    "discount": "",
    "discount_before": "",
    "total_before": "2264",
    "currency_before": "UAH",
    "shop_cart_statistic_selldone_datestump_unsted": "0",
    "status": "0",
    "status_pay": "0",
    "allow_online_pay": "0",
    "status_for_customer": "0",
    "delivery_status": "0",
    "products_preview": "",
    "admin_note": "",
    "delivery_selected_id_before": "3482",
    "delivery_selected_id": "3482",
    "delivery_track_id": "",
    "delivery_track_id_link": "",
    "buyer_name": "NAME SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_address": "ADDRESS",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "Extend ADDRESS (Flat)",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_email": "email@email.com",
    "payment_method": "PaymentMethod (Selected)",
    "group": "",
    "referral_group": "",
    "referral_url": "http://boostore.pro",
    "referral_utm": "",
    "site_manager_id_operator": "1",
    "buyer_id": "16532",
    "manager_id_operator": "0",
    "order_products": "284430|284436|284438",
    "order_products_sku": "200976_42|200982|200984_43",
    "order_products_num": "1|1|1",
    "order_products_variations_id": "409151|407678|409154",
    "order_products_prices": "686|736|842",
    "order_products_currency": "UAH|UAH|UAH",
    "order_products_titles": "Adidas Originals Streetball Trainers FX9701|Shoe bag with pocket Kite Education College|ASICS Gel-Venture 8 Gs Trainers",
    "order_products_variations_titles": "42||43",
    "order_products_prices_without_discount": "||",
    "post": "1596578917",

    "Save": "Save",
    "order_id": 63738,
    "order_discount": "",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": null,
    "delivery_id": "3482",
    "referral_group": "",
    "group": "",
    "referral_url": "http://boostore.pro/ru/pers_shop/sport_shoes/284438.htm",
    "referral_utm": "",
    "site_url": "boostore.pro",
    "transaction_id": 63738,
    "crm_oder_id": "123",
    "total": "2264",
    "currency": "UAH",
    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701",
        "sku": "200976_42",
        "variant": "42",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151",
        "price_without_discount": ""
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "variant": "",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": "407678",
        "price_without_discount": ""
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers",
        "sku": "200984_43",
        "variant": "43",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154",
        "price_without_discount": ""
      }
    ]
  }
}
'status' - '3', статус сделки // 0 - Не обработан, 1 - Заказ в обработке, 3 - Обработан, 2 - Отменен, 5 - Отменен (Нет в наличии), 6 - Отменен (Отказ), delete - Удалить заказ

'status_pay' - '0', Статус заказа // 0-Не указано, 1 - Оплачен онлайн, не проверен, 4 - Оплачен онлайн и проверен, 2 - Оплачен, 3 - Предоплачен, 5 - Ожидается оплата

'status_for_customer' - '1', Статус для покупателя // 0 - Не обработан, 1 - Обрабатывается, 3 - Отправлен / Обработан, 2 - Отменен

'admin_note' - 'Примечание администратору'

'delivery_status' - '0', 0 - Не указано, 1 - Доставлено, 2 - Не доставлено, 3 - Ожидается отправка, 4 - Передано курьеру, 5 - В пути, 6 - Отправлено на почтовое отделение, 7 - Отправлено на адрес получателя, 8 - Доставлено на почтовое отделение, 9 - Доставлено на адрес получателя

'crm_order_id' - 'XXX', Внешний код заказа (для использования в сторонних CRM)

Подробнее ознакомиться с полями вы можете в статистике продаж, при редактировании заказа.


При изменении товаров в заказе, отправляется JSON запрос с перечнем item, а также номер заказа:
 Code: JSON
{
  "ORDER": {
    "crm_order_id": "123",
    "order_id": 63738,
    "total": "2264",
    "currency": "UAH",
    "discount": "",
    "discount_before": "",
    "total_before": "2264",
    "currency_before": "UAH",
    "shop_cart_statistic_selldone_datestump_unsted": "0",
    "status": "0",
    "status_pay": "0",
    "allow_online_pay": "0",
    "status_for_customer": "0",
    "delivery_status": "0",
    "products_preview": "",
    "admin_note": "",
    "delivery_selected_id_before": "3482",
    "delivery_selected_id": "3482",
    "delivery_track_id": "",
    "delivery_track_id_link": "",
    "buyer_name": "NAME SONAME",
    "buyer_phone": "PHONENUMBER123",
    "buyer_address": "ADDRESS",
    "buyer_address_eform0": "Extend ADDRESS (Selected)",
    "buyer_address_eform1": "Extend ADDRESS (Region)",
    "buyer_address_eform2": "Extend ADDRESS (City)",
    "buyer_address_eform3": "Extend ADDRESS (Street)",
    "buyer_address_eform4": "Extend ADDRESS (Home number)",
    "buyer_address_eform5": "Extend ADDRESS (Flat)",
    "buyer_address_eform6": "Extend ADDRESS (Branch number)",
    "buyer_email": "email@email.com",
    "payment_method": "PaymentMethod (Selected)",
    "group": "",
    "referral_group": "",
    "referral_url": "http://boostore.pro",
    "referral_utm": "",
    "site_manager_id_operator": "1",
    "buyer_id": "16532",
    "manager_id_operator": "0",
    "order_products": "284430|284436|284438",
    "order_products_sku": "200976_42|200982|200984_43",
    "order_products_num": "1|1|1",
    "order_products_variations_id": "409151|407678|409154",
    "order_products_prices": "686|736|842",
    "order_products_currency": "UAH|UAH|UAH",
    "order_products_titles": "Adidas Originals Streetball Trainers FX9701|Shoe bag with pocket Kite Education College|ASICS Gel-Venture 8 Gs Trainers",
    "order_products_variations_titles": "42||43",
    "order_products_prices_without_discount": "||",
    "post": "1596578917",

    "Save": "Save",
    
    "order_discount": "",
    "time": "2025-06-28T12:31:49+00:00",
    "delivery": null,
    "delivery_id": "3482",
    "referral_group": "",
    "group": "",
    "referral_url": "http://boostore.pro/ru/pers_shop/sport_shoes/284438.htm",
    "referral_utm": "",
    "site_url": "boostore.pro",
    "transaction_id": 63738,
    

    "items": [
      {
        "id": "284430",
        "name": "Adidas Originals Streetball Trainers FX9701",
        "sku": "200976_42",
        "variant": "42",
        "quantity": "1",
        "price": "686",
        "currency": "UAH",
        "variations_id": "409151",
        "price_without_discount": ""
      },
      {
        "id": "284436",
        "name": "Shoe bag with pocket Kite Education College",
        "sku": "200982",
        "variant": "",
        "quantity": "1",
        "price": "736",
        "currency": "UAH",
        "variations_id": "407678",
        "price_without_discount": ""
      },
      {
        "id": "284438",
        "name": "ASICS Gel-Venture 8 Gs Trainers",
        "sku": "200984_43",
        "variant": "43",
        "quantity": "1",
        "price": "842",
        "currency": "UAH",
        "variations_id": "409154",
        "price_without_discount": ""
      }
    ]
  }
}

Доступ к статистике продаж / JSON


Укажите ключ для доступа к статистике продаж в настройках, во вкладке «Магазин». Если вам необходимо получить доступ к статистике продаж внешним приложением, то вы можете выполнить (POST/GET или AJAX) запрос по адресу «/ajax.php?statistic_sell»

При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «202cb962ac59075b964b07152d234b70».

В таком случае запрос будет выглядеть так: «/ajax.php?statistic_sell&key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки или поиска (GET/POST параметры), которые можно взять на вашей странице статистики продаж в админ-центре (/page.php?p=statistic_sell&mystat). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «&sort_dateperiod=1week» означает, что будет отображаться статистика продаж за неделю.

Данные отображаются в JSON формате.

Обратите внимание, что если вы используете открытые для посетителей запросы странице, то при помощи вашего ключа они смогут получить доступ к вашей статистике продаж.

Доступ к прайсу магазина / Полная выгрузка прайса в CSV


Укажите ключ для доступа к прайсу магазина в настройках, во вкладке «Магазин». Полная выгрузка прайса находится по адресу «/csv_export_products.csv»

При этом необходимо указать ключ в запросе, с шифрованием MD5. Например, если у вас указан ключ «123», то в запросе это будет «202cb962ac59075b964b07152d234b70».

В таком случае запрос будет выглядеть так: «/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70»
В запросе можно указать данные для сортировки и выборке полей, которые можно взять на вашей странице экспорта в админ-центре (/page.php?p=submit_catalog_page&subpage&export_from_shop). Сортировка и выбор параметров осуществляется GET/POST запросом, например, «&export_product_access=export_product_access» означает, что будет выгружать поле с данными о доступе к товару.

Данные отображаются в CSV формате.

Файл выгрузки кешируется для уменьшения нагрузки и обновляется раз в сутки. Удалить кеш можно при помощи кнопки «Очистить кеш XML/CSV выгрузок».

Пример: https://templatedemo437544.boostore.pro/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70

Дополнительно реализован механизм обмена данными через API, схожий с WooCommerce API. API позволяет получать и обновлять инофмация о заказах и товарах, а также категориях. Инструкции и настройки в разделе «Магазин» - «Обмен данными JSON Commerce API».

Commerce API (Products/Categories/Sales Statistics)

Commerce API — Краткий мануал по методам

Ключ доступа

Для работы с API нужен ключ доступа (Consumer Secret), который вы создаете в резделе «Настройка», «Магазин», «Доступ к статистике продаж». Ключ формируется на основе Ключа для доступа к статистике продаж.

Типы ключей доступа

В зависимости от типа ключа, API может предоставлять разные уровни доступа:

КлючОписаниеДоступ
1Полный доступЧтение и запись всех ресурсов
2Чтение всех данныхТолько чтение всех ресурсов
3Чтение товаровТолько чтение товаров, категорий, производителей и коллекций
4Управление товарамиЧтение всех данных + запись товаров, категорий, производителей и коллекций
5Чтение заказовТолько чтение заказов и статистики продаж
6Управление заказамиЧтение всех данных + запись заказов и статистики продаж
7Управление статьями блогаЧтение всех данных + запись статей блога
8Управление страницамиЧтение всех данных + запись страниц
9Управление блоками/менюЧтение всех данных + запись блоков/меню

Ключ формируется на основе вашего Ключа для доступа к статистике продаж с добавлением соответствующего суффикса. Создайте в настройках магазина ключ для доступа к статистике продаж, система автоматически сгенерирует все варианты ключей.

Управляйте данными через API:
Пагинация и навигация:

Методы API (HTTP)

Все запросы идут на базовый URL вашего сайта, например: https://site.com/api/commerce/

1. Статистика продаж

МетодURLОписание
GET /orders Получить статистику заказов
GET /orders/{id} Получить статистику отдельного заказа по ID
GET /crm_orders/{id} Получить статистику отдельного заказа по внещнему CRM ID
DELETE /orders/{id} Удалить заказ по ID
DELETE /crm_orders/{id} Удалить заказ по внещнему CRM ID
POST /orders Добавить новый заказ
UPDATE /orders/{id} Обновить заказ по ID (PATCH/PUT/UPDATE)
UPDATE /crm_orders/{id} Обновить заказ по внещнему CRM ID (PATCH/PUT/UPDATE)

2. Товары

МетодURLОписание
POST /products Массовое добавление и обновление товаров
GET /products Получить список товаров. Поддерживает пагинацию, сортировку, фильтрацию по категории, статусу, дате, языку (?lang=ru|ua|en|pl) и поиск по имени
GET /products/{id} Просмотр отдельного товара по ID
GET /products/sku/{sku} Просмотр отдельного товара по SKU (коду товара)
UPDATE /products/{id} Обновить товар по ID (PATCH/PUT/UPDATE)
UPDATE /products/sku/{sku} Обновить товар по SKU (коду товара) (PATCH/PUT/UPDATE)
UPDATE /products Массовое обновление нескольких товаров (PATCH/PUT/UPDATE)
DELETE /products/{id} Удалить товар по ID
DELETE /products/sku/{sku} Удалить товар по SKU (коду товара)

3. Категории магазина

МетодURLОписание
POST /products/categories Массовое добавление и обновление категорий
GET /products/categories Получить список категорий товаров
GET /products/categories/{id} Получить категорию по ID
GET /products/categories/name/{name} Получить категорию по имени
UPDATE /products/categories Массовое обновление нескольких категорий (PATCH/PUT/UPDATE)
UPDATE /products/categories/{id} Обновить категорию по ID (PATCH/PUT/UPDATE)
UPDATE /products/categories/name/{name} Обновить категорию по имени
DELETE /products/categories/{id} Удалить категорию по ID (если нет товаров и подкатегорий)
DELETE /products/categories/name/{name} Удалить категорию по имени

Параметры родительских категорий

ПараметрТипОписание
category_parent_id int ID родительской категории. Используется в первую очередь, если задан.
category_parent_name string Латинское имя (alias / slug) родительской категории. Используется, если category_parent_id не задан.
category_lang string Язык категории. Применяется для разрешения коллизий в именах.

Принцип работы:

  1. Сначала проверяется category_parent_id.
  2. Если он не задан – используется category_parent_name.
  3. При совпадении имён – добавляется проверка по category_lang.

Особое правило:
Чтобы добавить категорию в корневую (основную) категорию, необходимо указать category_parent_name = "main" и обязательно задать параметр category_lang.

Обновление и удаление:
update_exists (bool) – если true, обновляет категорию при повторном добавлении.
delete (bool) – если true, категория будет удалена.

4. Производители

МетодURLОписание
POST /products/producers Массовое добавление и обновление производителей
GET /products/producers Получить список производителей
GET /products/producers/{id} Получить производителя по ID
GET /products/producers/name/{name} Получить производителя по имени
UPDATE /products/producers Массовое обновление нескольких производителей (PATCH/PUT/UPDATE)
UPDATE /products/producers/{id} Обновить производителя по ID (PATCH/PUT/UPDATE)
UPDATE /products/producers/name/{name} Обновить производителя по имени
DELETE /products/producers/{id} Удалить производителя по ID (если нет товаров)
DELETE /products/producers/name/{name} Удалить производителя по имени

Параметры привязки производителей

ПараметрТипОписание
producer_parent_id int ID родительского производителя (группы). Используется в первую очередь.
producer_parent_name string Латинское имя (alias / slug) родительского производителя.
producer_lang string Язык производителя для разрешения коллизий имен.

Принцип работы:

  1. Сначала проверяется producer_parent_id.
  2. Если он не задан – используется producer_parent_name.
  3. При совпадении имён – добавляется проверка по producer_lang.

Особое правило:
Чтобы добавить производителя в корневую (основную) группу производителей, необходимо указать producer_parent_name = "main" и обязательно задать параметр producer_lang.

Обновление и удаление:
update_exists (bool) – если true, обновляет производителя при повторном добавлении (по умолчанию false).
delete (bool) – если true, производитель будет удалён.

5. Коллекции

МетодURLОписание
POST /products/collections Массовое добавление и обновление коллекций
GET /products/collections Получить список коллекций
GET /products/collections/{id} Получить коллекцию по ID
GET /products/collections/name/{name} Получить коллекцию по имени
UPDATE /products/collections Массовое обновление нескольких коллекций (PATCH/PUT/UPDATE)
UPDATE /products/collections/{id} Обновить коллекцию по ID (PATCH/PUT/UPDATE)
UPDATE /products/collections/name/{name} Обновить коллекцию по имени
DELETE /products/collections/{id} Удалить коллекцию по ID (если нет товаров и подколлекций)
DELETE /products/collections/name/{name} Удалить коллекцию по имени

Параметры привязки коллекций

ПараметрТипОписание
collection_parent_id int ID родительской коллекции. Используется в первую очередь.
collection_parent_name string Латинское имя (alias / slug) родительской коллекции.
collection_lang string Язык коллекции для разрешения коллизий имен.

Принцип работы:

  1. Сначала проверяется collection_parent_id.
  2. Если он не задан – используется collection_parent_name.
  3. При совпадении имён – добавляется проверка по collection_lang.

Особое правило:
Чтобы добавить коллекцию в корневую (основную) коллекцию, необходимо указать collection_parent_name = "main" и обязательно задать параметр collection_lang – язык родительской коллекции.

Обновление и удаление:
update_exists (bool) – если true, обновляет коллекцию при повторном добавлении (по умолчанию false).
delete (bool) – если true, коллекция будет удалена.

6. Сортировка и пагинация

Для методов /orders, /products, /blog/articles и /pages доступны параметры для постраничного вывода и сортировки:

Параметры пагинации

ПараметрТипОписание
page int Номер страницы (по умолчанию 1)
per_page int Кол-во элементов на страницу. По умолчанию: товары — 500, остальные — 200. Максимум: заказы и бронирования — 2000, товары — 5000, всё остальное — 2000.
Pages: создание — до 100 страниц за запрос, обновление — до 500 страниц за запрос

Параметры сортировки

ПараметрТипДопустимые значенияОписание
orderby string id, title, price, date, views Поле для сортировки
order string asc, desc Направление сортировки

Параметры языка

ПараметрТипДопустимые значенияОписание
l string ru, ua, en, de, fr, es, it, pl Язык отображения значений

Дополнительно для заказов

Можно фильтровать заказы по дате и статусу:

  • ?after=YYYY-MM-DD — Начальная дата (в формате ISO)
  • ?before=YYYY-MM-DD — Конечная дата
  • ?status=pending|processing|on-hold|completed|cancelled|0|1|2|3|5|6|7|8 — Статус заказа
    • 0 — Не обработанные (pending)
    • 1 — Заказ в обработке (processing)
    • 7 — Заказ в обработке, ожидает поставки (on-hold)
    • 3 — Обработанные (completed)
    • 8 — Обработанные и завершённые (completed)
    • 2 — Отменённые (cancelled)
    • 5 — Отменённые: нет в наличии (cancelled)
    • 6 — Отменённые: отказ (cancelled)
  • ?show_deleted=1 — Показать скрытые заказы

Примеры

GET /orders?page=2&per_page=100&after=2024-06-01&before=2024-06-30
GET /products?orderby=price&order=asc&per_page=50
GET /booking?date_from=2024-06-01&date_to=2024-06-30&type=0
GET /booking?group_id=5&slug_search=yoga-morning

Пример авторизации в запросе

Способ 1 — через параметр запроса (простой):

?consumer_secret=ВАШ_СЕКРЕТ

⛔ Не публикуйте ключ в общий доступ!

Способ 2 — через заголовок Authorization (OAuth 1.0a):

Authorization: OAuth oauth_consumer_key="ВАШ_СЕКРЕТ"


Добавить новый заказ (POST /orders)

Чтобы создать новый заказ через API, нужно отправить POST-запрос на /orders с JSON-телом. Обязательно должно быть указано минимум:

  • email — Email покупателя (обязательно!)
  • line_items — Список добавляемых товаров

Параметры заказа

При создании заказа можно указывать дополнительные поля, например:

{
  "first_name": "Name",
  "last_name": "Soname",
  "email": "alex@example.com",
  "phone": "+380671112233",
  "address": "Full address of not used address eform",
  "buyer_address_eform1": "State",
  "buyer_address_eform2": "City",
  "buyer_address_eform3": "Street",
  "buyer_address_eform4": "house number",
  "buyer_address_eform5": "flat",
  "postcode": "01001",
  "total": "999",
  "status": "processing",
  "status_for_customer": "processing",
  "line_items": [ ... ]
}

Описание поля total:

  • totalфинальная сумма заказа (строка или число). Если это поле указано, оно будет использовано как итоговая цена заказа.
  • Если total не указано, сумма заказа будет автоматически пересчитана по сумме добавленных товаров в line_items.
  • Поле total не является обязательным и может быть использовано для заказов без товаров.

Формат line_items

Параметр line_items — это массив товаров, каждый товар задаётся объектом со следующими полями:

"line_items": [
  {
    "product_id": 478734,
    "quantity": 1,
    "price": 100,
    "currency": "USD"
  },
  {
    "product_id": 478268,
    "quantity": 10,
    "variation": "51"
  },
  {
    "product_id": 478266,
    "quantity": 1,
    "variation_id": 735302
  }
]
  • product_idID товара (обязательно!).
  • quantityКоличество единиц товара (обязательно!).
  • price(необязательно) Если указана цена — берётся именно эта цена и не вычисляется по данным сайта.
  • currency(необязательно) Валюта конкретного товара (например, USD или UAH). Если указана и отличается от общей валюты заказа (currency), система сконвертирует цену автоматически.
  • variation_idID разновидности (вариации товара) — способ указать разновидность, если она есть.
  • variationНазвание или код разновидности — используется если нет variation_id. Если указаны оба — приоритет у variation_id.

Важно: Если общая валюта заказа (currency) не указана — будет использоваться валюта по умолчанию для сайта.

Если валюта товара отличается от общей валюты — цена конвертируется автоматически.

Параметры бронирования

Если заказ связан с бронированием, можно указать:

  • booking — целое число (0/1). Флаг, указывающий, есть ли у заказа бронирование. Установите 1, чтобы пометить заказ как бронь.
  • booking_data — объект. Детали бронирования (используется в POST/PUT/PATCH). Поля:
"booking_data": {
  "slot_id": 123,
  "slot_title": "Название слота",
  "group_id": 0,
  "start_time": 1710000000,
  "end_time": 1710003600,
  "duration": 3600,
  "factor": 1.0,
  "base_price": "100$",
  "price": "100$",
  "payment_required": true,
  "status": 0,
  "after_payment_status": 3,
  "userid": 0,
  "author": 0,
  "dates_start_year": "2026",
  "dates_start_date": "2026-07-07",
  "dates_start_time": "10:00:00",
  "dates_end_year": "2026",
  "dates_end_date": "2026-07-07",
  "dates_end_time": "11:00:00"
}
  • slot_id — ID слота бронирования (обязательно).
  • slot_title — Название слота.
  • group_id — ID группы для группировки слотов.
  • start_time — Время начала (Unix timestamp).
  • end_time — Время окончания (Unix timestamp).
  • duration — Длительность в секундах.
  • factor — Коэффициент-множитель.
  • base_price — Базовая цена (строка с символом валюты).
  • price — Итоговая цена (строка с символом валюты).
  • payment_required — Требуется ли оплата (true/false).
  • status — Статус бронирования (0-8). Где: 0 — новый, 1 — в обработке, 2 — отменён, 3 — выполнен/завершён, 4-8 — дополнительные статусы.
  • after_payment_status — Статус, который устанавливается заказу после успешной оплаты. Диапазон значений тот же, что и у status (0-8).
  • userid — ID пользователя-покупателя.
  • author — ID автора/менеджера, создавшего бронь.
  • dates_start_* / dates_end_* — Даты и время в человеческом формате (опционально).

🛡️ Защита от дублей: При создании или обновлении заказа с booking_data система автоматически проверяет, не занят ли указанный временной интервал другим неотменённым заказом (статусы 2, 5, 6 считаются отменёнными — слот свободен). Если слот занят — API вернёт ошибку 409 Conflict.


Обновление товаров

Обновление товара осуществляется через HTTP-метод UPDATE (или PATCH/PUT) по URL с указанием ID товара или его SKU (кода товара), либо сразу нескольких товаров одним запросом:

  • /products/{id} — обновление товара по ID
  • /products/sku/{sku} — обновление товара по коду (SKU)
  • /products — массовое обновление нескольких товаров (до 5000 за один запрос)

При массовом обновлении путь /products не содержит ID или SKU. В этом случае необходимо передавать массив объектов товаров в параметре products. Каждый элемент массива должен содержать хотя бы id или sku. Если указан id, он имеет приоритет и может использоваться для замены кода товара (sku). Если id не указан, поиск осуществляется по sku - коду товара.

При обновлении передается полный набор данных товара в формате JSON. Все переданные данные заменяют существующие значения, включая:

  • Основные свойства товара (название, описание, цены, статус и др.)
  • Атрибуты (характеристики)
  • Вариации (разновидности товара)
  • Изображения
  • Категории и теги
  • Дополнительные настройки и мета-поля

Обновление вариаций происходит с использованием следующего алгоритма для каждой вариации из массива variations:

  1. Если в вариации указан id, обновление производится по нему.
  2. Если id отсутствует, но указан sku (код вариации), поиск и обновление происходит по нему.
  3. Если нет ни id, ни sku, но есть title (название вариации), поиск и обновление производится по названию.
  4. Если вариация не найдена по указанным критериям, создается новая вариация с заданными параметрами.

Обновление по SKU удобно, когда ID вариации неизвестен, но известен уникальный код.

При обновлении все поля, указанные в JSON, заменят текущие значения товара; чтобы оставить какое-то поле без изменений, просто не включайте его в запрос.

  • Дубликаты разновидностей: если в массиве разновидностей встречаются повторяющиеся по коду (SKU) и названию (title), такие разновидности будут пропущены — одна и та же комплектация не добавится дважды.
  • Главное изображение: в массиве images главным считается то, что под индексом 0. Если images[0] отсутствует или не загружено, главным станет первое успешно загруженное изображение.
  • Максимум изображений: для одного товара можно загрузить не более 10 изображений. Если попытаться загрузить больше, лишние файлы будут проигнорированы.
  • Работа с изображениями:
    • Удаление изображений: чтобы удалить изображение по индексу, укажите для элемента массива images значение "delete". Например, images[2] = "delete" удалит файл с индексом 2. Можно удалять и загружать одновременно, указывая несколько ключей: images[3] = "delete", images[1] = "https://...".
    • Пропуски индексов изображений: если указать пустую строку или false, этот индекс будет пропущен без ошибок.
    • Перезапись изображений: параметр images_replace: если true, система перезапишет существующие файлы изображений по переданным индексам (удалит старый файл и кеш). Если false или не указан — перезапись запрещена.
    • Пропуск занятых индексов: параметр images_skip_index: если true, то при занятом индексе и запрещённой перезаписи система найдёт следующий свободный индекс и сохранит файл туда. Если false или не указан — индекс берётся строго как передан.
    • Сохранение под новым индексом при конфликте: параметр images_replace_new_index: если true, то при занятом индексе и отключённых перезаписи и автоматическом пропуске файл будет сохранён под новым свободным индексом. Если все три параметра false или не заданы и индекс занят — файл не будет загружен.

Параметры товара


Доступные значения вы можете посмотреть в коде примеров ниже. Также приведена дополнительная расшифровка некоторых значений, которая может быть полезна.
  • Доступные значения price_for

    Для каждого товара можно указать параметр price_for, который задаёт единицу измерения цены. Допустимо использовать числовой код или текст (например, «За 1 кг» или «Per 1 kg»). Вот полный список значений:

    Показать / Скрыть
    • 0 — Не указано
    • 1 — За 1 шт
    • 2 — За 100 шт
    • 3 — За 1000 шт
    • 4 — За 1 упаковку
    • 5 — За 1 кг
    • 6 — За 1000 кг
    • 7 — За 1 м² (квадратный метр)
    • 8 — За 1 метр
    • 9 — За 1 км
    • 10 — За комплект
    • 11 — За 1 час
    • 12 — За 1 день
    • 13 — За 1 месяц
    • 14 — За 1 год
    • 15 — За сотку
    • 16 — За акр
    • 17 — За гектар
    • 18 — За участок
    • 19 — За объект
    • 30 — За 1 мл (миллилитр)
    • 31 — За 1 л (литр)
    • 32 — За 1 км³ (кубический километр)
    • 33 — За 1 м³ (кубический метр)
    • 34 — За 1 дм³ (кубический дециметр)
    • 35 — За 1 см³ (кубический сантиметр)
    • 36 — За 1 мм³ (кубический миллиметр)
    • 37 — За 1 hl (гектолитр)
    • 38 — За 100 грамм
    • 39 — За 1 фунт
    • 40 — За 1 грамм
    • 41 — За 10 кг
    • 42 — За 1 центнер (100 кг)
    • 43 — За 1 тонну
    • 44 — За 1 ар
    • 45 — За 1 пару
    • 46 — За 1 дюжину
    • 47 — За 1 галлон
    • 48 — За 1 баррель
    • 49 — За 1 минуту
    • 50 — За 1 неделю
    • 51 — За 1 услугу
    • 52 — За 1 поездку
    • 53 — За 1 человека
    • 54 — За 1 машину
    • 55 — За 1 м.п. (метр погонный)

    Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.

  • Доступные значения stock_status

    Для каждого товара можно указать параметр stock_status, который определяет статус доступности товара и его поведение на сайте. Можно использовать числовой код или ключевое слово — система распознает оба варианта.

    Показать / Скрыть
    • 0 — В наличии
    • 1 — Нет в наличии
    • 2 — Под заказ
    • 3 — Нет в наличии + Скрыть товар из списка
    • 4 — Нет в наличии + Запретить добавлять товар в корзину
    • 5 — Наличие уточняйте

    Можно использовать как числовое значение, так и текст — система автоматически распознает и приведёт к правильному коду.

    Если для товара выбран вариант 3, он будет скрыт из списков товаров на сайте. Если выбран вариант 4, товар будет виден, но его нельзя будет добавить в корзину. Вариант 5 показывает покупателю, что наличие нужно уточнить.

  • Акция и Доступные значения promotion_expires_job

    Для каждого товара можно указать параметр promotion_expires_job, который управляет тем, что делать с акцией после истечения её срока.
    Можно использовать числовой код или ключевое слово — система распознает оба варианта.

    Показать / Скрыть
    • 0 — Ничего не делать (скрыть таймер)
    • 1 — Перенести «Старая цена» в основную цену и удалить старую цену
    • 2 — Убрать пометку «Акция»
    • 3 — Перенести «Старая цена» в основную цену и убрать пометку «Акция»
    • 5 — Запустить таймер заново сроком на 1 день
    • 6 — Запустить таймер заново сроком на 10 дней
    • 7 — Запустить таймер заново с предыдущим сроком (дата таймера минус дата последнего редактирования)
    • 8 — Убрать пометку «Акция» и удалить «Старая цена»

    Можно указывать как числовое значение, так и текст — система автоматически распознает и приведёт к нужному коду.

    Важно: Для активации таймера акции обязательно укажите promotion равным 1 — это означает, что акция активна.

    Также необходимо указать дату окончания акции в параметре promotion_expires — она может быть задана как UNIX-время (например, time()), так и в формате YYYY-MM-DDTHH:MM:SS+00:00 (например, 2025-06-28T00:00:00+00:00).

  • Больше значений

    Доступные значения title

    Текст (максимум 255 символов) - наименование товара


    Доступные значения sku

    Текст (максимум 100 символов) - код товара


    Доступные значения status
    • 1 — Доступ открыт
    • 0 — Доступ закрыт (403)

    Доступные значения xml

    Включить/Выключить выгрузку товара в XML (Goolge Merchant и прочие)

    • 1 — Выгрузка включена
    • 0 — Выгрузка выключена

    Доступные значения xml_markup

    Параметр управляет применением наценок при выгрузке товаров в XML (Google Merchant и другие рекламные каталоги).

    • 0 — Вкл: Наценка применяется по умолчанию
    • 1 — Выкл: Без наценок (оригинальная цена)
    • 2 — Без наценки Rozetka
    • 3 — Без наценки Prom.ua
    • 4 — Без наценки Epricentrk.ua
    • 5 — Выкл: Rozetka, Prom, Epicentrk
    • 6 — Без формульной наценки

    Доступные значения noimport

    Включить/Выключить обновление товара при импорте (Магазин - Импортировать товары)

    • 1 — Обновлять при импорте
    • 0 — Не обновлять при импорте

    Доступные значения delete
    • 0 — Не удалять
    • 1 — Удалить товар

    Доступные значения show_period

    Период размещения товара. Позволяет скрыть товар после истечения указанного срока.

    • 0 — На всегда
    • 1 — 1 день
    • 2 — Неделя
    • 3 — Месяц
    • 4 — Полгода
    • 5 — Год

    Доступные значения priority

    Число от 0 до 100. Чем больше — тем выше товар в списке.


    Доступные значения custom_label_4

    Текст (максимум 95 символов)


    Доступные значения meta_title

    Текст (максимум 255 символов)


    Доступные значения meta_description

    Текст (максимум 500 символов)


    Доступные значения meta_keywords

    Текст (максимум 2000 символов)


    Доступные значения multilangid

    Текст (максимум 50 символов)


    Доступные значения categories

    Массив со значениями

    • id — ID категории
    • name — Наименование категории
    • lang — Язык категории

    Доступные значения producer

    Массив со значениями

    • id — ID производителя
    • name — Наименование производителя
    • lang — Язык производителя

    Доступные значения producer_country

    Текст (максимум 100 символов)


    Доступные значения collection

    Массив со значениями

    • id — ID коллекции
    • name — Наименование коллекции
    • lang — Язык коллекции

    Доступные значения short_description

    Текст (максимум 2000 символов) - краткое описание товара (если включено в стилистике сайта, то отображается при просмотре списка товаров)


    Доступные значения description

    Текст длинный - полное описание товара, отображается при отдельном просмотре карточки товара


    Доступные значения description_tab_1

    Текст длинный - вкладка 1 с описанием (Заголовок вкладки укажите в настройках магазина)


    Доступные значения description_tab_2

    Текст длинный- вкладка 2


    Доступные значения description_tab_3

    Текст длинный- вкладка 3


    Доступные значения description_tab_4

    Текст длинный- вкладка 4


    Доступные значения description_tab_5

    Текст длинный- вкладка 5


    Доступные значения bought_with

    Текст (максимум 255 символов) - список значения С товаров покупают, через запятую (ID или SKU товаров)


    Доступные значения bought_with_email

    Текст (максимум 255 символов) - список значения С товаров покупают, отправляемый покупателю на почту при заказе, через запятую (ID или SKU товаров)


    Доступные значения discount

    Текст (максимум 20 символов) - размер скидки (информационное поле о скидке, отображается и в списке товаров и при отдельном просмотре)


    Доступные значения new

    Пометить товар как Новинка

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения featured

    Пометить товар как Хит продаж

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения promotion

    Пометить товар как Акция

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения reducedprice

    Пометить товар как Цена снижена

    • 0 — Не установлено
    • 1 — Установлено

    Доступные значения shipping
    • 0 — Не указаны
    • 1 — Установлены

    Доступные значения shipping_settings (связаны с shipping)
    • 2 — Из Общих настроек
    • 0 — Нет доставки
    • 1 — Есть доставка
    • 3 — Указать только заметку по поводу доставки

    Доступные значения shipping_price (связаны с shipping_settings)

    Текст (максимум 40 символов)


    Доступные значения shipping_note (связаны с shipping_settings)

    Текст (длинный)


    Доступные значения shipping_days (связаны с shipping_settings)

    Текст (максимум 10 символов)


    Доступные значения shipping_sum (связаны с shipping_settings)
    • 0 — Не учитывать количество товара
    • 1 — Учитывать количество товара
    • 2 — Не добавлять доставку к сумме заказа

    Доступные значения attributes

    Массив с характеристиками - отображаются в карточке товара, учитываются при сравнении товара и в поисковом фильтре

    • id — ID характеристики (если есть)
    • name — Название характеристики (поиск происходил тибо по name либо по value_parent_id / value_ints)
    • options — Массив значений характеристики
    • value_ints — Массив числовых ID значений (если есть)
    • value_parent_id — Родительский ID характеристики (если есть)

    Пример:
    [
      {
        "id": 1298,
        "name": "Product type",
        "options": ["Кросівки"]
      },
      {
        "name": "Виробник",
        "options": ["Adidas"],
        "value_ints": [10081],
        "value_parent_id": 1762
      },
      {
        "name": "Розмір",
        "options": ["43", "43,5"],
        "value_ints": [10107, 10108],
        "value_parent_id": 1763
      }
    ]

    Доступные значения name

    Системное имя (slug) для SEO-ссылки (строка, максимум 255 символов)


    Доступные значения type

    ID типа товара (число) — для фильтрации и атрибутов


    Доступные значения currency

    Код валюты (строка, например USD, UAH, EUR)


    Доступные значения tags

    Теги, через запятую (максимум 8 тегов)


    Доступные значения weight

    Вес товара (число)


    Доступные значения weight_units
    • 0 — Граммы
    • 1 — Килограммы

    Доступные значения dimensions

    Массив габаритов товара

    • length — Длина
    • width — Ширина
    • height — Высота
    • units — Единицы: 0 = сантиметры, 1 = метры

    Доступные значения sku_show
    • 0 — Не показывать код товара (SKU) публично
    • 1 — Показывать код товара (SKU)

    Доступные значения moq

    Минимальное количество товара для заказа (число)


    Доступные значения show_stock
    • 0 — Не показывать остаток на странице товара
    • 1 — Показывать остаток

    Доступные значения show_tree
    • 0 — Как в общих настройках сайта
    • 1 — Скрывать
    • 2 — Показывать

    Доступные значения update_exists
    • 0 / false — Пропустить если запись существует
    • 1 / true — Обновить существующую запись

    Доступные значения supplier

    Массив со значениями

    • id — ID поставщика
    • name — Наименование поставщика
    • lang — Язык поставщика

    Доступные значения price_cost

    Себестоимость товара (строка, максимум 20 символов)


    Доступные значения bulk_prices

    Массив оптовых цен

    • moq — Минимальное количество для оптовой цены
    • price — Оптовая цена

    Доступные значения products_synonyms

    Список ID товаров для группировки, через запятую (строка, максимум 255 символов)


    Доступные значения video

    URL видео (строка)


    Доступные значения video_duration

    Длительность видео в формате HH:MM:SS (строка)


    Доступные значения variations_type

    Тип размера для Google Merchant

    • 0 — По умолчанию из настроек категории
    • 1 — Цвет
    • 2 — Паттерн
    • 3 — Материал
    • 4 — Возрастная группа
    • 5 — Пол
    • 6 — Размер

    Доступные значения variations_title

    Заголовок над селектором вариаций (строка)


    Доступные значения variations_require
    • 0 — Выбор вариации не обязателен
    • 1 — Выбор вариации обязателен перед покупкой

    Доступные значения variations_cartexplode
    • 0 — Стандартное отображение в корзине
    • 1 — Раздельное отображение вариаций в корзине

    Доступные значения variations_only_update
    • false — Удалять старые вариации перед добавлением новых
    • true — Добавлять новые вариации без удаления старых

    Другие значения

    Другие значения вы можете узнать получив методом GET /products или в примерах ниже

Псевдонимы полей (WooCommerce-совместимость):
content = description, excerpt = short_description,
cat_id / rubric_id = category_id,
sale_price = price, original_price = regular_price,
menu_order = priority, wholesale_price = price_cost,
slug = name (если указаны оба, приоритет у slug).


📦 Пример реального ответа GET /products/{id}

Для получения актуальных полей вашего товара выполните GET /products/{id} или GET /products/sku/{sku}. Ниже — пример ответа для товара Salomon Quest 4D 3 GTX (ID: 483472):

{
    "id": 483472,
    "sku": "Q4D3-BLK_ru",
    "title": "Salomon Quest 4D 3 GTX",
    "permalink": "https://yourdomain.com/ru/pers_shop/demo_ru/salomonquest4d3gtx.htm",
    "access": true,
    "language": "ru",
    "multilangid": 483641,
    "price": 220.00,
    "regular_price": 280,
    "currency": "USD",
    "stock_status_value": "В наличии",
    "stock_status": 0,
    "stock_quantity": 0,
    "featured": false,
    "new": 1,
    "reducedprice": false,
    "discount": null,
    "moq": 0,
    "promotion": 0,
    "promotion_text": null,
    "promotion_expires": null,
    "bought_with": null,
    "products_synonyms": null,
    "categories": [
        { "id": 28143, "name": "demo_ru", "title": "Демонстрационная категория" }
    ],
    "producer": {
        "id": 4806,
        "name": "salomon_ru",
        "title": "Salomon",
        "lang": "ru"
    },
    "images": [
        { "src": "https://yourdomain.com/upload/shop_catalog/s15992/483472/483472_0.jpg", "name": "483472_0.jpg" },
        { "src": "https://yourdomain.com/upload/shop_catalog/s15992/483472/483472_1.webp", "name": "483472_1.webp" }
    ],
    "type": 0,
    "attributes": [
        { "id": 0, "name": "Product type", "options": [""] }
    ],
    "variations_exists": 8,
    "variations": [
        { "id": 749582, "sku": "Q4D3-BLK_36", "title": "36", "stock_status": 0, "stock_status_value": "В наличии" },
        { "id": 749590, "sku": "Q4D3-BLK_37", "title": "37", "stock_status": 4, "stock_status_value": "Наличие уточняйте" },
        { "id": 749602, "sku": "Q4D3-BLK_38", "title": "38", "stock_status": 0, "stock_status_value": "В наличии" }
    ],
    "weight": 0,
    "weight_units": 0,
    "dimensions": {
        "length": 0, "width": 0, "height": 0, "units": 0
    },
    "short_description": null,
    "description": "Флагманская модель для многодневного трекинга...",
    "description_tab_1": "Salomon Quest 4D 3 GTX: Непревзойденная Поддержка и Защита...",
    "meta_title": null,
    "meta_description": null,
    "meta_keywords": null,
    "video": null,
    "priority": 0,
    "rating": 0,
    "comments": 0,
    "views": 569,
    "orders": 0,
    "shipping_price": 0,
    "add_date": "2025-10-25T00:16:09+00:00",
    "last_edit": "2026-04-10T18:30:57+00:00"
}

💡 Полный пример вы можете получить, выполнив GET запрос к API товаров вашего магазина.


Добавление товаров

Этот метод позволяет добавить один или несколько товаров одним запросом (до 3000 за один запрос). Формат запроса полностью совпадает с методом обновления: можно передавать массив products или одиночный товар.

  • Поиск по ID: при добавлении нового товара поле id должно быть пустым или отсутствовать. Если id указан и товар с таким ID уже существует, то система обновит этот товар вместо создания нового.
  • Поиск по коду (SKU): перед добавлением система проверяет, есть ли товар с таким SKU. Если такой товар найден, он будет обновлён, а не создан заново.

Вы можете добавить новые товары и обновить существующие одним запросом.

7. Каталог статей (блог)

МетодURLОписание
POST /blog/articles Массовое добавление и обновление статей
GET /blog/articles Получить список статей. Поддерживает пагинацию (?page=N&per_page=N), сортировку (?orderby=id|name|position|datestamp&order=asc|desc) и фильтрацию (?category_id=N или ?category_id=1,2,3, ?category=name, ?status=0|1, ?date_after=YYYY-MM-DD, ?date_before=YYYY-MM-DD, ?lang=ru|ua|en|pl)
GET /blog/articles/{id} Просмотр отдельной статьи по ID
UPDATE /blog/articles/{id} Обновить статью по ID (PATCH/PUT/UPDATE)
UPDATE /blog/articles Массовое обновление нескольких статей (PATCH/PUT/UPDATE)
GET /blog/articles/slug/{slug} Получить статью по системному имени (slug)
UPDATE /blog/articles/slug/{slug} Обновить статью по системному имени (slug) (PATCH/PUT/UPDATE)
DELETE /blog/articles/slug/{slug} Удалить статью по системному имени (slug)
DELETE /blog/articles/{id} Удалить статью по ID

Поля статьи

ПараметрТипОписание
title string Заголовок статьи (отображается внутри страницы, H1)
meta_title string Мета-заголовок (title)
meta_description string Мета-описание
meta_keywords string Ключевые слова
description text Полный текст статьи
short_description text Краткое описание (анонс) статьи
name string ЧПУ ссылка (URL slug). Латиница и дефисы (например: moya-statya)
slug string ЧПУ ссылка (URL slug). Аналог name. Латиница и дефисы
language string Язык статьи (ru, en, ua, pl и др.)
category_id int ID рубрики (категории блога) из blog_catalog_value. Обязательно для новой статьи
status int Доступ: 1 — опубликовано (доступно), 0 — скрыто (недоступно)
priority int Приоритет (позиция сортировки, 0–29)
datestamp int (unix) Дата публикации (Unix timestamp) или строка в формате ISO 8601
schema int Тип Schema.org разметки (0–9).
0 — WebPage (по умолчанию)
1 — Article
6 — BlogPosting
7 — NewsArticle
2 — AboutPage
3 — ContactPage
4 — CollectionPage
5 — ProfilePage
9 — FAQPage
8 — Без разметки
planned int Отложенная публикация: 0/1
settings_comments string Настройки комментариев
settings_rating int Настройки рейтинга: 0/1
update_exists bool Если true, обновляет статью при повторном добавлении (по умолчанию false)
delete bool Если true, статья будет удалена (soft delete)
tags string Метки статьи через запятую (до 8 шт.). Сохраняются в отдельную таблицу тегов
multilangid string ID статьи на других языках. Объединяет переводы одной статьи для связи на разных языках сайта
slug_search string Поиск статьи по системному имени (slug) для обновления. Альтернатива ID. Не сохраняется в БД

Фильтрация списка статей (GET)

При получении списка статей (GET /blog/articles) доступны параметры фильтрации:

ПараметрТипОписание
category_idint/stringID рубрики (категории). Можно указать одно число или несколько через запятую: ?category_id=1,2,3
categorystringИмя рубрики (slug). Только статьи этой рубрики. Альтернатива category_id
statusintФильтр по доступу: 1 — опубликовано (доступно), 0 — скрыто (недоступно)
date_afterstringНачальная дата публикации (ISO 8601). Пример: ?date_after=2026-07-01
date_beforestringКонечная дата публикации (ISO 8601). Пример: ?date_before=2026-07-31
langstringЯзык статьи: ru, ua, en, pl и др.

Также доступны стандартные параметры сортировки: orderby (id, name, position, datestamp) и order (asc, desc).

Псевдонимы полей (WooCommerce-совместимость):
content = description, excerpt = short_description,
cat_id / rubric_id / category = category_id,
date / date_created / date_created_gmt = datestamp,
slug = name (если указаны оба, приоритет у slug).

Массовое добавление и обновление

POST/PUT/PATCH на /blog/articles принимает как один объект статьи, так и массив объектов в поле articles:

{
  "articles": [
    {
      "title": "Моя статья",
      "slug": "moya-statya",
      "language": "ru",
      "category_id": 5,
      "description": "<p>Текст статьи</p>",
      "short_description": "Анонс",
      "meta_title": "Моя статья | Сайт",
      "tags": "кроссовки, найк, адидас, спортивная обувь",
      "status": 1,
      "priority": 5,
      "schema": 6
    },
    {
      "title": "Another article",
      "slug": "another-article",
      "language": "en",
      "category_id": 10,
      "description": "<p>Article text</p>",
      "status": 1
    }
  ]
}

Обновление и удаление:
update_exists (bool) – если true, обновляет статью при повторном добавлении (по умолчанию false).
delete (bool) – если true, статья будет удалена (soft delete: скрыта из списков).
slug_search (string) – поиск статьи по системному имени (slug/name) для обновления через PUT/PATCH/POST. Если id не указан, статья ищется по slug_search. При указании обоих сначала выполняется поиск по ID, при неудаче — по slug_search. Учитывает язык статьи (параметр language или язык категории).
При удалении автоматически пересчитывается счётчик статей в родительской категории.

📥 Импорт/экспорт статей через API: Доступен удобный веб-интерфейс для массового импорта и экспорта статей блога через Commerce API. Скачать с GitHub →

8. Страницы сайта

МетодURLОписание
POST /pages Массовое добавление и обновление страниц
GET /pages Получить список страниц. Поддерживает пагинацию (?page=N&per_page=N), сортировку (?orderby=id|name|position|datestamp&order=asc|desc) и фильтрацию (?status=0|1, ?date_after=YYYY-MM-DD, ?date_before=YYYY-MM-DD, ?lang=ru|ua|en|pl)
GET /pages/{id} Просмотр отдельной страницы по ID
GET /pages/slug/{slug} Получить страницу по системному имени (slug)
UPDATE /pages/{id} Обновить страницу по ID (PATCH/PUT/UPDATE)
UPDATE /pages Массовое обновление нескольких страниц (PATCH/PUT/UPDATE)
DELETE /pages/{id} Удалить страницу по ID

Поля страницы

ПараметрТипОписание
title string Заголовок страницы (отображается на странице, H1)
meta_title string Мета-заголовок (title)
meta_description string Мета-описание
meta_keywords string Ключевые слова
meta_html text Произвольный HTML-код для вставки в <head>
description text Полный текст страницы (HTML)
short_description text Краткое описание страницы
name string URL slug. Только латинские буквы, цифры, дефисы и точки (например, my-page)
slug string URL slug. То же что и name. Только латинские буквы, цифры, дефисы и точки
language string Язык страницы (ru, en, ua, pl и др.)
status int Доступ: 1 — опубликовано (доступно), 0 — скрыто (недоступно)
priority int Приоритет (позиция сортировки)
datestamp int (unix) Дата публикации (Unix timestamp) или строка ISO 8601
show_tree int Показывать дерево категорий: 0/1/2 (0 — как в настройках, 1 — скрыть, 2 — показать)
show int Показывать: 1/true/show/visible — показать, 0/false/hide/hidden — скрыть
schema int Тип разметки Schema.org (0–9).
0 — WebPage (по умолчанию)
1 — Article
6 — BlogPosting
7 — NewsArticle
2 — AboutPage
3 — ContactPage
4 — CollectionPage
5 — ProfilePage
9 — FAQPage
8 — Без разметки
settings_comments string Настройки комментариев
settings_rating int Настройки рейтинга: 0/1
settings_tags int Настройки тегов: 0/1
password string Пароль для доступа к странице
multilangid string ID страниц на других языках. Связывает переводы одной страницы
slug_search string Поиск страницы по системному имени (slug) для обновления. Альтернатива ID. Не сохраняется в БД
tags string Теги страницы, через запятую (до 8). Хранятся в отдельной таблице тегов

Фильтрация GET /pages

При получении списка страниц (GET /pages) поддерживаются следующие параметры фильтрации:

ПараметрТипОписание
statusintФильтр доступа: 1 — опубликовано (доступно), 0 — скрыто (недоступно)
date_afterstringНачальная дата публикации (ISO 8601). Пример: ?date_after=2026-07-01
date_beforestringКонечная дата публикации (ISO 8601). Пример: ?date_before=2026-07-31
langstringЯзык страницы: ru, ua, en, pl и др.

Также доступны стандартные параметры сортировки: orderby (id, name, position, datestamp) и order (asc, desc).

Псевдонимы полей (совместимость с WooCommerce):
content = description, excerpt = short_description,
slug = name (если указаны оба, slug имеет приоритет).

Массовое добавление/обновление (пример JSON)

{
  "pages": [
    {
      "title": "О компании",
      "slug": "about-us",
      "language": "ru",
      "description": "<p>Текст страницы о компании</p>",
      "meta_title": "О компании | Сайт",
      "status": 1,
      "priority": 10
    },
    {
      "title": "Контакты",
      "slug": "contacts",
      "language": "ru",
      "description": "<p>Контактная информация</p>",
      "status": 1
    }
  ]
}

Обновление и удаление:
update_exists (bool) – если true, обновляет страницу при повторном добавлении (по умолчанию false).
delete (bool) – если true, страница будет удалена (soft delete: скрыта из списков).
slug_search (string) – поиск страницы по системному имени (slug/name) для обновления через PUT/PATCH/POST. Если id не указан, страница ищется по slug_search. При указании обоих сначала выполняется поиск по ID, при неудаче — по slug_search. Учитывает язык страницы (параметр language).

📥 Импорт/экспорт страниц через API: Доступен массовый импорт и экспорт страниц через Commerce API. Используйте ключ Pages management, read/write в настройках магазина.

9. Блоки/Меню

МетодURLОписание
POST /blocks Массовое добавление и обновление блоков/меню
GET /blocks Получить список блоков. Поддерживает пагинацию (?page=N&per_page=N), сортировку (?orderby=id|name|title|position|menu_order&order=asc|desc) и фильтрацию (?status=0|1, ?position=header|footer|..., ?lang=ru|ua|en|pl, ?slug=name)
GET /blocks/{id} Просмотр отдельного блока по ID
GET /blocks/slug/{slug} Получить блок по системному имени (slug)
UPDATE /blocks/{id} Обновить блок по ID (PATCH/PUT/UPDATE)
UPDATE /blocks Массовое обновление нескольких блоков (PATCH/PUT/UPDATE)
DELETE /blocks/{id} Удалить блок по ID

Поля блока

ПараметрТипОписание
idintID блока
namestringСистемное имя (slug). Только латиница, цифры, дефисы (например, my-block)
titlestringЗаголовок блока
descriptiontextСодержимое блока (HTML, SHORTCODE, BBCODE)
positionstringПозиция: left, right, top, buttom, header, header_meta, header_meta_data, header_before_meta_data, footer
menu_orderintПорядок сортировки (чем больше, тем выше)
languagestringЯзык блока: ru, ua, en, pl, all
showintВидимость: 0 — скрыто, 1 — всем, 2 — только пользователям, 3 — только гостям, 4 — только админам, 5 — только админу сайта, 6 — админу и менеджеру
show_on_pageintТип страниц: 0 — всюду, 1 — простые, 2 — блог, 4 — новости, 6 — магазин, 7 — не на главной, 8 — на главной, 9 — поиск
show_on_deviceintУстройства: 0 — все, 1 — компьютеры, 2 — мобильные
accessintДоступ к блоку
querystring_showtextURL/пути для показа (построчно, без HTML)
querystring_hidetextURL/пути для скрытия (построчно, без HTML)
querystrpos_showtextФрагменты URL для показа (построчно, без HTML)
querystrpos_hidetextФрагменты URL для скрытия (построчно, без HTML)
scriptintСоздавать JS-файл из текста: 0/1
script_asyncintТип скрипта: 0 — нет, 1 — async, 2 — defer, >2 — CSS-файл
divintHTML-обёртка: 0 — нет, 1 — span, 2 — div, 3 — aside, 4 — section, 5 — nav

Фильтрация GET /blocks

При получении списка блоков (GET /blocks) поддерживаются следующие параметры:

ПараметрТипОписание
statusintФильтр по видимости: 0 — скрытые, 1 — видимые
positionstringФильтр по позиции: header, footer, left и др.
langstringЯзык блока: ru, ua, en, pl и др.
slugstringПоиск по системному имени

Также доступны стандартные параметры сортировки: orderby (id, name, title, position, menu_order) и order (asc, desc).

Псевдонимы полей (совместимость с WooCommerce):
content = description, priority = menu_order, slug = name (если указаны оба, slug имеет приоритет).

Массовое добавление/обновление (пример JSON)

{
    "blocks": [
        {
            "name": "about-sidebar",
            "title": "О компании",
            "language": "ru",
            "description": "<p>Текст блока</p>",
            "position": "left",
            "menu_order": 10,
            "show": 1
        },
        {
            "name": "footer-contacts",
            "title": "Контакты",
            "language": "ru",
            "description": "<p>Контактная информация</p>",
            "position": "footer",
            "show": 1
        }
    ]
}

Обновление и удаление:
update_exists (bool) – если true, обновляет блок при повторном добавлении (по умолчанию false).
delete (bool) – если true, блок будет удалён.
slug_search (string) – поиск блока по системному имени (slug/name) для обновления через PUT/PATCH/POST. Если id не указан, блок ищется по slug_search.

Защищённые системные имена:
google — полностью исключён из API (не импортируется и не экспортируется).
mobile_menu_widget, footer_widget, main_menu_widget — доступны только для чтения (GET).
smart_search_menu, smart_search_menu_select, slide_menu_widget, slider, slider2, slider3, slider_noscript — служебные блоки с особыми правилами обработки.

📥 Импорт/экспорт блоков через API: Доступен массовый импорт и экспорт блоков/меню через Commerce API. Используйте ключ Blocks management, read/write в настройках магазина.

Booking API — управление слотами бронирования

API для управления слотами бронирования. Endpoint: /api/commerce/booking.

Важно: Endpoint /booking работает с таблицей booking_slots — шаблонами/определениями слотов (расписание, типы повторения, цены). Реальную доступность (свободен ли слот в данный момент) возвращает внутренний /api_booking.jsonp?action=get_booking_slot_time, используемый виджетом на сайте.

Доступные методы:

  • GET /booking — получить список слотов-шаблонов (расписание)
  • GET /booking/{id} — получить шаблон слота по ID
  • GET /booking/slug/{slug} — получить шаблон слота по name (наименованию)
  • POST /booking — создать новый шаблон слота
  • PUT /booking[/{id}] — обновить шаблон слота (приоритет поиска: ID → group_id → slug_search)
  • PATCH /booking[/{id}] — частичное обновление (аналог PUT)
  • DELETE /booking/{id} — удалить шаблон слота по ID
  • DELETE /booking/slug/{slug} — удалить шаблон слота по name

Поля слота бронирования (booking_slots):

idintID слота (auto_increment)
datestring (Y-m-d)Дата слота
time_startstring (H:i:s)Время начала
time_endstring (H:i:s)Время окончания
group_idintID группы слотов
group_titlestringНазвание группы (name)
group_pricefloatЦена группы
accessintДоступ: 0 — всем, 1 — отключён, 2 — только авторизованным
typeintТип: 0 — разовый, 1 — ежедневно, 2 — еженедельно, 3 — ежемесячно
recurrence_daystringДни недели для повторения, через запятую (1=Пн..7=Вс). Пример: "1,3,5"
recurrence_monthstringМесяцы для повторения, через запятую (1..12). Пример: "3,6,9,12"
descriptionstringОписание слота (HTML)
authorstringАвтор

Полный список полей: api/api_commerce/booking/api_meta_booking_fields.php.

Фильтрация GET /booking: параметры ?date_from=, ?date_to=, ?group_id=, ?type=, ?access=, ?slug_search=.

🔗 Примеры запросов:

GET /booking?date_from=2024-06-01&date_to=2024-06-30&type=0
GET /booking?group_id=5&slug_search=yoga-morning

Приоритет поиска слота для обновления/удаления (PUT/PATCH/DELETE):

  1. id (из URL или тела запроса) — ID слота
  2. group_id (из тела запроса) — ID группы (если в группе ровно 1 слот)
  3. slug_search (из тела запроса) — поиск по наименованию (name/group_title)

Если слот не найден по slug_search — создаётся новый (upsert).

Пример создания разового слота (POST, type=0):

{
    "date": "2026-07-15",
    "time_start": "10:00:00",
    "time_end": "11:00:00",
    "group_title": "yoga-morning",
    "group_price": 25.00,
    "type": 0,
    "access": 0
}

Пример создания еженедельного слота (POST, type=2):

{
    "time_start": "09:00:00",
    "time_end": "18:00:00",
    "group_title": "work-hours",
    "group_price": 50.00,
    "type": 2,
    "recurrence_day": "1,2,3,4,5",
    "access": 0
}

Пример обновления по group_id (PUT):

{
    "group_id": 5,
    "group_price": 30.00,
    "description": "<p>Обновлённое описание</p>"
}

Пример обновления по slug_search (PUT):

{
    "slug_search": "yoga-morning",
    "group_price": 35.00
}


Это базовое описание основных методов для работы с Commerce API / WooCommerce API v3 по заказам, товарам и категориям.
Ниже расположены скрипты с примерами, которые помогут правильно использовать методы API на практике.


  • Script: Api: ORDER DETAILS

     Code: PHP
    ORDER DETAILS
      $url = "https://boostore.pro/api/commerce/orders/ORDERID"; // Set the endpoint URL (replace with your actual API endpoint)
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
      $ch = curl_init($url); // Initialize cURL session
      // Set cURL options
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Return response as string
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey, // Set Authorization header
      "Content-Type: application/json" // Optional: declare expected response type
      ]);
      // Execute request
      $response = curl_exec($ch);
      // Check for cURL error
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      // Parse and print the JSON response
      $data = json_decode($response, true);
      print_r($data); // Output server response
      }
      // Close cURL session
      curl_close($ch);
      
  • Script: Api: UPDATE ORDER

     Code: PHP
    UPDATE ORDER
      $url = "https://boostore.pro/api/commerce/orders/ORDERID"; // Order API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
      // Data to update (use API keys, not raw DB field names)
      $updateData = [
      "first_name"  => "Alex",
      "last_name"   => "Las",
      "email"       => "alex@example.com",
      "phone"       => "+380671112233",
      // Full address in plain text (if needed)
      "address"   => "Full address not tied to structured eform fields",
      // Structured address fields (eform system)
      "buyer_address_eform1" => "Region / State",         
      "buyer_address_eform2" => "City",                   
      "buyer_address_eform3" => "Street",                 
      "buyer_address_eform4" => "House number",           
      "buyer_address_eform5" => "Apartment",              
      "buyer_address_eform6"             => "01001",       // Zip/Postal code/Department
      // Order details
      "total" => "999",                        // Total price
      "status" => "processing",                // Internal status or number
      "status_for_customer" => "completed",    // Customer-facing status or number
      ];
      $ch = curl_init($url); 
      // cURL options
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data); 
      }
      curl_close($ch);
  • Script: Api: CREATE ORDER

     Code: PHP
    CREATE ORDER
      $url = "https://boostore.pro/api/commerce/orders"; // Order API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
      // Order data + products
      $orderData = [
      // Buyer info
      "first_name"  => "Name",                // Buyer's first name
      "last_name"   => "Soname",              // Buyer's last name
      "email"       => "alex@example.com",    // Buyer's email (required)
      "phone"       => "+380671112233",       // Buyer's phone number
      "address"     => "Full address of not used address eform", // General address
      "buyer_address_eform1" => "State",      // State / Region
      "buyer_address_eform2" => "City",       // City
      "buyer_address_eform3" => "Street",     // Street
      "buyer_address_eform4" => "house number", // House number
      "buyer_address_eform5" => "flat",       // Apartment / Flat
      "postcode"    => "01001",               // Postcode / ZIP
      // Total order amount (optional)
      // If you set "total", it will be used as the final order total.
      // If you skip "total", the system will calculate the total automatically
      // based on the products in "line_items".
      //"total"       => "999",
      "status"      => "processing",          // Internal status
      "status_for_customer" => "processing",  // Status shown to the customer
      "currency"   => "USD",                  // Order currency
      // Products in the order
      "line_items" => [
        [
         "product_id" => 478734,         // Product ID (required)
         "quantity"   => 0,               // Quantity (required) / default - 1
         "price"      => 100,            // Custom price (optional, overrides site price)
        ],
        [
         "product_id" => 478268,
         "quantity"   => 10,
         "variation" => "51"             // Variation name or code
        ],
        [
         "product_id" => 478266,
         "quantity"   => 1,
         "variation_id" => 735302        // Variation ID (priority over "variation")
        ]
       ]
      ];
      
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($orderData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: CREATE ORDER WITH BOOKING

     Code: PHP
    CREATE ORDER WITH BOOKING
      $url = "https://boostore.pro/api/commerce/orders"; // Order API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
      // Order data with booking
      $orderData = [
      "first_name"  => "Name",
      "last_name"   => "Soname",
      "email"       => "alex@example.com",
      "phone"       => "+380671112233",
      "status"      => "processing",
      "status_for_customer" => "processing",
      "currency"    => "USD",
      // Booking flag
      "booking"     => 1,
      // Booking details
      "booking_data" => [
        "slot_id"              => 123,          // Booking slot ID (required)
        "slot_title"           => "Conference Hall",
        "group_id"             => 0,
        "start_time"           => 1710000000,   // Unix timestamp
        "end_time"             => 1710003600,   // Unix timestamp
        "duration"             => 3600,         // Duration in seconds
        "factor"               => 1.0,          // Coefficient
        "base_price"           => "100$",
        "price"                => "100$",
        "payment_required"     => true,
        "status"               => 0,           // Booking status: 0=new, 1=processing, 2=cancelled, 3=completed, 4-8=extra
        "after_payment_status" => 3,           // Status set after payment (0-8, same range)
        "userid"               => 0,
        "author"               => 0,
        "dates_start_year"     => "2026",
        "dates_start_date"     => "2026-07-07",
        "dates_start_time"     => "10:00:00",
        "dates_end_year"       => "2026",
        "dates_end_date"       => "2026-07-07",
        "dates_end_time"       => "11:00:00"
      ],
      // Products (optional for booking orders)
      "line_items" => [
        [
         "product_id" => 478734,
         "quantity"   => 1,
        ]
       ]
      ];
      
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($orderData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: UPDATE ORDER BOOKING

     Code: PHP
    UPDATE ORDER BOOKING
      $orderId = 12345; // Existing order ID
      $url = "https://boostore.pro/api/commerce/orders/" . $orderId; // Order API endpoint with ID
      $authKey = "your_authorization_token_here"; // Authorization token
    
      $updateData = [
      "booking"     => 1,                   // Set booking flag (0 to remove)
      "booking_data" => [
        "slot_id"              => 456,      // New slot ID (if changed)
        "slot_title"           => "VIP Room",
        "group_id"             => 1,
        "start_time"           => 1710086400,
        "end_time"             => 1710090000,
        "duration"             => 3600,
        "factor"               => 1.5,
        "base_price"           => "150$",
        "price"                => "225$",
        "payment_required"     => true,
        "status"               => 1,        // Booking status: 0=new, 1=processing, 2=cancelled, 3=completed, 4-8=extra
        "after_payment_status" => 3,        // Status set after payment (0-8)
        "userid"               => 42,
        "author"               => 1
      ]
      ];
    
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: UPDATE PRODUCT

     Code: PHP
    UPDATE PRODUCT
     $url = "https://boostore.pro/api/commerce/products/PRODUCT_ID"; // Product API update endpoint
      $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Product data
    $productData = [
      "id" => 479077, // Product ID is ignored here because it's specified in the URL
      "name" => "Basketballshoes_Demo", // SEO URL link
      "title" => "Basketball shoes Converse All Star BB Prototype CX", // Product title (required for new)
      "type" => 1298, // Product type for filtering and attributes
      "access" => true, // Product availability (true = active)
      "description" => "<p>Sneakers Converse All Star BB Prototype CX — Basketball shoes...</p>", // Full product description (HTML allowed)
      "short_description" => "", // Short description of product 
      "sku" => "AO2515C", // Product SKU code
      "sku_show" => 0, // Whether to show SKU publicly (0 = no)
      "price" => "3000", // Current price
      "currency" => "UAH", // Currency code
      "regular_price" => "5760", // Old (regular) price 
      "price_for" => "0", // Unit for pricing (see documentation for accepted values  https://boostore.pro/en/docs/import-products/#faq_import_products)
      "stock_quantity" => 0, // Quantity in stock (0 - unlimited)
      "stock_status" => 0, // Stock status (0 = in stock, 1 = out of stock, others see docs)
      "weight" => 0, // Weight value
      "weight_units" => 0, // Weight units: 0 = grams, 1 = kilograms
      "dimensions" => [
        "length" => 0, // Length
        "width"  => 0, // Width
        "height" => 0, // Height
        "units"  => "0", // Dimension units: 0 = centimeters, 1 = meters
     ],
     "categories" => [
        ["id" => 30519, "name" => null], // Product category (by ID, name, or both)
      ],
      "tags" => "tag1, tag2", // Tags, comma separated, max 8 tags
     "images" => [
        "0" => "-uploadshopcat-s16572/479077/479077_1.webp", // Local image path (won`t be uploaded)
        "1" => "https://boostore.pro/upload/shop_catalog/s16572/479077/479077_2.webp", // Remote image URL (will be downloaded and attached)
      ],
     "images_replace" => false, // By default: do NOT replace images with the same index. If true, replace existing images by index.
     "images_skip_index" => false, // If true, find next free index if the given index is occupied and save image there.
     "images_replace_new_index" => false, // If true, even if replace and skip are false, save under new free index if original index is occupied.
     "variations_only_update" => false, // If true, new variations will be added without deleting old ones; otherwise all old variations are removed before adding new
     "variations" => [
      [
        "priority" => 0, // Display priority of the variation
        "id" => 736413, // Variation ID for updating existing variation; if not provided, search by SKU or title
        "sku" => "SKU1234", // Variation SKU (recommended)
        "title" => "42", // Variation name (required)
        "status" => "true", // access ( true / false / forbidden)
        "description" => "",
        "stock_status" => 0, // Stock status, same logic as main product
        "show_stock" => 0, // Whether to show stock count
        "instock" => 10, // Quantity in stock for this variation
        "image_num" => 0, // Image index linked to this variation
        "price" => "+100", // Price adjustment: absolute, or relative (+/-)
        "price_old" => "120", // Old price
        "price_cost" => "80", // Cost price
        "bulk_prices" => [ // Bulk pricing rules
          [
          "moq" => 10, 
           "price" => 5000
          ], // Price if order >= 10 units
          [
          "moq" => 15, 
          "price" => 4500
          ], // Price if order >= 15 units
      ],
      "dimensions" => [ // Variation dimensions, same units as product
        "length" => 0, // Length
        "width" => 0,  // Width
        "height" => 0, // Height
        "units" => 0,  // Dimension units: 0 = centimeters, 1 = meters
      ],
      ],
      [
        "priority" => 0,
        "title" => "43",
        "description" => "",
        "stock_status" => 0,
        "show_stock" => 1,
        "instock" => 1,
        "image_num" => 2,
        "price" => "+100",
        "price_old" => "120",
        "price_cost" => "80",
        "bulk_prices" => [
      ["moq" => 10, "price" => 5000],
      ["moq" => 15, "price" => 4500],
      ],
      "dimensions" => [
        "length" => 0,
        "width" => 0,
        "height" => 0,
        "units" => 0,
      ],
    
      ],
      ],
     "products_synonyms" => "", // Comma-separated list of grouped or similar product IDs or SKUs
     "priority" => 12, // Sorting priority (higher number = higher position, max 99)
     "producer" => ["id" => 4713, "name" => null], // Producer category by ID and/or name
     "producer_show" => 0, // Show producer on product page
     "producer_country" => "", // Producer country (text)
     "collection" => ["id" => null, "name" => null], // Collection category (ID and/or name)
     "collection_show" => 0, // Show collection flag
     "supplier" => ["id" => null, "name" => null], // Supplier info
     "bulk_prices" => [ // Bulk prices for main product
        ["moq" => 10, "price" => 5000],
        ["moq" => 15, "price" => 4500],
      ],
     "price_cost" => "", // Cost price for the main product
     "settings_comments" => "e_shop_page_hoteng_com|e_shop_page_hoteng_rating_com|e_shop_page_hoteng_show_rating_com|e_shop_page_hoteng_com_captcha|e_shop_page_hoteng_vis_com|e_shop_page_hoteng_num30",
     "password" => "", // Password protection (if any)
     "show_tree" => 0, // Category tree display setting (0/1/2)
     "show_stock" => 0, // Show stock on product page
     "moq" => 0, // Minimum order quantity
     "shipping" => 0, // Shipping enabled flag
     "shipping_settings" => 0, // Shipping configuration
     "shipping_price" => 0, // Shipping cost
     "shipping_note" => "", // Notes about shipping
     "shipping_days" => 0, // Delivery time in days
     "shipping_sum" => 0, // Combine shipping for same products flag
     "show_period" => 0, // Product display period
     "bought_with" => "", // Comma-separated list of products often bought together
     "bought_with_email" => "", // Email to send bought-together product lists
     "new" => 1, // Is product new (1 = yes, 0 = no)
     "reduced_price" => 0, // Price reduced flag
     "discount" => "-20%", // Discount text (informational)
     "featured" => 1, // Featured product flag
     "promotion" => 1, // Has promotion flag
     "promotion_text" => "", // Promotion text
     "promotion_expires" => 1751113909, // Promotion end timestamp
     "promotion_expires_job" => 0, // Job to execute after promotion ends
     "variations_title" => "", // Title above variation selectors
     "variations_type" => 0, // Variation type (Google Merchant Size Type): 0=default from category settings, 1=color, 2=pattern, 3=material, 4=age_group, 5=gender, 6=size
     "variations_require" => 0, // Require variation selection before purchase
     "variations_cartexplode" => 0, // Variation display method settings
     "yml" => 0, // Export to YML/XML flag
     "noimport" => "0", // Disable import via admin panel flag
     "custom_label_4" => "", // Custom label for Google Merchant
     "description_tab_1" => "", // Description tab 1 content
     "description_tab_2" => "", // Description tab 2 content
     "description_tab_3" => "", // Description tab 3 content
     "description_tab_4" => "", // Description tab 4 content
     "description_tab_5" => "", // Description tab 5 content
     "video" => "", // Video URL
     "video_duration" => "", // Video duration in HH:MM:SS format
     "delete" => "delete", // delete product ( true or delete )
     // Product attributes for filtering and characteristics
     "attributes" => [
       [
      // "id"      => 1298,  // Attribute name You can use or NAME or ID
        "name" => "Product type", // Attribute name
        "options" => ["Sneakers"] // Attribute values (multiple allowed)
       ],
       [
        "name" => "Producer", //  Attribute name
        "options" => ["Converse"] //Attribute values (multiple allowed)
       ],
       [
        "name" => "Size", //Attribute name
        "options" => ["37,5", "40"] //Attribute values (multiple allowed)
         // "value_ints"      => [10096, 10101], //You can use or NAME or ID
         // "value_parent_id" => 1763 You can use or NAME or ID
       ],
      ]
     ];
    
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // Use UPDATE method for update operation (UPDATE / PUT / PATCH)
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($productData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
      "Authorization: Bearer " . $authKey,
      "Content-Type: application/json"
      ]);
    
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
      } else {
      $data = json_decode($response, true);
      print_r($data);
      }
    curl_close($ch);
    
  • Script: Api: UPDATE MULTIPLE PRODUCT

     Code: PHP
    UPDATE MULTIPLE PRODUCT (up to 5000 same time)
    $url = "https://boostore.pro/api/commerce/products"; // Product API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Product data
      $productsData = [
      "products" => [
       [
        "id" => 479077,
        "title" => "New Product Title 1"
        ...
       ],
       [
        "sku" => "SKU123456",
        "title" => "New Product Title 2"
        ...
       ],
       [
        "id" => 479078,
        "title" => "New Product Title 3"
        ...
       ]
      ]
     ];
     
    $ch = curl_init($url); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($productsData, JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $authKey,
    "Content-Type: application/json"
    ]);
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
    } else {
      $data = json_decode($response, true);
      print_r($data);
    }
    curl_close($ch);
  • Script: Api: UPDATE PRODUCT CATEGORIES

     Code: PHP
    UPDATE MULTIPLE CATEGORIES (up to 3000 same time)
    $url = "https://boostore.pro/api/commerce/products/categories"; // Categories API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Categories data
     $categoriesData = [
      "categories" => [
        [
          "category_id" => 30518, // Category ID
          "category_name" => "sneakers", // System category name (slug) REQUIRED
          "category_title" => "Sneakers", // Category title
          "category_parent_id" => 1, // Parent category ID
          "category_parent_name" => "ParentCategory", // Parent category Name
          "category_position" => 0, // Position in the list
          
          "category_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "category_lang" => "ru", // Category language
          
          "category_show_tree" => 0, // Show tree (0/1/2)
          "category_multilangid" => 0, // Multilanguage binding ID
    
          "category_image" => [
            "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "category_image_settings" => 7, // Image display settings
          "category_button" => "", // Custom button (without href)
          "category_access" => 0, // Access level
          "category_title_seo_append" => "", // SEO: title suffix
          "category_description_seo_append" => "", // SEO: description suffix
          "category_meta_d" => "", // Meta description
          "category_meta_k" => "", // Meta keywords
          "category_title_inpage" => "Sneakers", // Title shown inside the category page
          "category_text" => "", // Category description text
          "category_text_position" => 0, // Description position
          "category_settings_comments" => "", // Comment settings
          
          "category_settings_rating" => 0, // Enable rating (0/1)
          "category_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "category_googlegoods_catid" => 0, // Google Goods category ID
          "category_promua_catid" => 0, // Prom.ua category ID
          "category_rozetkaua_title" => "", // Rozetka.ua category title
          "category_merchant_product_category" => "", // Merchant product category
          "category_gm_product_type" => 0, // Google Merchant product type
          "category_gm_sizetype" => 0, // Google Merchant size type
          
          "category_priceappend_rozetka" => "", // Extra price settings for Rozetka
          "category_priceappend_promua" => "", // Extra price settings for Prom.ua
          "category_settings_childproductshow" => 0, // Show products from subcategories (0/1)
          "category_settings_style" => 0, // Style settings
          "category_settings_sibling" => 0, // Show sibling categories (0/1)
          "update_exists" => 1, // Update exists category (0/1)
          "delete" => 0, // For delete category (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($categoriesData, JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $authKey,
    "Content-Type: application/json"
    ]);
    
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
    } else {
      $data = json_decode($response, true);
      print_r($data);
    }
    curl_close($ch);
  • Script: Api: UPDATE PRODUCT PRODUCERS

     Code: PHP
    UPDATE MULTIPLE PRODUCERS (up to 3000 same time)
    $url = "https://boostore.pro/api/commerce/products/producers"; // Producers API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Producers data
     $producersData = [
      "producers" => [
        [
          "producer_id" => 30518, // Producer ID
          "producer_name" => "sneakers", // System producer name (slug) REQUIRED
          "producer_title" => "Sneakers", // Producer title
          "producer_parent_id" => 1, // Parent producer ID
          "producer_parent_name" => "ParentCategory", // Parent producer Name
          "producer_position" => 0, // Position in the list
          
          "producer_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "producer_lang" => "ru", // Producer language
          
          "producer_show_tree" => 0, // Show tree (0/1/2)
          "producer_multilangid" => 0, // Multilanguage binding ID
    
          "producer_image" => [
            "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "producer_image_settings" => 7, // Image display settings
          "producer_button" => "", // Custom button (without href)
          "producer_access" => 0, // Access level
    
          "producer_meta_d" => "", // Meta description
          "producer_meta_k" => "", // Meta keywords
          "producer_title_inpage" => "Sneakers", // Title shown inside the producer page
          "producer_text" => "", // Producer description text
          "producer_text_position" => 0, // Description position
          "producer_settings_comments" => "", // Comment settings
          
          "producer_settings_rating" => 0, // Enable rating (0/1)
          "producer_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "update_exists" => 1, // Update exists producer (0/1)
          "delete" => 0, // For delete producer (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($producersData, JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $authKey,
    "Content-Type: application/json"
    ]);
    
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
    } else {
      $data = json_decode($response, true);
      print_r($data);
    }
    curl_close($ch);
  • Script: Api: UPDATE PRODUCT COLLECTIONS

     Code: PHP
    UPDATE MULTIPLE COLLECTIONS (up to 3000 same time)
    $url = "https://boostore.pro/api/commerce/products/collections"; // Collections API update endpoint
    $authKey = "your_authorization_token_here"; // Authorization token (use your real key)
    // Collections data
     $collectionsData = [
      "collections" => [
        [
          "collection_id" => 30518, // Collection ID
          "collection_name" => "sneakers", // System collection name (slug) REQUIRED
          "collection_title" => "Sneakers", // Collection title
          "collection_parent_id" => 1, // Parent collection ID
          "collection_parent_name" => "ParentCategory", // Parent collection Name
          "collection_position" => 0, // Position in the list
          
          "collection_visible" => 0, // Visibility (0 = hidden, 1 = visible)
          "collection_lang" => "ru", // Collection language
          
          "collection_show_tree" => 0, // Show tree (0/1/2)
          "collection_multilangid" => 0, // Multilanguage binding ID
    
          "collection_image" => [
            "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL
          ],
          "images_replace" => 1, // Image replace if exists
          "collection_image_settings" => 7, // Image display settings
          "collection_button" => "", // Custom button (without href)
          "collection_access" => 0, // Access level
    
          "collection_meta_d" => "", // Meta description
          "collection_meta_k" => "", // Meta keywords
          "collection_title_inpage" => "Sneakers", // Title shown inside the collection page
          "collection_text" => "", // Collection description text
          "collection_text_position" => 0, // Description position
          "collection_settings_comments" => "", // Comment settings
          
          "collection_settings_rating" => 0, // Enable rating (0/1)
          "collection_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update
         
          "update_exists" => 1, // Update exists collection (0/1)
          "delete" => 0, // For delete collection (0/1)
        ]
      ]
    ];
    
    $ch = curl_init($url);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH
    curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($collectionsData, JSON_UNESCAPED_UNICODE));
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer " . $authKey,
    "Content-Type: application/json"
    ]);
    
    $response = curl_exec($ch);
    if (curl_errno($ch)) {
      echo "Request error: " . curl_error($ch);
    } else {
      $data = json_decode($response, true);
      print_r($data);
    }
    curl_close($ch);
  • Script: Api: GET PRODUCTS list

     Code: PHP
    GET PRODUCTS (list with pagination and search)
      $url = "https://boostore.pro/api/commerce/products"; // Products API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
      // Optional query parameters for pagination, search, and filtering
      $params = [
        "page"     => 1,         // Page number (default: 1)
        "per_page" => 100,       // Items per page (default: 100, max: 1000)
        "search"   => "",        // Search term (searches title and SKU)
        "order"    => "desc",    // Sort direction: "asc" or "desc"
        "orderby"  => "id",      // Sort field: "id", "title", or "price"
        "status"   => "",        // Filter by status: "publish" or "hidden"
      ];
      $url .= "?" . http_build_query($params);
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data); // Output: { "code": "success", "page": 1, "per_page": 100, "total": "...", "products": [...] }
      }
      curl_close($ch);
      
  • Script: Api: GET PRODUCT by ID / SKU

     Code: PHP
    GET PRODUCT BY ID / SKU
      // By ID:
      $productId = 479077;
      $url = "https://boostore.pro/api/commerce/products/" . $productId;
      // OR by SKU:
      // $sku = "AO2515C";
      // $url = "https://boostore.pro/api/commerce/products/sku/" . $sku;
      $authKey = "your_authorization_token_here"; // Authorization token
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data); // Output: { "id": ..., "sku": "...", "title": "...", "price": "...", ... }
      }
      curl_close($ch);
      
  • Script: Api: GET ORDERS list

     Code: PHP
    GET ORDERS (list with pagination and filters)
      $url = "https://boostore.pro/api/commerce/orders"; // Orders API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
      // Query parameters for filtering
      $params = [
        "page"     => 1,
        "sort_by_type" => "date",      // Sort type: "date" or other fields
        "sort_by"      => "DESC",      // Sort direction
        "date"         => "",          // Predefined period: 1=today, 2=yesterday, 3=week, 4=month, 5=quarter, 6=year
        "show_hidden_orders" => 0,     // Include deleted orders (0=no, 1=yes)
      ];
      $url .= "?" . http_build_query($params);
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: DELETE PRODUCT

     Code: PHP
    DELETE PRODUCT (soft delete)
      $productId = 479077;
      $url = "https://boostore.pro/api/commerce/products/" . $productId; // Product API endpoint with ID
      $authKey = "your_authorization_token_here"; // Authorization token
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data); // Output: { "status": "success", "message": "Producy marked as deleted" }
      }
      curl_close($ch);
      
  • Script: Api: DELETE ORDER

     Code: PHP
    DELETE ORDER (soft delete)
      $orderId = 12345;
      $url = "https://boostore.pro/api/commerce/orders/" . $orderId; // Order API endpoint with ID
      $authKey = "your_authorization_token_here"; // Authorization token
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data); // Output: { "status": "success", "message": "Order marked as deleted" }
      }
      curl_close($ch);
      
  • Script: Api: GET / POST categories, producers, collections

     Code: PHP
    GET / POST categories, producers, collections
      // ----- GET list (by resource type) -----
      // Categories: /api/commerce/products/categories
      // Producers:  /api/commerce/products/producers
      // Collections:/api/commerce/products/collections
      $resource = "categories"; // "categories", "producers", or "collections"
      $url = "https://boostore.pro/api/commerce/products/" . $resource;
      $authKey = "your_authorization_token_here";
      // Optional: get by ID - append /{id} or by name: /name/{name}
      // $url .= "/123"; // by ID
      // $url .= "/name/my-category"; // by name
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
      // ----- POST create (single or batch up to 3000) -----
      // Change $resource to "categories" / "producers" / "collections"
      $url = "https://boostore.pro/api/commerce/products/categories";
      $authKey = "your_authorization_token_here";
      $data = [
        "category_name" => "new-category",   // _name = system slug, REQUIRED (for producers: producer_name, for collections: collection_name)
        "category_title" => "New Category",  // _title = display title
        "category_parent_id" => 1,           // Parent ID (0 = root)
        "category_visible" => 1,             // 1 = visible, 0 = hidden
        "category_lang" => "en",             // Language code
        "category_image" => [                // Image URL or local path
          "0" => "https://example.com/image.jpg"
        ],
        "category_meta_d" => "",             // Meta description
        "category_meta_k" => "",             // Meta keywords
      ];
      // For batch: wrap in array: [ "categories" => [ $cat1, $cat2, ... ] ]
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: BLOG ARTICLES (GET / POST / UPDATE / DELETE)

     Code: PHP
    GET BLOG ARTICLES (list / by ID)
      // ----- Get list of articles -----
      $url = "https://boostore.pro/api/commerce/blog/articles";
      // ----- By ID: $url .= "/123"; -----
      $authKey = "your_authorization_token_here";
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
    
      // ----- POST create article -----
      $url = "https://boostore.pro/api/commerce/blog/articles";
      $data = [
        "title"         => "My Article",
        "slug"          => "my-article",
        "language"      => "en",
        "category_id"   => 5,
        "description"   => "<p>Full article text</p>",
        "short_description" => "Article preview",
        "meta_title"    => "My Article | Site",
        "tags"          => "sneakers, nike, adidas, sport shoes",
        "status"        => 1,
        "priority"      => 5,
        "schema"        => 6
      ];
      // For batch: wrap in array: [ "articles" => [ $article1, $article2, ... ] ]
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
    
      // ----- UPDATE article by ID (PATCH / PUT / UPDATE) -----
      $articleId = 123;
      $url = "https://boostore.pro/api/commerce/blog/articles/" . $articleId;
      $updateData = [
        "title"      => "Updated Title",
        "status"     => 1,
        "priority"   => 10,
      ];
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH"); // also works with PUT / UPDATE
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
    
      // ----- UPDATE article by slug_search (without ID) -----
      // PUT/PATCH on /blog/articles without ID uses slug_search to find the article
      $url = "https://boostore.pro/api/commerce/blog/articles";
      $updateData = [
        "slug_search"  => "my-article",
        "title"        => "Updated Title via slug_search",
        "tags"         => "sneakers, shoes, sport",
        "status"       => 1,
        "language"     => "en",
      ];
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PATCH"); // also works with PUT / UPDATE
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
    
      // ----- DELETE article by ID -----
      $articleId = 123;
      $url = "https://boostore.pro/api/commerce/blog/articles/" . $articleId;
      // OR send { "delete": true } in UPDATE body instead
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: GET BOOKING SLOTS

     Code: PHP
    GET BOOKING SLOTS
      $url = "https://boostore.pro/api/commerce/booking"; // Booking API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
      // Optional filters
      $params = [
        "date_from" => "2026-07-01",
        "date_to"   => "2026-07-31",
        "group_id"  => "",
        "type"      => "",
        "access"    => "",
      ];
      $url .= "?" . http_build_query($params);
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: CREATE BOOKING SLOT

     Code: PHP
    CREATE BOOKING SLOT
      $url = "https://boostore.pro/api/commerce/booking"; // Booking API endpoint
      $authKey = "your_authorization_token_here"; // Authorization token
      $slotData = [
        "date"        => "2026-07-15",
        "time_start"  => "10:00:00",
        "time_end"    => "11:00:00",
        "group_title" => "yoga-morning",
        "group_price" => 25.00,
        "type"        => 0,
        "access"      => 0,
        "description" => "<p>Morning yoga session</p>"
      ];
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($slotData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: UPDATE BOOKING SLOT (by ID / group_id / slug_search)

     Code: PHP
    UPDATE BOOKING SLOT
      // Priority: ID → group_id → slug_search
      // By ID (highest priority):
      $slotId = 123;
      $url = "https://boostore.pro/api/commerce/booking/" . $slotId;
      // OR by group_id (second priority, exactly 1 slot in group):
      // $url = "https://boostore.pro/api/commerce/booking";
      // $updateData["group_id"] = 5;
      // OR by slug_search (third priority, upsert if not found):
      // $url = "https://boostore.pro/api/commerce/booking";
      // $updateData["slug_search"] = "yoga-morning";
      $authKey = "your_authorization_token_here"; // Authorization token
      $updateData = [
        "group_price" => 35.00,
        "access"      => 1,
        "description" => "<p>Updated session description</p>"
      ];
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($updateData, JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: DELETE BOOKING SLOT (by ID / group_id / slug_search)

     Code: PHP
    DELETE BOOKING SLOT
      // Priority: ID → group_id → slug_search
      // By ID (highest priority):
      $slotId = 123;
      $url = "https://boostore.pro/api/commerce/booking/" . $slotId;
      // OR by name:
      // $slug = "yoga-morning";
      // $url = "https://boostore.pro/api/commerce/booking/slug/" . $slug;
      // OR send body: { "group_id": 5 } or { "slug_search": "yoga-morning" }
      // $url = "https://boostore.pro/api/commerce/booking";
      $authKey = "your_authorization_token_here"; // Authorization token
      $ch = curl_init($url);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Request error: " . curl_error($ch);
      } else {
        $data = json_decode($response, true);
        print_r($data);
      }
      curl_close($ch);
      
  • Script: Api: PAGES (GET / POST / UPDATE / DELETE)

     Code: PHP
    PAGES
      $baseUrl = "https://boostore.pro/api/commerce/pages";
      $authKey = "your_authorization_token_here"; // Authorization token
    
      // ============== GET list of pages ==============
      $ch = curl_init($baseUrl . "?page=1&per_page=10");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $authKey]);
      $response = curl_exec($ch);
      $pages = json_decode($response, true);
      curl_close($ch);
    
      // ============== CREATE a new page ==============
      $newPage = [
        "title"         => "About Us",
        "title_inpage"  => "About Our Company",
        "description"   => "<h2>About Us</h2><p>Full page content here</p>",
        "short_description" => "Short description for listing",
        "name"          => "about-us",
        "language"      => "en",
        "status"        => 1,
        "priority"      => 5,
        "schema"        => 0,
      ];
    
      $ch = curl_init($baseUrl);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["pages" => [$newPage]], JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Create error: " . curl_error($ch);
      } else {
        $result = json_decode($response, true);
        print_r($result);
      }
      curl_close($ch);
    
      // ============== UPDATE page (by ID) ==============
      $pageId = $result["id"] ?? 0; // Use ID from create response
      if ($pageId) {
        $updateData = [
          "title"         => "About Us — Updated",
          "title_inpage"  => "About Our Company (updated)",
          "priority"      => 10,
        ];
    
        $ch = curl_init($baseUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE");
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["pages" => [array_merge(["id" => $pageId], $updateData)]], JSON_UNESCAPED_UNICODE));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
          "Authorization: Bearer " . $authKey,
          "Content-Type: application/json"
        ]);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
          echo "Update error: " . curl_error($ch);
        } else {
          $result = json_decode($response, true);
          print_r($result);
        }
        curl_close($ch);
      }
    
      // ============== DELETE page (by ID) ==============
      if ($pageId) {
        $ch = curl_init($baseUrl . "/" . $pageId);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE");
        curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $authKey]);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
          echo "Delete error: " . curl_error($ch);
        } else {
          $result = json_decode($response, true);
          print_r($result);
        }
        curl_close($ch);
      }
      
  • Script: Api: BLOCKS / MENU (GET / POST / UPDATE / DELETE)

     Code: PHP
    BLOCKS / MENU
      $baseUrl = "https://boostore.pro/api/commerce/blocks";
      $authKey = "your_authorization_token_here"; // Authorization token
    
      // ============== GET list of blocks ==============
      $ch = curl_init($baseUrl . "?page=1&per_page=50");
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $authKey]);
      $response = curl_exec($ch);
      $data = json_decode($response, true);
      curl_close($ch);
      print_r($data["blocks"] ?? []);
    
      // ============== CREATE a new block ==============
      $newBlock = [
        "title"         => "Promo Banner",
        "description"   => "<div class=\"promo\">Special offer!</div>",
        "name"          => "promo-banner",
        "language"      => "en",
        "position"      => "top",
        "menu_order"    => 1,
        "show"          => 1,
        "show_on_page"  => 0,
        "show_on_device"=> 0,
        "script"        => 0,
        "script_async"  => 0,
        "div"           => 0,
      ];
    
      $ch = curl_init($baseUrl);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_POST, true);
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["blocks" => [$newBlock]], JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Create error: " . curl_error($ch);
      } else {
        $result = json_decode($response, true);
        print_r($result);
      }
      curl_close($ch);
    
      // ============== UPDATE block (by slug_search) ==============
      $updateData = [
        "title"         => "Promo Banner — Updated",
        "show"          => 1,
        "menu_order"    => 2,
        "update_exists" => true,
      ];
      $ch = curl_init($baseUrl);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
      curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["blocks" => [array_merge(["slug_search" => "promo-banner", "language" => "en"], $updateData)]], JSON_UNESCAPED_UNICODE));
      curl_setopt($ch, CURLOPT_HTTPHEADER, [
        "Authorization: Bearer " . $authKey,
        "Content-Type: application/json"
      ]);
      $response = curl_exec($ch);
      if (curl_errno($ch)) {
        echo "Update error: " . curl_error($ch);
      } else {
        $result = json_decode($response, true);
        print_r($result);
      }
      curl_close($ch);
    
      // ============== DELETE block (by ID) ==============
      $blockId = $result["id"] ?? 0;
      if ($blockId) {
        $ch = curl_init($baseUrl);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["blocks" => [["id" => $blockId, "delete" => true]]], JSON_UNESCAPED_UNICODE));
        curl_setopt($ch, CURLOPT_HTTPHEADER, [
          "Authorization: Bearer " . $authKey,
          "Content-Type: application/json"
        ]);
        $response = curl_exec($ch);
        if (curl_errno($ch)) {
          echo "Delete error: " . curl_error($ch);
        } else {
          $result = json_decode($response, true);
          print_r($result);
        }
        curl_close($ch);
      }
      
Назад