Skip to content
Get started

Products

Create or Update Products
products.create_products(ProductCreateProductsParams**kwargs) -> ProductCreateProductsResponse
POST/api/v2/public/products
List Products
products.list_products(ProductListProductsParams**kwargs) -> ProductListProductsResponse
GET/api/v2/public/products
Delete Products
products.delete_products(ProductDeleteProductsParams**kwargs) -> ProductDeleteProductsResponse
DELETE/api/v2/public/products
Update Product Attributes
products.update_product_attributes(ProductUpdateProductAttributesParams**kwargs) -> ProductUpdateProductAttributesResponse
PUT/api/v2/public/products/attributes
Create Prices
products.create_prices(ProductCreatePricesParams**kwargs) -> ProductCreatePricesResponse
POST/api/v2/public/products/prices
Create Discount Prices
products.create_discount_prices(ProductCreateDiscountPricesParams**kwargs) -> ProductCreateDiscountPricesResponse
POST/api/v2/public/products/discountprices
Create Product Free Fields
products.create_product_free_fields(ProductCreateProductFreeFieldsParams**kwargs) -> ProductCreateProductFreeFieldsResponse
POST/api/v2/public/products/freefields
ModelsExpand Collapse
class ProductItem: …

Full product details returned from the products GET endpoint, including units, barcodes, pricing, and store/country assignments.

barcode: str

Primary barcode for the product.

carrier_item_quantity: float
formatdouble
edit_min_max_percentage: int

How far store staff may move the minimum and maximum levels, as a percentage. Comes from the product’s category, not the product itself.

formatint32
price_compare_multiplier: float

Multiplier applied with price_compare_unit to work out the comparison price.

formatdouble
product_name: str

Display name of the product.

product_number: str

Unique product number.

shelf_label_quantity: int

Number of shelf labels to print.

formatint32
allow_decimal: Optional[bool]

true when the product can be counted in fractions, such as weighed goods.

attention_code: Optional[str]

Attention code that flags the product for special handling.

average_weight: Optional[float]

Average weight of one unit, for products sold by weight.

formatdouble
barcodes_array: Optional[str]

All barcodes for the product, beyond the primary one.

base_unit_name: Optional[str]

Name of the unit the product is counted in.

brand_code: Optional[str]

Brand code in the source system.

brand_description: Optional[str]

Brand name.

category_code: Optional[str]

Category the product belongs to. Matches category_code on the categories endpoint.

color: Optional[str]

Colour name, for products with variants.

color_code: Optional[str]

Colour code, for products with variants.

countries_allowed: Optional[List[str]]

Countries where the product may be sold. Empty means all countries.

countries_not_allowed: Optional[List[str]]

Countries where the product may not be sold.

country_code: Optional[str]

Country the product belongs to.

deprecation_date: Optional[datetime]

Date the product stops being sold. Formatted yyyyMMdd.

formatdate-time
expiration_min_range: Optional[int]

Number of days before expiry at which the product should be acted on.

formatint32
free_fields: Optional[List[FreeField]]

Free key/value fields carried against the product.

sort_order: int

Order the field is shown in.

formatint32
key: Optional[str]

Name of the free field.

value: Optional[str]

Value of the free field.

general_ledger: Optional[str]

General ledger account the product books to.

image_url: Optional[str]

Link to the product image.

is_active: Optional[bool]

false when the product is no longer sold.

is_counted: Optional[bool]

true when the product is included in stock counts.

is_edit_min_max: Optional[bool]

true when store staff may change the minimum and maximum levels.

is_edit_replenishment: Optional[bool]

true when store staff may change the replenishment settings.

is_expiration: Optional[bool]

true when the product has an expiry date that has to be tracked.

is_order_manually: Optional[bool]

true when the product is ordered by hand instead of by replenishment.

is_promotion: Optional[bool]

true when the product is currently on promotion.

is_set: Optional[bool]

true when the product is a set made up of other products.

is_stock: Optional[bool]

true when stock is tracked for this product.

is_store_product: Optional[bool]

true when the product is ranged in the store the request was scoped to.

is_template: Optional[bool]

true when the product is a template rather than a sellable item.

margin_category: Optional[str]

Margin category used for reporting.

moq: Optional[float]

Minimum order quantity. Orders below this are not placed.

formatdouble
old_price: Optional[float]

Previous sales price, kept so a price change can be shown.

formatdouble
price: Optional[float]

Current sales price.

formatdouble
price_compare_unit: Optional[str]

Unit the comparison price is expressed in, such as a litre or a kilo.

price_lines: Optional[str]
product_details: Optional[str]

Free text description of the product.

product_type: Optional[str]

Type of product, used to drive handling in the app.

product_url: Optional[str]

Link to the product page.

promo_stores_allowed: Optional[List[str]]

Store numbers where the promotion applies. Empty means all stores.

promo_stores_not_allowed: Optional[List[str]]

Store numbers where the promotion does not apply.

promotion: Optional[str]

Promotion the product is part of.

promotion_price: Optional[float]

Price while the product is on promotion.

formatdouble
promotion_week: Optional[str]

