Integracja z 1C, ERP, CRM-systemami i CommerceAPI

Temu

Integracja z 1C, ERP, CRM-systemami i CommerceAPI

Automatyczny eksport przy zamówieniu / Wysyłka danych POST o zamówieniu w formacie JSON

Automatyczny eksport przy zamówieniu możesz włączyć w ustawieniach strony, w zakładce «Sklep», określając ścieżkę do wysyłki danych.
Na podany adres będzie wysyłane żądanie POST, ze wszystkimi danymi o zamówieniu, w tym danymi kontaktowymi zamawiającego i listą produktów. Dane kontaktowe i informacje o zamówieniu będą przekazywane w formacie JSON, żądaniem POST.
Na przykład, w 1c możesz zaimplementować przyjmowanie zamówień przez «HTTP serwis»->«SiteExchange» -> «POSTData»

Po złożeniu zamówienia, na podany powyżej adres zostanie wysłane żądanie POST, z następującymi danymi:
 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"
      }
    ]
  }
}


Jeśli po wysłaniu żądania, Twój serwis zwróci dane JSON, z zawartością «Number» lub «crm_order_id», to do zamówienia zostanie dodany zewnętrzny numer zamówienia.

Automatyczny eksport statystyk sprzedaży / Wysyłka danych POST o zamówieniu w formacie JSON

Automatyczny eksport statystyk sprzedaży możesz włączyć w ustawieniach strony, w zakładce «Sklep», określając ścieżkę do wysyłki danych.
Na podany adres będzie wysyłane żądanie POST, ze wszystkimi danymi o zamówieniu, które zmieniają się w Statystyce sprzedaży. Informacje będą przekazywane żądaniem POST w formacie JSON.
Na przykład, w 1c możesz zaimplementować przyjmowanie zamówień przez «HTTP serwis»->«SiteExchange» -> «POSTData»
Ponadto możesz włączyć zewnętrzny dostęp do swojej statystyki, określając «Klucz dostępu do statystyki sprzedaży».

Po zmianie statusu zamówienia (oprócz szybkiej edycji statusów), na podany powyżej adres zostanie wysłane żądanie POST w formacie JSON, z następującymi danymi:
 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', status transakcji // 0 - Nie przetworzony, 1 - Zamówienie w trakcie, 3 - Przetworzony, 2 - Anulowany, 5 - Anulowany (Brak na stanie), 6 - Anulowany (Odmowa), delete - Usuń zamówienie

'status_pay' - '0', Status zamówienia // 0-Nie określono, 1 - Opłacony online, nie sprawdzony, 4 - Opłacony online i sprawdzony, 2 - Opłacony, 3 - Przedpłata, 5 - Oczekuje na płatność

'status_for_customer' - '1', Status dla kupującego // 0 - Nie przetworzony, 1 - W trakcie przetwarzania, 3 - Wysłany / Przetworzony, 2 - Anulowany

'admin_note' - 'Uwaga dla administratora'

'delivery_status' - '0', 0 - Nie określono, 1 - Dostarczone, 2 - Nie dostarczone, 3 - Oczekuje na wysyłkę, 4 - Przekazane kurierowi, 5 - W drodze, 6 - Wysłane na pocztę, 7 - Wysłane na adres odbiorcy, 8 - Dostarczone na pocztę, 9 - Dostarczone na adres odbiorcy

'crm_order_id' - 'XXX', Zewnętrzny kod zamówienia (do użycia w zewnętrznych CRM)

Więcej szczegółów na temat pól możesz znaleźć w statystykach sprzedaży, podczas edycji zamówienia.


Przy zmianie produktów w zamówieniu, wysyłane jest żądanie JSON z wykazem item, a także numer zamówienia:
 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": ""
      }
    ]
  }
}

Dostęp do statystyk sprzedaży / JSON


Określ klucz dostępu do statystyk sprzedaży w ustawieniach, w zakładce «Sklep». Jeśli potrzebujesz uzyskać dostęp do statystyk sprzedaży zewnętrzną aplikacją, możesz wykonać (POST/GET lub AJAX) żądanie pod adresem «/ajax.php?statistic_sell»

Przy tym należy podać klucz w żądaniu, z szyfrowaniem MD5. Na przykład, jeśli masz określony klucz «123», to w żądaniu będzie to «202cb962ac59075b964b07152d234b70».

W takim przypadku żądanie będzie wyglądać następująco: «/ajax.php?statistic_sell&key=202cb962ac59075b964b07152d234b70»
W żądaniu można określić dane do sortowania lub wyszukiwania (parametry GET/POST), które można pobrać na stronie statystyk sprzedaży w centrum administracyjnym (/page.php?p=statistic_sell&mystat). Sortowanie i wybór parametrów odbywa się przez żądanie GET/POST, na przykład «&sort_dateperiod=1week» oznacza, że będą wyświetlane statystyki sprzedaży za tydzień.

Dane wyświetlane są w formacie JSON.

Zwróć uwagę, że jeśli używasz otwartych dla odwiedzających żądań strony, to za pomocą Twojego klucza mogą uzyskać dostęp do Twoich statystyk sprzedaży.

Dostęp do cennika sklepu / Pełny wywóz cennika w CSV


Określ klucz dostępu do cennika sklepu w ustawieniach, w zakładce «Sklep». Pełny wywóz cennika znajduje się pod adresem «/csv_export_products.csv»

Przy tym należy podać klucz w żądaniu, z szyfrowaniem MD5. Na przykład, jeśli masz określony klucz «123», to w żądaniu będzie to «202cb962ac59075b964b07152d234b70».

W takim przypadku żądanie będzie wyglądać następująco: «/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70»
W żądaniu można określić dane do sortowania i wyboru pól, które można pobrać na stronie eksportu w centrum administracyjnym (/page.php?p=submit_catalog_page&subpage&export_from_shop). Sortowanie i wybór parametrów odbywa się przez żądanie GET/POST, na przykład «&export_product_access=export_product_access» oznacza, że będzie eksportowane pole z danymi o dostępie do produktu.

Dane wyświetlane są w formacie CSV.

Plik eksportu jest buforowany w celu zmniejszenia obciążenia i aktualizowany raz na dobę. Usunąć bufor można za pomocą przycisku «Wyczyść bufor eksportu XML/CSV».

Przykład: https://templatedemo437544.boostore.pro/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70

