Skip to main content

Product Service API (v1)

Download OpenAPI specification:Download

The products service is responsible for products, pricings and availabilites.

  • A product consist of an SKU and a lot of information and metadata related to it.
  • A pricing is the full set of possible prices for a product and the conditions that may trigger it.
  • An availability represents the state of a product being available in a given shop.

This API is interesting for mainly these use-cases:

  • Retailers integrating with snabble to upload their products and prices.
  • Points of sale (POS) and self-scanning apps, searching and looking up product information and prices.
  • Administrators inspecting products and prices, mainly in snabble's Retailer Portal.

Under the hood, snabble's internal services make use of the service's internal endpoints for calculating carts, etc. These endpoints are documented internally.

All endpoints exist within the following paths:

  • /{projectID}/products
  • /{projectID}/pricing
  • /{projectID}/availabilites

Prices and products can exist independently of another. They are joined through their SKU, in the context of a project and a pricing category configured for a shop.

As this is one of the eldest and most central APIs at snabble. it has undergone a lot of changes over time.

The original product schema was later extended with a new content-type application/vnd.snabble.product.list.v2+json, which has since become the standard.

In 2025, we launched a new major version of the pricing API that features price conditions. As the schema changes were not backwards-compatible, we offer them with a v2 prefix.

For example, the main endpoint for retailer importing prices is now /{projectID}/pricing/v2/category/batch.

Importers

Endpoints relevant to retailer importers and other integrators. Data should be provided as ndjson (JSON lines).

Batch update of products

Import a batch of products. Maximal batch size is 20000 items for streaming NDJSON.

The NDJSON request body is streamed as one JSON object per line. The schema describes one product in the stream.

If any of the individual product updates cannot be processed, the service will still return status code 200.

It is therefore important to inspect the response and the status codes within.

It is also possible to import an array of products as application/json, but then the batch size is limited to 500.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema:
required
productType
string (StandardProductType)

Type of the product.

project
string (ProjectID)

ID of the project

depositProduct
string

The SKU of the associated deposit product. If a user scans a product with a deposit SKU, the latter will automatically be added to the cart. Deposit products can not be bought on their own.

bundledProduct
string

The SKU of the product contained in the bundle. Bundles are products that contain other products, ie. a crate of beer bottles.

outOfStock
boolean
Default: false

Flag to indicate if the product is currently available in markets.

deleted
boolean
Default: false

Flag to indicate that a product does not exist any longer.

taxCategory
string

Identifier of the tax category

Array of objects (Code)

Object codes

baseProduct
string

SKU of the base product for this variant.

controlIndication
number
Default: 0

Indicates necessity of control on self-checkout registers. -1 no control needed, 1 high control indication. Default is 0, meaning the project control probability applies.

forceControl
boolean
Default: false

Flag to always trigger control on self-checkout registers.

pluSet
Array of strings (PLU)

PLUs, short codes to identify a weighable product

scanMessage
string

Identifier of a message shown to the user after scanning a product (e.g. a product has more than one package).

isDiscountable
boolean
Default: false

Flag to indicate if the product should be considered for discounts.

isReturnable
boolean
Default: false

Flag to indicate that the product can be returned.

priceEntryRequired
boolean
Default: false

Flag to indicate if the price of the product should be provided by the customer or the cashier.

fulfillmentType
string

Attribute linking the product with a fulfillment process (i.e. issuing of goods through a vending machine)

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

name
string

The display name of the product

description
string or null

A short description of the product

subtitle
string or null

An additional title line for individual use (e.g. brand information)

imageUrl
string or null

The full URL for a product image

basePrice
string (BasePrice)

The base price as typically displayed on shelf labels.

object

A string map of additional attributes for special use-cases.

saleRestriction
string or null

Sales restrictions, usually minimum age being min_age_ followed by a number.

referenceUnit
string or null

The unit in which the price attribute is calculated (e.g. "kg" where price is EUR/Kg).

encodingUnit
string or null

Unit which is used as encoding within the EAN (e.g. "g" when the EAN contains grams).

