JoomShopping REST API — Full Reference

Base URL: http://site.com/api/index.php/v1/shop

Authentication

All requests require a Joomla API Token:

Authorization: Bearer <Joomla API Token>
Content-Type: application/json

Response format (JSON:API)

{
  "data": {
    "type": "resource-type",
    "id": "1",
    "attributes": { ... }
  }
}

List response wraps items in "data": [...].

HTTP status codes

Code Meaning
200 OK
204 Deleted successfully (no body)
400 Validation error — missing required fields
401 Unauthorized — invalid or missing token
404 Resource not found

Endpoints overview

Resource GET list GET item POST PATCH DELETE
taxs
categories
attributes
attributesgroups
attributesvalues
countries
coupons
currencies
deliverytimes
exttaxes
freeattributes
manufacturers
orders
orderstatus
payments
fields
fieldvalues
productimages
productlabels
products
reviews
shippings
shippingsprices
units
usergroups
users
vendors
orderitems
languages
addons
configs
configseos
configstatictexts
importexports
orderhistorys
paymenttrxs
paymenttrxdatas
productsattrs
productsattr2s
productsfreeattrs
productsfiles
productsoptions
productsprices
productsrelations
productfields
productsvideos
shippingmethodpricecountries
shippingmethodpriceweights
update
images

Multilang note: Fields marked *multilang* are stored per language in the DB (e.g. name_en-GB). The API returns/accepts them as name, description, alias, etc. based on the active site language.


taxs

DB table: #__jshopping_taxes | PK: tax_id

Response fields

Field Type Description
id int Tax ID
tax_name string Tax name
tax_value float Tax rate (%)
ordering int Sort order

GET /taxs

GET /taxs
Authorization: Bearer <token>

GET /taxs/{id}

GET /taxs/1
Authorization: Bearer <token>

POST /taxs

POST /taxs
Authorization: Bearer <token>
Content-Type: application/json

{
  "tax_name": "VAT 20%",
  "tax_value": 20.00,
  "ordering": 1
}
Field Required
tax_name yes
tax_value yes
ordering no

PATCH /taxs/{id}

PATCH /taxs/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "tax_name": "VAT 22%"
}

At least one of tax_name or tax_value required.

DELETE /taxs/{id}

DELETE /taxs/1
Authorization: Bearer <token>

categories

DB table: #__jshopping_categories | PK: category_id

Response fields

Field Type Description
id int Category ID
name string multilang Name
alias string multilang Alias (slug)
short_description string multilang Short description
description string multilang Full description
meta_title string multilang Meta title
meta_description string multilang Meta description
meta_keyword string multilang Meta keywords
category_parent_id int Parent category ID (0 = top level)
category_publish int Published: 1/0
category_template string Template override
ordering int Sort order
category_image string Image filename
img_alt string Image alt text
img_title string Image title text
access int Joomla access level
category_add_date datetime Created date
products_page int Products per page
products_row int Products per row
product_sorting string Default sorting field
product_sorting_direction int Sort direction: 1=asc, -1=desc

GET /categories

GET /categories
Authorization: Bearer <token>

GET /categories/{id}

GET /categories/5
Authorization: Bearer <token>

POST /categories

POST /categories
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Electronics",
  "category_parent_id": 0,
  "category_publish": 1,
  "ordering": 1
}
Field Required
name yes
category_parent_id no (default 0)
category_publish no (default 1)
ordering no
category_image no

PATCH /categories/{id}

PATCH /categories/5
Authorization: Bearer <token>
Content-Type: application/json

{
  "category_publish": 0
}

DELETE /categories/{id}

DELETE /categories/5
Authorization: Bearer <token>

attributes

DB table: #__jshopping_attr | PK: attr_id

Response fields

Field Type Description
id int Attribute ID
name string multilang Name
attr_type int Type
attr_ordering int Sort order
independent int Independent attribute: 1/0
allcats int Show in all categories: 1/0
cats string JSON category IDs (when allcats=0)
group int Group ID
publish int Published: 1/0
required int Required: 1/0

POST /attributes

POST /attributes
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Color",
  "attr_type": 1,
  "publish": 1
}
Field Required
name yes
attr_type no
publish no
group no

PATCH /attributes/{id}

Send any field(s) to update.

DELETE /attributes/{id} / GET /attributes / GET /attributes/{id}

Standard pattern — see taxs.


attributesgroups

DB table: #__jshopping_attr_groups | PK: id

Response fields

Field Type Description
id int Group ID
name string multilang Name
ordering int Sort order

POST /attributesgroups

POST /attributesgroups
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Specifications",
  "ordering": 1
}
Field Required
name yes
ordering no

attributesvalues

DB table: #__jshopping_attr_values | PK: value_id

Response fields

Field Type Description
id int Value ID
name string multilang Value label
attr_id int Parent attribute ID
value_ordering int Sort order
publish int Published: 1/0
image string Image filename

POST /attributesvalues

POST /attributesvalues
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Red",
  "attr_id": 3,
  "publish": 1
}
Field Required Notes
nameyes
attr_idyes
publishno
value_orderingno
imagenoExisting image filename
image.base64noBase64 data URI: data:image/jpeg;base64,...
image.urlnoURL to download the image from

countries

DB table: #__jshopping_countries | PK: country_id

Response fields

Field Type Description
id int Country ID
name string multilang Country name
country_publish int Published: 1/0
ordering int Sort order
country_code string 3-letter code (e.g. DEU)
country_code_2 string 2-letter code (e.g. DE)

POST /countries

POST /countries
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Germany",
  "country_code": "DEU",
  "country_code_2": "DE",
  "country_publish": 1
}
Field Required
name yes
country_code yes
country_code_2 no
country_publish no

coupons

DB table: #__jshopping_coupons | PK: coupon_id

Response fields

Field Type Description
id int Coupon ID
coupon_code string Coupon code
coupon_type int Type: 1=fixed, 0=percent
coupon_value float Discount value
tax_id int Tax ID applied to coupon
used int Times used
for_user_id int Restricted to user ID (0 = all)
coupon_start_date date Valid from date
coupon_expire_date date Expiry date
finished_after_used int Max uses (0 = unlimited)
coupon_publish int Active: 1/0

POST /coupons

POST /coupons
Authorization: Bearer <token>
Content-Type: application/json

{
  "coupon_code": "SAVE10",
  "coupon_type": 2,
  "coupon_value": 10.00,
  "coupon_expire_date": "2026-12-31 23:59:59",
  "coupon_publish": 1
}
Field Required
coupon_code yes
coupon_type yes
coupon_value yes
coupon_expire_date no
for_user_id no
coupon_publish no

currencies