Dodatkowo zaimplementowano mechanizm wymiany danych przez API, podobny do WooCommerce API. API pozwala uzyskiwać i aktualizować informacje o zamówieniach i produktach, a także kategoriach. Instrukcje i ustawienia w sekcji «Sklep» - «Wymiana danych JSON Commerce API».

Commerce API (Products/Categories/Sales Statistics)

Commerce API — Krótki podręcznik metod

Klucz dostępu

Do pracy z API potrzebny jest klucz dostępu (Consumer Secret), który tworzysz w sekcji „Ustawienia”, „Sklep”, „Dostęp do statystyk sprzedaży”. Klucz generowany jest na podstawie klucza do dostępu do statystyk sprzedaży.

Metody API (HTTP)

Wszystkie zapytania kierowane są na bazowy URL twojej strony, np.: https://site.com/api/commerce/

1. Statystyki sprzedaży

MetodaURLOpis
GET/ordersPobierz statystyki zamówień
GET/orders/{id}Pobierz statystyki pojedynczego zamówienia po ID
GET/crm_orders/{id}Pobierz statystyki pojedynczego zamówienia po zewnętrznym CRM ID
DELETE/orders/{id}Usuń zamówienie po ID
DELETE/crm_orders/{id}Usuń zamówienie po zewnętrznym CRM ID
POST/ordersDodaj nowe zamówienie
UPDATE/orders/{id}Zaktualizuj zamówienie po ID (PATCH/PUT/UPDATE)
UPDATE/crm_orders/{id}Zaktualizuj zamówienie po zewnętrznym CRM ID (PATCH/PUT/UPDATE)

2. Produkty

MetodaURLOpis
POST/productsMasowe dodawanie i aktualizacja produktów
GET/productsPobierz listę produktów
GET/products/{id}Podgląd pojedynczego produktu po ID
GET/products/sku/{sku}Podgląd pojedynczego produktu po SKU (kod produktu)
UPDATE/products/{id}Zaktualizuj produkt po ID (PATCH/PUT/UPDATE)
UPDATE/products/sku/{sku}Zaktualizuj produkt po SKU (kod produktu) (PATCH/PUT/UPDATE)
UPDATE/productsMasowa aktualizacja kilku produktów (PATCH/PUT/UPDATE)
DELETE/products/{id}Usuń produkt po ID
DELETE/products/sku/{sku}Usuń produkt po SKU (kod produktu)

3. Kategorie sklepu

MetodaURLOpis
POST/products/categoriesMasowe dodawanie i aktualizacja kategorii
GET/products/categoriesPobierz listę kategorii produktów
GET/products/categories/{id}Pobierz kategorię według ID
GET/products/categories/name/{name}Pobierz kategorię według nazwy
UPDATE/products/categoriesMasowa aktualizacja kilku kategorii (PATCH/PUT/UPDATE)
UPDATE/products/categories/{id}Zaktualizuj kategorię według ID (PATCH/PUT/UPDATE)
UPDATE/products/categories/name/{name}Zaktualizuj kategorię według nazwy

Parametry kategorii nadrzędnych

ParametrTypOpis
category_parent_id int ID kategorii nadrzędnej. Używany w pierwszej kolejności, jeśli jest podany.
category_parent_name string Łacińska nazwa (alias / slug, adres otwarcia kategorii) kategorii nadrzędnej. Używany, jeśli category_parent_id nie jest podany. W przypadku zbieżności nazw można doprecyzować przez category_lang.
category_lang string Język kategorii. Stosowany do rozwiązywania kolizji takich samych category_parent_name w różnych językach.

Zasada działania:

  1. Najpierw sprawdzany jest category_parent_id.
  2. Jeśli nie jest podany – używany jest category_parent_name.
  3. W przypadku zbieżności nazw – dodawana jest weryfikacja przez category_lang.

Szczególna zasada:
Aby dodać kategorię do głównej (korzeniowej) kategorii, należy wskazać category_parent_name = "main" i obowiązkowo podać parametr category_lang – język kategorii nadrzędnej.

Aktualizacja i usuwanie:
update_exists (bool) – jeśli true, aktualizuje kategorię, jeśli już istnieje (domyślnie false).
delete (bool) – jeśli true, kategoria zostanie usunięta.

4. Producenci

MetodaURLOpis
POST/products/producersMasowe dodawanie i aktualizacja producentów
GET/products/producersPobierz listę producentów
GET/products/producers/{id}Pobierz producenta według ID
GET/products/producers/name/{name}Pobierz producenta według nazwy
UPDATE/products/producersMasowa aktualizacja kilku producentów (PATCH/PUT/UPDATE)
UPDATE/products/producers/{id}Zaktualizuj producenta według ID (PATCH/PUT/UPDATE)
UPDATE/products/producers/name/{name}Zaktualizuj producenta według nazwy
DELETE/products/producers/{id}Usuń producenta według ID (jeśli brak produktów i podproducentów)
DELETE/products/producers/name/{name}Usuń producenta według nazwy

Parametry powiązań producentów

ParametrTypOpis
producer_parent_id int ID producenta nadrzędnego (grupy). Używany w pierwszej kolejności, jeśli jest podany.
producer_parent_name string Łacińska nazwa (alias / slug, adres otwarcia producenta). Używany, jeśli producer_parent_id nie jest podany. W przypadku zbieżności nazw można doprecyzować przez producer_lang.
producer_lang string Język producenta. Stosowany do rozwiązywania kolizji takich samych producer_parent_name w różnych językach.

Zasada działania:

  1. Najpierw sprawdzany jest producer_parent_id.
  2. Jeśli nie jest podany – używany jest producer_parent_name.
  3. W przypadku zbieżności nazw – dodawana jest weryfikacja przez producer_lang.

Szczególna zasada:
Aby dodać producenta do głównej (korzeniowej) grupy producentów, należy wskazać producer_parent_name = "main" i obowiązkowo podać parametr producer_lang – język grupy nadrzędnej.

Aktualizacja i usuwanie:
update_exists (bool) – jeśli true, aktualizuje producenta, jeśli już istnieje (domyślnie false).
delete (bool) – jeśli true, producent zostanie usunięty.

5. Kolekcje