weighByCustomer
boolean or null

Flag, if the product is prepackaged, or the customer has to do weighting by themselves.

saleStop
boolean
Default: false

Flag to indicate if there is a sale stop for this product. Flagged products can not be purchased and a default message will be shown This product cannot be paid for using the app.

notForSale
boolean
Default: false

Flag to indicate if the product is not for sale. When scanning the product only the scan message will be shown. If there is no scan message This product cannot be paid for using the app, please pay for it at the cashier. will be displayed.

quantityPriceKey
string (QuantityPriceKey)

Key to link products to graduated pricing rules. Products with the same quantity price key are counted together when deciding on quantity-based price for line items. The sum of amounts in line items with the same quantityPriceKey should be used to determine which price quantity condition is satisfied. If the product has no quantityPriceKey, the sum of line items with the same sku should be used.

Responses

Request samples

Content type
"{\"sku\":\"4006381333931\",\"name\":\"Premium wood oil\",\"productType\":\"default\",\"taxCategory\":\"normal\"}\n{\"sku\":\"4006381333948\",\"name\":\"Apples\",\"productType\":\"weighable\",\"referenceUnit\":\"kg\",\"encodingUnit\":\"g\",\"weighByCustomer\":true}\n{\"sku\":\"4006381334013\",\"name\":\"Winter outfit\",\"productType\":\"productSet\",\"setComponents\":[{\"sku\":\"4006381334020\",\"amount\":1},{\"sku\":\"4006381334037\",\"amount\":2},{\"sku\":\"4006381334044\",\"amount\":1}]}\n"

Response samples

Content type
application/x-ndjson
{
  • "sku": "4006381334075",
  • "status": "ok"
}

Batch update of availabilities

Availability batch operation for products in a project.

The NDJSON request body is streamed as one JSON object per line. The schema describes one availability operation in the stream.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/x-ndjson
required
op
string
Enum: "put" "delete"
object (AvailabilityBatchParams)

Availability parameters for updating or deleting availabilities in batch

Responses

Request samples

Content type
application/x-ndjson
{
  • "op": "delete",
  • "availability": {
    }
}

Response samples

Content type
application/json
{
  • "availability": {
    },
  • "status": "ok",
  • "message": "string"
}

Batch update of category pricing

Import a batch of category pricing objects. Maximal batch size is limited to 20000 items.

The NDJSON request body is streamed as one JSON object per line. The schema describes one category pricing object in the stream.

It is also possible to import an array of category pricing objects as application/json, but then the batch size is limited to 500.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema:
required
sku
required
string

The SKU of the product for which the pricing applies.

category
required
string

The product category for which the pricings apply.

Array of objects (Price)

The prices for the product in the category. These will completely replaces the previous prices in the given category. If no prices are included, the product will no longer have any price in the category.

Responses

Request samples