DB table: #__jshopping_currencies | PK: currency_id

Response fields

Field Type Description
id int Currency ID
currency_name string Name (e.g. Euro)
currency_code string Symbol (e.g. )
currency_code_iso string ISO alpha-3 code (e.g. EUR)
currency_code_num string ISO numeric code (e.g. 978)
currency_value float Exchange rate
currency_publish int Published: 1/0
currency_ordering int Sort order

POST /currencies

POST /currencies
Authorization: Bearer <token>
Content-Type: application/json

{
  "currency_name": "Euro",
  "currency_code": "€",
  "currency_code_iso": "EUR",
  "currency_value": 1.00,
  "currency_publish": 1
}
Field Required
currency_name yes
currency_code yes
currency_code_iso no
currency_value no
currency_publish no

deliverytimes

DB table: #__jshopping_delivery_times | PK: id

Response fields

Field Type Description
id int Delivery time ID
name string multilang Label (e.g. 1-3 days)
days int Number of days

POST /deliverytimes

POST /deliverytimes
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "1-3 days",
  "days": 3
}
Field Required
name yes
days no

exttaxes

DB table: #__jshopping_taxes_ext | PK: id

Extended tax rules with zone-based overrides.

Response fields

Field Type Description
id int Rule ID
tax_id int Parent tax ID
zones string JSON zone list
tax float Tax rate for individuals (%)
firma_tax float Tax rate for companies (%)

POST /exttaxes

POST /exttaxes
Authorization: Bearer <token>
Content-Type: application/json

{
  "tax_id": 1,
  "tax": 20.00,
  "firma_tax": 0.00,
  "zones": "[1,2,3]"
}
Field Required
tax_id yes
tax yes
firma_tax no
zones no

freeattributes

DB table: #__jshopping_free_attr | PK: id

Free (custom) attributes for products.

Response fields

Field Type Description
id int Attribute ID
name string multilang Name
ordering int Sort order
required int Required: 1/0
type int Input type
publish int Published: 1/0

POST /freeattributes

POST /freeattributes
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Engraving",
  "type": 1,
  "required": 0,
  "publish": 1
}
Field Required
name yes
type no
required no
publish no

manufacturers

DB table: #__jshopping_manufacturers | PK: manufacturer_id

Response fields

Field Type Description
id int Manufacturer ID
name string multilang Name
alias string multilang Alias (slug)
short_description string multilang Short description
description string multilang Full description
manufacturer_url string Website URL
manufacturer_logo string Logo filename
manufacturer_publish int Published: 1/0
products_page int Products per page
products_row int Products per row
ordering int Sort order
img_alt string Logo alt text
img_title string Logo title text

POST /manufacturers

POST /manufacturers
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Apple",
  "manufacturer_url": "https://apple.com",
  "manufacturer_publish": 1
}
Field Required Notes
nameyes
manufacturer_urlno
manufacturer_logonoExisting logo filename
image.base64noBase64 data URI — saves and stores in manufacturer_logo
image.urlnoURL to download — saves and stores in manufacturer_logo
manufacturer_publishno

orders

DB table: #__jshopping_orders | PK: order_id

Response fields

Field Type Description
id int Order ID
order_number string Order number
user_id int Customer user ID
order_total float Total amount
order_subtotal float Subtotal
order_tax float Tax amount
order_shipping float Shipping cost
order_status int Status ID
order_created datetime Created date
currency_code string Currency symbol

POST /orders

POST /orders
Authorization: Bearer <token>
Content-Type: application/json

{
  "user_id": 42,
  "order_status": 1,
  "currency_code": "₴"
}
Field Required
user_id yes
order_status no
currency_code no

PATCH /orders/{id}

PATCH /orders/100
Authorization: Bearer <token>
Content-Type: application/json

{
  "order_status": 3
}

orderstatus

DB table: #__jshopping_order_status | PK: status_id

Response fields

Field Type Description
id int Status ID
name string multilang Status label
status_code string Code (e.g. pending, shipped)
ordering int Sort order

POST /orderstatus

POST /orderstatus
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Pending payment",
  "status_code": "pending",
  "ordering": 1
}
Field Required
name yes
status_code yes
ordering no

payments

DB table: #__jshopping_payment_method | PK: payment_id

Response fields

Field Type Description
id int Payment method ID
name string multilang Name
description string multilang Description
payment_code string Plugin code
payment_class string Plugin class name
scriptname string Plugin script filename
payment_publish int Published: 1/0
access int Joomla access level
payment_ordering int Sort order
payment_params string JSON plugin parameters
payment_type int Type
price float Extra fee
price_type int Fee type: 0=fixed, 1=percent
tax_id int Tax ID for fee
image string Logo filename
show_descr_in_email int Show description in email: 1/0
show_bank_in_order int Show bank details in order: 1/0
order_description string Text shown in order

POST /payments

POST /payments
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Card payment",
  "payment_code": "liqpay",
  "payment_publish": 1
}
Field Required
name yes
payment_code yes
payment_publish no
payment_ordering no

fields

DB table: #__jshopping_products_extra_fields | PK: id

Extra fields for products.

Response fields

Field Type Description
id int Field ID
name string multilang Field label
type int Input type
multilist int Allow multiple values: 1/0
group int Group ID
ordering int Sort order
publish int Published: 1/0
allcats int Show in all categories: 1/0
cats string JSON category IDs (when allcats=0)

POST /fields

POST /fields
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Material",
  "type": 1,
  "publish": 1,
  "allcats": 1
}
Field Required
name yes
type no
publish no
allcats no

fieldvalues

DB table: #__jshopping_products_extra_field_values | PK: id

Predefined values for list-type product extra fields.

Response fields

Field Type Description
id int Value ID
name string multilang Value label
field_id int Parent field ID
ordering int Sort order
publish int Published: 1/0

POST /fieldvalues

POST /fieldvalues
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Cotton",
  "field_id": 2,
  "publish": 1
}
Field Required
name yes
field_id yes
ordering no
publish no

productimages

DB table: #__jshopping_products_images | PK: image_id

Additional product images.

Response fields

Field Type Description
id int Image ID
product_id int Product ID
image_name string Image filename
name string Alt text
title string Title text
ordering int Sort order
attrs string Additional attributes (JSON)

POST /productimages

Two upload modes are supported.

Mode 1 — existing file by name

POST /productimages
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 15,
  "image_name": "product_15_2.jpg",
  "name": "Front view",
  "ordering": 2
}

Mode 2 — base64 upload

Pass the image as a base64 data URI in the image.base64 field. The server saves the file, generates thumbnails according to shop settings, and stores the resulting filename in image_name.