MetodaURLOpis
POST/products/collectionsMasowe dodawanie i aktualizacja kolekcji
GET/products/collectionsPobierz listę kolekcji
GET/products/collections/{id}Pobierz kolekcję według ID
GET/products/collections/name/{name}Pobierz kolekcję według nazwy
UPDATE/products/collectionsMasowa aktualizacja kilku kolekcji (PATCH/PUT/UPDATE)
UPDATE/products/collections/{id}Zaktualizuj kolekcję według ID (PATCH/PUT/UPDATE)
UPDATE/products/collections/name/{name}Zaktualizuj kolekcję według nazwy
DELETE/products/collections/{id}Usuń kolekcję według ID (jeśli brak produktów i podkolekcji)
DELETE/products/collections/name/{name}Usuń kolekcję według nazwy

Parametry powiązań kolekcji

ParametrTypOpis
collection_parent_id int ID kolekcji nadrzędnej. Używany w pierwszej kolejności, jeśli jest podany.
collection_parent_name string Łacińska nazwa (alias / slug, adres otwarcia kolekcji). Używany, jeśli collection_parent_id nie jest podany. W przypadku zbieżności nazw można doprecyzować przez collection_lang.
collection_lang string Język kolekcji. Stosowany do rozwiązywania kolizji takich samych collection_parent_name w różnych językach.

Zasada działania:

  1. Najpierw sprawdzany jest collection_parent_id.
  2. Jeśli nie jest podany – używany jest collection_parent_name.
  3. W przypadku zbieżności nazw – dodawana jest weryfikacja przez collection_lang.

Szczególna zasada:
Aby dodać kolekcję do głównej (korzeniowej) kolekcji, należy wskazać collection_parent_name = "main" i obowiązkowo podać parametr collection_lang – język kolekcji nadrzędnej.

Aktualizacja i usuwanie:
update_exists (bool) – jeśli true, aktualizuje kolekcję, jeśli już istnieje (domyślnie false).
delete (bool) – jeśli true, kolekcja zostanie usunięta.

6. Sortowanie i paginacja

Dla metod /orders, /products oraz /blog/articles dostępne są parametry stronicowania i sortowania:

Parametry paginacji

ParametrTypOpis
pageintNumer strony (domyślnie 1)
per_pageint Liczba elementów na stronę. Domyślnie: produkty — 500, pozostałe — 200. Maksymalnie: zamówienia i rezerwacje — 2000, produkty — 5000, reszta — 2000

Parametry sortowania

ParametrTypDozwolone wartościOpis
orderbystringid, title, price, date, viewsPole do sortowania
orderstringasc, descKierunek sortowania

Parametry języka

ParametrTypDozwolone wartościOpis
lstringru, ua, en, de, fr, es, it, plJęzyk wyświetlania wartości

Dodatkowo dla zamówień

Można filtrować zamówienia według daty i statusu:

  • ?after=YYYY-MM-DD — Data początkowa (w formacie ISO)
  • ?before=YYYY-MM-DD — Data końcowa
  • ?status=pending|processing|on-hold|completed|cancelled|0|1|2|3|5|6|7|8 — Status zamówienia (można podać tekstowy status WooCommerce lub kod liczbowy)
    • 0 — Nieprzetworzone (pending)
    • 1 — Zamówienie w trakcie realizacji (processing)
    • 7 — Zamówienie w trakcie realizacji, oczekuje na dostawę (on-hold)
    • 3 — Zrealizowane (completed)
    • 8 — Zrealizowane i zakończone (completed)
    • 2 — Anulowane (cancelled)
    • 5 — Anulowane: brak w magazynie (cancelled)
    • 6 — Anulowane: odmowa (cancelled)
  • ?show_deleted=1 — Pokaż ukryte zamówienia

Przykłady

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

Przykład autoryzacji

Sposób 1 — przez parametr zapytania (prosty):

?consumer_secret=TWOJ_SEKRET

⛔ Nie udostępniaj klucza publicznie!

Sposób 2 — przez nagłówek Authorization (OAuth 1.0a):

Authorization: OAuth oauth_consumer_key="TWOJ_SEKRET"


Dodaj nowe zamówienie (POST /orders)

Aby utworzyć nowe zamówienie przez API, wyślij żądanie POST na /orders z treścią JSON.
Minimalnie musisz podać:

  • email — Email klienta (wymagane!)
  • line_items — Lista produktów do dodania

Parametry zamówienia

Podczas tworzenia zamówienia możesz podać dodatkowe pola, na przykład:

{
  "first_name": "Imię",
  "last_name": "Nazwisko",
  "email": "alex@example.com",
  "phone": "+487001112233",
  "address": "Pełny adres jeśli nie używasz eform",
  "buyer_address_eform1": "Województwo",
  "buyer_address_eform2": "Miasto",
  "buyer_address_eform3": "Ulica",
  "buyer_address_eform4": "Numer domu",
  "buyer_address_eform5": "Mieszkanie",
  "postcode": "01-001",
  "total": "999",
  "status": "processing",
  "status_for_customer": "processing",
  "line_items": [ ... ]
}

Opis pola total:

  • total — końcowa kwota zamówienia (ciąg lub liczba). Jeśli podana, będzie użyta jako ostateczna cena zamówienia.
  • Jeśli total nie jest podane, kwota zamówienia zostanie automatycznie obliczona na podstawie sumy line_items.
  • Pole total nie jest wymagane i może być użyte do zamówień bez produktów.

Format line_items

Parametr line_items to tablica produktów. Każdy produkt to obiekt z następującymi polami:

"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_id — ID produktu (wymagane!).
  • quantity — Ilość sztuk (wymagane!).
  • price — (opcjonalne) Jeśli podana cena — będzie użyta ta wartość zamiast ceny wyliczonej na stronie.
  • currency — (opcjonalne) Waluta konkretnego produktu (np. USD lub PLN). Jeśli podana i różna od głównej waluty zamówienia (currency), system automatycznie przeliczy cenę.
  • variation_id — ID wariantu produktu — sposób wskazania wariantu, jeśli istnieje.
  • variation — Nazwa lub kod wariantu — używane, jeśli nie ma variation_id. Jeśli podane oba — priorytet ma variation_id.

Ważne: Jeśli główna waluta zamówienia (currency) nie jest podana — użyta zostanie domyślna waluta sklepu.

Jeśli waluta produktu różni się od głównej — cena zostanie przeliczona automatycznie.