Content type
{
  • "sku": "4006381334112",
  • "category": "default",
  • "prices": [
    ]
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

POS

Point of Sale endpoints. Searching for products, looking up information and prices in the context of a shop.

Get products with price

Search for products. The returned products contain the currently valid list and base price. Only prices with quantity 1 are considered.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/json
search
required
string
shopID
required
string
showProductsWithoutPrices
boolean
page
integer
perPage
integer

Responses

Request samples

Content type
application/json
{
  • "search": "string",
  • "shopID": "string",
  • "showProductsWithoutPrices": true,
  • "page": 0,
  • "perPage": 0
}

Response samples

Content type
application/json
{
  • "products": [
    ],
  • "pagination": {
    }
}

Administration

Endpoints for manually inspecting and operating on products or prices.

Get products

Return a batch of products. If no products are found, the response is empty.

For the NDJSON response media types, the schema describes one item in the stream. Products are streamed as separate JSON objects, one per line.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

query Parameters
limit
integer
Example: limit=100

Sets a limit of products returned. 0 is interpreted as no limit.

q
string

Query string. Will do a full text search in the product name and description and will perform a prefix search with the product SKU, EAN and weighed item id. All products found by either search will be returned.

excludeFromSync
boolean

Filter products by their exclude-from-sync flag. If not set, products with either value are returned.

Responses

Response samples

Content type
{
  • "products": [
    ]
}

Create/update product

Create or update a product. If a product with the same SKU already exists, it will be updated (equivalent to PUT).

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/json
productType
string (StandardProductType)

Type of the product.

project
string (ProjectID)

ID of the project

depositProduct
string

The SKU of the associated deposit product. If a user scans a product with a deposit SKU, the latter will automatically be added to the cart. Deposit products can not be bought on their own.

bundledProduct
string

The SKU of the product contained in the bundle. Bundles are products that contain other products, ie. a crate of beer bottles.

outOfStock
boolean
Default: false

Flag to indicate if the product is currently available in markets.

deleted
boolean
Default: false

Flag to indicate that a product does not exist any longer.

taxCategory
string

Identifier of the tax category

Array of objects (Code)

Object codes

baseProduct
string

SKU of the base product for this variant.

controlIndication
number
Default: 0

Indicates necessity of control on self-checkout registers. -1 no control needed, 1 high control indication. Default is 0, meaning the project control probability applies.

forceControl
boolean
Default: false

Flag to always trigger control on self-checkout registers.

pluSet
Array of strings (PLU)

PLUs, short codes to identify a weighable product

scanMessage
string

Identifier of a message shown to the user after scanning a product (e.g. a product has more than one package).

isDiscountable
boolean
Default: false

Flag to indicate if the product should be considered for discounts.

isReturnable
boolean
Default: false

Flag to indicate that the product can be returned.

priceEntryRequired
boolean
Default: false

Flag to indicate if the price of the product should be provided by the customer or the cashier.

fulfillmentType
string

Attribute linking the product with a fulfillment process (i.e. issuing of goods through a vending machine)

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

name
string

The display name of the product

description
string or null

A short description of the product

subtitle
string or null

An additional title line for individual use (e.g. brand information)

imageUrl
string or null

The full URL for a product image

basePrice
string (BasePrice)

The base price as typically displayed on shelf labels.

object

A string map of additional attributes for special use-cases.

saleRestriction
string or null

Sales restrictions, usually minimum age being min_age_ followed by a number.

referenceUnit
string or null

The unit in which the price attribute is calculated (e.g. "kg" where price is EUR/Kg).

encodingUnit
string or null

Unit which is used as encoding within the EAN (e.g. "g" when the EAN contains grams).

weighByCustomer
boolean or null

Flag, if the product is prepackaged, or the customer has to do weighting by themselves.

saleStop
boolean
Default: false

Flag to indicate if there is a sale stop for this product. Flagged products can not be purchased and a default message will be shown This product cannot be paid for using the app.

notForSale
boolean
Default: false

Flag to indicate if the product is not for sale. When scanning the product only the scan message will be shown. If there is no scan message This product cannot be paid for using the app, please pay for it at the cashier. will be displayed.

quantityPriceKey
string (QuantityPriceKey)

Key to link products to graduated pricing rules. Products with the same quantity price key are counted together when deciding on quantity-based price for line items. The sum of amounts in line items with the same quantityPriceKey should be used to determine which price quantity condition is satisfied. If the product has no quantityPriceKey, the sum of line items with the same sku should be used.

Responses

Request samples

Content type
application/json
Example
{
  • "sku": "4006381333931",
  • "name": "Premium wood oil",
  • "description": "Clear 750 ml wood oil",
  • "productType": "default",
  • "taxCategory": "normal"
}

Response samples

Content type
application/json
Example
{
  • "sku": "4006381334105",
  • "project": "project",
  • "name": "Premium-Holzöl",
  • "description": "farblos, 750ml",
  • "subtitle": "Aplina",
  • "taxCategory": "normal",
  • "productType": "variantBase",
  • "controlIndication": 0.4,
  • "saleRestriction": "min_age_18",
  • "saleStop": true,
  • "notForSale": true,
  • "isDiscountable": true,
  • "isReturnable": true,
  • "scanMessage": "multipack-2",
  • "codes": [
    ],
  • "additionalAttributes": {
    }
}

Get pricing categories

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Get pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "project": "string",
  • "name": "string",
  • "priority": 0,
  • "shops": [
    ]
}

