Download OpenAPI specification:Download
The products service is responsible for products, pricings and availabilites.
This API is interesting for mainly these use-cases:
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}/availabilitesPrices 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.
Endpoints relevant to retailer importers and other integrators. Data should be provided as ndjson (JSON lines).
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.
| projectID required | string (ProjectID) ID of the project |
| 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. |
| 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 |
| 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. |
"{\"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"{- "sku": "4006381334075",
- "status": "ok"
}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.
| projectID required | string (ProjectID) ID of the project |
| op | string Enum: "put" "delete" |
object (AvailabilityBatchParams) Availability parameters for updating or deleting availabilities in batch |
{- "op": "delete",
- "availability": {
- "shopID": "1234",
- "sku": "4006381334082"
}
}{- "availability": {
- "shopID": "string",
- "value": "inStock",
- "project": "string",
- "sku": "string"
}, - "status": "ok",
- "message": "string"
}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.
| projectID required | string (ProjectID) ID of the project |
| 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. |
{- "sku": "4006381334112",
- "category": "default",
- "prices": [
- {
- "price": "14.99",
- "currency": "EUR",
- "tier": "list",
- "productSetSKU": "4006381334013",
- "basePrice": "14,99 €/kg",
- "quantity": 1
}, - {
- "price": "12.99",
- "currency": "EUR",
- "tier": "discount",
- "basePrice": "12,99 €/kg",
- "validFrom": "2024-12-13T00:00:00Z",
- "validTo": "2024-12-20T23:59:59Z",
- "quantity": 1
}
]
}{- "error": {
- "type": "string",
- "message": "string"
}
}Point of Sale endpoints. Searching for products, looking up information and prices in the context of a shop.
Search for products. The returned products contain the currently valid
list and base price. Only prices with quantity 1 are considered.
| projectID required | string (ProjectID) ID of the project |
| search required | string |
| shopID required | string |
| showProductsWithoutPrices | boolean |
| page | integer |
| perPage | integer |
{- "search": "string",
- "shopID": "string",
- "showProductsWithoutPrices": true,
- "page": 0,
- "perPage": 0
}{- "products": [
- {
- "type": "default",
- "price": 1.2,
- "sku": "string",
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "basePrice": "14,99 €/kg",
- "additionalAttributes": {
- "property1": "string",
- "property2": "string"
}, - "saleRestriction": "string",
- "referenceUnit": "string",
- "encodingUnit": "string",
- "weighByCustomer": true,
- "saleStop": false,
- "notForSale": false,
- "quantityPriceKey": "string"
}
], - "pagination": {
- "page": 1,
- "perPage": 50,
- "totalPages": 2,
- "totalItems": 80
}
}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.
| projectID required | string (ProjectID) ID of the project |
| 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. |
{- "products": [
- {
- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}
]
}Create or update a product. If a product with the same SKU already exists, it will be updated (equivalent to PUT).
| projectID required | string (ProjectID) ID of the project |
| 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. |
| 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 |
| 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. |
{- "sku": "4006381333931",
- "name": "Premium wood oil",
- "description": "Clear 750 ml wood oil",
- "productType": "default",
- "taxCategory": "normal"
}{- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}Retrieve availabilites for a product. Note that it will always respond with availabilities, regardless of whether the project and product actually exists or not.
| 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). |
{- "availabilities": [
- {
- "shopID": "1234",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "notAvailable"
}, - {
- "shopID": "1235",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "listed"
}, - {
- "shopID": "1236",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "inStock"
}
]
}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).
| 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). |
[- {
- "sku": "string",
- "pricings": [
- {
- "category": "string",
- "prices": [
- {
- "price": "14.99",
- "currency": "EUR",
- "tier": "list",
- "basePrice": "14,99 €/kg",
- "validFrom": "2023-01-01T00:00:00Z",
- "validTo": "2023-12-31T23:59:59Z",
- "quantity": 1
}
]
}
]
}
]THIS WILL DELETE EVERYTHING FROM THE PROJECT! PROCEED WITH EXTREME CAUTION!
| projectID required | string (ProjectID) ID of the project |
{- "error": {
- "type": "string",
- "message": "string"
}
}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.
| projectID required | string (ProjectID) ID of the project |
| 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. |
{- "products": [
- {
- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}
]
}Create or update a product. If a product with the same SKU already exists, it will be updated (equivalent to PUT).
| projectID required | string (ProjectID) ID of the project |
| 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. |
| 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 |
| 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. |
{- "sku": "4006381333931",
- "name": "Premium wood oil",
- "description": "Clear 750 ml wood oil",
- "productType": "default",
- "taxCategory": "normal"
}{- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}| 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). |
{- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}Updates a product with the given SKU, or creates it if it doesn't already exists.
| 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). |
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. |
| 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 |
| 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. |
{- "productType": "default",
- "project": "string",
- "depositProduct": "string",
- "bundledProduct": "string",
- "outOfStock": false,
- "deleted": false,
- "taxCategory": "string",
- "codes": [
- {
- "code": "string",
- "template": "default",
- "isPrimary": true,
- "transmissionCode": "string",
- "encodingUnit": "ml",
- "specifiedQuantity": 0
}
], - "baseProduct": "string",
- "controlIndication": 0,
- "forceControl": false,
- "pluSet": [
- "string"
], - "scanMessage": "string",
- "isDiscountable": false,
- "isReturnable": false,
- "priceEntryRequired": false,
- "fulfillmentType": "string",
- "sku": "string",
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "basePrice": "14,99 €/kg",
- "additionalAttributes": {
- "property1": "string",
- "property2": "string"
}, - "saleRestriction": "string",
- "referenceUnit": "string",
- "encodingUnit": "string",
- "weighByCustomer": true,
- "saleStop": false,
- "notForSale": false,
- "quantityPriceKey": "string"
}{- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}| 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). |
{- "error": {
- "type": "string",
- "message": "string"
}
}| 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. |
{- "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": [
- {
- "code": "0654203316514",
- "transmissionCode": "1234203316514",
- "template": "default"
}
], - "additionalAttributes": {
- "this": "that",
- "foo": "bar"
}
}| projectID required | string (ProjectID) ID of the project |
| plu-prefix required | string Partial PLU. Performs a case-insensitive prefix search for the given input. |
[- "4006381334051",
- "4006381334068"
]Search for products. The returned products contain the currently valid
list and base price. Only prices with quantity 1 are considered.
| projectID required | string (ProjectID) ID of the project |
| search required | string |
| shopID required | string |
| showProductsWithoutPrices | boolean |
| page | integer |
| perPage | integer |
{- "search": "string",
- "shopID": "string",
- "showProductsWithoutPrices": true,
- "page": 0,
- "perPage": 0
}{- "products": [
- {
- "type": "default",
- "price": 1.2,
- "sku": "string",
- "name": "string",
- "description": "string",
- "subtitle": "string",
- "basePrice": "14,99 €/kg",
- "additionalAttributes": {
- "property1": "string",
- "property2": "string"
}, - "saleRestriction": "string",
- "referenceUnit": "string",
- "encodingUnit": "string",
- "weighByCustomer": true,
- "saleStop": false,
- "notForSale": false,
- "quantityPriceKey": "string"
}
], - "pagination": {
- "page": 1,
- "perPage": 50,
- "totalPages": 2,
- "totalItems": 80
}
}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.
| projectID required | string (ProjectID) ID of the project |
| 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. |
{- "sku": "4006381334112",
- "category": "default",
- "prices": [
- {
- "price": "14.99",
- "currency": "EUR",
- "tier": "list",
- "productSetSKU": "4006381334013",
- "basePrice": "14,99 €/kg",
- "quantity": 1
}, - {
- "price": "12.99",
- "currency": "EUR",
- "tier": "discount",
- "basePrice": "12,99 €/kg",
- "validFrom": "2024-12-13T00:00:00Z",
- "validTo": "2024-12-20T23:59:59Z",
- "quantity": 1
}
]
}{- "error": {
- "type": "string",
- "message": "string"
}
}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).
| 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). |
[- {
- "sku": "string",
- "pricings": [
- {
- "category": "string",
- "prices": [
- {
- "price": "14.99",
- "currency": "EUR",
- "tier": "list",
- "basePrice": "14,99 €/kg",
- "validFrom": "2023-01-01T00:00:00Z",
- "validTo": "2023-12-31T23:59:59Z",
- "quantity": 1
}
]
}
]
}
]Retrieve availabilites for a product. Note that it will always respond with availabilities, regardless of whether the project and product actually exists or not.
| 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). |
{- "availabilities": [
- {
- "shopID": "1234",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "notAvailable"
}, - {
- "shopID": "1235",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "listed"
}, - {
- "shopID": "1236",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "inStock"
}
]
}Create or update availabilities for a product.
| 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). |
| 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 |
[- {
- "shopID": "1234",
- "value": "notAvailable"
}, - {
- "shopID": "1235",
- "value": "listed"
}, - {
- "shopID": "1236",
- "value": "inStock"
}
]{- "availabilities": [
- {
- "shopID": "1234",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "notAvailable"
}, - {
- "shopID": "1235",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "listed"
}, - {
- "shopID": "1236",
- "project": "a-project",
- "sku": "4006381334099",
- "value": "inStock"
}
]
}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.
| projectID required | string (ProjectID) ID of the project |
| op | string Enum: "put" "delete" |
object (AvailabilityBatchParams) Availability parameters for updating or deleting availabilities in batch |
{- "op": "delete",
- "availability": {
- "shopID": "1234",
- "sku": "4006381334082"
}
}{- "availability": {
- "shopID": "string",
- "value": "inStock",
- "project": "string",
- "sku": "string"
}, - "status": "ok",
- "message": "string"
}Return simple statistics about the products in a time period ranging from a selected date until now.
| projectID required | string (ProjectID) ID of the project |
| since | string Example: since=2022-04-23T18:25:43.511Z ISO 8601 timestamp |
{- "inStock": 240,
- "created": 122,
- "updated": 247,
- "deleted": 8,
- "count": 240
}