Parametry rezerwacji

Jeśli zamówienie jest powiązane z rezerwacją, możesz określić:

  • booking — liczba całkowita (0/1). Flaga wskazująca, czy zamówienie ma rezerwację. Ustaw 1, aby oznaczyć zamówienie jako rezerwację.
  • booking_data — obiekt. Szczegóły rezerwacji (używane w POST/PUT/PATCH). Pola:
"booking_data": {
  "slot_id": 123,
  "slot_title": "Nazwa slotu",
  "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 slotu rezerwacji (wymagane).
  • slot_title — Nazwa slotu.
  • group_id — ID grupy do grupowania slotów.
  • start_time — Czas rozpoczęcia (Unix timestamp).
  • end_time — Czas zakończenia (Unix timestamp).
  • duration — Czas trwania w sekundach.
  • factor — Współczynnik mnożnika.
  • base_price — Cena bazowa (ciąg z symbolem waluty).
  • price — Cena końcowa (ciąg z symbolem waluty).
  • payment_required — Czy wymagana jest płatność (true/false).
  • status — Status rezerwacji (0-8). Wartości: 0 — nowy, 1 — w realizacji, 2 — anulowany, 3 — zakończony, 4-8 — dodatkowe statusy.
  • after_payment_status — Status ustawiany dla zamówienia po udanej płatności. Ten sam zakres co status (0-8).
  • userid — ID użytkownika-kupującego.
  • author — ID autora/menedżera, który utworzył rezerwację.
  • dates_start_* / dates_end_* — Daty i godziny w formacie czytelnym (opcjonalnie).

🛡️ Ochrona przed duplikatami: Podczas tworzenia lub aktualizacji zamówienia z booking_data system automatycznie sprawdza, czy podany przedział czasowy jest już zajęty przez inne nieanulowane zamówienie (statusy 2, 5, 6 są uznawane za anulowane — slot jest wolny). Jeśli slot jest zajęty, API zwraca błąd 409 Conflict.


Aktualizacja produktów

Aktualizacja produktu odbywa się przez HTTP UPDATE (lub PATCH/PUT) z użyciem URL z ID lub SKU produktu, albo wielu produktów jednym żądaniem:

  • /products/{id} — aktualizacja produktu po ID
  • /products/sku/{sku} — aktualizacja produktu po kodzie SKU
  • /products — masowa aktualizacja wielu produktów (do 5000 w jednym żądaniu)

Przy masowej aktualizacji ścieżka /products nie zawiera ID ani SKU. W tym przypadku należy przesłać tablicę obiektów produktów w parametrze products. Każdy element musi zawierać co najmniej id lub sku. Jeśli podane jest id, ma ono priorytet i może zastąpić sku. Jeśli id nie jest podane, wyszukiwanie odbywa się po sku.

Aktualizacja przesyła pełny zestaw danych produktu w formacie JSON. Wszystkie przesłane dane zastępują istniejące wartości, w tym:

  • Główne właściwości produktu (nazwa, opis, ceny, status itp.)
  • Atrybuty
  • Warianty
  • Obrazy
  • Kategorie i tagi
  • Ustawienia dodatkowe i meta pola

Warianty są aktualizowane zgodnie z poniższym algorytmem dla każdego wariantu w tablicy variations:

  1. Jeśli podane jest id, aktualizacja odbywa się po nim.
  2. Jeśli id brak, ale podane jest sku, aktualizacja odbywa się po kodzie.
  3. Jeśli nie ma ani id, ani sku, ale jest title, aktualizacja odbywa się po nazwie.
  4. Jeśli wariant nie zostanie znaleziony, zostanie utworzony nowy z podanymi parametrami.

Aktualizacja po SKU jest wygodna, gdy ID wariantu nie jest znane, ale znany jest unikalny kod.

Przy aktualizacji wszystkie pola w JSON zastąpią aktualne wartości produktu; aby zachować dane bez zmian, po prostu ich nie wysyłaj.

  • Duplikaty wariantów: jeśli w tablicy variations występują powtarzające się po SKU lub nazwie warianty — zostaną pominięte (ten sam wariant nie zostanie dodany dwa razy).
  • Główny obraz: w tablicy images obraz pod indeksem 0 jest uznawany za główny. Jeśli images[0] nie istnieje lub nie jest przesłany — głównym zostanie pierwszy poprawnie załadowany obraz.
  • Maksymalna liczba obrazów: dla jednego produktu można przesłać maksymalnie 10 obrazów. Próba przesłania większej liczby spowoduje pominięcie nadmiarowych plików.
  • Zarządzanie obrazami:
    • Usuwanie obrazów: aby usunąć obraz po indeksie, ustaw w tablicy images wartość "delete". Na przykład images[2] = "delete" usunie obraz o indeksie 2. Możesz jednocześnie usuwać i przesyłać, wskazując wiele kluczy: images[3] = "delete", images[1] = "https://...".
    • Puste indeksy: jeśli podasz pusty ciąg lub false, ten indeks zostanie pominięty bez błędu.
    • Nadpisanie obrazów: parametr images_replace: jeśli true, system nadpisze istniejące pliki obrazów pod podanymi indeksami (usunie stary plik i cache). Jeśli false lub brak — nadpisanie jest wyłączone.
    • Pomijanie zajętych indeksów: parametr images_skip_index: jeśli true, a indeks jest zajęty i nadpisanie jest wyłączone — system znajdzie kolejny wolny indeks i zapisze tam plik. Jeśli false lub brak — indeks jest brany dokładnie jak podany.
    • Nowy indeks przy konflikcie: parametr images_replace_new_index: jeśli true, a indeks jest zajęty i zarówno nadpisanie, jak i auto-pomijanie są wyłączone — plik zostanie zapisany pod nowym wolnym indeksem. Jeśli wszystkie trzy parametry to false lub brak i indeks jest zajęty — plik nie zostanie przesłany.

Parametry produktu


Dostępne wartości można zobaczyć w przykładowym kodzie poniżej. Znajdują się tam również dodatkowe wyjaśnienia niektórych wartości, które mogą być przydatne.
  • Dostępne wartości price_for

    Dla każdego produktu można określić parametr price_for, który ustala jednostkę rozliczeniową ceny. Dozwolone jest użycie kodu liczbowego lub tekstu (na przykład „Za 1 kg”). Oto pełna lista wartości:

    Pokaż / Ukryj
    • 0 — Nie określono
    • 1 — Za 1 szt.
    • 2 — Za 100 szt.
    • 3 — Za 1000 szt.
    • 4 — Za 1 opakowanie
    • 5 — Za 1 kg
    • 6 — Za 1000 kg
    • 7 — Za 1 m² (metr kwadratowy)
    • 8 — Za 1 metr
    • 9 — Za 1 km
    • 10 — Za zestaw
    • 11 — Za 1 godzinę
    • 12 — Za 1 dzień
    • 13 — Za 1 miesiąc
    • 14 — Za 1 rok
    • 15 — Za ar
    • 16 — Za akr
    • 17 — Za hektar
    • 18 — Za działkę
    • 19 — Za obiekt
    • 30 — Za 1 ml (mililitr)
    • 31 — Za 1 l (litr)
    • 32 — Za 1 km³ (kilometr sześcienny)
    • 33 — Za 1 m³ (metr sześcienny)
    • 34 — Za 1 dm³ (decymetr sześcienny)
    • 35 — Za 1 cm³ (centymetr sześcienny)
    • 36 — Za 1 mm³ (milimetr sześcienny)
    • 37 — Za 1 hl (hektolitr)
    • 38 — Za 100 gramów
    • 39 — Za 1 funt
    • 40 — Za 1 gram
    • 41 — Za 10 kg
    • 42 — Za 1 centnar (100 kg)
    • 43 — Za 1 tonę
    • 44 — Za 1 ar
    • 45 — Za 1 parę
    • 46 — Za 1 tuzin
    • 47 — Za 1 galon
    • 48 — Za 1 baryłkę
    • 49 — Za 1 minutę
    • 50 — Za 1 tydzień
    • 51 — Za 1 usługę
    • 52 — Za 1 podróż
    • 53 — Za 1 osobę
    • 54 — Za 1 pojazd
    • 55 — Za 1 metr bieżący

    Można użyć wartości liczbowej lub tekstowej — system automatycznie rozpozna i przypisze właściwy kod.

  • Dostępne wartości stock_status

    Dla każdego produktu możesz ustawić parametr stock_status, który określa status dostępności produktu i jego zachowanie na stronie. Można użyć kodu liczbowego lub słowa kluczowego — system rozpoznaje obie wersje.

    Pokaż / Ukryj
    • 0 — Dostępny
    • 1 — Niedostępny
    • 2 — Na zamówienie
    • 3 — Niedostępny + Ukryj produkt z listy
    • 4 — Niedostępny + Zablokuj możliwość dodania do koszyka
    • 5 — Dostępność do potwierdzenia

    Można podać wartość liczbową lub tekst — system automatycznie rozpozna i przekształci na odpowiedni kod.

    Jeśli dla produktu ustawiono 3, zostanie on ukryty na liście produktów na stronie. Jeśli ustawiono 4, produkt będzie widoczny, ale nie będzie można go dodać do koszyka. Opcja 5 informuje kupującego, że dostępność należy potwierdzić.

  • Promocja i dostępne wartości promotion_expires_job

    Dla każdego produktu możesz ustawić parametr promotion_expires_job, który określa, co zrobić z promocją po upływie jej terminu.
    Można użyć kodu liczbowego lub słowa kluczowego — system rozpoznaje obie wersje.

    Pokaż / Ukryj
    • 0 — Nic nie robić (ukryj licznik)
    • 1 — Przenieś „Starą cenę” do ceny głównej i usuń starą cenę
    • 2 — Usuń oznaczenie „Promocja”
    • 3 — Przenieś „Starą cenę” do ceny głównej i usuń oznaczenie „Promocja”
    • 5 — Uruchom licznik ponownie na 1 dzień
    • 6 — Uruchom licznik ponownie na 10 dni
    • 7 — Uruchom licznik ponownie z poprzednim czasem trwania (data licznika minus data ostatniej edycji)
    • 8 — Usuń oznaczenie „Promocja” i usuń „Starą cenę”

    Można podać wartość liczbową lub tekst — system automatycznie rozpozna i przekształci na odpowiedni kod.

    Ważne: Aby aktywować licznik promocji, pamiętaj, aby ustawić promotion na 1 — to oznacza, że promocja jest aktywna.

    Należy również podać datę zakończenia promocji w parametrze promotion_expires — można ją ustawić jako czas UNIX (np. time()) lub w formacie YYYY-MM-DDTHH:MM:SS+00:00 (np. 2025-06-28T00:00:00+00:00).

  • Więcej wartości

    Dostępne wartości title

    Tekst (maks. 255 znaków) — nazwa produktu


    Dostępne wartości sku

    Tekst (maks. 100 znaków) — kod produktu


    Dostępne wartości status
    • 1 — Dostęp otwarty
    • 0 — Dostęp zamknięty (403)

    Dostępne wartości xml

    Włącz/Wyłącz eksport produktu do XML (Google Merchant i inne)

    • 1 — Eksport włączony
    • 0 — Eksport wyłączony

    Dostępne wartości xml_markup

    Parametr zarządza stosowaniem narzutów przy eksportowaniu produktów do XML (Google Merchant i inne katalogi reklamowe).

    • 0 — Włącz: Narzut stosowany domyślnie
    • 1 — Wyłącz: Bez narzutów (cena oryginalna)
    • 2 — Bez narzutu Rozetka
    • 3 — Bez narzutu Prom.ua
    • 4 — Bez narzutu Epricentrk.ua
    • 5 — Wyłącz: Rozetka, Prom, Epicentrk
    • 6 — Bez narzutu formułowego

    Dostępne wartości noimport

    Włącz/Wyłącz aktualizację produktu podczas importu (Sklep → Importuj produkty)

    • 1 — Aktualizuj podczas importu
    • 0 — Nie aktualizuj podczas importu

    Dostępne wartości delete
    • 0 — Nie usuwaj
    • 1 — Usuń produkt

    Dostępne wartości show_period

    Okres wyświetlania produktu. Pozwala ukryć produkt po upływie określonego czasu.

    • 0 — Na zawsze
    • 1 — 1 dzień
    • 2 — Tydzień
    • 3 — Miesiąc
    • 4 — Pół roku
    • 5 — Rok

    Dostępne wartości priority

    Liczba od 0 do 100. Im wyższa — tym wyżej produkt na liście.


    Dostępne wartości custom_label_4

    Tekst (maks. 95 znaków)


    Dostępne wartości meta_title

    Tekst (maks. 255 znaków)


    Dostępne wartości meta_description

    Tekst (maks. 500 znaków)


    Dostępne wartości meta_keywords

    Tekst (maks. 2000 znaków)


    Dostępne wartości multilangid

    Tekst (maks. 50 znaków)


    Dostępne wartości categories

    Tablica z wartościami

    • id — ID kategorii
    • name — Nazwa kategorii
    • lang — Język kategorii

    Dostępne wartości producer

    Tablica z wartościami

    • id — ID producenta
    • name — Nazwa producenta
    • lang — Język producenta

    Dostępne wartości producer_country

    Tekst (maks. 100 znaków)


    Dostępne wartości collection

    Tablica z wartościami

    • id — ID kolekcji
    • name — Nazwa kolekcji
    • lang — Język kolekcji

    Dostępne wartości short_description

    Tekst (maks. 2000 znaków) — krótki opis produktu (jeśli włączony w szablonie sklepu, wyświetlany na liście produktów)


    Dostępne wartości description

    Tekst długi — pełny opis produktu, widoczny na stronie produktu


    Dostępne wartości description_tab_1

    Tekst długi — zakładka 1 z opisem (tytuł zakładki ustaw w ustawieniach sklepu)


    Dostępne wartości description_tab_2

    Tekst długi — zakładka 2


    Dostępne wartości description_tab_3

    Tekst długi — zakładka 3


    Dostępne wartości description_tab_4

    Tekst długi — zakładka 4


    Dostępne wartości description_tab_5

    Tekst długi — zakładka 5


    Dostępne wartości bought_with

    Tekst (maks. 255 znaków) — lista ID lub SKU produktów, które kupowane są razem, oddzielone przecinkami


    Dostępne wartości bought_with_email

    Tekst (maks. 255 znaków) — lista ID lub SKU produktów, które kupowane są razem, wysyłana klientowi w mailu z zamówieniem


    Dostępne wartości discount

    Tekst (maks. 20 znaków) — wysokość rabatu (pole informacyjne, widoczne na liście i na stronie produktu)


    Dostępne wartości new

    Oznacz produkt jako Nowość

    • 0 — Nie ustawione
    • 1 — Ustawione

    Dostępne wartości featured

    Oznacz produkt jako Bestseller

    • 0 — Nie ustawione
    • 1 — Ustawione

    Dostępne wartości promotion

    Oznacz produkt jako Promocja

    • 0 — Nie ustawione
    • 1 — Ustawione

    Dostępne wartości reducedprice

    Oznacz produkt jako Obniżona cena

    • 0 — Nie ustawione
    • 1 — Ustawione

    Dostępne wartości shipping
    • 0 — Nie określono
    • 1 — Włączono

    Dostępne wartości shipping_settings (związane z shipping)
    • 2 — Z ustawień ogólnych
    • 0 — Brak dostawy
    • 1 — Dostawa dostępna
    • 3 — Tylko notatka o dostawie

    Dostępne wartości shipping_price (związane z shipping_settings)

    Tekst (maks. 40 znaków)


    Dostępne wartości shipping_note (związane z shipping_settings)

    Tekst (długi)


    Dostępne wartości shipping_days (związane z shipping_settings)

    Tekst (maks. 10 znaków)


    Dostępne wartości shipping_sum (związane z shipping_settings)
    • 0 — Nie uwzględniaj ilości produktów
    • 1 — Uwzględnij ilość produktów
    • 2 — Nie doliczaj dostawy do sumy zamówienia

    Dostępne wartości attributes

    Tablica z atrybutami — widoczne w karcie produktu, wykorzystywane do porównania i filtrów

    • id — ID atrybutu (jeśli jest)
    • name — Nazwa atrybutu (wyszukiwanie może być po name lub value_parent_id / value_ints)
    • options — Tablica wartości atrybutu
    • value_ints — Tablica numerycznych ID wartości (jeśli są)
    • value_parent_id — ID nadrzędny atrybutu (jeśli jest)

    Przykład:
    [
      {
        "id": 1298,
        "name": "Rodzaj produktu",
        "options": ["Sneakersy"]
      },
      {
        "name": "Producent",
        "options": ["Adidas"],
        "value_ints": [10081],
        "value_parent_id": 1762
      },
      {
        "name": "Rozmiar",
        "options": ["43", "43.5"],
        "value_ints": [10107, 10108],
        "value_parent_id": 1763
      }
    ]

    Dostępne wartości dla name

    Nazwa systemowa (slug) dla linku SEO (ciąg znaków, maksymalnie 255 znaków)


    Dostępne wartości dla type

    ID typu produktu (liczba) — dla filtrowania i atrybutów


    Dostępne wartości dla currency

    Kod waluty (ciąg znaków, np. USD, UAH, EUR)


    Dostępne wartości dla tags

    Tagi, oddzielone przecinkami (maksymalnie 8 tagów)


    Dostępne wartości dla weight

    Waga produktu (liczba)


    Dostępne wartości dla weight_units
    • 0 — Gramy
    • 1 — Kilogramy

    Dostępne wartości dla dimensions

    Tablica wymiarów produktu

    • length — Długość
    • width — Szerokość
    • height — Wysokość
    • units — Jednostki: 0 = centymetry, 1 = metry

    Dostępne wartości dla sku_show
    • 0 — Nie pokazuj kodu produktu (SKU) publicznie
    • 1 — Pokaż kod produktu (SKU)

    Dostępne wartości dla moq

    Minimalna ilość zamówienia (liczba)


    Dostępne wartości dla show_stock
    • 0 — Nie pokazuj stanu magazynowego na stronie produktu
    • 1 — Pokaż stan magazynowy

    Dostępne wartości dla show_tree
    • 0 — Nie pokazuj drzewa kategorii
    • 1 — Pokaż drzewo kategorii

    Dostępne wartości dla update_exists
    • 0 / false — Pomiń jeśli rekord istnieje
    • 1 / true — Aktualizuj istniejący rekord

    Dostępne wartości dla supplier

    Tablica wartości

    • id — ID dostawcy
    • name — Nazwa dostawcy
    • lang — Język dostawcy

    Dostępne wartości dla price_cost

    Cena kosztu produktu (ciąg znaków, maksymalnie 20 znaków)


    Dostępne wartości dla bulk_prices

    Tablica reguł cen hurtowych

    • moq — Minimalna ilość dla ceny hurtowej
    • price — Cena hurtowa

    Dostępne wartości dla products_synonyms

    Lista zgrupowanych ID produktów lub SKU, oddzielona przecinkami (ciąg znaków, maksymalnie 255 znaków)


    Dostępne wartości dla video

    URL wideo (ciąg znaków)


    Dostępne wartości dla video_duration

    Czas trwania wideo w formacie HH:MM:SS (ciąg znaków)


    Dostępne wartości dla variations_type

    Typ rozmiaru dla Google Merchant

    • 0 — Domyślnie z ustawień kategorii
    • 1 — Kolor
    • 2 — Wzór
    • 3 — Materiał
    • 4 — Grupa wiekowa
    • 5 — Płeć
    • 6 — Rozmiar

    Dostępne wartości dla variations_title

    Tytuł nad selektorem wariantów (ciąg znaków)


    Dostępne wartości dla variations_require
    • 0 — Wybór wariantu nie jest wymagany
    • 1 — Wybór wariantu jest wymagany przed zakupem

    Dostępne wartości dla variations_cartexplode
    • 0 — Standardowe wyświetlanie w koszyku
    • 1 — Oddzielne wyświetlanie wariantów w koszyku

    Dostępne wartości dla variations_only_update
    • false — Usuń stare warianty przed dodaniem nowych
    • true — Dodaj nowe warianty bez usuwania starych

    Inne wartości

    Inne wartości możesz uzyskać metodą GET /products lub w przykładach poniżej

Aliasy pól (zgodność z 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 (jeśli podano oba, slug ma priorytet).


📦 Przykład rzeczywistej odpowiedzi GET /products/{id}

Aby zobaczyć aktualne pola swojego produktu, wykonaj GET /products/{id} lub GET /products/sku/{sku}. Poniżej przykładowa odpowiedź dla produktu 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": "W magazynie",
    "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": "Kategoria demonstracyjna" }
    ],
    "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": "W magazynie" },
        { "id": 749590, "sku": "Q4D3-BLK_37", "title": "37", "stock_status": 4, "stock_status_value": "Zapytaj o dostępność" },
        { "id": 749602, "sku": "Q4D3-BLK_38", "title": "38", "stock_status": 0, "stock_status_value": "W magazynie" }
    ],
    "weight": 0,
    "weight_units": 0,
    "dimensions": {
        "length": 0, "width": 0, "height": 0, "units": 0
    },
    "short_description": null,
    "description": "Flagowy model do wielodniowego trekkingu...",
    "description_tab_1": "Salomon Quest 4D 3 GTX: Niezrównane Wsparcie i Ochrona...",
    "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"
}