POST /productimages
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 15,
  "image.base64": "data:image/jpeg;base64,/9j/4AAQSkZ...",
  "name": "Front view",
  "ordering": 2
}

Optionally provide image_name together with image.base64 to control the saved filename (the extension is always taken from the data URI):

{
  "product_id": 15,
  "image_name": "front",
  "image.base64": "data:image/jpeg;base64,/9j/4AAQSkZ...",
  "ordering": 1
}

Mode 3 — upload from URL

Pass a URL in the image.url field. The server downloads the file, generates thumbnails, and stores the filename in image_name.

POST /productimages
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 15,
  "image.url": "http://www.site.com/img.jpg",
  "name": "Front view",
  "ordering": 2
}
Field Required Notes
product_idyes
image_nameyes**Required if image.base64 and image.url are not provided
image.base64yes**Required if image_name and image.url are not provided. Base64 data URI: data:image/jpeg;base64,...
image.urlyes**Required if image_name and image.base64 are not provided. URL to download the image from
namenoAlt text
titlenoTitle text
orderingno

Processing on image.base64 / image.url upload:


productlabels

DB table: #__jshopping_product_labels | PK: id

Labels/badges for products (e.g. "New", "Sale").

Response fields

Field Type Description
id int Label ID
name string multilang Label name
image string Image filename

POST /productlabels

POST /productlabels
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "New",
  "image": "label_new.png"
}
Field Required Notes
nameyes
imagenoExisting image filename
image.base64noBase64 data URI: data:image/jpeg;base64,...
image.urlnoURL to download the image from

products

DB table: #__jshopping_products | PK: product_id

Response fields

Field Type Description
id int Product ID
parent_id int Parent product ID (0 = standalone)
name string multilang Name
alias string multilang Alias (slug)
short_description string multilang Short description
description string multilang Full description
meta_title string multilang Meta title
meta_description string multilang Meta description
meta_keyword string multilang Meta keywords
product_publish int Published: 1/0
product_price float Price
product_old_price float Old (crossed-out) price
product_buy_price float Purchase (buy) price
min_price float Minimum price
different_prices int Has variant prices: 1/0
product_quantity float Stock quantity
unlimited int Unlimited stock: 1/0
product_availability string Availability code
product_weight float Weight
weight_volume_units float Volumetric weight
product_ean string EAN / barcode
manufacturer_code string Manufacturer article number
real_ean string Real EAN
product_manufacturer_id int Manufacturer ID
main_category_id int Main category ID
product_tax_id int Tax ID
currency_id int Currency ID
product_is_add_price int Has additional price: 1/0
add_price_unit_id int Additional price unit ID
basic_price_unit_id int Basic price unit ID
label_id int Label ID
vendor_id int Vendor ID
delivery_times_id int Delivery time ID
product_template string Template override
product_url string External product URL
image string Main image filename
average_rating float Average review rating
reviews_count int Number of reviews
hits int View count
product_date_added datetime Created date
date_modify datetime Last modified date
access int Joomla access level
ordering int Sort order
categories int[] Category IDs (array of ints)
images object[] Product images — see fields below
attrs object[] Attribute combinations — see fields below
attr2s object[] Attribute2 values — see fields below
files object[] Downloadable files — see fields below
freeattrs object[] Free attribute links — see fields below
options object[] Product options — see fields below
prices object[] Group/volume prices — see fields below
relations object[] Related products — see fields below
videos object[] Videos — see fields below
fields object Extra product fields — see fields below

Note: Sub-resource arrays (images, attrs, etc.) and fields are returned only for GET item (/products/{id}). They are not included in the list response (GET /products). Use list[display]=short to get a minimal list without some optional fields.

images fields

FieldTypeDescription
idintImage ID
image_namestringImage filename
namestringAlt name
titlestringTitle attribute
orderingintSort order
attrsstringExtra attributes

attrs fields (attribute combinations)

FieldTypeDescription
idintAttr record ID
buy_pricefloatPurchase price
pricefloatSell price
old_pricefloatOld price
countfloatStock count
eanstringEAN
manufacturer_codestringManufacturer code
real_eanstringReal EAN
weightfloatWeight
weight_volume_unitsfloatVolumetric weight
ext_attribute_product_idintExternal attribute product ID
attrsobjectAttribute values map: {"attr_id": value_id, ...}

Example attrs item:

{
  "price": "90.0000",
  "count": "1.0000",
  "ean": "A1",
  "attrs": {
    "4": 6
  }
}

attr2s fields (attribute2 values)

FieldTypeDescription
idintRecord ID
attr_idintAttribute ID
attr_value_idintAttribute value ID
price_modstringPrice modifier sign (+ / -)
addpricefloatAdditional price

Example attr2s item:

{"attr_id": "1", "attr_value_id": "1", "price_mod": "+", "addprice": 20}

files fields

FieldTypeDescription
idintFile ID
demostringDemo file name
demo_descrstringDemo file description
filestringFull file name
file_descrstringFile description
orderingintSort order

freeattrs fields

FieldTypeDescription
idintRecord ID
attr_idintFree attribute ID

options fields

FieldTypeDescription
idintOption ID
keystringOption key
valuestringOption value

prices fields (group/volume prices)

FieldTypeDescription
idintPrice record ID
discountfloatDiscount value
product_quantity_startfloatQuantity range start
product_quantity_finishfloatQuantity range end

relations fields

FieldTypeDescription
idintRecord ID
product_related_idintRelated product ID

videos fields

FieldTypeDescription
idintVideo ID
video_namestringVideo filename
video_codestringEmbed code
video_previewstringPreview image filename

fields (extra product fields)

Object with extra product field values. Keys are field IDs (strings). Each value is either an ID from fieldvalues (current) or a raw string value (legacy).

"fields": {
  "1": "4",
  "2": "165",
  "4": 0,
  "60": 0
}

See productfields for managing these values directly.

GET /products — List filters & sorting

Query parameters for the list endpoint:

ParameterTypeDescriptionExample
filter[category]intFilter by category IDfilter[category]=5
list[ordering]stringSort field. Allowed: product_id, p.product_id, product_price, p.product_price, product_date_added, p.product_date_added, hits, p.hits, average_rating, p.average_ratinglist[ordering]=product_price
list[direction]stringSort direction: ASC or DESClist[direction]=DESC
list[display]stringField set: omit for full, short for minimal setlist[display]=short
page[limit]intItems per page (Joomla pagination)page[limit]=20
page[offset]intOffset (Joomla pagination)page[offset]=40

Example — published products in category 5, sorted by price descending, 20 per page:

GET /products?filter[category]=5&list[ordering]=product_price&list[direction]=DESC&page[limit]=20

