API
Search…
Product

Product schema

id long? Product ID - cannot be null in PUT/PATCH methods πŸ“Ά EQUALS,ENUM πŸ”½ NONE
_categoryId long Category ID πŸ“Ά EQUALS,ENUM πŸ”½ NONE
_cloudId integer Cloud ID πŸ”½ NONE
_defaultCourseId long? Course ID πŸ“Ά EQUALS,ENUM
_eetSubjectId long? EET Subject ID πŸ“Ά EQUALS,ENUM πŸ”½ NONE
_supplierId long? Supplier ID πŸ“Ά EQUALS,ENUM πŸ”½ NONE
alternativeName string? Product alternative name
currency string?(3) Currency code πŸ”½ NONE
deleted boolean Product deleted - cannot be true in POST/PUT/PATCH methods πŸ“Ά EQUALS, ENUM πŸ”½ BOTH
deliveryNoteIds string? Delivery note IDs πŸ”½ NONE
description string?(1000) Product description πŸ”½ NONE
discountPercent double Discount percent πŸ”½ NONE
discountPermitted boolean Discount permitted πŸ“Ά EQUALS, ENUM
display boolean Product displayed πŸ“Ά EQUALS, ENUM πŸ”½ BOTH
ean string[]? EAN codes πŸ“Ά EQUALS, ENUM πŸ”½ BOTH (sort by the first EAN code in the list)
externalId string? External ID πŸ“Ά EQUALS,ENUM πŸ”½ NONE
features string[] Product features like spicy, vegan etc. primarily used for EOS
flags integer Product flags πŸ“Ά BITS πŸ”½ NONE
hexColor string(7) Product color πŸ”½ NONE
imageUrl string? Product image for EOS services. The value of this field can only be deleted by setting it to null. Non-null values will be ignored.
margin string?(50) Product margin as an exact value (plain number without a currency symbol) or a percentage (number followed by a '%' sign). If the percentage format is used the margin must be <= 100%. πŸ”½ NONE
marginMin double? Minimal margin πŸ”½ NONE
modifiedBy string?(32) Product modified by πŸ”½ NONE
name string(400) Product name πŸ“Ά STRINGπŸ”½ BOTH
notes string[]?(1000) Product notes πŸ”½ NONE
onSale boolean Discount offer πŸ“Ά EQUALS, ENUM
packageItem double? Item's package πŸ”½ NONE
packaging double Number of items in a package πŸ”½ NONE
packagingMeasurement double? Measurement packaging for product πŸ”½ NONE
packagingPriceWithVat double? Price of the packaging with VAT primarily used for EOS πŸ”½ NONE
plu string[]? PLU codes πŸ”½ EQUALS, ENUM πŸ”½ BOTH (sort by the first PLU code in the list)
points double Points for buying the product πŸ”½ NONE
priceInPointsdouble Price value in points
priceWithVat double? Price with VAT πŸ“Ά EQUALS, ENUM πŸ”½ BOTH
priceWithVatB double? Alternative price with vat B
priceWithVatC double? Alternative price with vat C
priceWithVatD double? Alternative price with vat D
priceWithVatE double? Alternative price with vat E
priceWithoutVat double Price without VAT πŸ”½ BOTH
purchasePriceWithoutVat double? Purchase price without VAT πŸ”½ NONE
Please do not round any price values (explained here)
requiresPriceEntry boolean Product requires price entry - must be set the same as the flag REQUIRES_PRICE_ENTRY because both values are used by our systems. πŸ“Ά EQUALS, ENUM
sortOrder long? Product sort order πŸ”½ NONE
stockDeduct boolean Product is deducted from Warehouse πŸ“Ά EQUALS, ENUM
stockOverdraft enum Stock overdraft allows to set whether the product can be sold even if its quantity in the stock is equal or less than 0 - or just display a warning in that case πŸ”½ NONE
subtitle string?(500) Product subtitle πŸ”½ NONE
supplierProductCode string? Supplier's product code πŸ”½ NONE
tags string[]? Tags for a product πŸ“Ά EQUALS, ENUM
unit enum Product unit πŸ“Ά EQUALS πŸ”½ NONE
unitMeasurement enum? Units for product measurement πŸ”½ NONE
vat double VAT value πŸ“Ά EQUALS πŸ”½ BOTH
versionDate timestamp? Last modification date and time πŸ“Ά EQUALS, ENUM, NUMBER πŸ”½ BOTH

Product.stockOverdraft (enum)

// representation like string
ALLOW, WARN, DISABLE

Product response

{
"_categoryId": <long>,
"_cloudId": <integer>,
"_defaultCourseId": <long>,
"_eetSubjectId": <long>,
"_supplierId": <long>,
"alternativeName": <string>,
"currency": <string>,
"deleted": <boolean>,
"deliveryNoteIds": <string>,
"description": <string>,
"discountPercent": <double>,
"discountPermitted": <boolean>,
"display": <boolean>,
"ean": <string[]>,
"externalId": <string>,
"flags": <integer>,
"hexColor": <string>,
"id": <long>,
"margin": <string>,
"marginMin": <double>,
"modifiedBy": <string>,
"name": <string>,
"notes": <string[]>,
"onSale": <boolean>,
"packageItem": <double>,
"packaging": <double>,
"packagingMeasurement": <double>,
"plu": <string>,
"points": <double>,
"priceInPoints": <double>,
"priceWithVat": <double>,
"priceWithVatB": <double>,
"priceWithVatC": <double>,
"priceWithVatD": <double>,
"priceWithVatE": <double>,
"priceWithoutVat": <double>,
"purchasePriceWithoutVat": <double>,
"requiresPriceEntry": <boolean>,
"sortOrder": <long>,
"stockDeduct": <boolean>,
"stockOverdraft": <enum>,
"subtitle": <string>,
"supplierProductCode": <string>,
"tags": <string[]>,
"unit": <enum>,
"unitMeasurement": <enum>,
"vat": <double>,
"versionDate": <timestamp>
}