Update pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "project": "string",
  • "name": "string",
  • "priority": 0,
  • "shops": [
    ]
}

Delete pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Delete price for SKU

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

pricingCategoryID
required
string

Responses

Retrieve availabilites

Retrieve availabilites for a product. Note that it will always respond with availabilities, regardless of whether the project and product actually exists or not.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
application/json
{
  • "availabilities": [
    ]
}

Get product pricing for SKU

Get the product pricing for a specific SKU. The response is sorted by category. The prices for a category are sorted by "tier" and then by "validFrom" date (no date for "validFrom" first).

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Sweep project of product and price data

THIS WILL DELETE EVERYTHING FROM THE PROJECT! PROCEED WITH EXTREME CAUTION!

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Products

All endpoints for products.

Get products

Return a batch of products. If no products are found, the response is empty.

For the NDJSON response media types, the schema describes one item in the stream. Products are streamed as separate JSON objects, one per line.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

query Parameters
limit
integer
Example: limit=100

Sets a limit of products returned. 0 is interpreted as no limit.

q
string

Query string. Will do a full text search in the product name and description and will perform a prefix search with the product SKU, EAN and weighed item id. All products found by either search will be returned.

excludeFromSync
boolean

Filter products by their exclude-from-sync flag. If not set, products with either value are returned.

Responses

Response samples

Content type
{
  • "products": [
    ]
}

Create/update product

Create or update a product. If a product with the same SKU already exists, it will be updated (equivalent to PUT).

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/json
productType
string (StandardProductType)

Type of the product.

project
string (ProjectID)

ID of the project

depositProduct
string

The SKU of the associated deposit product. If a user scans a product with a deposit SKU, the latter will automatically be added to the cart. Deposit products can not be bought on their own.

bundledProduct
string

The SKU of the product contained in the bundle. Bundles are products that contain other products, ie. a crate of beer bottles.

outOfStock
boolean
Default: false

Flag to indicate if the product is currently available in markets.

deleted
boolean
Default: false

Flag to indicate that a product does not exist any longer.

taxCategory
string

Identifier of the tax category

Array of objects (Code)

Object codes

baseProduct
string

SKU of the base product for this variant.

controlIndication
number
Default: 0

Indicates necessity of control on self-checkout registers. -1 no control needed, 1 high control indication. Default is 0, meaning the project control probability applies.

forceControl
boolean
Default: false

Flag to always trigger control on self-checkout registers.

pluSet
Array of strings (PLU)

PLUs, short codes to identify a weighable product

scanMessage
string

Identifier of a message shown to the user after scanning a product (e.g. a product has more than one package).

isDiscountable
boolean
Default: false

Flag to indicate if the product should be considered for discounts.

isReturnable
boolean
Default: false

Flag to indicate that the product can be returned.

priceEntryRequired
boolean
Default: false

Flag to indicate if the price of the product should be provided by the customer or the cashier.

fulfillmentType
string

Attribute linking the product with a fulfillment process (i.e. issuing of goods through a vending machine)

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

name
string

The display name of the product

description
string or null

A short description of the product

subtitle
string or null

An additional title line for individual use (e.g. brand information)

imageUrl
string or null

The full URL for a product image

basePrice
string (BasePrice)

The base price as typically displayed on shelf labels.

object

A string map of additional attributes for special use-cases.

saleRestriction
string or null

Sales restrictions, usually minimum age being min_age_ followed by a number.

referenceUnit
string or null

The unit in which the price attribute is calculated (e.g. "kg" where price is EUR/Kg).

encodingUnit
string or null

Unit which is used as encoding within the EAN (e.g. "g" when the EAN contains grams).

weighByCustomer
boolean or null

Flag, if the product is prepackaged, or the customer has to do weighting by themselves.

saleStop
boolean
Default: false

Flag to indicate if there is a sale stop for this product. Flagged products can not be purchased and a default message will be shown This product cannot be paid for using the app.