list[display]=short returns only: id, name, alias, short_description, product_ean, manufacturer_code, real_ean, product_quantity, unlimited, product_availability, product_date_added, date_modify, product_publish, product_price, min_price, product_weight, image, product_manufacturer_id, hits, label_id, vendor_id, main_category_id.

POST /products

POST /products
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "iPhone 15",
  "product_price": 29999.00,
  "product_quantity": 10,
  "product_publish": 1,
  "main_category_id": 5,
  "product_manufacturer_id": 2
}
Field Required
name yes
product_price no
product_quantity no
product_publish no
main_category_id no
product_manufacturer_id no

PATCH /products/{id}

PATCH /products/15
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_price": 27999.00,
  "product_publish": 1
}

Multilang fields

Fields name, alias, short_description, description, meta_title, meta_description, meta_keyword can be passed without a language suffix — they are automatically mapped to the active language (e.g., namename_en).

The description and images fields are not HTML-stripped (raw mode).

Nested fields

When creating or editing a product, related data can be embedded directly in the request body. Each nested item accepts the same fields as the corresponding standalone API endpoint — product_id is set automatically and must not be included.

Key Standalone API Notes
categoriesArray of category IDs: [1, 2]
imagesproductimagesimage.base64, image.url, or existing filename; first image becomes image
attrsproductsattrsProduct attribute links
attrs2productsattr2sProduct attribute2 links
filesproductsfilesDownloadable files
pricesproductspricesGroup/volume prices
videosproductsvideosVideo links
reviewsreviewsCustomer reviews
relationsproductsrelationsRelated products; item can be an int or {"product_related_id": N}
freeattrsproductsfreeattrsFree attribute links

Full POST example

POST /products
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Product new <b>test</b>",
  "description": "descr <b>Bold</b>",
  "product_price": 10.00,
  "categories": [1, 2],
  "attrs2": [
    {"attr_id": "1", "attr_value_id": "1", "price_mod": "+", "addprice": 20}
  ],
  "attrs": [
    {
      "price": 90.00,
      "count": 1,
      "ean": "A1",
      "attrs": {"4": 6}
    },
    {
      "price": 95.00,
      "count": 1,
      "ean": "A2",
      "attrs": {"4": 7}
    }
  ],
  "files": [
    {"demo": "1.mp3", "demo_descr": "descr"}
  ],
  "videos": [
    {"video_name": "1.mp4"}
  ],
  "relations": [
    {"product_related_id": 1},
    {"product_related_id": 2}
  ],
  "freeattrs": [
    {"attr_id": 1}
  ],
  "images": [
    {"image.base64": "data:image/jpeg;base64,/9j/4AAQ...="},
    {"image_name": "front.jpg", "image.url": "http://www.site.com/img.jpg"}
  ]
}

Nested arrays are processed independently — if a nested item already exists (matched by its unique keys), it is updated; otherwise it is created. On PATCH, only the nested keys that are present in the request are touched; omitted keys are left unchanged.


reviews

DB table: #__jshopping_products_reviews | PK: review_id

Response fields

Field Type Description
id int Review ID
product_id int Product ID
user_id int Joomla user ID
user_name string Display name
user_email string Email
mark int Rating (1–5)
review string Review text
time datetime Posted date
publish int Published: 1/0
ip string IP address of reviewer

POST /reviews

POST /reviews
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 15,
  "user_name": "John",
  "user_email": "john@example.com",
  "review": "Great product!",
  "mark": 5,
  "publish": 1
}
Field Required
product_id yes
review yes
mark yes
user_name no
user_email no
publish no

shippings

DB table: #__jshopping_shipping_method | PK: shipping_id

Response fields

Field Type Description
id int Shipping method ID
name string multilang Name
description string multilang Description
alias string Plugin alias/code
published int Published: 1/0
access int Joomla access level
payments string Allowed payment method IDs (comma-separated)
image string Image filename
ordering int Sort order
params string JSON plugin parameters

POST /shippings

POST /shippings
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Nova Post",
  "alias": "novaposhta",
  "published": 1
}
Field Required
name yes
alias no
published no
ordering no

shippingsprices

DB table: #__jshopping_shipping_method_price | PK: sh_pr_method_id

Price rules for shipping methods.

Response fields

Field Type Description
id int Rule ID
shipping_method_id int Shipping method ID
shipping_tax_id int Tax ID for shipping cost
shipping_stand_price float Standard shipping price
package_tax_id int Tax ID for package cost
package_stand_price float Standard package price
delivery_times_id int Delivery time ID
params string JSON additional parameters

POST /shippingsprices

POST /shippingsprices
Authorization: Bearer <token>
Content-Type: application/json

{
  "shipping_method_id": 2,
  "shipping_stand_price": 60.00,
  "shipping_tax_id": 0,
  "delivery_times_id": 1
}
Field Required
shipping_method_id yes
shipping_stand_price no
shipping_tax_id no
delivery_times_id no

units

DB table: #__jshopping_unit | PK: id

Units of measure.

Response fields

Field Type Description
id int Unit ID
name string multilang Unit name
qty float Default quantity step

POST /units

POST /units
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "pcs",
  "qty": 1
}
Field Required
name yes
qty no

usergroups

DB table: #__jshopping_usergroups | PK: usergroup_id

Response fields

Field Type Description
id int Group ID
name string multilang Name
usergroup_name string Internal group name
usergroup_discount float Default discount (%)
usergroup_description string Description
usergroup_is_default int Default group: 1/0

POST /usergroups

POST /usergroups
Authorization: Bearer <token>
Content-Type: application/json

{
  "usergroup_name": "VIP",
  "usergroup_discount": 15.00,
  "usergroup_is_default": 0
}
Field Required
usergroup_name yes
usergroup_discount no
usergroup_description no
usergroup_is_default no

users

DB table: #__jshopping_users | PK: user_id

Shop customer profiles (linked to Joomla users).

Response fields

