Products

Products are saleable items in your inventory, including modifier products.

List products

GET /v1/companies/5678/products Get all products at a given company
GET /v1/companies/5678/categories/231/products Get all products for a given category at a given company
GET /v1/companies/5678/products ?tag=on_special Filter products by tags at a given company
GET /v1/companies/5678/products ?name=beef Filter products by name at a given company
GET /v1/companies/5678/products ?exactname=latte Filter products by the exact name at a given company
GET /v1/companies/5678/products ?sku=PLU1234 Filter products by SKU at a given company
GET /v1/companies/5678/products ?ids=3928147,3274192 Filter products by ID at a given company
GET /v1/companies/5678/sites/827/products Get all products sold, purchased, or inventoried at a given site
GET /v1/companies/5678/sites/827/products ?sold=true&purchased=false Get all products sold but not purchased by a given site
GET /v1/companies/5678/sites/827/products ?tag=on_special Filter products by tags at a given site
GET /v1/companies/5678/sites/827/products ?fields=categories,variants Get all products at a site with extra fields in the response
GET /v1/companies/5678/sites/827/categories/231/products Get all products for a given category at a given site
  • In addition to the tag, name, exactname and skufilter, you can use boolean filters sold, purchased and inventoried for product filtering at a given site.
  • The show_online flag is used to indicate if this product is shown or hidden. When it is true, Site expects this product should be shown to customers. Otherwise it should be hidden. Hint: Site needs to enable the Online Products feature then edit it under Products > Online Products on Back Office.
  • You can specify a list of fields in the query string in order to return additional data on the endpoint. This can be particularly useful for syncing a menu without needing to pull down every individual item.
  • Available fields are image, categories, option_sets, and variants.

Get a product

GET /v1/companies/5678/products/826018 Get a product

Whenever possible, specify a site ID in your request. The sites section will collapse into the top level of the response, making it much flatter:

GET /v1/companies/5678/sites/543/products/826018 Get a site’s version of a product
GET /v1/companies/5678/products/826018/modifiers Get modifier data for a given product

The pricing of the modifiers above relates to the use of pop-up modifiers in Kounta by Lightspeed whereby site's can set specific pricing when a modifier is attached to a particular product.

Create a product

You can create a product without making it available at any sites.

POST /v1/companies/5678/products Create a product
  • Only the name and either unit_price or unit_price_ex_tax fields are required. The price will be added to the base price list. If no taxes are specified, the product is assumed to be tax free.
  • After you create a product, you should add it to one or more sites for sale. See the Update a product action for details.
  • See Images for how to add product images.
  • is_modifier is optional. If not provided it will default to false.
  • is_modifier cannot be set to true on products that have variants.
  • variable_price is optional and will default to false if not provided.
  • If variable_price is true the POS will always prompt for a price that must be between min_sell_price and max_sell_price.

If you create a product for sale at a specific site, you can include site-specific information inline:

POST /v1/companies/5678/sites/252/products Create a product to be sold at a given site

If the site you specify has been assigned an alternate price list, the price you specify will be assigned to both the base and the assigned price lists.

POST /v1/companies/5678/sites/252/products Create a product with option sets
  • When option_sets is provided is must have at least one item.
  • The option_sets must only contain unique and valid option sets.
  • The order that option sets provided in will be reflected on the POS.
  • When updating a product the option_sets will always replace any existing option_sets.

Update a product

PUT /v1/companies/5678/products/29603 Update a product
  • To add or remove tags or taxes, you need to replace their entire collections.
  • is_modifier, is_inventory and is_sold are optional. If not provided the value will remain the same.
  • is_modifier cannot be set to true on products that have variants.
  • variable_price is optional and will default to false if not provided.
  • If variable_price is true the POS will always prompt for a price that must be between min_sell_price and max_sell_price.

To make products available for sale on one or more sites:

PUT /v1/companies/5678/sites/288/products/29603 Add a product to a site
  • taxes and cost_taxes should be a list of tax IDs.
  • Including a unit_price or cost_price will set the product's sell price or cost price (tax inclusive price) on the site's current price list.

All fields are optional. You can make a product available on a site as simply as:

PUT /v1/companies/5678/sites/288/products/29603 Add a product to a site
DELETE /v1/companies/5678/sites/288/products/29603 Remove a product from a site

List of Webhooks

Here is a list of the supported webhook topics.

Important: It is possible for individual sites to override the company-level product; such as a different price. However, the webhooks below are only subscriptions to the company-level products or enabling /disabling product on any given sites. Changes to site-level products or price lists will not cause the webhook to be triggered.

products/created

When a product is created. You will receive the complete product.

products/updated

When a company-level product is updated or a product is enabled or disabled on any given sites. You will receive the complete product after the modifications have been applied.

You also may provide the following attribute filters:

  • show_online

Note that when filtering by show_online, any changes to products where show_online is true will trigger a webhook notification.

products/deleted

When a product is deleted. You will receive the complete product.

Important: A company-level product may be assigned to none, one or several sites. Unassigning a product from a site is not the same as removing it at a company level. This webhook is only triggered if the product is deleted at a company-level.

products/availability

When a product's availability has changed (e.g. is_available from true to false or amount from 5 to 4), you will receive the updated product availability data as below.

Important: When creating products/availability webhook, site_ids filter is required as this feature is strictly site-level

Units

The current units of measure we support are ml for millilitre, l for liter, g for gram, kg for kilogram and unit case insensitive.