notForSale
boolean
Default: false

Flag to indicate if the product is not for sale. When scanning the product only the scan message will be shown. If there is no scan message This product cannot be paid for using the app, please pay for it at the cashier. will be displayed.

quantityPriceKey
string (QuantityPriceKey)

Key to link products to graduated pricing rules. Products with the same quantity price key are counted together when deciding on quantity-based price for line items. The sum of amounts in line items with the same quantityPriceKey should be used to determine which price quantity condition is satisfied. If the product has no quantityPriceKey, the sum of line items with the same sku should be used.

Responses

Request samples

Content type
application/json
Example
{
  • "sku": "4006381333931",
  • "name": "Premium wood oil",
  • "description": "Clear 750 ml wood oil",
  • "productType": "default",
  • "taxCategory": "normal"
}

Response samples

Content type
application/json
Example
{
  • "sku": "4006381334105",
  • "project": "project",
  • "name": "Premium-Holzöl",
  • "description": "farblos, 750ml",
  • "subtitle": "Aplina",
  • "taxCategory": "normal",
  • "productType": "variantBase",
  • "controlIndication": 0.4,
  • "saleRestriction": "min_age_18",
  • "saleStop": true,
  • "notForSale": true,
  • "isDiscountable": true,
  • "isReturnable": true,
  • "scanMessage": "multipack-2",
  • "codes": [
    ],
  • "additionalAttributes": {
    }
}

Delete all products

Delete all products in a project.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get product with SKU

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
Example
{
  • "sku": "4006381334105",
  • "project": "project",
  • "name": "Premium-Holzöl",
  • "description": "farblos, 750ml",
  • "subtitle": "Aplina",
  • "taxCategory": "normal",
  • "productType": "variantBase",
  • "controlIndication": 0.4,
  • "saleRestriction": "min_age_18",
  • "saleStop": true,
  • "notForSale": true,
  • "isDiscountable": true,
  • "isReturnable": true,
  • "scanMessage": "multipack-2",
  • "codes": [
    ],
  • "additionalAttributes": {
    }
}

Create or update product with SKU

Updates a product with the given SKU, or creates it if it doesn't already exists.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Request Body schema:

Note that the SKU in the request body must match the path parameter.

productType
string (StandardProductType)

Type of the product.

project
string (ProjectID)

ID of the project

depositProduct
string

The SKU of the associated deposit product. If a user scans a product with a deposit SKU, the latter will automatically be added to the cart. Deposit products can not be bought on their own.

bundledProduct
string

The SKU of the product contained in the bundle. Bundles are products that contain other products, ie. a crate of beer bottles.

outOfStock
boolean
Default: false

Flag to indicate if the product is currently available in markets.

deleted
boolean
Default: false

Flag to indicate that a product does not exist any longer.

taxCategory
string

Identifier of the tax category

Array of objects (Code)

Object codes

baseProduct
string

SKU of the base product for this variant.

controlIndication
number
Default: 0

Indicates necessity of control on self-checkout registers. -1 no control needed, 1 high control indication. Default is 0, meaning the project control probability applies.

forceControl
boolean
Default: false

Flag to always trigger control on self-checkout registers.

pluSet
Array of strings (PLU)

PLUs, short codes to identify a weighable product

scanMessage
string

Identifier of a message shown to the user after scanning a product (e.g. a product has more than one package).

isDiscountable
boolean
Default: false

Flag to indicate if the product should be considered for discounts.

isReturnable
boolean
Default: false

Flag to indicate that the product can be returned.

priceEntryRequired
boolean
Default: false

Flag to indicate if the price of the product should be provided by the customer or the cashier.

fulfillmentType
string

Attribute linking the product with a fulfillment process (i.e. issuing of goods through a vending machine)

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

name
string

The display name of the product

description
string or null

A short description of the product

subtitle
string or null

An additional title line for individual use (e.g. brand information)

imageUrl
string or null

The full URL for a product image

basePrice
string (BasePrice)

The base price as typically displayed on shelf labels.