Product flags

Bit
Name
0
SHORTCUT
1
REQUIRES_QUANTITY_ENTRY
2
REQUIRES_PRICE_ENTRY
3
TIMEABLE
5
MANUAL_SALE_ITEM
6
TIMEABLE_LOCKED
7
JOINT_SALE_ITEM
8
FISCALIZATION_DISABLED
10
ASSEMBLED_ITEM
11
TAKE_AWAY
12
TAKE_AWAY_ITEM
13
SPECIAL
14
WITH_CUSTOMIZATIONS
15
EXEMPTED_VAT
18
UNCERTIFIED_QUANTITY(18)
get
https://api.dotykacka.cz
/v2/clouds/:cloudId/products
Get products
[1] The following entities can be included in the response:
  • customizations- list of customizations
  • ingredients - list of ingredients
Multiple entities can be included at the same time, f.e.: include=customizations,ingredients
Note that the client must have the proper permissions to read the included entity. The API2 will return HTTP error 403 Forbidden otherwise.

Response when other entities are included

{
// paging data
...
"data": [
{
// product fields
...
"customizations": [
{
// customization fields
},
...
],
"ingredients": [
{
// ingredient fields
},
...
]
},
...
]
}
get
https://api.dotykacka.cz
/v2/clouds/:cloudId/products/:productId
Get product
post
https://api.dotykacka.cz
/v2/clouds/:cloudId/products
Create products
// Body request minimum
[
{
"_categoryId": <long>,
"deleted": <boolean>,
"discountPercent": <double>,
"discountPermitted": <boolean>,
"display": <boolean>,
"flags": <integer>,
"hexColor": <string>,
"name": <string>,
"onSale": <boolean>,
"packaging": <double>,
"points": <double>,
"priceWithoutVat": <double>,
"requiresPriceEntry": <boolean>,
"stockDeduct": <boolean>,
"stockOverdraft": <enum>,
"unit": <enum>,
"vat": <double>,
"versionDate": <timestamp>
}
]
put
https://api.dotykacka.cz
/v2/clouds/:cloudId/products
Replace or create products
// Body request minimum
[
{
"_categoryId": <long>,
"deleted": <boolean>,
"discountPercent": <double>,
"discountPermitted": <boolean>,
"display": <boolean>,
"flags": <integer>,
"hexColor": <string>,
"id": <long>,
"name": <string>,
"onSale": <boolean>,
"packaging": <double>,
"points": <double>,
"priceWithoutVat": <double>,
"requiresPriceEntry": <boolean>,
"stockDeduct": <boolean>,
"stockOverdraft": <enum>,
"unit": <enum>,
"vat": <double>,
"versionDate": <timestamp>
}
]
put
https://api.dotykacka.cz
/v2/clouds/:cloudId/products/:productId
Replace or create product
// Body request minimum
{
"_categoryId": <long>,
"deleted": <boolean>,
"discountPercent": <double>,
"discountPermitted": <boolean>,
"display": <boolean>,
"flags": <integer>,
"hexColor": <string>,
"id": <long>,
"name": <string>,
"onSale": <boolean>,
"packaging": <double>,
"points": <double>,
"priceWithoutVat": <double>,
"requiresPriceEntry": <boolean>,
"stockDeduct": <boolean>,
"stockOverdraft": <enum>,
"unit": <enum>,
"vat": <double>,
"versionDate": <timestamp>
}
patch
https://api.dotykacka.cz
/v2/clouds/:cloudId/products/:productId
Partial update of Product
delete
https://api.dotykacka.cz
/v2/clouds/:cloudId/products/:productId
Delete product
[1] Can be one of the following: ERROR, PRESERVE, DELETE. An example BODY can look like this:
{
"productIsIngredient": "DELETE",
"productHasIngredients": "ERROR"
}
If no request BODY is sent (default) or a JSON object with the strategy ERROR is sent and the product has own ingredients or is an ingredient of another product then the API returns an error response with status 409 Conflict with a BODY like in this example:
{
"timestamp": "2021-01-20T15:54:06.319+01:00",
"status": "409",
"error": "Conflict",
"message": "The product is an ingredient",
"resolution": {
"productIsIngredient": [
"ERROR",
"PRESERVE",
"DELETE"
],
"productHasIngredients": [
"ERROR",
"PRESERVE",
"DELETE"
]
}
}
If a request with a strategy DELETE is issued and the product has own ingredients or is an ingredient of another product then the related ingredients are deleted. If a request with a strategy PRESERVE is issued then no ingredients are deleted (ingredients will be preserved).
If a request with a strategy DELETE is issued and the user does not have the permission to delete ingredients then the API returns the following error response:
{
"timestamp": "2021-01-20T15:51:13.362+01:00",
"status": "403",
"error": "Forbidden",
"message": "No permission to delete product ingredients"
}
options
https://api.dotykacka.cz
/v2/clouds/:cloudId/products
Options products
options
https://api.dotykacka.cz
/v2/clouds/:cloudId/products/:productId
Options product