Week the promotion runs in.

purchase_price: Optional[float]

Price paid to the supplier.

formatdouble
purchase_unit_barcode: Optional[str]

Barcode of the unit the product is ordered in.

purchase_unit_name: Optional[str]

Name of the unit the product is ordered in.

purchase_unit_product_number: Optional[str]

Product number of the purchase unit, when it differs from this product.

purchase_unit_quantity: Optional[float]

How many base units are in one purchase unit.

formatdouble
referral_product_id: Optional[str]
reset_store_stock: Optional[bool]
set_product: Optional[List[SetProduct]]

The products that make up the set, with their quantities.

set_item_quantity: Optional[str]

How many of that component the set contains.

set_product_number: Optional[str]

Product number of a component in the set.

shelf_label: Optional[bool]

true when a shelf label should be printed for this product.

shelf_label_barcode: Optional[bool]

true when the shelf label shows the barcode.

shelf_label_layout: Optional[int]

Layout used when printing a shelf label.

formatint32
shelf_label_price: Optional[bool]

true when the shelf label shows the price.

size: Optional[str]

Size name, for products with variants.

size_code: Optional[str]

Size code, for products with variants.

smallest_product_number: Optional[str]

Product number of the smallest sellable unit, when this product is a larger pack.

smallest_quantity: Optional[float]

How many of the smallest unit this product contains.

formatdouble
special_price: Optional[float]

Temporary price that overrides the normal one while it applies.

formatdouble
stores_allowed: Optional[List[str]]

Store numbers where the product may be sold. Empty means all stores.

stores_not_allowed: Optional[List[str]]

Store numbers where the product may not be sold.

supplier_id: Optional[str]

Supplier code. Matches supplier_code on the suppliers endpoint.

supplier_name: Optional[str]

Supplier name.

supplier_product_number: Optional[str]

The supplier’s own number for this product.

units: Optional[List[Unit]]

The units the product can be handled in, each with its own barcode and quantity.

unit_quantity: float

How many base units this unit contains.

formatdouble
unit_barcode: Optional[str]

Barcode for this unit.

unit_name: Optional[str]

Name of the unit.

variant_code: Optional[str]

Code that identifies this specific variant.

variant_factor: Optional[float]
formatdouble
variant_family: Optional[str]

Code shared by all variants of the same product.

volume: Optional[str]

Volume or content of the product, as text.

class ProductCreateProductsResponse: …

Standard success response returned by mutation endpoints.

success: bool

Indicates whether the operation completed successfully.

data: Optional[str]

Optional data payload returned by the operation.

message: Optional[str]

Human-readable message describing the result.

class ProductListProductsResponse: …

Lightweight paginated result set.

page_number: int

Current page number (1-based).

formatint64
page_size: int

Maximum number of records returned per page.

formatint32
total_record_count: int

Total number of records matching the query across all pages.

formatint64
records: Optional[List[ProductItem]]

Collection of records for the current page.

barcode: str

Primary barcode for the product.

carrier_item_quantity: float
formatdouble
edit_min_max_percentage: int

How far store staff may move the minimum and maximum levels, as a percentage. Comes from the product’s category, not the product itself.

formatint32
price_compare_multiplier: float

Multiplier applied with price_compare_unit to work out the comparison price.

formatdouble
product_name: str

Display name of the product.

product_number: str

Unique product number.

shelf_label_quantity: int

Number of shelf labels to print.

formatint32
allow_decimal: Optional[bool]

true when the product can be counted in fractions, such as weighed goods.

attention_code: Optional[str]

Attention code that flags the product for special handling.

average_weight: Optional[float]

Average weight of one unit, for products sold by weight.

formatdouble
barcodes_array: Optional[str]

All barcodes for the product, beyond the primary one.

base_unit_name: Optional[str]

Name of the unit the product is counted in.

brand_code: Optional[str]

Brand code in the source system.

brand_description: Optional[str]

Brand name.

category_code: Optional[str]

Category the product belongs to. Matches category_code on the categories endpoint.

color: Optional[str]

Colour name, for products with variants.

color_code: Optional[str]

Colour code, for products with variants.

countries_allowed: Optional[List[str]]

Countries where the product may be sold. Empty means all countries.

countries_not_allowed: Optional[List[str]]

Countries where the product may not be sold.

country_code: Optional[str]

Country the product belongs to.

deprecation_date: Optional[datetime]

Date the product stops being sold. Formatted yyyyMMdd.

formatdate-time
expiration_min_range: Optional[int]

Number of days before expiry at which the product should be acted on.

formatint32
free_fields: Optional[List[FreeField]]

Free key/value fields carried against the product.

sort_order: int

Order the field is shown in.

formatint32
key: Optional[str]

Name of the free field.

value: Optional[str]

Value of the free field.

general_ledger: Optional[str]

General ledger account the product books to.

image_url: Optional[str]

Link to the product image.

is_active: Optional[bool]

false when the product is no longer sold.

is_counted: Optional[bool]

true when the product is included in stock counts.

is_edit_min_max: Optional[bool]

true when store staff may change the minimum and maximum levels.