object

A string map of additional attributes for special use-cases.

saleRestriction
string or null

Sales restrictions, usually minimum age being min_age_ followed by a number.

referenceUnit
string or null

The unit in which the price attribute is calculated (e.g. "kg" where price is EUR/Kg).

encodingUnit
string or null

Unit which is used as encoding within the EAN (e.g. "g" when the EAN contains grams).

weighByCustomer
boolean or null

Flag, if the product is prepackaged, or the customer has to do weighting by themselves.

saleStop
boolean
Default: false

Flag to indicate if there is a sale stop for this product. Flagged products can not be purchased and a default message will be shown This product cannot be paid for using the app.

notForSale
boolean
Default: false

Flag to indicate if the product is not for sale. When scanning the product only the scan message will be shown. If there is no scan message This product cannot be paid for using the app, please pay for it at the cashier. will be displayed.

quantityPriceKey
string (QuantityPriceKey)

Key to link products to graduated pricing rules. Products with the same quantity price key are counted together when deciding on quantity-based price for line items. The sum of amounts in line items with the same quantityPriceKey should be used to determine which price quantity condition is satisfied. If the product has no quantityPriceKey, the sum of line items with the same sku should be used.

Responses

Request samples

Content type
Example
{
  • "productType": "default",
  • "project": "string",
  • "depositProduct": "string",
  • "bundledProduct": "string",
  • "outOfStock": false,
  • "deleted": false,
  • "taxCategory": "string",
  • "codes": [
    ],
  • "baseProduct": "string",
  • "controlIndication": 0,
  • "forceControl": false,
  • "pluSet": [
    ],
  • "scanMessage": "string",
  • "isDiscountable": false,
  • "isReturnable": false,
  • "priceEntryRequired": false,
  • "fulfillmentType": "string",
  • "sku": "string",
  • "name": "string",
  • "description": "string",
  • "subtitle": "string",
  • "basePrice": "14,99 €/kg",
  • "additionalAttributes": {
    },
  • "saleRestriction": "string",
  • "referenceUnit": "string",
  • "encodingUnit": "string",
  • "weighByCustomer": true,
  • "saleStop": false,
  • "notForSale": false,
  • "quantityPriceKey": "string"
}

Response samples

Content type
Example
{
  • "sku": "4006381334105",
  • "project": "project",
  • "name": "Premium-Holzöl",
  • "description": "farblos, 750ml",
  • "subtitle": "Aplina",
  • "taxCategory": "normal",
  • "productType": "variantBase",
  • "controlIndication": 0.4,
  • "saleRestriction": "min_age_18",
  • "saleStop": true,
  • "notForSale": true,
  • "isDiscountable": true,
  • "isReturnable": true,
  • "scanMessage": "multipack-2",
  • "codes": [
    ],
  • "additionalAttributes": {
    }
}

Delete product with SKU

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get product by PLU

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

plu
required
string (PLU)

PLU (Price Look-up) of a product. A PLU can only be assigned to one product. If a PLU is assigned to multiple products in a batch, it will only be applied to one of them.

Responses

Response samples

Content type
application/json
Example
{
  • "sku": "4006381334105",
  • "project": "project",
  • "name": "Premium-Holzöl",
  • "description": "farblos, 750ml",
  • "subtitle": "Aplina",
  • "taxCategory": "normal",
  • "productType": "variantBase",
  • "controlIndication": 0.4,
  • "saleRestriction": "min_age_18",
  • "saleStop": true,
  • "notForSale": true,
  • "isDiscountable": true,
  • "isReturnable": true,
  • "scanMessage": "multipack-2",
  • "codes": [
    ],
  • "additionalAttributes": {
    }
}

Find SKUs for PLU Prefix

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

query Parameters
plu-prefix
required
string

Partial PLU. Performs a case-insensitive prefix search for the given input.

Responses

Response samples

Content type
application/json
[
  • "4006381334051",
  • "4006381334068"
]

Get products with price