💡 Pełny przykład możesz uzyskać, wykonując żądanie GET do API produktów swojego sklepu.


Dodawanie produktów

Ta metoda pozwala dodać jeden lub kilka produktów jednym żądaniem (do 3000 w jednym żądaniu). Format żądania jest identyczny jak przy aktualizacji: możesz przesłać tablicę products lub pojedynczy produkt.

  • Sprawdzanie ID: podczas dodawania nowego produktu pole id powinno być puste lub pominięte. Jeśli id jest podane i produkt z tym ID już istnieje — system zaktualizuje ten produkt zamiast tworzyć nowy.
  • Sprawdzanie SKU: przed dodaniem system sprawdzi, czy istnieje produkt z tym SKU. Jeśli tak — zostanie zaktualizowany, a nie dodany ponownie.

Możesz dodać nowe produkty i zaktualizować istniejące jednym żądaniem.

7. Katalog artykułów (blog)

MetodaURLOpis
POST /blog/articles Masowe dodawanie i aktualizacja artykułów
GET /blog/articles Pobierz listę artykułów. Obsługuje paginację (?page=N&per_page=N), sortowanie (?orderby=id|name|position|datestamp&order=asc|desc) i filtrowanie (?category_id=N lub ?category_id=1,2,3, ?category=name, ?status=0|1)
GET /blog/articles/{id} Pokaż pojedynczy artykuł po ID
UPDATE /blog/articles/{id} Zaktualizuj artykuł po ID (PATCH/PUT/UPDATE)
UPDATE /blog/articles Masowa aktualizacja wielu artykułów (PATCH/PUT/UPDATE)
GET /blog/articles/slug/{slug} Pobierz artykuł po nazwie systemowej (slug)
UPDATE /blog/articles/slug/{slug} Zaktualizuj artykuł po nazwie systemowej (slug) (PATCH/PUT/UPDATE)
DELETE /blog/articles/{id} Usuń artykuł po ID