Field Type Description
id int User ID (= Joomla user ID)
usergroup_id int Shop user group ID
payment_id int Default payment method ID
shipping_id int Default shipping method ID
u_name string Username
number string Customer number
title int Title (0=Mr, 1=Mrs, etc.)
f_name string First name
l_name string Last name
m_name string Middle name
firma_name string Company name
client_type int Client type: 0=individual, 1=company
firma_code string Company registration code
tax_number string VAT / tax number
email string Email
birthday date Date of birth
street string Street
street_nr string Street number
home string Building
apartment string Apartment
zip string Postal code
city string City
state string State / region
country int Country ID
phone string Phone
mobil_phone string Mobile phone
fax string Fax
ext_field_1 string Extra field 1
ext_field_2 string Extra field 2
ext_field_3 string Extra field 3
delivery_adress int Has separate delivery address: 1/0
d_title int Delivery title
d_f_name string Delivery first name
d_l_name string Delivery last name
d_m_name string Delivery middle name
d_firma_name string Delivery company name
d_email string Delivery email
d_birthday date Delivery contact birthday
d_street string Delivery street
d_street_nr string Delivery street number
d_home string Delivery building
d_apartment string Delivery apartment
d_zip string Delivery postal code
d_city string Delivery city
d_state string Delivery state / region
d_country int Delivery country ID
d_phone string Delivery phone
d_mobil_phone string Delivery mobile phone
d_fax string Delivery fax
d_ext_field_1 string Delivery extra field 1
d_ext_field_2 string Delivery extra field 2
d_ext_field_3 string Delivery extra field 3
lang string Language tag

POST /users

POST /users
Authorization: Bearer <token>
Content-Type: application/json

{
  "user_id": 42,
  "f_name": "John",
  "l_name": "Smith",
  "email": "john@example.com",
  "usergroup_id": 1
}
Field Required
user_id yes (Joomla user ID)
f_name no
l_name no
email no
usergroup_id no
phone no
city no
country no

PATCH /users/{id}

PATCH /users/42
Authorization: Bearer <token>
Content-Type: application/json

{
  "usergroup_id": 2,
  "phone": "+380501234567"
}

vendors

DB table: #__jshopping_vendors | PK: id

Response fields

Field Type Description
id int Vendor ID
shop_name string Shop/store name
company_name string Legal company name
url string Website
logo string Logo filename
adress string Street address
city string City
zip string Postal code
state string State / region
country int Country ID
f_name string Contact first name
l_name string Contact last name
middlename string Contact middle name
phone string Phone
fax string Fax
email string Contact email
benef_bank_info string Beneficiary bank info
benef_bic string BIC
benef_conto string Account number
benef_payee string Payee name
benef_iban string IBAN
benef_bic_bic string BIC of beneficiary bank
benef_swift string SWIFT code
interm_name string Intermediary bank name
interm_swift string Intermediary SWIFT
identification_number string Company ID number
tax_number string Tax / VAT number
additional_information string Extra notes
user_id int Joomla user ID
main int Is main vendor: 1/0
publish int Published: 1/0

POST /vendors

POST /vendors
Authorization: Bearer <token>
Content-Type: application/json

{
  "shop_name": "MyShop",
  "email": "shop@example.com",
  "user_id": 55,
  "publish": 1
}
Field Required Notes
shop_nameyes
emailyes
user_idno
company_nameno
urlno
logonoExisting logo filename
logo.base64noBase64 data URI — saves and stores in logo
logo.urlnoURL to download — saves and stores in logo
cityno
countryno
publishno

orderitems

DB table: #__jshopping_order_item | PK: order_item_id

Response fields

Field Type Description
order_item_id int Item ID
order_id int Order ID
product_id int Product ID
category_id int Category ID
product_ean string EAN code
manufacturer_code string Manufacturer code
real_ean string Real EAN
product_name string Product name at time of order
product_quantity decimal Quantity
product_item_price decimal Unit price
product_tax decimal Tax amount
product_attributes string Serialized attributes
product_freeattributes string Serialized free attributes
attributes string Attributes (JSON)
freeattributes string Free attributes (JSON)
extra_fields string Extra fields (JSON)
files string Files (JSON)
weight decimal Product weight
thumb_image string Thumbnail filename
manufacturer string Manufacturer name
delivery_times_id int Delivery time ID
vendor_id int Vendor ID
basicprice decimal Base price per unit
basicpriceunit string Base price unit label
params string Extra params (JSON)

GET /orderitems

GET /orderitems
Authorization: Bearer <token>

GET /orderitems/{id}

GET /orderitems/1
Authorization: Bearer <token>

POST /orderitems

POST /orderitems
Authorization: Bearer <token>
Content-Type: application/json

{
  "order_id": 10,
  "product_id": 5,
  "product_name": "Product Name",
  "product_quantity": 2,
  "product_item_price": 19.99
}
Field Required
order_id yes
product_id yes
product_name no
product_quantity no
product_item_price no

PATCH /orderitems/{id}

PATCH /orderitems/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_quantity": 3
}

At least one field required (except order_item_id).

DELETE /orderitems/{id}

DELETE /orderitems/1
Authorization: Bearer <token>

languages

DB table: #__jshopping_languages | PK: id

Response fields

Field Type Description
id int Language ID
language string Language code (e.g. en-GB)
name string Language display name
publish int Published: 1/0
ordering int Sort order

GET /languages

GET /languages
Authorization: Bearer <token>

GET /languages/{id}

GET /languages/1
Authorization: Bearer <token>

POST /languages

POST /languages
Authorization: Bearer <token>
Content-Type: application/json

{
  "language": "en-GB",
  "name": "English",
  "publish": 1,
  "ordering": 1
}
Field Required
language yes
name yes
publish no
ordering no

PATCH /languages/{id}

PATCH /languages/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "publish": 0
}

At least one field required (except id).

DELETE /languages/{id}

DELETE /languages/1
Authorization: Bearer <token>

addons

DB table: #__jshopping_addons | PK: id

Response fields

Field Type Description
id int Addon ID
alias string Unique alias
name string Addon name
key string License key
usekey int Require key: 1/0
version string Version string
uninstall string Uninstall handler
params string Params (JSON)
publish int Published: 1/0 (-1 = disabled)
config string Config (JSON)

GET /addons

GET /addons
Authorization: Bearer <token>

GET /addons/{id}

GET /addons/1
Authorization: Bearer <token>

POST /addons

POST /addons
Authorization: Bearer <token>
Content-Type: application/json

{
  "alias": "myaddon",
  "name": "My Addon",
  "version": "1.0.0",
  "publish": 1
}
Field Required
alias yes
name yes
version no
publish no
params no
config no

PATCH /addons/{id}

PATCH /addons/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "publish": 0
}

At least one field required (except id).

DELETE /addons/{id}

DELETE /addons/1
Authorization: Bearer <token>

configs

DB table: #__jshopping_configs | PK: id

Response fields

Field Type Description
id int Record ID
config_id int Config group ID
key string Config key
value string Config value

GET /configs

GET /configs
Authorization: Bearer <token>

GET /configs/{id}

GET /configs/1
Authorization: Bearer <token>

POST /configs

POST /configs
Authorization: Bearer <token>
Content-Type: application/json

{
  "config_id": 1,
  "key": "shop_name",
  "value": "My Shop"
}
Field Required
key yes
config_id no (default 1)
value no

PATCH /configs/{id}