Search for products. The returned products contain the currently valid list and base price. Only prices with quantity 1 are considered.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/json
search
required
string
shopID
required
string
showProductsWithoutPrices
boolean
page
integer
perPage
integer

Responses

Request samples

Content type
application/json
{
  • "search": "string",
  • "shopID": "string",
  • "showProductsWithoutPrices": true,
  • "page": 0,
  • "perPage": 0
}

Response samples

Content type
application/json
{
  • "products": [
    ],
  • "pagination": {
    }
}

Get service health

Returns the status of the service.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Response samples

Content type
application/json
{
  • "status": "UP"
}

Prices

All endpoints for prices.

Delete price for SKU

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

pricingCategoryID
required
string

Responses

Batch update of category pricing

Import a batch of category pricing objects. Maximal batch size is limited to 20000 items.

The NDJSON request body is streamed as one JSON object per line. The schema describes one category pricing object in the stream.

It is also possible to import an array of category pricing objects as application/json, but then the batch size is limited to 500.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema:
required
sku
required
string

The SKU of the product for which the pricing applies.

category
required
string

The product category for which the pricings apply.

Array of objects (Price)

The prices for the product in the category. These will completely replaces the previous prices in the given category. If no prices are included, the product will no longer have any price in the category.

Responses

Request samples

Content type
{
  • "sku": "4006381334112",
  • "category": "default",
  • "prices": [
    ]
}

Response samples

Content type
application/json
{
  • "error": {
    }
}

Get product pricing for SKU

Get the product pricing for a specific SKU. The response is sorted by category. The prices for a category are sorted by "tier" and then by "validFrom" date (no date for "validFrom" first).

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Categories

All endpoints for pricing categories.

Get pricing categories

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Response samples

Content type
application/json
[
  • {
    }
]

Create pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Responses

Get pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "project": "string",
  • "name": "string",
  • "priority": 0,
  • "shops": [
    ]
}

Update pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "id": "string",
  • "project": "string",
  • "name": "string",
  • "priority": 0,
  • "shops": [
    ]
}

Delete pricing category

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

pricingCategoryID
required
string

Responses

Response samples

Content type
application/json
{
  • "error": {
    }
}

Availabilities

All endpoints for availabilities.

Retrieve availabilites

Retrieve availabilites for a product. Note that it will always respond with availabilities, regardless of whether the project and product actually exists or not.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Responses

Response samples

Content type
application/json
{
  • "availabilities": [
    ]
}

Create or update availabilities

Create or update availabilities for a product.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

sku
required
string (SKU)

SKU (Stock Keeping Unit) of a product. This must be distinct (primary key).

Request Body schema: application/json
required
Array
shopID
required
string (ShopID)

The ID of the Shop in which the availability applies.

value
required
string (AvailabilityValue)
Enum: "inStock" "listed" "notAvailable"

Classifies the availability for the product in a given sh0op

Responses

Request samples

Content type
application/json
[
  • {
    },
  • {
    },
  • {
    }
]

Response samples

Content type
application/json
{
  • "availabilities": [
    ]
}

Batch update of availabilities

Availability batch operation for products in a project.

The NDJSON request body is streamed as one JSON object per line. The schema describes one availability operation in the stream.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

Request Body schema: application/x-ndjson
required
op
string
Enum: "put" "delete"
object (AvailabilityBatchParams)

Availability parameters for updating or deleting availabilities in batch

Responses

Request samples

Content type
application/x-ndjson
{
  • "op": "delete",
  • "availability": {
    }
}

Response samples

Content type
application/json
{
  • "availability": {
    },
  • "status": "ok",
  • "message": "string"
}

Statistics

Statistics about products.

Get products statistics

Return simple statistics about the products in a time period ranging from a selected date until now.

Authorizations:
bearerAuth
path Parameters
projectID
required
string (ProjectID)

ID of the project

query Parameters
since
string
Example: since=2022-04-23T18:25:43.511Z

ISO 8601 timestamp

Responses

Response samples

Content type
application/json
{
  • "inStock": 240,
  • "created": 122,
  • "updated": 247,
  • "deleted": 8,
  • "count": 240
}