Pola artykułu

ParametrTypOpis
title string Tytuł artykułu (wyświetlany na stronie, H1)
meta_title string Meta tytuł (title)
meta_description string Meta opis
meta_keywords string Słowa kluczowe
description text Pełny tekst artykułu
short_description text Krótki opis (zapowiedź) artykułu
name string URL slug (ČPU). Tylko litery łacińskie i myślniki (np. moj-artykul)
slug string URL slug (ČPU). To samo co name. Tylko litery łacińskie i myślniki
language string Język artykułu (ru, en, ua, pl, itd.)
category_id int ID kategorii (rubryki) z blog_catalog_value. Wymagane dla nowego artykułu
status int Dostęp: 1 — opublikowano (dostępne), 0 — ukryto (niedostępne)
priority int Priorytet (pozycja sortowania, 0–29)
datestamp int (unix) Data publikacji (Unix timestamp) lub w formacie ISO 8601
schema int Typ znaczników Schema.org (0–9).
0 — WebPage (domyślnie)
1 — Article
6 — BlogPosting
7 — NewsArticle
2 — AboutPage
3 — ContactPage
4 — CollectionPage
5 — ProfilePage
9 — FAQPage
8 — Bez znaczników
planned int Planowana publikacja: 0/1
settings_comments string Ustawienia komentarzy
settings_rating int Ustawienia ocen: 0/1
update_exists bool Jeśli true, aktualizuje artykuł przy ponownym dodaniu (domyślnie false)
delete bool Jeśli true, artykuł zostanie usunięty (soft delete)
tags string Tagi artykułu oddzielone przecinkami (max 8). Zapisywane w osobnej tabeli tagów
multilangid string ID artykułu w innych językach. Łączy tłumaczenia tego samego artykułu na różnych wersjach językowych strony
slug_search string Wyszukiwanie artykułu po nazwie systemowej (slug) do aktualizacji. Alternatywa dla ID. Nie jest przechowywane w DB

