{ "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" } ] } }
{ "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'
'status_pay'
'status_for_customer'
'admin_note'
'delivery_status'
'crm_order_id'
You can learn more about the fields in sales statistics when editing an order.
{ "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": "" } ] } }
/ajax.php?statistic_sell
202cb962ac59075b964b07152d234b70
/ajax.php?statistic_sell&key=202cb962ac59075b964b07152d234b70
/page.php?p=statistic_sell&mystat
&sort_dateperiod=1week
/csv_export_products.csv?key=202cb962ac59075b964b07152d234b70
&export_product_access=export_product_access
To work with the API, you need an access key (Consumer Secret), which you create in the section "Settings", "Shop", "Sales Statistics Access". The key is generated based on the Sales Statistics Access Key.
All requests go to the base URL of your site, for example: https://site.com/api/commerce/
https://site.com/api/commerce/
/orders
/orders/{id}
/crm_orders/{id}
/products
?lang=ru|ua|en|pl
/products/{id}
/products/sku/{sku}
/products/categories
/products/categories/{id}
/products/categories/name/{name}
category_parent_id
category_parent_name
category_lang
How it works:
Special rule: To add a category to the root (main) category, you must specify category_parent_name = "main" and also set category_lang – the language of the parent category.
category_parent_name = "main"
Update and Deletion: update_exists (bool) – if true, updates the category if it already exists (default false). delete (bool) – if true, the category will be deleted.
update_exists
delete
/products/producers
/products/producers/{id}
/products/producers/name/{name}
producer_parent_id
producer_parent_name
producer_lang
Special rule: To add a producer to the root (main) producer group, you must specify producer_parent_name = "main" and also set producer_lang – the language of the parent group.
producer_parent_name = "main"
Update and Deletion: update_exists (bool) – if true, updates the producer if it already exists (default false). delete (bool) – if true, the producer will be deleted.
/products/collections
/products/collections/{id}
/products/collections/name/{name}
collection_parent_id
collection_parent_name
collection_lang
Special rule: To add a collection to the root (main) collection, you must specify collection_parent_name = "main" and also set collection_lang – the language of the parent collection.
collection_parent_name = "main"
Update and Deletion: update_exists (bool) – if true, updates the collection if it already exists (default false). delete (bool) – if true, the collection will be deleted.
For the methods /orders, /products, /blog/articles and /pages, parameters for pagination and sorting are available:
/blog/articles
/pages
page
per_page
orderby
id
title
price
date
views
order
asc
desc
l
ru
ua
en
de
fr
es
it
pl
You can filter orders by date and status:
?after=YYYY-MM-DD
?before=YYYY-MM-DD
?status=pending|processing|on-hold|completed|cancelled|0|1|2|3|5|6|7|8
0
1
7
3
8
2
5
6
?show_deleted=1
GET /orders?page=2&per_page=100&after=2024-06-01&before=2024-06-30
GET /products?orderby=price&order=asc&per_page=50
GET /booking?date_from=2024-06-01&date_to=2024-06-30&type=0
GET /booking?group_id=5&slug_search=yoga-morning
Method 1 — via query parameter (simple):
?consumer_secret=YOUR_SECRET
⛔ Do not publish the key publicly!
Method 2 — via Authorization header (OAuth 1.0a):
Authorization: OAuth oauth_consumer_key="YOUR_SECRET"
🔗 Live example — API request:
To create a new order via API, you need to send a POST request to /orders with a JSON body. At minimum, you must specify:
email
line_items
When creating an order, you can specify additional fields, for example:
{ "first_name": "Name", "last_name": "Surname", "email": "alex@example.com", "phone": "+380671112233", "address": "Full address if address eform is not used", "buyer_address_eform1": "State", "buyer_address_eform2": "City", "buyer_address_eform3": "Street", "buyer_address_eform4": "House number", "buyer_address_eform5": "Flat", "postcode": "01001", "total": "999", "status": "processing", "status_for_customer": "processing", "line_items": [ ... ] }
About the total field:
total
The line_items parameter is an array of items. Each item is an object with the following fields:
"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 } ]
USD
UAH
currency
variation_id
Important: If the main order currency is not specified, the site's default currency will be used.
If an item's currency differs from the main currency — the price will be converted automatically.
If the order is linked to a booking, you can specify:
booking
booking_data
"booking_data": { "slot_id": 123, "slot_title": "Slot name", "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" }
🛡️ Duplicate protection: When creating or updating an order with booking_data, the system automatically checks if the specified time interval is already occupied by another non-cancelled order (statuses 2, 5, 6 are considered cancelled — slot is free). If the slot is busy, the API returns 409 Conflict.
409 Conflict
Product updates are done using the HTTP UPDATE method (or PATCH/PUT) by URL with the product ID or SKU, or multiple products in one request:
UPDATE
When using bulk update, the path /products does not contain an ID or SKU. In this case, you must send an array of product objects in the products parameter. Each element must contain at least id or sku. If id is specified, it has priority and can replace sku. If id is not specified, the search is done by sku.
products
sku
The update request must contain the full product data in JSON format. All sent data replaces the existing values, including:
Variations are updated using the following logic for each variation in the variations array:
variations
Updating by SKU is convenient when the variation ID is unknown but a unique code is available.
During an update, all fields included in the JSON will overwrite the current product values; to leave a field unchanged, simply omit it from the request.
images
images[0]
"delete"
images[2] = "delete"
images[3] = "delete"
images[1] = "https://..."
false
images_replace
true
images_skip_index
images_replace_new_index
price_for
For each product, you can specify the price_for parameter that defines the unit for pricing. You can use a numeric code or text (for example, “Per 1 kg”). Here is the complete list of values:
4
9
10
11
12
13
14
15
16
17
18
19
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
You can use either a numeric value or text — the system will automatically recognize and map it to the correct code.
stock_status
For each product, you can set the stock_status parameter, which defines the product’s availability status and how it behaves on the site. You can use either a numeric code or a keyword — the system will recognize both.
You can use either a number or text — the system will automatically detect it and convert it to the correct code.
If a product is set to 3, it will be hidden from product listings on the site. If it’s set to 4, the product will be visible but cannot be added to the cart. Option 5 shows the buyer that availability needs to be confirmed.
promotion_expires_job
For each product, you can set the promotion_expires_job parameter, which controls what happens to a promotion after its end date. You can use either a numeric code or a keyword — the system will recognize both.
Important: To activate the promotion timer, be sure to set promotion to 1 — this means the promotion is active.
promotion
Also, you must specify the promotion end date in the promotion_expires parameter — this can be given as a UNIX timestamp (for example, time()) or in the format YYYY-MM-DDTHH:MM:SS+00:00 (for example, 2025-06-28T00:00:00+00:00).
promotion_expires
time()
YYYY-MM-DDTHH:MM:SS+00:00
2025-06-28T00:00:00+00:00
Text (maximum 255 characters) — product name
Text (maximum 100 characters) — product code
status
xml
Enable/Disable product export to XML (Google Merchant and others)
xml_markup
This parameter controls the application of markups when exporting products to XML (Google Merchant and other advertising catalogs).
noimport
Enable/Disable product update during import (Store → Import Products)
show_period
Product display period. Allows hiding the product after the specified time.
priority
Number from 0 to 100. The higher the number — the higher the product appears in the list.
100
custom_label_4
Text (maximum 95 characters)
meta_title
Text (maximum 255 characters)
meta_description
Text (maximum 500 characters)
meta_keywords
Text (maximum 2000 characters)
multilangid
Text (maximum 50 characters)
categories
Array of values
name
lang
producer
producer_country
Text (maximum 100 characters)
collection
short_description
Text (maximum 2000 characters) — short product description (if enabled in the site design, it appears in product lists)
description
Long text — full product description, displayed on the product detail page
description_tab_1
Long text — tab 1 with description (tab title is set in store settings)
description_tab_2
Long text — tab 2
description_tab_3
Long text — tab 3
description_tab_4
Long text — tab 4
description_tab_5
Long text — tab 5
bought_with
Text (maximum 255 characters) — list of products frequently bought together, comma-separated (product IDs or SKUs)
bought_with_email
Text (maximum 255 characters) — list of products frequently bought together, sent to the customer by email with the order, comma-separated (product IDs or SKUs)
discount
Text (maximum 20 characters) — discount amount (informational field, shown in lists and on the product page)
new
Mark product as New
featured
Mark product as Bestseller
Mark product as Promotion
reducedprice
Mark product as Price Reduced
shipping
shipping_settings
shipping_price
Text (maximum 40 characters)
shipping_note
Long text
shipping_days
Text (maximum 10 characters)
shipping_sum
attributes
Array of attributes — displayed on the product page, used for product comparison and filters
options
value_ints
value_parent_id
[ { "id": 1298, "name": "Product type", "options": ["Sneakers"] }, { "name": "Brand", "options": ["Adidas"], "value_ints": [10081], "value_parent_id": 1762 }, { "name": "Size", "options": ["43", "43.5"], "value_ints": [10107, 10108], "value_parent_id": 1763 } ]
System name (slug) for SEO URL (string, maximum 255 characters)
type
Product type ID (integer) — used for filtering and attribute groups
Currency code (string, e.g. USD, UAH, EUR)
EUR
tags
Comma-separated tags (maximum 8 tags)
weight
Product weight (number)
weight_units
dimensions
Array of product dimensions
length
width
height
units
sku_show
moq
Minimum order quantity (integer)
show_stock
show_tree
supplier
price_cost
Cost price of the product (string, maximum 20 characters)
bulk_prices
Array of bulk pricing rules
products_synonyms
List of grouped product IDs or SKUs, comma-separated (string, maximum 255 characters)
video
Video URL (string)
video_duration
Video duration in HH:MM:SS format (string)
variations_type
Google Merchant size type
variations_title
Title above variation selectors (string)
variations_require
variations_cartexplode
variations_only_update
You can get other values using the GET method /products or in the examples below
Field aliases (WooCommerce compatibility): 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 (if both specified, slug takes priority).
content
excerpt
cat_id
rubric_id
category_id
sale_price
original_price
regular_price
menu_order
wholesale_price
slug
To see the actual fields of your product, run GET /products/{id} or GET /products/sku/{sku}. Below is a sample response for Salomon Quest 4D 3 GTX (ID: 483472):
GET /products/{id}
GET /products/sku/{sku}
{ "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": "In stock", "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": "Demo category" } ], "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": "In stock" }, { "id": 749590, "sku": "Q4D3-BLK_37", "title": "37", "stock_status": 4, "stock_status_value": "Check availability" }, { "id": 749602, "sku": "Q4D3-BLK_38", "title": "38", "stock_status": 0, "stock_status_value": "In stock" } ], "weight": 0, "weight_units": 0, "dimensions": { "length": 0, "width": 0, "height": 0, "units": 0 }, "short_description": null, "description": "Flagship model for multi-day trekking...", "description_tab_1": "Salomon Quest 4D 3 GTX: Unrivaled Support and Protection...", "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" }
💡 You can get the full example by making a GET request to your store's Products API.
This method allows you to add one or multiple products in a single request (up to 3000 at once). The request format is exactly the same as for updating: you can send an array of products or a single product.
POST
GET
?page=N&per_page=N
?orderby=id|name|position|datestamp&order=asc|desc
?category_id=N
?category_id=1,2,3
?category=name
?status=0|1
?date_after=YYYY-MM-DD
?date_before=YYYY-MM-DD
/blog/articles/{id}
/blog/articles/slug/{slug}
DELETE
language
datestamp
schema
planned
settings_comments
settings_rating
slug_search
When fetching articles (GET /blog/articles), the following filter parameters are supported:
GET /blog/articles
category
date_after
?date_after=2026-07-01
date_before
?date_before=2026-07-31
Standard sorting parameters are also available: orderby (id, name, position, datestamp) and order (asc, desc).
Field aliases (WooCommerce compatibility): content = description, excerpt = short_description, cat_id / rubric_id / category = category_id, date / date_created / date_created_gmt = datestamp, slug = name (if both specified, slug takes priority).
date_created
date_created_gmt
POST/PUT/PATCH on /blog/articles accepts either a single article object or an array of objects in the articles field:
articles
{ "articles": [ { "title": "My Article", "slug": "my-article", "language": "en", "category_id": 5, "description": "<p>Article text</p>", "short_description": "Preview", "meta_title": "My Article | Site", "tags": "sneakers, nike, adidas, sport shoes", "status": 1, "priority": 5, "schema": 6 }, { "title": "Another article", "slug": "another-article", "language": "en", "category_id": 10, "description": "<p>Article text</p>", "status": 1 } ] }
Update and delete: update_exists (bool) – if true, updates the article on re-add (default false). delete (bool) – if true, the article will be deleted (soft delete: hidden from lists). slug_search (string) – search article by system name (slug/name) for update via PUT/PATCH/POST. If id is not provided, the article is looked up by slug_search. If both are provided, ID is tried first, then slug_search as fallback. Respects the article language (language parameter or category language). On deletion, the article counter in the parent category is automatically recalculated.
📥 Import/Export articles via API: A convenient web interface for bulk import and export of blog articles via the Commerce API is available. Download from GitHub →
/pages/{id}
/pages/slug/{slug}
meta_html
show
1/true/show/visible
0/false/hide/hidden
settings_tags
password
When fetching pages (GET /pages), the following filter parameters are supported:
GET /pages
Standard sorting: orderby (id, name, position, datestamp) and order (asc, desc).
Field aliases: content = description, excerpt = short_description, slug = name (if both specified, slug takes priority).
{ "pages": [ { "title": "About Us", "slug": "about-us", "language": "en", "description": "<p>About us page text</p>", "meta_title": "About Us | Site", "status": 1, "priority": 10 }, { "title": "Contacts", "slug": "contacts", "language": "en", "description": "<p>Contact information</p>", "status": 1 } ] }
Update and Deletion: update_exists (bool) – if true, updates the page on re-add (default false). delete (bool) – if true, the page will be deleted (soft delete). slug_search (string) – search page by slug for update via PUT/PATCH/POST.
📥 Import/export pages via API: Mass import and export of pages is available through Commerce API. Use the Pages management, read/write key in store settings.
API for managing booking slots. Endpoint: /api/commerce/booking.
/api/commerce/booking
Important: The /booking endpoint works with the booking_slots table — slot templates/definitions (schedule, recurrence types, prices). Real-time availability (is the slot free right now) is returned by the internal /api_booking.jsonp?action=get_booking_slot_time used by the frontend widget.
/booking
/api_booking.jsonp?action=get_booking_slot_time
Available methods:
GET /booking
GET /booking/{id}
GET /booking/slug/{slug}
POST /booking
PUT /booking[/{id}]
PATCH /booking[/{id}]
DELETE /booking/{id}
DELETE /booking/slug/{slug}
Booking slot fields (booking_slots):
time_start
time_end
group_id
group_title
group_price
access
recurrence_day
"1,3,5"
recurrence_month
"3,6,9,12"
author
Full field list: api/api_commerce/booking/api_meta_booking_fields.php.
api/api_commerce/booking/api_meta_booking_fields.php
GET /booking filtering: ?date_from=, ?date_to=, ?group_id=, ?type=, ?access=, ?slug_search=.
?date_from=
?date_to=
?group_id=
?type=
?access=
?slug_search=
🔗 Request examples:
Slot search priority for update/delete (PUT/PATCH/DELETE):
If the slot is not found by slug_search — a new one is created (upsert).
upsert
Example one-time slot (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 }
Example weekly slot (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 }
Example update by group_id (PUT):
{ "group_id": 5, "group_price": 30.00, "description": "<p>Updated description</p>" }
Example update by slug_search (PUT):
{ "slug_search": "yoga-morning", "group_price": 35.00 }
This is a basic overview of the main methods for working with the Commerce API / WooCommerce API v3 for orders, products, and categories.Below are example scripts to help you properly use the API methods in practice.
Script: Api: ORDER DETAILS
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
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
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
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
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
UPDATE PRODUCT $url = "https://boostore.pro/api/commerce/products/PRODUCT_ID"; // Product API update endpoint $authKey = "your_authorization_token_here"; // Authorization token (use your real key) // Product data $productData = [ "id" => 479077, // Product ID is ignored here because it's specified in the URL "name" => "Basketballshoes_Demo", // SEO URL link "title" => "Basketball shoes Converse All Star BB Prototype CX", // Product title (required for new) "type" => 1298, // Product type for filtering and attributes "access" => true, // Product availability (true = active) "description" => "<p>Sneakers Converse All Star BB Prototype CX — Basketball shoes...</p>", // Full product description (HTML allowed) "short_description" => "", // Short description of product "sku" => "AO2515C", // Product SKU code "sku_show" => 0, // Whether to show SKU publicly (0 = no) "price" => "3000", // Current price "currency" => "UAH", // Currency code "regular_price" => "5760", // Old (regular) price "price_for" => "0", // Unit for pricing (see documentation for accepted values https://boostore.pro/en/docs/import-products/#faq_import_products) "stock_quantity" => 0, // Quantity in stock (0 - unlimited) "stock_status" => 0, // Stock status (0 = in stock, 1 = out of stock, others see docs) "weight" => 0, // Weight value "weight_units" => 0, // Weight units: 0 = grams, 1 = kilograms "dimensions" => [ "length" => 0, // Length "width" => 0, // Width "height" => 0, // Height "units" => "0", // Dimension units: 0 = centimeters, 1 = meters ], "categories" => [ ["id" => 30519, "name" => null], // Product category (by ID, name, or both) ], "tags" => "tag1, tag2", // Tags, comma separated, max 8 tags "images" => [ "0" => "-uploadshopcat-s16572/479077/479077_1.webp", // Local image path (won`t be uploaded) "1" => "https://boostore.pro/upload/shop_catalog/s16572/479077/479077_2.webp", // Remote image URL (will be downloaded and attached) ], "images_replace" => false, // By default: do NOT replace images with the same index. If true, replace existing images by index. "images_skip_index" => false, // If true, find next free index if the given index is occupied and save image there. "images_replace_new_index" => false, // If true, even if replace and skip are false, save under new free index if original index is occupied. "variations_only_update" => false, // If true, new variations will be added without deleting old ones; otherwise all old variations are removed before adding new "variations" => [ [ "priority" => 0, // Display priority of the variation "id" => 736413, // Variation ID for updating existing variation; if not provided, search by SKU or title "sku" => "SKU1234", // Variation SKU (recommended) "title" => "42", // Variation name (required) "status" => "true", // access ( true / false / forbidden) "description" => "", "stock_status" => 0, // Stock status, same logic as main product "show_stock" => 0, // Whether to show stock count "instock" => 10, // Quantity in stock for this variation "image_num" => 0, // Image index linked to this variation "price" => "+100", // Price adjustment: absolute, or relative (+/-) "price_old" => "120", // Old price "price_cost" => "80", // Cost price "bulk_prices" => [ // Bulk pricing rules [ "moq" => 10, "price" => 5000 ], // Price if order >= 10 units [ "moq" => 15, "price" => 4500 ], // Price if order >= 15 units ], "dimensions" => [ // Variation dimensions, same units as product "length" => 0, // Length "width" => 0, // Width "height" => 0, // Height "units" => 0, // Dimension units: 0 = centimeters, 1 = meters ], ], [ "priority" => 0, "title" => "43", "description" => "", "stock_status" => 0, "show_stock" => 1, "instock" => 1, "image_num" => 2, "price" => "+100", "price_old" => "120", "price_cost" => "80", "bulk_prices" => [ ["moq" => 10, "price" => 5000], ["moq" => 15, "price" => 4500], ], "dimensions" => [ "length" => 0, "width" => 0, "height" => 0, "units" => 0, ], ], ], "products_synonyms" => "", // Comma-separated list of grouped or similar product IDs or SKUs "priority" => 12, // Sorting priority (higher number = higher position, max 99) "producer" => ["id" => 4713, "name" => null], // Producer category by ID and/or name "producer_show" => 0, // Show producer on product page "producer_country" => "", // Producer country (text) "collection" => ["id" => null, "name" => null], // Collection category (ID and/or name) "collection_show" => 0, // Show collection flag "supplier" => ["id" => null, "name" => null], // Supplier info "bulk_prices" => [ // Bulk prices for main product ["moq" => 10, "price" => 5000], ["moq" => 15, "price" => 4500], ], "price_cost" => "", // Cost price for the main product "settings_comments" => "e_shop_page_hoteng_com|e_shop_page_hoteng_rating_com|e_shop_page_hoteng_show_rating_com|e_shop_page_hoteng_com_captcha|e_shop_page_hoteng_vis_com|e_shop_page_hoteng_num30", "password" => "", // Password protection (if any) "show_tree" => 0, // Category tree display setting (0/1/2) "show_stock" => 0, // Show stock on product page "moq" => 0, // Minimum order quantity "shipping" => 0, // Shipping enabled flag "shipping_settings" => 0, // Shipping configuration "shipping_price" => 0, // Shipping cost "shipping_note" => "", // Notes about shipping "shipping_days" => 0, // Delivery time in days "shipping_sum" => 0, // Combine shipping for same products flag "show_period" => 0, // Product display period "bought_with" => "", // Comma-separated list of products often bought together "bought_with_email" => "", // Email to send bought-together product lists "new" => 1, // Is product new (1 = yes, 0 = no) "reduced_price" => 0, // Price reduced flag "discount" => "-20%", // Discount text (informational) "featured" => 1, // Featured product flag "promotion" => 1, // Has promotion flag "promotion_text" => "", // Promotion text "promotion_expires" => 1751113909, // Promotion end timestamp "promotion_expires_job" => 0, // Job to execute after promotion ends "variations_title" => "", // Title above variation selectors "variations_type" => 0, // Variation type (Google Merchant Size Type): 0=default from category settings, 1=color, 2=pattern, 3=material, 4=age_group, 5=gender, 6=size "variations_require" => 0, // Require variation selection before purchase "variations_cartexplode" => 0, // Variation display method settings "yml" => 0, // Export to YML/XML flag "noimport" => "0", // Disable import via admin panel flag "custom_label_4" => "", // Custom label for Google Merchant "description_tab_1" => "", // Description tab 1 content "description_tab_2" => "", // Description tab 2 content "description_tab_3" => "", // Description tab 3 content "description_tab_4" => "", // Description tab 4 content "description_tab_5" => "", // Description tab 5 content "video" => "", // Video URL "video_duration" => "", // Video duration in HH:MM:SS format "delete" => "delete", // delete product ( true or delete ) // Product attributes for filtering and characteristics "attributes" => [ [ // "id" => 1298, // Attribute name You can use or NAME or ID "name" => "Product type", // Attribute name "options" => ["Sneakers"] // Attribute values (multiple allowed) ], [ "name" => "Producer", // Attribute name "options" => ["Converse"] //Attribute values (multiple allowed) ], [ "name" => "Size", //Attribute name "options" => ["37,5", "40"] //Attribute values (multiple allowed) // "value_ints" => [10096, 10101], //You can use or NAME or ID // "value_parent_id" => 1763 You can use or NAME or ID ], ] ]; curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // Use UPDATE method for update operation (UPDATE / PUT / PATCH) curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($productData, JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Request error: " . curl_error($ch); } else { $data = json_decode($response, true); print_r($data); } curl_close($ch);
Script: Api: UPDATE MULTIPLE PRODUCT
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
UPDATE MULTIPLE CATEGORIES (up to 3000 same time) $url = "https://boostore.pro/api/commerce/products/categories"; // Categories API update endpoint $authKey = "your_authorization_token_here"; // Authorization token (use your real key) // Categories data $categoriesData = [ "categories" => [ [ "category_id" => 30518, // Category ID "category_name" => "sneakers", // System category name (slug) REQUIRED "category_title" => "Sneakers", // Category title "category_parent_id" => 1, // Parent category ID "category_parent_name" => "ParentCategory", // Parent category Name "category_position" => 0, // Position in the list "category_visible" => 0, // Visibility (0 = hidden, 1 = visible) "category_lang" => "ru", // Category language "category_show_tree" => 0, // Show tree (0/1/2) "category_multilangid" => 0, // Multilanguage binding ID "category_image" => [ "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL ], "images_replace" => 1, // Image replace if exists "category_image_settings" => 7, // Image display settings "category_button" => "", // Custom button (without href) "category_access" => 0, // Access level "category_title_seo_append" => "", // SEO: title suffix "category_description_seo_append" => "", // SEO: description suffix "category_meta_d" => "", // Meta description "category_meta_k" => "", // Meta keywords "category_title_inpage" => "Sneakers", // Title shown inside the category page "category_text" => "", // Category description text "category_text_position" => 0, // Description position "category_settings_comments" => "", // Comment settings "category_settings_rating" => 0, // Enable rating (0/1) "category_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update "category_googlegoods_catid" => 0, // Google Goods category ID "category_promua_catid" => 0, // Prom.ua category ID "category_rozetkaua_title" => "", // Rozetka.ua category title "category_merchant_product_category" => "", // Merchant product category "category_gm_product_type" => 0, // Google Merchant product type "category_gm_sizetype" => 0, // Google Merchant size type "category_priceappend_rozetka" => "", // Extra price settings for Rozetka "category_priceappend_promua" => "", // Extra price settings for Prom.ua "category_settings_childproductshow" => 0, // Show products from subcategories (0/1) "category_settings_style" => 0, // Style settings "category_settings_sibling" => 0, // Show sibling categories (0/1) "update_exists" => 1, // Update exists category (0/1) "delete" => 0, // For delete category (0/1) ] ] ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($categoriesData, JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Request error: " . curl_error($ch); } else { $data = json_decode($response, true); print_r($data); } curl_close($ch);
Script: Api: UPDATE PRODUCT PRODUCERS
UPDATE MULTIPLE PRODUCERS (up to 3000 same time) $url = "https://boostore.pro/api/commerce/products/producers"; // Producers API update endpoint $authKey = "your_authorization_token_here"; // Authorization token (use your real key) // Producers data $producersData = [ "producers" => [ [ "producer_id" => 30518, // Producer ID "producer_name" => "sneakers", // System producer name (slug) REQUIRED "producer_title" => "Sneakers", // Producer title "producer_parent_id" => 1, // Parent producer ID "producer_parent_name" => "ParentCategory", // Parent producer Name "producer_position" => 0, // Position in the list "producer_visible" => 0, // Visibility (0 = hidden, 1 = visible) "producer_lang" => "ru", // Producer language "producer_show_tree" => 0, // Show tree (0/1/2) "producer_multilangid" => 0, // Multilanguage binding ID "producer_image" => [ "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL ], "images_replace" => 1, // Image replace if exists "producer_image_settings" => 7, // Image display settings "producer_button" => "", // Custom button (without href) "producer_access" => 0, // Access level "producer_meta_d" => "", // Meta description "producer_meta_k" => "", // Meta keywords "producer_title_inpage" => "Sneakers", // Title shown inside the producer page "producer_text" => "", // Producer description text "producer_text_position" => 0, // Description position "producer_settings_comments" => "", // Comment settings "producer_settings_rating" => 0, // Enable rating (0/1) "producer_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update "update_exists" => 1, // Update exists producer (0/1) "delete" => 0, // For delete producer (0/1) ] ] ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($producersData, JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Request error: " . curl_error($ch); } else { $data = json_decode($response, true); print_r($data); } curl_close($ch);
Script: Api: UPDATE PRODUCT COLLECTIONS
UPDATE MULTIPLE COLLECTIONS (up to 3000 same time) $url = "https://boostore.pro/api/commerce/products/collections"; // Collections API update endpoint $authKey = "your_authorization_token_here"; // Authorization token (use your real key) // Collections data $collectionsData = [ "collections" => [ [ "collection_id" => 30518, // Collection ID "collection_name" => "sneakers", // System collection name (slug) REQUIRED "collection_title" => "Sneakers", // Collection title "collection_parent_id" => 1, // Parent collection ID "collection_parent_name" => "ParentCategory", // Parent collection Name "collection_position" => 0, // Position in the list "collection_visible" => 0, // Visibility (0 = hidden, 1 = visible) "collection_lang" => "ru", // Collection language "collection_show_tree" => 0, // Show tree (0/1/2) "collection_multilangid" => 0, // Multilanguage binding ID "collection_image" => [ "0" => "https://boostore.pro/upload/catalog/16572/files/style/categories/30518.webp", // Image URL ], "images_replace" => 1, // Image replace if exists "collection_image_settings" => 7, // Image display settings "collection_button" => "", // Custom button (without href) "collection_access" => 0, // Access level "collection_meta_d" => "", // Meta description "collection_meta_k" => "", // Meta keywords "collection_title_inpage" => "Sneakers", // Title shown inside the collection page "collection_text" => "", // Collection description text "collection_text_position" => 0, // Description position "collection_settings_comments" => "", // Comment settings "collection_settings_rating" => 0, // Enable rating (0/1) "collection_datestamp" => "2025-09-16T12:41:07+00:00", // Datetime of creation/update "update_exists" => 1, // Update exists collection (0/1) "delete" => 0, // For delete collection (0/1) ] ] ]; $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); // UPDATE / PUT / PATCH curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($collectionsData, JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Request error: " . curl_error($ch); } else { $data = json_decode($response, true); print_r($data); } curl_close($ch);
Script: Api: GET PRODUCTS list
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
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
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
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
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
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)
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
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
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)
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)
DELETE BOOKING SLOT // Priority: ID → group_id → slug_search // By ID (highest priority): $slotId = 123; $url = "https://boostore.pro/api/commerce/booking/" . $slotId; // OR by name: // $slug = "yoga-morning"; // $url = "https://boostore.pro/api/commerce/booking/slug/" . $slug; // OR send body: { "group_id": 5 } or { "slug_search": "yoga-morning" } // $url = "https://boostore.pro/api/commerce/booking"; $authKey = "your_authorization_token_here"; // Authorization token $ch = curl_init($url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Request error: " . curl_error($ch); } else { $data = json_decode($response, true); print_r($data); } curl_close($ch);
Script: Api: PAGES (GET / POST / UPDATE / DELETE)
PAGES $baseUrl = "https://boostore.pro/api/commerce/pages"; $authKey = "your_authorization_token_here"; // Authorization token // ============== GET list of pages ============== $ch = curl_init($baseUrl . "?page=1&per_page=10"); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $authKey]); $response = curl_exec($ch); $pages = json_decode($response, true); curl_close($ch); // ============== CREATE a new page ============== $newPage = [ "title" => "About Us", "title_inpage" => "About Our Company", "description" => "<h2>About Us</h2><p>Full page content here</p>", "short_description" => "Short description for listing", "name" => "about-us", "language" => "en", "status" => 1, "priority" => 5, "schema" => 0, ]; $ch = curl_init($baseUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["pages" => [$newPage]], JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Create error: " . curl_error($ch); } else { $result = json_decode($response, true); print_r($result); } curl_close($ch); // ============== UPDATE page (by ID) ============== $pageId = $result["id"] ?? 0; // Use ID from create response if ($pageId) { $updateData = [ "title" => "About Us — Updated", "title_inpage" => "About Our Company (updated)", "priority" => 10, ]; $ch = curl_init($baseUrl); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "UPDATE"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["pages" => [array_merge(["id" => $pageId], $updateData)]], JSON_UNESCAPED_UNICODE)); curl_setopt($ch, CURLOPT_HTTPHEADER, [ "Authorization: Bearer " . $authKey, "Content-Type: application/json" ]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Update error: " . curl_error($ch); } else { $result = json_decode($response, true); print_r($result); } curl_close($ch); } // ============== DELETE page (by ID) ============== if ($pageId) { $ch = curl_init($baseUrl . "/" . $pageId); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "DELETE"); curl_setopt($ch, CURLOPT_HTTPHEADER, ["Authorization: Bearer " . $authKey]); $response = curl_exec($ch); if (curl_errno($ch)) { echo "Delete error: " . curl_error($ch); } else { $result = json_decode($response, true); print_r($result); } curl_close($ch); }