PATCH /configs/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "value": "New Value"
}

At least one of key, value, or config_id required.

DELETE /configs/{id}

DELETE /configs/1
Authorization: Bearer <token>

configseos

DB table: #__jshopping_config_seo | PK: id

Response fields

Field Type Description
id int Record ID
alias string SEO alias
ordering int Sort order

GET /configseos

GET /configseos
Authorization: Bearer <token>

GET /configseos/{id}

GET /configseos/1
Authorization: Bearer <token>

POST /configseos

POST /configseos
Authorization: Bearer <token>
Content-Type: application/json

{
  "alias": "shop",
  "ordering": 1
}
Field Required
alias yes
ordering no

PATCH /configseos/{id}

PATCH /configseos/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "ordering": 2
}

At least one field required (except id).

DELETE /configseos/{id}

DELETE /configseos/1
Authorization: Bearer <token>

configstatictexts

DB table: #__jshopping_config_statictext | PK: id

Response fields

Field Type Description
id int Record ID
alias string Text alias
use_for_return_policy int Use as return policy: 1/0

GET /configstatictexts

GET /configstatictexts
Authorization: Bearer <token>

GET /configstatictexts/{id}

GET /configstatictexts/1
Authorization: Bearer <token>

POST /configstatictexts

POST /configstatictexts
Authorization: Bearer <token>
Content-Type: application/json

{
  "alias": "terms",
  "use_for_return_policy": 0
}
Field Required
alias yes
use_for_return_policy no

PATCH /configstatictexts/{id}

PATCH /configstatictexts/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "use_for_return_policy": 1
}

At least one field required (except id).

DELETE /configstatictexts/{id}

DELETE /configstatictexts/1
Authorization: Bearer <token>

importexports

DB table: #__jshopping_import_export | PK: id

Response fields

Field Type Description
id int Record ID
name string Profile name
alias string Alias (slug)
description string Description
params string Params (JSON)
endstart int End/start flag
steptime int Step time (seconds)

GET /importexports

GET /importexports
Authorization: Bearer <token>

GET /importexports/{id}

GET /importexports/1
Authorization: Bearer <token>

POST /importexports

POST /importexports
Authorization: Bearer <token>
Content-Type: application/json

{
  "name": "Products CSV Import",
  "alias": "products-csv-import"
}
Field Required
name yes
alias yes
description no
params no
steptime no

PATCH /importexports/{id}

PATCH /importexports/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "steptime": 60
}

At least one field required (except id).

DELETE /importexports/{id}

DELETE /importexports/1
Authorization: Bearer <token>

orderhistorys

DB table: #__jshopping_order_history | PK: order_history_id

Response fields

Field Type Description
order_history_id int History record ID
order_id int Order ID
order_status_id int Status ID
status_date_added datetime Date of status change
customer_notify int Notify customer: 1/0
comments string Comments
include_comment int Include comment in email: 1/0

GET /orderhistorys

GET /orderhistorys
Authorization: Bearer <token>

GET /orderhistorys/{id}

GET /orderhistorys/1
Authorization: Bearer <token>

POST /orderhistorys

POST /orderhistorys
Authorization: Bearer <token>
Content-Type: application/json

{
  "order_id": 10,
  "order_status_id": 2,
  "customer_notify": 1,
  "comments": "Shipped via DHL"
}
Field Required
order_id yes
order_status_id no
customer_notify no
comments no
include_comment no

PATCH /orderhistorys/{id}

PATCH /orderhistorys/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "comments": "Updated tracking info"
}

At least one field required (except order_history_id).

DELETE /orderhistorys/{id}

DELETE /orderhistorys/1
Authorization: Bearer <token>

paymenttrxs

DB table: #__jshopping_payment_trx | PK: id

Response fields

Field Type Description
id int Transaction ID
order_id int Order ID
transaction string Transaction reference
rescode int Response code
status_id int Transaction status ID
date datetime Transaction date

GET /paymenttrxs

GET /paymenttrxs
Authorization: Bearer <token>

GET /paymenttrxs/{id}

GET /paymenttrxs/1
Authorization: Bearer <token>

POST /paymenttrxs

POST /paymenttrxs
Authorization: Bearer <token>
Content-Type: application/json

{
  "order_id": 10,
  "transaction": "TXN_ABC123",
  "rescode": 0,
  "status_id": 1
}
Field Required
order_id yes
transaction no
rescode no
status_id no
date no

PATCH /paymenttrxs/{id}

PATCH /paymenttrxs/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "status_id": 2
}

At least one field required (except id).

DELETE /paymenttrxs/{id}

DELETE /paymenttrxs/1
Authorization: Bearer <token>

paymenttrxdatas

DB table: #__jshopping_payment_trx_data | PK: id

Response fields

Field Type Description
id int Record ID
trx_id int Transaction ID (FK to paymenttrxs)
order_id int Order ID
key string Data key
value string Data value

GET /paymenttrxdatas

GET /paymenttrxdatas
Authorization: Bearer <token>

GET /paymenttrxdatas/{id}

GET /paymenttrxdatas/1
Authorization: Bearer <token>

POST /paymenttrxdatas

POST /paymenttrxdatas
Authorization: Bearer <token>
Content-Type: application/json

{
  "trx_id": 1,
  "order_id": 10,
  "key": "payer_email",
  "value": "user@example.com"
}
Field Required
trx_id yes
order_id yes
key yes
value no

PATCH /paymenttrxdatas/{id}

PATCH /paymenttrxdatas/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "value": "updated@example.com"
}

At least one field required (except id).

DELETE /paymenttrxdatas/{id}

DELETE /paymenttrxdatas/1
Authorization: Bearer <token>

productsattrs

DB table: #__jshopping_products_attr | PK: product_attr_id

Response fields

Field Type Description
product_attr_id int Attribute variant ID
product_id int Product ID
buy_price decimal Purchase price
price decimal Sale price
old_price decimal Old/crossed-out price
count decimal Stock quantity
ean string EAN / barcode
manufacturer_code string Manufacturer SKU
real_ean string Real EAN
weight decimal Weight
weight_volume_units decimal Volumetric weight units
ext_attribute_product_id int External attribute product ID
attrs object Attribute values map: {"attr_id": value_id, ...}

Example response:

{
  "product_attr_id": 19,
  "product_id": 3,
  "buy_price": "0.00",
  "price": "90.0000",
  "old_price": "100.0000",
  "count": "1.0000",
  "ean": "9781741105704",
  "manufacturer_code": "",
  "real_ean": "",
  "weight": "1500.0000",
  "weight_volume_units": "0.0000",
  "ext_attribute_product_id": 0,
  "id": 19,
  "attrs": {
    "1": 0,
    "2": 0,
    "4": 6
  }
}