is_edit_replenishment: Optional[bool]

true when store staff may change the replenishment settings.

is_expiration: Optional[bool]

true when the product has an expiry date that has to be tracked.

is_order_manually: Optional[bool]

true when the product is ordered by hand instead of by replenishment.

is_promotion: Optional[bool]

true when the product is currently on promotion.

is_set: Optional[bool]

true when the product is a set made up of other products.

is_stock: Optional[bool]

true when stock is tracked for this product.

is_store_product: Optional[bool]

true when the product is ranged in the store the request was scoped to.

is_template: Optional[bool]

true when the product is a template rather than a sellable item.

margin_category: Optional[str]

Margin category used for reporting.

moq: Optional[float]

Minimum order quantity. Orders below this are not placed.

formatdouble
old_price: Optional[float]

Previous sales price, kept so a price change can be shown.

formatdouble
price: Optional[float]

Current sales price.

formatdouble
price_compare_unit: Optional[str]

Unit the comparison price is expressed in, such as a litre or a kilo.

price_lines: Optional[str]
product_details: Optional[str]

Free text description of the product.

product_type: Optional[str]

Type of product, used to drive handling in the app.

product_url: Optional[str]

Link to the product page.

promo_stores_allowed: Optional[List[str]]

Store numbers where the promotion applies. Empty means all stores.

promo_stores_not_allowed: Optional[List[str]]

Store numbers where the promotion does not apply.

promotion: Optional[str]

Promotion the product is part of.

promotion_price: Optional[float]

Price while the product is on promotion.

formatdouble
promotion_week: Optional[str]

Week the promotion runs in.

purchase_price: Optional[float]

Price paid to the supplier.

formatdouble
purchase_unit_barcode: Optional[str]

Barcode of the unit the product is ordered in.

purchase_unit_name: Optional[str]

Name of the unit the product is ordered in.

purchase_unit_product_number: Optional[str]

Product number of the purchase unit, when it differs from this product.

purchase_unit_quantity: Optional[float]

How many base units are in one purchase unit.

formatdouble
referral_product_id: Optional[str]
reset_store_stock: Optional[bool]
set_product: Optional[List[SetProduct]]

The products that make up the set, with their quantities.

set_item_quantity: Optional[str]

How many of that component the set contains.

set_product_number: Optional[str]

Product number of a component in the set.

shelf_label: Optional[bool]

true when a shelf label should be printed for this product.

shelf_label_barcode: Optional[bool]

true when the shelf label shows the barcode.

shelf_label_layout: Optional[int]

Layout used when printing a shelf label.

formatint32
shelf_label_price: Optional[bool]

true when the shelf label shows the price.

size: Optional[str]

Size name, for products with variants.

size_code: Optional[str]

Size code, for products with variants.

smallest_product_number: Optional[str]

Product number of the smallest sellable unit, when this product is a larger pack.

smallest_quantity: Optional[float]

How many of the smallest unit this product contains.

formatdouble
special_price: Optional[float]

Temporary price that overrides the normal one while it applies.

formatdouble
stores_allowed: Optional[List[str]]

Store numbers where the product may be sold. Empty means all stores.

stores_not_allowed: Optional[List[str]]

Store numbers where the product may not be sold.

supplier_id: Optional[str]

Supplier code. Matches supplier_code on the suppliers endpoint.

supplier_name: Optional[str]

Supplier name.

supplier_product_number: Optional[str]

The supplier’s own number for this product.

units: Optional[List[Unit]]

The units the product can be handled in, each with its own barcode and quantity.

unit_quantity: float

How many base units this unit contains.

formatdouble
unit_barcode: Optional[str]

Barcode for this unit.

unit_name: Optional[str]

Name of the unit.

variant_code: Optional[str]

Code that identifies this specific variant.

variant_factor: Optional[float]
formatdouble
variant_family: Optional[str]

Code shared by all variants of the same product.

volume: Optional[str]

Volume or content of the product, as text.

class ProductDeleteProductsResponse: …

Standard success response returned by mutation endpoints.

success: bool

Indicates whether the operation completed successfully.

data: Optional[str]

Optional data payload returned by the operation.

message: Optional[str]

Human-readable message describing the result.

class ProductUpdateProductAttributesResponse: …
data: bool
code: Optional[int]
formatint32
message: Optional[str]
status: Optional[str]
class ProductCreatePricesResponse: …

Standard success response returned by mutation endpoints.

success: bool

Indicates whether the operation completed successfully.

data: Optional[str]

Optional data payload returned by the operation.

message: Optional[str]

Human-readable message describing the result.

class ProductCreateDiscountPricesResponse: …

Standard success response returned by mutation endpoints.

success: bool

Indicates whether the operation completed successfully.

data: Optional[str]

Optional data payload returned by the operation.

message: Optional[str]

Human-readable message describing the result.

class ProductCreateProductFreeFieldsResponse: …

Standard success response returned by mutation endpoints.

success: bool

Indicates whether the operation completed successfully.

data: Optional[str]

Optional data payload returned by the operation.

message: Optional[str]

Human-readable message describing the result.