# Products ### Conditions for successful product synchronization #### Products without variants * partner is active * product is active `status = 'A'` * product has a non-zero either price or purchase price: `price > 0` or `purchase_price > 0` * product has a main picture * all defined parameter values are filled for a given category of products - if any value of category parameters is not filled, product will not be displayed #### Product with variants * partner is active * product is active `status = 'A'` * variant is active `status = 'A'` * variant has a non-zero either price or purchase price: `price > 0` or `purchase_price > 0` * all defined parameter values are filled for a given category of products - if any value of category parameters is not filled, product will not be displayed * variant has a main picture * each variant has filled all defined parameter values for a given category of products * the product has defined `variable_parameters`. Use the same order as in the `parameters`, e.g.: ``` "parameters": { "PARAM1": "value 1", "PARAM2": "value 2", "PARAM3": "value 3" }, "variable_parameters": [ "PARAM1", "PARAM2" ] ``` #### Optional parameters If a property is optional and you do not want to use it, do not put it into the request to the API. If you set it with an empty value, error message `Key {key} does not exist or is empty.` may be returned. #### Images Max. image resolution of images sending to API is **2000 px** x **2000 px** and max. size is **2 MB**. Max. response time of the image URL is 3s. Max. amount of images per product is 20. Image URLs can't contain IP addresses or ports. ### Product price protection There are some risks with partner synchronizing products to other shops in different currency. A mistake on partner side may cause the price to be set to the product using incorrect currency. To prevent such mistakes, there is a price protection for product update. Price difference limit between the old and the new price of the product/variant is defined to **30 percent**. If the price of the product/variant is changed by a higher percentage than the defined limit, `force_token` is returned in a response and product is not updated. It is possible to update product with larger price difference by using the `force_token` from unsuccessful product update response. You will need to send this `force_token` as a URL query parameter in another request. `https://mpapi.proxy.omnicado.com/v1/products/{productId}?client_id={clientId}&force_token={forceToken}` By updating the product price via the API with `force_token`, the partner confirms that the new price is right and that he accepts full responsibility for this newly set price. Be careful and do not use force token blindly! API returns a disposable `force_token` key in a response body as a part of the error information on the product update. All changes and use of the token are logged on the MALL side. ## Operations - [Get products list](https://mall-api-proxy.documentation.omnicado.com/operation/operation-get-products.md) - [Create new product](https://mall-api-proxy.documentation.omnicado.com/operation/operation-post-products.md) - [Get existing product detail](https://mall-api-proxy.documentation.omnicado.com/operation/operation-get-products-parameter.md) - [Update existing product](https://mall-api-proxy.documentation.omnicado.com/operation/operation-put-products-parameter.md) - [Delete product](https://mall-api-proxy.documentation.omnicado.com/operation/operation-delete-products-parameter.md) - [Activate product](https://mall-api-proxy.documentation.omnicado.com/operation/operation-post-products-parameter-activate.md) - [Get product availability](https://mall-api-proxy.documentation.omnicado.com/operation/operation-get-products-parameter-availability.md) - [Update product availability](https://mall-api-proxy.documentation.omnicado.com/operation/operation-put-products-parameter-availability.md) - [Get product pricing](https://mall-api-proxy.documentation.omnicado.com/operation/operation-get-products-parameter-pricing.md) - [Update product pricing](https://mall-api-proxy.documentation.omnicado.com/operation/operation-put-products-parameter-pricing.md) - [Get product supply delay](https://mall-api-proxy.documentation.omnicado.com/operation/operation-get-products-parameter-supply-delay.md) - [Update product supply delay](https://mall-api-proxy.documentation.omnicado.com/operation/operation-put-products-parameter-supply-delay.md) - [Set product supply delay](https://mall-api-proxy.documentation.omnicado.com/operation/operation-post-products-parameter-supply-delay.md) - [Delete product supply delay](https://mall-api-proxy.documentation.omnicado.com/operation/operation-delete-products-parameter-supply-delay.md) [Powered by Bump.sh](https://bump.sh)