GET /productsattrs

GET /productsattrs
Authorization: Bearer <token>

GET /productsattrs/{id}

GET /productsattrs/1
Authorization: Bearer <token>

POST /productsattrs

POST /productsattrs
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 3,
  "attrs": {
    "1": 0,
    "2": 0,
    "4": 6
  },
  "price": 90.00,
  "count": 1
}
Field Required Description
product_idyesProduct ID
attrsyesAttribute values map: {"attr_id": value_id, ...}
pricenoSale price
old_pricenoOld price
buy_pricenoPurchase price
countnoStock quantity
eannoEAN / barcode
weightnoWeight

PATCH /productsattrs/{id}

PATCH /productsattrs/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "attrs": {
    "4": 7
  },
  "count": 50
}

At least one field required (except product_attr_id).

DELETE /productsattrs/{id}

DELETE /productsattrs/1
Authorization: Bearer <token>

productsattr2s

DB table: #__jshopping_products_attr2 | PK: id

Response fields

Field Type Description
id int Record ID
product_id int Product ID
attr_id int Attribute ID
attr_value_id int Attribute value ID
price_mod string Price modifier sign (+ / -)
addprice decimal Price addition/subtraction

GET /productsattr2s

GET /productsattr2s
Authorization: Bearer <token>

Filters

ParameterTypeDescription
filter[product_id]intFilter by product ID

Example:

GET /productsattr2s?filter[product_id]=5
Authorization: Bearer <token>

GET /productsattr2s/{id}

GET /productsattr2s/1
Authorization: Bearer <token>

POST /productsattr2s

POST /productsattr2s
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "attr_id": 2,
  "attr_value_id": 10,
  "price_mod": "+",
  "addprice": 5.00
}
Field Required
product_id yes
attr_id yes
attr_value_id yes
price_mod no
addprice no

PATCH /productsattr2s/{id}

PATCH /productsattr2s/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "addprice": 10.00
}

At least one field required (except id).

DELETE /productsattr2s/{id}

DELETE /productsattr2s/1
Authorization: Bearer <token>

productsfreeattrs

DB table: #__jshopping_products_free_attr | PK: id

Links products to free (custom) attributes.

Response fields

Field Type Description
idintRecord ID
product_idintProduct ID
attr_idintFree attribute ID (FK → #__jshopping_free_attr)

GET /productsfreeattrs

GET /productsfreeattrs
Authorization: Bearer <token>

GET /productsfreeattrs/{id}

GET /productsfreeattrs/1
Authorization: Bearer <token>

POST /productsfreeattrs

POST /productsfreeattrs
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "attr_id": 2
}
Field Required
product_idyes
attr_idyes

PATCH /productsfreeattrs/{id}

PATCH /productsfreeattrs/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "attr_id": 3
}

DELETE /productsfreeattrs/{id}

DELETE /productsfreeattrs/1
Authorization: Bearer <token>

productsfiles

DB table: #__jshopping_products_files | PK: id

Response fields

Field Type Description
id int File record ID
product_id int Product ID
demo string Demo file filename
demo_descr string Demo file description
file string Full file filename
file_descr string Full file description
ordering int Sort order

GET /productsfiles

GET /productsfiles
Authorization: Bearer <token>

GET /productsfiles/{id}

GET /productsfiles/1
Authorization: Bearer <token>

POST /productsfiles

POST /productsfiles
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "file": "product_manual.pdf",
  "file_descr": "User manual"
}
Field Required Notes
product_idyes
filenoExisting full-file filename
file.base64noBase64 data URI — saves and stores in file
file.urlnoURL to download — saves and stores in file
file_descrno
demonoExisting demo-file filename
demo.base64noBase64 data URI — saves and stores in demo
demo.urlnoURL to download — saves and stores in demo
demo_descrno
orderingno

PATCH /productsfiles/{id}

PATCH /productsfiles/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "ordering": 2
}

At least one field required (except id).

DELETE /productsfiles/{id}

DELETE /productsfiles/1
Authorization: Bearer <token>

productsoptions

DB table: #__jshopping_products_option | PK: id

Response fields

Field Type Description
id int Option record ID
product_id int Product ID
key string Option key (unique per product)
value string Option value

GET /productsoptions

GET /productsoptions
Authorization: Bearer <token>

GET /productsoptions/{id}

GET /productsoptions/1
Authorization: Bearer <token>

POST /productsoptions

POST /productsoptions
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "key": "warranty",
  "value": "2 years"
}
Field Required
product_id yes
key yes
value no

PATCH /productsoptions/{id}

PATCH /productsoptions/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "value": "3 years"
}

At least one field required (except id).

DELETE /productsoptions/{id}

DELETE /productsoptions/1
Authorization: Bearer <token>

productsprices

DB table: #__jshopping_products_prices | PK: price_id

Response fields

Field Type Description
price_id int Price rule ID
product_id int Product ID
discount decimal Discount amount
product_quantity_start int Min quantity for this price
product_quantity_finish int Max quantity for this price (0 = unlimited)

GET /productsprices

GET /productsprices
Authorization: Bearer <token>

GET /productsprices/{id}

GET /productsprices/1
Authorization: Bearer <token>

POST /productsprices

POST /productsprices
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "discount": 5.00,
  "product_quantity_start": 10,
  "product_quantity_finish": 0
}
Field Required
product_id yes
discount no
product_quantity_start no
product_quantity_finish no

PATCH /productsprices/{id}

PATCH /productsprices/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "discount": 10.00
}

At least one field required (except price_id).

DELETE /productsprices/{id}

DELETE /productsprices/1
Authorization: Bearer <token>

productsrelations

DB table: #__jshopping_products_relations | PK: id

Response fields

Field Type Description
id int Relation ID
product_id int Source product ID
product_related_id int Related product ID

GET /productsrelations

GET /productsrelations
Authorization: Bearer <token>

GET /productsrelations/{id}

GET /productsrelations/1
Authorization: Bearer <token>

POST /productsrelations

POST /productsrelations
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "product_related_id": 12
}
Field Required
product_id yes
product_related_id yes

PATCH /productsrelations/{id}

PATCH /productsrelations/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_related_id": 15
}

At least one field required (except id).

DELETE /productsrelations/{id}

DELETE /productsrelations/1
Authorization: Bearer <token>

productfields

DB table: #__jshopping_products_to_extra_fields | PK: product_id

Extra field values for a product. Returned as a fields object where keys are field IDs and values are IDs from fieldvalues (or raw string for legacy fields).

Response fields

Field Type Description
product_id int Product ID (PK)
fields object Extra field values, keyed by field ID