Filtrowanie listy artykułów (GET)

Podczas pobierania listy artykułów (GET /blog/articles) dostępne są parametry filtrowania:

ParametrTypOpis
category_idint/stringID kategorii. Pojedyncze ID lub lista rozdzielona przecinkami: ?category_id=1,2,3
categorystringNazwa kategorii (slug). Alternatywa dla category_id
statusintFiltr dostępu: 1 — opublikowano (dostępne), 0 — ukryto (niedostępne)

Dostępne są również standardowe parametry sortowania: orderby (id, name, position, datestamp) i order (asc, desc).

Aliasy pól (zgodność z WooCommerce):
content = description, excerpt = short_description,
cat_id / rubric_id / category = category_id,
date / date_created / date_created_gmt = datestamp,
slug = name (jeśli podano oba, slug ma priorytet).

Masowe dodawanie i aktualizacja

POST/PUT/PATCH na /blog/articles przyjmuje zarówno pojedynczy obiekt artykułu, jak i tablicę obiektów w polu articles:

{
  "articles": [
    {
      "title": "Mój artykuł",
      "slug": "moj-artykul",
      "language": "pl",
      "category_id": 5,
      "description": "<p>Treść artykułu</p>",
      "short_description": "Zapowiedź",
      "meta_title": "Mój artykuł | Strona",
      "tags": "trampki, nike, adidas, buty sportowe",
      "status": 1,
      "priority": 5,
      "schema": 6
    },
    {
      "title": "Another article",
      "slug": "another-article",
      "language": "en",
      "category_id": 10,
      "description": "<p>Article text</p>",
      "status": 1
    }
  ]
}

