# 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"]}}}}
```