GET /productfields

GET /productfields
Authorization: Bearer <token>

GET /productfields/{product_id}

GET /productfields/1
Authorization: Bearer <token>

Response:

{
  "data": {
    "type": "productfields",
    "id": "1",
    "attributes": {
      "product_id": 1,
      "fields": {
        "1": "4",
        "2": "165",
        "4": 0,
        "60": 0
      }
    }
  }
}

POST /productfields

POST /productfields
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 11,
  "fields": {
    "1": "4",
    "2": "120"
  }
}
Field Required
product_id yes
fields yes

PATCH /productfields/{product_id}

PATCH /productfields/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "fields": {
    "1": "4",
    "2": "165",
    "4": 0,
    "60": 0
  }
}

fields is required. Only the provided keys are updated; other existing columns are preserved.

DELETE /productfields/{product_id}

DELETE /productfields/1
Authorization: Bearer <token>

productsvideos

DB table: #__jshopping_products_videos | PK: video_id

Response fields

Field Type Description
video_id int Video ID
product_id int Product ID
video_name string Video title
video_code string Embed code / URL
video_preview string Preview image filename

GET /productsvideos

GET /productsvideos
Authorization: Bearer <token>

GET /productsvideos/{id}

GET /productsvideos/1
Authorization: Bearer <token>

POST /productsvideos

POST /productsvideos
Authorization: Bearer <token>
Content-Type: application/json

{
  "product_id": 5,
  "video_name": "Product Overview",
  "video_code": "<iframe ...></iframe>"
}
Field Required Notes
product_idyes
video_nameno
video_codeno
video_previewnoExisting preview image filename
video_preview.base64noBase64 data URI — saves and stores in video_preview
video_preview.urlnoURL to download — saves and stores in video_preview

PATCH /productsvideos/{id}

PATCH /productsvideos/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "video_name": "Updated Title"
}

At least one field required (except video_id).

DELETE /productsvideos/{id}

DELETE /productsvideos/1
Authorization: Bearer <token>

shippingmethodpricecountries

DB table: #__jshopping_shipping_method_price_countries | PK: sh_method_country_id

Response fields

Field Type Description
sh_method_country_id int Record ID
country_id int Country ID
sh_pr_method_id int Shipping price method ID

GET /shippingmethodpricecountries

GET /shippingmethodpricecountries
Authorization: Bearer <token>

GET /shippingmethodpricecountries/{id}

GET /shippingmethodpricecountries/1
Authorization: Bearer <token>

POST /shippingmethodpricecountries

POST /shippingmethodpricecountries
Authorization: Bearer <token>
Content-Type: application/json

{
  "country_id": 3,
  "sh_pr_method_id": 1
}
Field Required
country_id yes
sh_pr_method_id yes

PATCH /shippingmethodpricecountries/{id}

PATCH /shippingmethodpricecountries/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "country_id": 5
}

At least one field required (except sh_method_country_id).

DELETE /shippingmethodpricecountries/{id}

DELETE /shippingmethodpricecountries/1
Authorization: Bearer <token>

shippingmethodpriceweights

DB table: #__jshopping_shipping_method_price_weight | PK: sh_pr_weight_id

Response fields

Field Type Description
sh_pr_weight_id int Weight rule ID
sh_pr_method_id int Shipping price method ID
shipping_price decimal Shipping price for this range
shipping_weight_from decimal Weight range start
shipping_weight_to decimal Weight range end
shipping_package_price decimal Package surcharge

GET /shippingmethodpriceweights

GET /shippingmethodpriceweights
Authorization: Bearer <token>

GET /shippingmethodpriceweights/{id}

GET /shippingmethodpriceweights/1
Authorization: Bearer <token>

POST /shippingmethodpriceweights

POST /shippingmethodpriceweights
Authorization: Bearer <token>
Content-Type: application/json

{
  "sh_pr_method_id": 1,
  "shipping_price": 5.00,
  "shipping_weight_from": 0,
  "shipping_weight_to": 1.00
}
Field Required
sh_pr_method_id yes
shipping_price no
shipping_weight_from no
shipping_weight_to no
shipping_package_price no

PATCH /shippingmethodpriceweights/{id}

PATCH /shippingmethodpriceweights/1
Authorization: Bearer <token>
Content-Type: application/json

{
  "shipping_price": 7.50
}

At least one field required (except sh_pr_weight_id).

DELETE /shippingmethodpriceweights/{id}

DELETE /shippingmethodpriceweights/1
Authorization: Bearer <token>

update

Install a JoomShopping addon from a ZIP file (base64-encoded) or a local folder path.

Supported methods: POST only.


POST /update

Option 1 — install from ZIP file (base64)

POST /update
Authorization: Bearer <token>
Content-Type: application/json

{
  "type": "file",
  "filezip": "<base64-encoded ZIP content>"
}

Required fields:

FieldTypeDescription
typestringMust be file
filezipstringZIP archive content encoded as base64

Option 2 — install from local folder

POST /update
Authorization: Bearer <token>
Content-Type: application/json

{
  "type": "folder",
  "folder": "H:\\addons_pack\\Tools\\test"
}

Required fields:

FieldTypeDescription
typestringMust be folder
folderstringAbsolute path to the addon folder on the server

Response 200 OK

{
  "links": {
    "self": "http://site.com/api/index.php/v1/shop/update"
  },
  "data": {
    "type": "update",
    "id": "1",
    "attributes": {
      "result": "Ok"
    }
  }
}

Validation errors 400

ConditionMessage
type not providedMissing required field: type
type is file and filezip is missingMissing required field: filezip
type is folder and folder is missingMissing required field: folder
type has unknown valueInvalid type value. Allowed: file, folder

images

File browser for server-side image/file directories. Read-only (list only).

Skipped files: .htaccess, noimage.jpg, noimage.gif

Response fields

FieldTypeDescription
idintIndex in the file list
namestringFilename

GET /images

GET /images?list[display]=product
Authorization: Bearer <token>

Query parameters

ParameterValuesDefaultDescription
list[display]product, category, manufacturer, attribute, video, demofiles, salefilesproductDirectory to browse
list[limit]intNumber of items per page
list[start]int0Offset

Directory mapping

display valueDirectory (from shop config)
productimage_product_path (thumbnails, prefix thumb_)
categoryimage_category_path
manufacturerimage_manufs_path
attributeimage_attributes_path
videovideo_product_path
demofilesdemo_product_path
salefilesfiles_product_path

Response example

{
  "data": [
    { "type": "images", "id": "0", "attributes": { "name": "product1.jpg" } },
    { "type": "images", "id": "1", "attributes": { "name": "product2.png" } }
  ]
}