Aktualizacja i usuwanie:
update_exists (bool) – jeśli true, aktualizuje artykuł przy ponownym dodaniu (domyślnie false).
delete (bool) – jeśli true, artykuł zostanie usunięty (soft delete: ukryty z list).
slug_search (string) – wyszukiwanie artykułu po nazwie systemowej (slug/name) do aktualizacji przez PUT/PATCH/POST. Jeśli id nie jest podane, artykuł jest wyszukiwany po slug_search. Jeśli podano oba, najpierw próbowane jest ID, a w razie niepowodzenia – slug_search. Uwzględnia język artykułu (parametr language lub język kategorii).
Przy usuwaniu automatycznie przeliczana jest liczba artykułów w kategorii nadrzędnej.

📥 Import/eksport artykułów przez API: Dostępny jest wygodny interfejs webowy do masowego importu i eksportu artykułów bloga przez Commerce API. Pobierz z GitHub →

Booking API — zarządzanie slotami rezerwacji

API do zarządzania slotami rezerwacji. Endpoint: /api/commerce/booking.

Ważne: Endpoint /booking działa na tabeli booking_slots — szablonach/definicjach slotów (harmonogram, typy powtórzeń, ceny). Rzeczywista dostępność (czy slot jest wolny) jest zwracana przez wewnętrzny /api_booking.jsonp?action=get_booking_slot_time używany przez widżet na stronie.

Dostępne metody:

  • GET /booking — pobierz listę szablonów slotów (harmonogram)
  • GET /booking/{id} — pobierz szablon slotu po ID
  • GET /booking/slug/{slug} — pobierz szablon slotu po name (nazwie)
  • POST /booking — utwórz nowy szablon slotu
  • PUT /booking[/{id}] — zaktualizuj szablon slotu (priorytet wyszukiwania: ID → group_id → slug_search)
  • PATCH /booking[/{id}] — częściowa aktualizacja (analogicznie do PUT)
  • DELETE /booking/{id} — usuń szablon slotu po ID
  • DELETE /booking/slug/{slug} — usuń szablon slotu po name

Pola slotu rezerwacji (booking_slots):

idintID slotu (auto_increment)
datestring (Y-m-d)Data slotu
time_startstring (H:i:s)Czas rozpoczęcia
time_endstring (H:i:s)Czas zakończenia
group_idintID grupy slotów
group_titlestringNazwa grupy (name)
group_pricefloatCena grupy
accessintDostęp: 0 — wszyscy, 1 — wyłączony, 2 — tylko zalogowani
typeintTyp: 0 — jednorazowy, 1 — codziennie, 2 — co tydzień, 3 — co miesiąc
recurrence_daystringDni tygodnia dla powtarzania, po przecinku (1=Pn..7=Nd). Przykład: "1,3,5"
recurrence_monthstringMiesiące dla powtarzania, po przecinku (1..12). Przykład: "3,6,9,12"
descriptionstringOpis slotu (HTML)
authorstringAutor

Pełna lista pól: api/api_commerce/booking/api_meta_booking_fields.php.

Filtrowanie GET /booking: parametry ?date_from=, ?date_to=, ?group_id=, ?type=, ?access=, ?slug_search=.

🔗 Przykłady zapytań:

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

Priorytet wyszukiwania slotu dla aktualizacji/usunięcia (PUT/PATCH/DELETE):

  1. id (z URL lub treści żądania) — ID slotu
  2. group_id (z treści żądania) — ID grupy (jeśli grupa zawiera dokładnie 1 slot)
  3. slug_search (z treści żądania) — wyszukiwanie po nazwie (name/group_title)

Jeśli slot nie zostanie znaleziony przez slug_search — tworzony jest nowy (upsert).

Przykład utworzenia slotu jednorazowego (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
}

Przykład utworzenia slotu tygodniowego (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
}

Przykład aktualizacji przez group_id (PUT):

{
    "group_id": 5,
    "group_price": 30.00,
    "description": "<p>Zaktualizowany opis</p>"
}

Przykład aktualizacji przez slug_search (PUT):

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


To podstawowy opis głównych metod pracy z Commerce API / WooCommerce API v3 dla zamówień, produktów i kategorii.
Poniżej znajdują się przykładowe skrypty, które pomogą prawidłowo używać metod API w praktyce.


  • 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
     "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)
          "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)
          "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)
          "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);
      
Temu