> For the complete documentation index, see [llms.txt](https://docs.flowretail.com/api/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.flowretail.com/api/productproperties.md).

# ProductProperties

ProductProperties

## Get list of variants for a product

> Get list of variants for a product

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}},"parameters":{"pageNumberQuery":{"description":"Reference to a specific page in a result set.","in":"query","name":"pageNumber","required":false,"schema":{"type":"integer"}},"pageSizeQuery":{"description":"The number of items per page in a result set.","in":"query","name":"pageSize","required":false,"schema":{"type":"integer"}},"sortByQuery":{"description":"Defines which field the resource list is sorted by.","in":"query","name":"sortBy","required":false,"schema":{"type":"string"}},"sortDirectionQuery":{"description":"Reference to a sort direction","explode":false,"in":"query","name":"sortDirection","schema":{"$ref":"#/components/schemas/SortDirectionENUM"},"style":"form"}},"schemas":{"SortDirectionENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| ASC | Sort in ascending order|\n| DESC | Sort in descending order|\n","enum":["ASC","DESC"],"title":"SortDirectionENUM","type":"string"},"ProductVariantResponseSchema":{"title":"ProductVariantResponseSchema","allOf":[{"type":"object","properties":{"productVariantUid":{"$ref":"#/components/schemas/UID"}},"required":["productVariantUid"]},{"$ref":"#/components/schemas/ProductResponseSchema"}]},"UID":{"title":"UID","type":"string","pattern":"^[A-Za-z0-9-_]+"},"ProductResponseSchema":{"title":"ProductResponseSchema","type":"object","required":["allowAddon","allowCredit","allowNegativePrice","allowPurchase","allowQuantity","allowSale","allowSaleDate","allowDelivery","allowDeliveryDate","allowOrderSpecificCost","allowOrderSpecificName","allowDiscount","availableForWeb","brandUid","brandName","calculationFactor","categoryUids","createdAt","customerAgeRestriction","description","discontinuedFrom","externalId","externalInfo","externalUrl","gtins","height","internalInfo","lastModifiedAt","ledgerNumber","length","name","optionProperties","priceOverride","productGroupUid","productGroupPath","productUid","productType","recommendedRetailPrice","requiredVariantPropertyUids","serialNoRequired","sellOnlyAsAddon","shortDescription","sku","manufacturerSku","suppliers","textProperties","unitLabel","variantProductUids","variantParentProductUid","variants","vatCodeUid","weight","width","links","parents","requirements","coverImage","imageCount","relevance","visibility","commission","productWarrantyUid","excludeFromStatistics","purchasePrice","numberOfPieces","limitToStoreUids","tradeUnit"],"properties":{"allowAddon":{"type":"boolean","description":"This product has addons"},"allowCredit":{"type":"boolean","description":"The product is allowed to credit"},"allowNegativePrice":{"type":"boolean","description":"There can be set a negative price"},"allowPurchase":{"type":"boolean","description":"The product is allowed to be purchased from a supplier"},"allowQuantity":{"type":"boolean","description":"It is allowed to change quantity"},"allowSale":{"$ref":"#/components/schemas/AllowSaleENUM"},"allowSaleDate":{"format":"date-time","type":"string"},"allowDelivery":{"$ref":"#/components/schemas/AllowDeliveryENUM"},"allowDeliveryDate":{"format":"date-time","type":"string"},"allowOrderSpecificCost":{"type":"boolean","description":"Allow to set costPrice on product when adding or updating the product to an order"},"allowOrderSpecificName":{"type":"boolean","description":"Allow to set name on product when adding or updating the product to an order"},"allowDiscount":{"type":"boolean","description":"Allow to add discount to this product."},"availableForWeb":{"type":"boolean","description":"The product is available for web sale"},"brandUid":{"$ref":"#/components/schemas/UID"},"brandName":{"type":"string"},"calculationFactor":{"type":"integer"},"categoryUids":{"type":"array","items":{"$ref":"#/components/schemas/UID"}},"createdAt":{"format":"date-time","type":"string"},"customerAgeRestriction":{"type":"integer","description":"Age restriction for the customer. 0 = no restriction"},"description":{"type":"string"},"discontinuedFrom":{"type":"string","format":"date-time","nullable":true},"externalId":{"type":"string"},"externalInfo":{"type":"string"},"externalUrl":{"type":"string"},"gtins":{"type":"array","items":{"$ref":"#/components/schemas/ProductGtinResponseSchema"}},"height":{"type":"integer"},"internalInfo":{"type":"string"},"lastModifiedAt":{"format":"date-time","type":"string"},"ledgerNumber":{"description":"Ledger number must be a valid number with possible leading zeros","type":"string"},"length":{"type":"integer"},"name":{"type":"string"},"optionProperties":{"description":"A list or propertyUids that extends the product with new properties.","type":"array","items":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}},"priceOverride":{"type":"boolean","description":"Allow to override the price without setting a discount."},"productGroupUid":{"$ref":"#/components/schemas/UID"},"productGroupPath":{"type":"array","items":{"$ref":"#/components/schemas/ProductGroupPathSchema"}},"productUid":{"$ref":"#/components/schemas/UID"},"productType":{"$ref":"#/components/schemas/ProductTypeENUM"},"recommendedRetailPrice":{"type":"integer"},"requiredVariantPropertyUids":{"description":"A list of propertyUids that are required for each variant of this product.","type":"array","items":{"type":"string"}},"serialNoRequired":{"$ref":"#/components/schemas/SerialNoRequiredENUM"},"sellOnlyAsAddon":{"type":"boolean","description":"Can only be sold as an addon product"},"shortDescription":{"type":"string"},"sku":{"type":"string"},"manufacturerSku":{"type":"string"},"suppliers":{"type":"array","items":{"$ref":"#/components/schemas/ProductSupplierResponseSchema"}},"textProperties":{"description":"A list or propertyUids that extends the product with new properties.","type":"array","items":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}},"unitLabel":{"type":"string"},"variantProductUids":{"type":"array","items":{"$ref":"#/components/schemas/UID"}},"variantParentProductUid":{"$ref":"#/components/schemas/UID"},"variants":{"description":"A list of productUids that make up variants of this product.","type":"array","deprecated":true,"items":{"type":"string"}},"vatCodeUid":{"$ref":"#/components/schemas/UID"},"weight":{"type":"integer"},"width":{"type":"integer"},"links":{"type":"array","description":"List of links owned by this product","items":{"$ref":"#/components/schemas/ProductLinkResponseSchema"}},"parents":{"type":"array","description":"List of parents to this product","items":{"$ref":"#/components/schemas/ProductLinkResponseSchema"}},"requirements":{"$ref":"#/components/schemas/ProductRequirementResponseSchema"},"coverImage":{"$ref":"#/components/schemas/CoverImageSchema"},"imageCount":{"type":"integer"},"relevance":{"type":"number"},"visibility":{"$ref":"#/components/schemas/ProductVisibilityENUM"},"commission":{"type":"integer","description":"A commission to be paid to the supplier after delivery."},"productWarrantyUid":{"$ref":"#/components/schemas/UID"},"excludeFromStatistics":{"type":"boolean"},"purchasePrice":{"type":"integer"},"numberOfPieces":{"type":"integer","description":"Indicates how many packages/parts the product consists of."},"limitToStoreUids":{"$ref":"#/components/schemas/LimitToStoreUidsSchema"},"tradeUnit":{"type":"integer"}}},"AllowSaleENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| YES | Allow the product to be sold|\n| NO | Do not allow the product to be sold|\n| NOT_BEFORE_DATE | Do not allow the product to be sold before a specified date|","enum":["YES","NO","NOT_BEFORE_DATE"],"title":"AllowSaleENUM","type":"string"},"AllowDeliveryENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| YES | Allow the product to be delivered|\n| NO | Do not allow the product to be delivered|\n| NOT_BEFORE_DATE | Do not allow the product to be delivered before a specified date|","enum":["YES","NO","NOT_BEFORE_DATE"],"title":"AllowDeliveryENUM","type":"string"},"ProductGtinResponseSchema":{"title":"ProductGtinResponseSchema","type":"object","required":["gtin","primary","type"],"properties":{"gtin":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}}},"ProductPropertyResponseSchema":{"title":"ProductPropertyResponseSchema","type":"object","required":["productPropertyUid","propertyName","propertyOptionName","propertyType","propertyUid","propertyOptionUid","required"],"properties":{"productPropertyUid":{"$ref":"#/components/schemas/UID"},"propertyName":{"type":"string"},"propertyOptionName":{"type":"string"},"propertyType":{"$ref":"#/components/schemas/PropertyTypeENUM"},"propertyText":{"type":"string","description":"Only in use with TEXT properties."},"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"required":{"type":"boolean"}}},"PropertyTypeENUM":{"description":"Describes the type of property a product can have.\n\n|ENUM      | Description |\n| ---------------- | ------------ |\n| TEXT | A single text line such as an URL to a product manual or a reminder to the cashier/salesperson.|\n| SINGLESELECT | A list of values where a product can only have one at any given time.|\n| MULTISELECT | A list of values where a product can have none or several at any given time.|","enum":["TEXT","SINGLESELECT","MULTISELECT"],"title":"PropertyTypeENUM","type":"string"},"ProductGroupPathSchema":{"title":"ProductGroupPathSchema","type":"object","properties":{"name":{"type":"string"},"parentUid":{"$ref":"#/components/schemas/UID"},"productGroupUid":{"$ref":"#/components/schemas/UID"}},"required":["name","parentUid","productGroupUid"]},"ProductTypeENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| STOCK | Price*quantity|\n| NO_STOCK | No quantity|\n| CONFIGURABLE | Master configurable product|\n| FLOWGIFTCARD | Flow Giftcard product|\n| PAYEX_GIFTCARD | Payex Giftcard product|\n| NON_PHYSICAL | Non physical product|\n| PACKAGE_FIXED | Packaged product with fixed content|\n| PACKAGE_DYNAMIC | Packaged product with dynamic content|","enum":["STOCK","NO_STOCK","CONFIGURABLE","FLOWGIFTCARD","PAYEX_GIFTCARD","NON_PHYSICAL","PACKAGE_FIXED","PACKAGE_DYNAMIC"],"minLength":1,"title":"ProductTypeENUM","type":"string"},"SerialNoRequiredENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| NO | No Serial number required|\n| ON_SALE | Can register serial number when selling a product (Serial number is optional)|\n| ON_RECEIVE | Must register serial number when receiving and selling product (Serial number is required)|","enum":["NO","ON_SALE","ON_RECEIVE"],"title":"SerialNoRequiredENUM","type":"string"},"ProductSupplierResponseSchema":{"title":"ProductSupplierResponseSchema","type":"object","required":["name","supplierUid","supplierProductUid","purchasePrice","currency","supplierSku"],"properties":{"name":{"type":"string"},"supplierUid":{"$ref":"#/components/schemas/UID"},"supplierProductUid":{"$ref":"#/components/schemas/UID"},"purchasePrice":{"type":"integer"},"currency":{"type":"string","description":"ISO 4217 code"},"supplierSku":{"type":"string"}}},"ProductLinkResponseSchema":{"title":"ProductLinkResponseSchema","allOf":[{"properties":{"productLinkUid":{"$ref":"#/components/schemas/UID"}},"required":["productLinkUid"],"type":"object"},{"$ref":"#/components/schemas/ProductLinkRequestSchema"}]},"ProductLinkRequestSchema":{"title":"ProductLinkRequestSchema","type":"object","properties":{"linkType":{"$ref":"#/components/schemas/ProductLinkTypeENUM"},"productUid":{"$ref":"#/components/schemas/UID"},"productLinkUid":{"$ref":"#/components/schemas/UID"}},"required":["linkType","productUid"]},"ProductLinkTypeENUM":{"enum":["INSURANCE","ALTERNATIVE","ACCESSORY","SPARE_PART","SERVICE","AUTO_ADD","FREIGHT_SERVICE"],"title":"ProductLinkTypeENUM","type":"string","description":"| ENUM | Description |\n|-------|-------------|\n| INSURANCE | Insurance products allowed to be added to the product |\n| ALTERNATIVE | Alternative products if the main product is not available |\n| ACCESSORY | Accessory products for the main product |\n| SPARE_PART | Spare part that can be used to repair the product |\n| SERVICE | Service products. |\n| FREIGHT_SERVICE | Freight service products. |\n| AUTO_ADD | The products will be auto added to the order and can not be removed without removing the main product. |"},"ProductRequirementResponseSchema":{"title":"ProductRequirementResponseSchema","type":"object","description":"ProductRequirementResponseSchema","required":["requireCustomer","requireCustomerMobile","requireCustomerEmail","requireCustomerDeliveryAddress","orderItemReference"],"properties":{"requireCustomer":{"type":"boolean"},"requireCustomerMobile":{"type":"boolean"},"requireCustomerEmail":{"type":"boolean"},"requireCustomerDeliveryAddress":{"type":"boolean"},"orderItemReference":{"type":"string","description":"If this field has any value, the order line must include a property with the key `ORDERITEM_REFERENCE`. The allowed values for this field are `phone`, `email`, `not_empty`, or a regular expression."}}},"CoverImageSchema":{"title":"CoverImageSchema","type":"object","properties":{"productMediaUid":{"$ref":"#/components/schemas/UID"},"mainUrl":{"type":"string"},"thumbnailUrl":{"type":"string"}},"required":["productMediaUid","mainUrl","thumbnailUrl"]},"ProductVisibilityENUM":{"type":"string","title":"ProductVisibilityENUM","enum":["ALWAYS_VISIBLE","NOT_VISIBLE"]},"LimitToStoreUidsSchema":{"title":"LimitToStoreUidsSchema","type":"array","description":"Limit the product to be used for a list of storeUids.","items":{"$ref":"#/components/schemas/UID"}},"Paging":{"description":"totalCount The total number of items in the result set.\n\npageSize The number of items per page.\n\npageNumber The current page in the result set.","properties":{"pageNumber":{"type":"integer"},"pageSize":{"type":"integer"},"totalCount":{"type":"integer"}},"required":["totalCount","pageSize","pageNumber"],"title":"Paging","type":"object"}},"responses":{"ProductVariantListResponse":{"description":"Example response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProductVariantResponseSchema"}},"paging":{"$ref":"#/components/schemas/Paging"}},"required":["items","paging"]}}}}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/variants":{"get":{"description":"Get list of variants for a product","operationId":"get-tenant-product-variants","parameters":[{"$ref":"#/components/parameters/pageNumberQuery"},{"$ref":"#/components/parameters/pageSizeQuery"},{"$ref":"#/components/parameters/sortByQuery"},{"$ref":"#/components/parameters/sortDirectionQuery"}],"responses":{"200":{"$ref":"#/components/responses/ProductVariantListResponse"}},"summary":"Get list of variants for a product","tags":["ProductProperties"]}}}}
```

## Add a product as variant on a configurable product

> Add a product as variant on a configurable product\
> \
> The productUid in the path should be the configurable product.\
> The productUid in the request body is the product that you want to add as a variant\
> \
> Required permissions: PRODUCT

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}},"responses":{"ProductVariantResponse":{"description":"Example response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductVariantResponseSchema"}}}}},"schemas":{"ProductVariantResponseSchema":{"title":"ProductVariantResponseSchema","allOf":[{"type":"object","properties":{"productVariantUid":{"$ref":"#/components/schemas/UID"}},"required":["productVariantUid"]},{"$ref":"#/components/schemas/ProductResponseSchema"}]},"UID":{"title":"UID","type":"string","pattern":"^[A-Za-z0-9-_]+"},"ProductResponseSchema":{"title":"ProductResponseSchema","type":"object","required":["allowAddon","allowCredit","allowNegativePrice","allowPurchase","allowQuantity","allowSale","allowSaleDate","allowDelivery","allowDeliveryDate","allowOrderSpecificCost","allowOrderSpecificName","allowDiscount","availableForWeb","brandUid","brandName","calculationFactor","categoryUids","createdAt","customerAgeRestriction","description","discontinuedFrom","externalId","externalInfo","externalUrl","gtins","height","internalInfo","lastModifiedAt","ledgerNumber","length","name","optionProperties","priceOverride","productGroupUid","productGroupPath","productUid","productType","recommendedRetailPrice","requiredVariantPropertyUids","serialNoRequired","sellOnlyAsAddon","shortDescription","sku","manufacturerSku","suppliers","textProperties","unitLabel","variantProductUids","variantParentProductUid","variants","vatCodeUid","weight","width","links","parents","requirements","coverImage","imageCount","relevance","visibility","commission","productWarrantyUid","excludeFromStatistics","purchasePrice","numberOfPieces","limitToStoreUids","tradeUnit"],"properties":{"allowAddon":{"type":"boolean","description":"This product has addons"},"allowCredit":{"type":"boolean","description":"The product is allowed to credit"},"allowNegativePrice":{"type":"boolean","description":"There can be set a negative price"},"allowPurchase":{"type":"boolean","description":"The product is allowed to be purchased from a supplier"},"allowQuantity":{"type":"boolean","description":"It is allowed to change quantity"},"allowSale":{"$ref":"#/components/schemas/AllowSaleENUM"},"allowSaleDate":{"format":"date-time","type":"string"},"allowDelivery":{"$ref":"#/components/schemas/AllowDeliveryENUM"},"allowDeliveryDate":{"format":"date-time","type":"string"},"allowOrderSpecificCost":{"type":"boolean","description":"Allow to set costPrice on product when adding or updating the product to an order"},"allowOrderSpecificName":{"type":"boolean","description":"Allow to set name on product when adding or updating the product to an order"},"allowDiscount":{"type":"boolean","description":"Allow to add discount to this product."},"availableForWeb":{"type":"boolean","description":"The product is available for web sale"},"brandUid":{"$ref":"#/components/schemas/UID"},"brandName":{"type":"string"},"calculationFactor":{"type":"integer"},"categoryUids":{"type":"array","items":{"$ref":"#/components/schemas/UID"}},"createdAt":{"format":"date-time","type":"string"},"customerAgeRestriction":{"type":"integer","description":"Age restriction for the customer. 0 = no restriction"},"description":{"type":"string"},"discontinuedFrom":{"type":"string","format":"date-time","nullable":true},"externalId":{"type":"string"},"externalInfo":{"type":"string"},"externalUrl":{"type":"string"},"gtins":{"type":"array","items":{"$ref":"#/components/schemas/ProductGtinResponseSchema"}},"height":{"type":"integer"},"internalInfo":{"type":"string"},"lastModifiedAt":{"format":"date-time","type":"string"},"ledgerNumber":{"description":"Ledger number must be a valid number with possible leading zeros","type":"string"},"length":{"type":"integer"},"name":{"type":"string"},"optionProperties":{"description":"A list or propertyUids that extends the product with new properties.","type":"array","items":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}},"priceOverride":{"type":"boolean","description":"Allow to override the price without setting a discount."},"productGroupUid":{"$ref":"#/components/schemas/UID"},"productGroupPath":{"type":"array","items":{"$ref":"#/components/schemas/ProductGroupPathSchema"}},"productUid":{"$ref":"#/components/schemas/UID"},"productType":{"$ref":"#/components/schemas/ProductTypeENUM"},"recommendedRetailPrice":{"type":"integer"},"requiredVariantPropertyUids":{"description":"A list of propertyUids that are required for each variant of this product.","type":"array","items":{"type":"string"}},"serialNoRequired":{"$ref":"#/components/schemas/SerialNoRequiredENUM"},"sellOnlyAsAddon":{"type":"boolean","description":"Can only be sold as an addon product"},"shortDescription":{"type":"string"},"sku":{"type":"string"},"manufacturerSku":{"type":"string"},"suppliers":{"type":"array","items":{"$ref":"#/components/schemas/ProductSupplierResponseSchema"}},"textProperties":{"description":"A list or propertyUids that extends the product with new properties.","type":"array","items":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}},"unitLabel":{"type":"string"},"variantProductUids":{"type":"array","items":{"$ref":"#/components/schemas/UID"}},"variantParentProductUid":{"$ref":"#/components/schemas/UID"},"variants":{"description":"A list of productUids that make up variants of this product.","type":"array","deprecated":true,"items":{"type":"string"}},"vatCodeUid":{"$ref":"#/components/schemas/UID"},"weight":{"type":"integer"},"width":{"type":"integer"},"links":{"type":"array","description":"List of links owned by this product","items":{"$ref":"#/components/schemas/ProductLinkResponseSchema"}},"parents":{"type":"array","description":"List of parents to this product","items":{"$ref":"#/components/schemas/ProductLinkResponseSchema"}},"requirements":{"$ref":"#/components/schemas/ProductRequirementResponseSchema"},"coverImage":{"$ref":"#/components/schemas/CoverImageSchema"},"imageCount":{"type":"integer"},"relevance":{"type":"number"},"visibility":{"$ref":"#/components/schemas/ProductVisibilityENUM"},"commission":{"type":"integer","description":"A commission to be paid to the supplier after delivery."},"productWarrantyUid":{"$ref":"#/components/schemas/UID"},"excludeFromStatistics":{"type":"boolean"},"purchasePrice":{"type":"integer"},"numberOfPieces":{"type":"integer","description":"Indicates how many packages/parts the product consists of."},"limitToStoreUids":{"$ref":"#/components/schemas/LimitToStoreUidsSchema"},"tradeUnit":{"type":"integer"}}},"AllowSaleENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| YES | Allow the product to be sold|\n| NO | Do not allow the product to be sold|\n| NOT_BEFORE_DATE | Do not allow the product to be sold before a specified date|","enum":["YES","NO","NOT_BEFORE_DATE"],"title":"AllowSaleENUM","type":"string"},"AllowDeliveryENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| YES | Allow the product to be delivered|\n| NO | Do not allow the product to be delivered|\n| NOT_BEFORE_DATE | Do not allow the product to be delivered before a specified date|","enum":["YES","NO","NOT_BEFORE_DATE"],"title":"AllowDeliveryENUM","type":"string"},"ProductGtinResponseSchema":{"title":"ProductGtinResponseSchema","type":"object","required":["gtin","primary","type"],"properties":{"gtin":{"type":"string"},"primary":{"type":"boolean"},"type":{"type":"string"}}},"ProductPropertyResponseSchema":{"title":"ProductPropertyResponseSchema","type":"object","required":["productPropertyUid","propertyName","propertyOptionName","propertyType","propertyUid","propertyOptionUid","required"],"properties":{"productPropertyUid":{"$ref":"#/components/schemas/UID"},"propertyName":{"type":"string"},"propertyOptionName":{"type":"string"},"propertyType":{"$ref":"#/components/schemas/PropertyTypeENUM"},"propertyText":{"type":"string","description":"Only in use with TEXT properties."},"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"required":{"type":"boolean"}}},"PropertyTypeENUM":{"description":"Describes the type of property a product can have.\n\n|ENUM      | Description |\n| ---------------- | ------------ |\n| TEXT | A single text line such as an URL to a product manual or a reminder to the cashier/salesperson.|\n| SINGLESELECT | A list of values where a product can only have one at any given time.|\n| MULTISELECT | A list of values where a product can have none or several at any given time.|","enum":["TEXT","SINGLESELECT","MULTISELECT"],"title":"PropertyTypeENUM","type":"string"},"ProductGroupPathSchema":{"title":"ProductGroupPathSchema","type":"object","properties":{"name":{"type":"string"},"parentUid":{"$ref":"#/components/schemas/UID"},"productGroupUid":{"$ref":"#/components/schemas/UID"}},"required":["name","parentUid","productGroupUid"]},"ProductTypeENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| STOCK | Price*quantity|\n| NO_STOCK | No quantity|\n| CONFIGURABLE | Master configurable product|\n| FLOWGIFTCARD | Flow Giftcard product|\n| PAYEX_GIFTCARD | Payex Giftcard product|\n| NON_PHYSICAL | Non physical product|\n| PACKAGE_FIXED | Packaged product with fixed content|\n| PACKAGE_DYNAMIC | Packaged product with dynamic content|","enum":["STOCK","NO_STOCK","CONFIGURABLE","FLOWGIFTCARD","PAYEX_GIFTCARD","NON_PHYSICAL","PACKAGE_FIXED","PACKAGE_DYNAMIC"],"minLength":1,"title":"ProductTypeENUM","type":"string"},"SerialNoRequiredENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| NO | No Serial number required|\n| ON_SALE | Can register serial number when selling a product (Serial number is optional)|\n| ON_RECEIVE | Must register serial number when receiving and selling product (Serial number is required)|","enum":["NO","ON_SALE","ON_RECEIVE"],"title":"SerialNoRequiredENUM","type":"string"},"ProductSupplierResponseSchema":{"title":"ProductSupplierResponseSchema","type":"object","required":["name","supplierUid","supplierProductUid","purchasePrice","currency","supplierSku"],"properties":{"name":{"type":"string"},"supplierUid":{"$ref":"#/components/schemas/UID"},"supplierProductUid":{"$ref":"#/components/schemas/UID"},"purchasePrice":{"type":"integer"},"currency":{"type":"string","description":"ISO 4217 code"},"supplierSku":{"type":"string"}}},"ProductLinkResponseSchema":{"title":"ProductLinkResponseSchema","allOf":[{"properties":{"productLinkUid":{"$ref":"#/components/schemas/UID"}},"required":["productLinkUid"],"type":"object"},{"$ref":"#/components/schemas/ProductLinkRequestSchema"}]},"ProductLinkRequestSchema":{"title":"ProductLinkRequestSchema","type":"object","properties":{"linkType":{"$ref":"#/components/schemas/ProductLinkTypeENUM"},"productUid":{"$ref":"#/components/schemas/UID"},"productLinkUid":{"$ref":"#/components/schemas/UID"}},"required":["linkType","productUid"]},"ProductLinkTypeENUM":{"enum":["INSURANCE","ALTERNATIVE","ACCESSORY","SPARE_PART","SERVICE","AUTO_ADD","FREIGHT_SERVICE"],"title":"ProductLinkTypeENUM","type":"string","description":"| ENUM | Description |\n|-------|-------------|\n| INSURANCE | Insurance products allowed to be added to the product |\n| ALTERNATIVE | Alternative products if the main product is not available |\n| ACCESSORY | Accessory products for the main product |\n| SPARE_PART | Spare part that can be used to repair the product |\n| SERVICE | Service products. |\n| FREIGHT_SERVICE | Freight service products. |\n| AUTO_ADD | The products will be auto added to the order and can not be removed without removing the main product. |"},"ProductRequirementResponseSchema":{"title":"ProductRequirementResponseSchema","type":"object","description":"ProductRequirementResponseSchema","required":["requireCustomer","requireCustomerMobile","requireCustomerEmail","requireCustomerDeliveryAddress","orderItemReference"],"properties":{"requireCustomer":{"type":"boolean"},"requireCustomerMobile":{"type":"boolean"},"requireCustomerEmail":{"type":"boolean"},"requireCustomerDeliveryAddress":{"type":"boolean"},"orderItemReference":{"type":"string","description":"If this field has any value, the order line must include a property with the key `ORDERITEM_REFERENCE`. The allowed values for this field are `phone`, `email`, `not_empty`, or a regular expression."}}},"CoverImageSchema":{"title":"CoverImageSchema","type":"object","properties":{"productMediaUid":{"$ref":"#/components/schemas/UID"},"mainUrl":{"type":"string"},"thumbnailUrl":{"type":"string"}},"required":["productMediaUid","mainUrl","thumbnailUrl"]},"ProductVisibilityENUM":{"type":"string","title":"ProductVisibilityENUM","enum":["ALWAYS_VISIBLE","NOT_VISIBLE"]},"LimitToStoreUidsSchema":{"title":"LimitToStoreUidsSchema","type":"array","description":"Limit the product to be used for a list of storeUids.","items":{"$ref":"#/components/schemas/UID"}},"ProductVariantRequestSchema":{"title":"ProductVariantRequestSchema","type":"object","properties":{"productUid":{"$ref":"#/components/schemas/UID"},"productVariantUid":{"$ref":"#/components/schemas/UID"}},"required":["productUid"]}},"requestBodies":{"ProductVariantRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductVariantRequestSchema"}}}}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/variants":{"post":{"summary":"Add a product as variant on a configurable product","operationId":"post-tenant-product-variants","responses":{"200":{"$ref":"#/components/responses/ProductVariantResponse"}},"description":"Add a product as variant on a configurable product\n\nThe productUid in the path should be the configurable product.\nThe productUid in the request body is the product that you want to add as a variant\n\nRequired permissions: PRODUCT","requestBody":{"$ref":"#/components/requestBodies/ProductVariantRequest"},"tags":["ProductProperties"]}}}}
```

## Delete a product variant

> Deletes a product variant.\
> \
> Required permissions: PRODUCT

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/variants/{productVariantUid}":{"delete":{"description":"Deletes a product variant.\n\nRequired permissions: PRODUCT","operationId":"delete-tenant-product-variant-details","responses":{"204":{"description":"No Content"}},"summary":"Delete a product variant","tags":["ProductProperties"]}}}}
```

## Get list of properties for a product

> Get list of properties for a product

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}},"parameters":{"pageNumberQuery":{"description":"Reference to a specific page in a result set.","in":"query","name":"pageNumber","required":false,"schema":{"type":"integer"}},"pageSizeQuery":{"description":"The number of items per page in a result set.","in":"query","name":"pageSize","required":false,"schema":{"type":"integer"}},"sortByQuery":{"description":"Defines which field the resource list is sorted by.","in":"query","name":"sortBy","required":false,"schema":{"type":"string"}},"sortDirectionQuery":{"description":"Reference to a sort direction","explode":false,"in":"query","name":"sortDirection","schema":{"$ref":"#/components/schemas/SortDirectionENUM"},"style":"form"}},"schemas":{"SortDirectionENUM":{"description":"|ENUM      | Description |\n| ---------------- | ------------ |\n| ASC | Sort in ascending order|\n| DESC | Sort in descending order|\n","enum":["ASC","DESC"],"title":"SortDirectionENUM","type":"string"},"ProductPropertyResponseSchema":{"title":"ProductPropertyResponseSchema","type":"object","required":["productPropertyUid","propertyName","propertyOptionName","propertyType","propertyUid","propertyOptionUid","required"],"properties":{"productPropertyUid":{"$ref":"#/components/schemas/UID"},"propertyName":{"type":"string"},"propertyOptionName":{"type":"string"},"propertyType":{"$ref":"#/components/schemas/PropertyTypeENUM"},"propertyText":{"type":"string","description":"Only in use with TEXT properties."},"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"required":{"type":"boolean"}}},"UID":{"title":"UID","type":"string","pattern":"^[A-Za-z0-9-_]+"},"PropertyTypeENUM":{"description":"Describes the type of property a product can have.\n\n|ENUM      | Description |\n| ---------------- | ------------ |\n| TEXT | A single text line such as an URL to a product manual or a reminder to the cashier/salesperson.|\n| SINGLESELECT | A list of values where a product can only have one at any given time.|\n| MULTISELECT | A list of values where a product can have none or several at any given time.|","enum":["TEXT","SINGLESELECT","MULTISELECT"],"title":"PropertyTypeENUM","type":"string"},"Paging":{"description":"totalCount The total number of items in the result set.\n\npageSize The number of items per page.\n\npageNumber The current page in the result set.","properties":{"pageNumber":{"type":"integer"},"pageSize":{"type":"integer"},"totalCount":{"type":"integer"}},"required":["totalCount","pageSize","pageNumber"],"title":"Paging","type":"object"}},"responses":{"ProductPropertyListResponse":{"description":"Example response","content":{"application/json":{"schema":{"type":"object","properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}},"paging":{"$ref":"#/components/schemas/Paging"}},"required":["items","paging"]}}}}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/properties":{"get":{"description":"Get list of properties for a product","operationId":"get-tenant-product-properties","parameters":[{"$ref":"#/components/parameters/pageNumberQuery"},{"$ref":"#/components/parameters/pageSizeQuery"},{"$ref":"#/components/parameters/sortByQuery"},{"$ref":"#/components/parameters/sortDirectionQuery"}],"responses":{"200":{"$ref":"#/components/responses/ProductPropertyListResponse"}},"summary":"Get list of properties for a product","tags":["ProductProperties"]}}}}
```

## Set a property to a product

> Set a property to a product\
> \
> Required permissions: PRODUCT

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}},"responses":{"ProductPropertyResponse":{"description":"Example response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}}}}},"schemas":{"ProductPropertyResponseSchema":{"title":"ProductPropertyResponseSchema","type":"object","required":["productPropertyUid","propertyName","propertyOptionName","propertyType","propertyUid","propertyOptionUid","required"],"properties":{"productPropertyUid":{"$ref":"#/components/schemas/UID"},"propertyName":{"type":"string"},"propertyOptionName":{"type":"string"},"propertyType":{"$ref":"#/components/schemas/PropertyTypeENUM"},"propertyText":{"type":"string","description":"Only in use with TEXT properties."},"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"required":{"type":"boolean"}}},"UID":{"title":"UID","type":"string","pattern":"^[A-Za-z0-9-_]+"},"PropertyTypeENUM":{"description":"Describes the type of property a product can have.\n\n|ENUM      | Description |\n| ---------------- | ------------ |\n| TEXT | A single text line such as an URL to a product manual or a reminder to the cashier/salesperson.|\n| SINGLESELECT | A list of values where a product can only have one at any given time.|\n| MULTISELECT | A list of values where a product can have none or several at any given time.|","enum":["TEXT","SINGLESELECT","MULTISELECT"],"title":"PropertyTypeENUM","type":"string"},"ProductPropertyRequestSchema":{"description":"Add a new product option to a product. If a property is of type TEXT, propertyText is mandatory, else propertyOptionUid is mandatory","title":"ProductPropertyRequestSchema","type":"object","properties":{"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"propertyText":{"type":"string"},"productPropertyUid":{"$ref":"#/components/schemas/UID"}},"required":["propertyUid"]}},"requestBodies":{"ProductPropertyRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPropertyRequestSchema"}}}}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/properties":{"post":{"summary":"Set a property to a product","operationId":"post-tenant-product-properties","description":"Set a property to a product\n\nRequired permissions: PRODUCT","responses":{"200":{"$ref":"#/components/responses/ProductPropertyResponse"}},"requestBody":{"$ref":"#/components/requestBodies/ProductPropertyRequest"},"tags":["ProductProperties"]}}}}
```

## Remove a product property from a product

> Deletes a property from a product.\
> \
> Required permissions: PRODUCT

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/properties/{productPropertyUid}":{"delete":{"operationId":"delete-tenant-product-property-details","description":"Deletes a property from a product.\n\nRequired permissions: PRODUCT","responses":{"204":{"description":"No Content"}},"summary":"Remove a product property from a product","tags":["ProductProperties"]}}}}
```

## Update a text property for a product

> Update a text property for a product\
> \
> Required permissions: PRODUCT

```json
{"openapi":"3.0.2","info":{"title":"Flow Retail API version 2","version":"2.0.0"},"tags":[{"name":"ProductProperties","description":"ProductProperties"}],"servers":[{"description":"Flow Retail Production","url":"https://api.flowretail.com/v2"},{"description":"Flow Retail Stage","url":"https://api.stage.flowretail.com/v2"}],"security":[{"accessToken":[]},{"authToken":[]},{"integrationToken":[]}],"components":{"securitySchemes":{"accessToken":{"description":"Access token recevied after user login with a deviceToken","scheme":"bearer","type":"http"},"authToken":{"description":"Token received from the auth service","scheme":"bearer","type":"http"},"integrationToken":{"scheme":"bearer","type":"http"}},"responses":{"ProductPropertyResponse":{"description":"Example response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductPropertyResponseSchema"}}}}},"schemas":{"ProductPropertyResponseSchema":{"title":"ProductPropertyResponseSchema","type":"object","required":["productPropertyUid","propertyName","propertyOptionName","propertyType","propertyUid","propertyOptionUid","required"],"properties":{"productPropertyUid":{"$ref":"#/components/schemas/UID"},"propertyName":{"type":"string"},"propertyOptionName":{"type":"string"},"propertyType":{"$ref":"#/components/schemas/PropertyTypeENUM"},"propertyText":{"type":"string","description":"Only in use with TEXT properties."},"propertyUid":{"$ref":"#/components/schemas/UID"},"propertyOptionUid":{"$ref":"#/components/schemas/UID"},"required":{"type":"boolean"}}},"UID":{"title":"UID","type":"string","pattern":"^[A-Za-z0-9-_]+"},"PropertyTypeENUM":{"description":"Describes the type of property a product can have.\n\n|ENUM      | Description |\n| ---------------- | ------------ |\n| TEXT | A single text line such as an URL to a product manual or a reminder to the cashier/salesperson.|\n| SINGLESELECT | A list of values where a product can only have one at any given time.|\n| MULTISELECT | A list of values where a product can have none or several at any given time.|","enum":["TEXT","SINGLESELECT","MULTISELECT"],"title":"PropertyTypeENUM","type":"string"},"ProductTextPropertyUpdateRequestSchema":{"description":"Update a new text option to a product","title":"ProductTextPropertyUpdateRequestSchema","type":"object","properties":{"propertyText":{"type":"string"}},"required":["propertyText"]}},"requestBodies":{"ProductTextPropertyUpdateRequest":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductTextPropertyUpdateRequestSchema"}}}}}},"paths":{"/tenants/{tenantUid}/products/{productUid}/text-properties/{propertyUid}":{"put":{"summary":"Update a text property for a product","operationId":"put-tenant-product-text-property-details","description":"Update a text property for a product\n\nRequired permissions: PRODUCT","responses":{"200":{"$ref":"#/components/responses/ProductPropertyResponse"}},"requestBody":{"$ref":"#/components/requestBodies/ProductTextPropertyUpdateRequest"},"tags":["ProductProperties"]}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.flowretail.com/api/productproperties.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
