# Products
## Create Products
`ProductCreateProductsResponse Products.CreateProducts(ProductCreateProductsParams?parameters, CancellationTokencancellationToken = default)`
**post** `/api/v2/public/products`
Creates or updates products in bulk.
### Parameters
- `ProductCreateProductsParams parameters`
- `Boolean flush`
Query param: When true, removes existing products before inserting.
- `IReadOnlyList
body`
Body param
- `required Boolean IsCounted`
- `required string ProductName`
Display name of the product.
- `required string ProductNumber`
Unique product number.
- `Boolean? AllowDecimal`
- `IReadOnlyList? AttentionCode`
- `Double? AverageWeight`
- `string? Barcode`
- `IReadOnlyList? BarcodesArray`
- `string? Barcode`
- `string? BaseUnitName`
- `string? BrandCode`
- `string? BrandDescription`
- `Double CarrierItemQuantity`
- `string? CategoryCode`
- `string? Color`
- `string? ColorCode`
- `IReadOnlyList? CountriesAllowed`
- `IReadOnlyList? CountriesNotAllowed`
- `string? CountryCode`
- `string? DefaultLocationTag`
- `DateTimeOffset? DeprecationDate`
- `Int? ExpirationMinRange`
- `IReadOnlyList? FreeFields`
- `string? Key`
- `Int SortOrder`
- `string? Value`
- `string? ImageUrl`
- `Int? Ioq`
- `Boolean? IsActive`
- `Boolean? IsAdr`
- `Boolean? IsDeleted`
- `Boolean? IsEditMinMax`
- `Boolean? IsEditReplenishment`
- `Boolean? IsExpiration`
- `Boolean? IsMarkdownAllowed`
- `Boolean? IsOrderManually`
- `Boolean? IsOrdering`
- `Boolean? IsPromotion`
- `Boolean? IsResetStoreStock`
- `Boolean? IsSet`
- `Boolean? IsStock`
- `Boolean? IsStoreProduct`
- `Boolean? IsTemplate`
- `Boolean? IsTheft`
- `string? MarginCategory`
- `Double? Moq`
- `Double? Price`
- `Double PriceCompareMultiplier`
- `string? PriceCompareUnit`
- `string? PriceLines`
- `string? ProductDetails`
- `string? ProductReferenceNumber`
- `string? ProductStatus`
- `string? ProductType`
- `string? ProductUrl`
- `IReadOnlyList? PromoStoresAllowed`
- `IReadOnlyList? PromoStoresNotAllowed`
- `Double? PromotionPrice`
- `string? PromotionText`
- `string? PromotionWeek`
- `Double? PurchasePrice`
- `string? PurchaseUnitBarcode`
- `string? PurchaseUnitName`
- `string? PurchaseUnitProductNumber`
- `Double? PurchaseUnitQuantity`
- `string? ReferralProductNumber`
- `IReadOnlyList? SetProducts`
- `string? SetItemQuantity`
- `string? SetProductNumber`
- `IReadOnlyList? ShelfLabels`
- `string? Shelflabel1`
- `string? Shelflabel2`
- `string? Shelflabel3`
- `string? Shelflabel4`
- `string? Shelflabel5`
- `string? Shelflabel6`
- `string? Size`
- `string? SizeCode`
- `string? SmallestProductNumber`
- `Double? SmallestQuantity`
- `string? StoreNumber`
- `IReadOnlyList? StoresAllowed`
- `IReadOnlyList? StoresNotAllowed`
- `string? SupplierName`
- `string? SupplierNumber`
- `string? SupplierProductNumber`
- `IReadOnlyList? Units`
- `required string UnitBarcode`
- `required string UnitName`
- `required Double UnitQuantity`
- `string? VariantCode`
- `string? Volume`
### Returns
- `class ProductCreateProductsResponse:`
Standard success response returned by mutation endpoints.
- `string? Data`
Optional data payload returned by the operation.
- `string? Message`
Human-readable message describing the result.
- `Boolean Success`
Indicates whether the operation completed successfully.
### Example
```csharp
ProductCreateProductsParams parameters = new();
var response = await client.Products.CreateProducts(parameters);
Console.WriteLine(response);
```
## List Products
`ProductListProductsResponse Products.ListProducts(ProductListProductsParams?parameters, CancellationTokencancellationToken = default)`
**get** `/api/v2/public/products`
Retrieves a paginated list of products.
### Parameters
- `ProductListProductsParams parameters`
- `string pageSize`
The number of items per page.
- `string pageStart`
The starting page index for pagination.
- `IReadOnlyList productNumber`
Optional array of product numbers to filter by.
### Returns
- `class ProductListProductsResponse:`
Lightweight paginated result set.
- `Long PageNumber`
Current page number (1-based).
- `Long PageSize`
Maximum number of records returned per page.
- `IReadOnlyList? Records`
Collection of records for the current page.
- `required string Barcode`
- `required string ProductName`
Display name of the product.
- `required string ProductNumber`
Unique product number.
- `Boolean? AllowDecimal`
- `string? AttentionCode`
- `Double? AverageWeight`
- `string? BarcodesArray`
- `string? BaseUnitName`
- `string? BrandCode`
- `string? BrandDescription`
- `Double CarrierItemQuantity`
- `string? CategoryCode`
- `string? Color`
- `string? ColorCode`
- `IReadOnlyList? CountriesAllowed`
- `IReadOnlyList? CountriesNotAllowed`
- `string? CountryCode`
- `DateTimeOffset? DeprecationDate`
- `Int EditMinMaxPercentage`
- `Int? ExpirationMinRange`
- `IReadOnlyList? FreeFields`
- `string? Key`
- `Int SortOrder`
- `string? Value`
- `string? GeneralLedger`
- `string? ImageUrl`
- `Boolean? IsActive`
- `Boolean? IsCounted`
- `Boolean? IsEditMinMax`
- `Boolean? IsEditReplenishment`
- `Boolean? IsExpiration`
- `Boolean? IsOrderManually`
- `Boolean? IsPromotion`
- `Boolean? IsSet`
- `Boolean? IsStock`
- `Boolean? IsStoreProduct`
- `Boolean? IsTemplate`
- `string? MarginCategory`
- `Double? Moq`
- `Double? OldPrice`
- `Double? Price`
- `Double PriceCompareMultiplier`
- `string? PriceCompareUnit`
- `string? PriceLines`
- `string? ProductDetails`
- `string? ProductType`
- `string? ProductUrl`
- `IReadOnlyList? PromoStoresAllowed`
- `IReadOnlyList? PromoStoresNotAllowed`
- `string? Promotion`
- `string? PromotionWeek`
- `Double? PurchasePrice`
- `string? PurchaseUnitBarcode`
- `string? PurchaseUnitName`
- `string? PurchaseUnitProductNumber`
- `Double? PurchaseUnitQuantity`
- `string? ReferralProductID`
- `Boolean? ResetStoreStock`
- `IReadOnlyList? SetProduct`
- `string? SetItemQuantity`
- `string? SetProductNumber`
- `Boolean? ShelfLabel`
- `Boolean? ShelfLabelBarcode`
- `Int? ShelfLabelLayout`
- `Boolean? ShelfLabelPrice`
- `Int ShelfLabelQuantity`
- `string? Size`
- `string? SizeCode`
- `string? SmallestProductNumber`
- `Double? SmallestQuantity`
- `Double? SpecialPrice`
- `IReadOnlyList? StoresAllowed`
- `IReadOnlyList? StoresNotAllowed`
- `string? SupplierID`
- `string? SupplierName`
- `string? SupplierProductNumber`
- `IReadOnlyList? Units`
- `string? UnitBarcode`
- `string? UnitName`
- `Double UnitQuantity`
- `string? VariantCode`
- `Double? VariantFactor`
- `string? VariantFamily`
- `string? Volume`
- `Long TotalRecordCount`
Total number of records matching the query across all pages.
### Example
```csharp
ProductListProductsParams parameters = new();
var response = await client.Products.ListProducts(parameters);
Console.WriteLine(response);
```
## Delete Products
`ProductDeleteProductsResponse Products.DeleteProducts(ProductDeleteProductsParams?parameters, CancellationTokencancellationToken = default)`
**delete** `/api/v2/public/products`
Deletes products by product numbers.
### Parameters
- `ProductDeleteProductsParams parameters`
- `IReadOnlyList? productNumber`
The product numbers to target.
### Returns
- `class ProductDeleteProductsResponse:`
Standard success response returned by mutation endpoints.
- `string? Data`
Optional data payload returned by the operation.
- `string? Message`
Human-readable message describing the result.
- `Boolean Success`
Indicates whether the operation completed successfully.
### Example
```csharp
ProductDeleteProductsParams parameters = new();
var response = await client.Products.DeleteProducts(parameters);
Console.WriteLine(response);
```
## Update Product Attributes
`Products.UpdateProductAttributes(ProductUpdateProductAttributesParamsparameters, CancellationTokencancellationToken = default)`
**put** `/api/v2/public/products/attributes`
Updates a product attribute value across all products matching the old value.
### Parameters
- `ProductUpdateProductAttributesParams parameters`
- `required string attribute`
The attribute name to update.
- `required string newValue`
The new value to set.
- `required string oldValue`
The current value to match.
### Example
```csharp
ProductUpdateProductAttributesParams parameters = new()
{
Attribute = "category_code",
NewValue = "CAT-NEW",
OldValue = "CAT-OLD",
};
await client.Products.UpdateProductAttributes(parameters);
```
## Create Prices
`ProductCreatePricesResponse Products.CreatePrices(ProductCreatePricesParams?parameters, CancellationTokencancellationToken = default)`
**post** `/api/v2/public/products/prices`
Creates or updates product prices.
### Parameters
- `ProductCreatePricesParams parameters`
- `IReadOnlyList body`
- `required string PriceID`
Unique price identifier.
- `required string ProductNumber`
The product number this price applies to.
- `string? CountryCode`
- `Double Price`
- `string? PriceGroup`
- `Double? PriceQuantity`
- `Int PriceType`
- `string? PriceUnit`
- `string? StoreNumber`
- `DateTimeOffset ValidFrom`
- `DateTimeOffset ValidTo`
### Returns
- `class ProductCreatePricesResponse:`
Standard success response returned by mutation endpoints.
- `string? Data`
Optional data payload returned by the operation.
- `string? Message`
Human-readable message describing the result.
- `Boolean Success`
Indicates whether the operation completed successfully.
### Example
```csharp
ProductCreatePricesParams parameters = new();
var response = await client.Products.CreatePrices(parameters);
Console.WriteLine(response);
```
## Create Discount Prices
`ProductCreateDiscountPricesResponse Products.CreateDiscountPrices(ProductCreateDiscountPricesParams?parameters, CancellationTokencancellationToken = default)`
**post** `/api/v2/public/products/discountprices`
Creates or updates discount prices for products.
### Parameters
- `ProductCreateDiscountPricesParams parameters`
- `IReadOnlyList? discounts`
Body param: The list of discount price entries.
- `string? DiscountDescription`
- `string? DiscountGroup`
- `string? DiscountID`
- `Long? DiscountType`
- `Boolean IsDelete`
- `Long? LineNumber`
- `Float? Price`
- `string? ProductNumber`
The product number this discount applies to.
- `DateTimeOffset? ValidFrom`
- `DateTimeOffset? ValidTo`
- `Boolean isFlush`
Header param: When true, removes existing discount prices before inserting.
### Returns
- `class ProductCreateDiscountPricesResponse:`
Standard success response returned by mutation endpoints.
- `string? Data`
Optional data payload returned by the operation.
- `string? Message`
Human-readable message describing the result.
- `Boolean Success`
Indicates whether the operation completed successfully.
### Example
```csharp
ProductCreateDiscountPricesParams parameters = new();
var response = await client.Products.CreateDiscountPrices(parameters);
Console.WriteLine(response);
```
## Domain Types
### Product Item
- `class ProductItem:`
Full product details returned from the products GET endpoint, including units, barcodes, pricing, and store/country assignments.
- `required string Barcode`
- `required string ProductName`
Display name of the product.
- `required string ProductNumber`
Unique product number.
- `Boolean? AllowDecimal`
- `string? AttentionCode`
- `Double? AverageWeight`
- `string? BarcodesArray`
- `string? BaseUnitName`
- `string? BrandCode`
- `string? BrandDescription`
- `Double CarrierItemQuantity`
- `string? CategoryCode`
- `string? Color`
- `string? ColorCode`
- `IReadOnlyList? CountriesAllowed`
- `IReadOnlyList? CountriesNotAllowed`
- `string? CountryCode`
- `DateTimeOffset? DeprecationDate`
- `Int EditMinMaxPercentage`
- `Int? ExpirationMinRange`
- `IReadOnlyList? FreeFields`
- `string? Key`
- `Int SortOrder`
- `string? Value`
- `string? GeneralLedger`
- `string? ImageUrl`
- `Boolean? IsActive`
- `Boolean? IsCounted`
- `Boolean? IsEditMinMax`
- `Boolean? IsEditReplenishment`
- `Boolean? IsExpiration`
- `Boolean? IsOrderManually`
- `Boolean? IsPromotion`
- `Boolean? IsSet`
- `Boolean? IsStock`
- `Boolean? IsStoreProduct`
- `Boolean? IsTemplate`
- `string? MarginCategory`
- `Double? Moq`
- `Double? OldPrice`
- `Double? Price`
- `Double PriceCompareMultiplier`
- `string? PriceCompareUnit`
- `string? PriceLines`
- `string? ProductDetails`
- `string? ProductType`
- `string? ProductUrl`
- `IReadOnlyList? PromoStoresAllowed`
- `IReadOnlyList? PromoStoresNotAllowed`
- `string? Promotion`
- `string? PromotionWeek`
- `Double? PurchasePrice`
- `string? PurchaseUnitBarcode`
- `string? PurchaseUnitName`
- `string? PurchaseUnitProductNumber`
- `Double? PurchaseUnitQuantity`
- `string? ReferralProductID`
- `Boolean? ResetStoreStock`
- `IReadOnlyList? SetProduct`
- `string? SetItemQuantity`
- `string? SetProductNumber`
- `Boolean? ShelfLabel`
- `Boolean? ShelfLabelBarcode`
- `Int? ShelfLabelLayout`
- `Boolean? ShelfLabelPrice`
- `Int ShelfLabelQuantity`
- `string? Size`
- `string? SizeCode`
- `string? SmallestProductNumber`
- `Double? SmallestQuantity`
- `Double? SpecialPrice`
- `IReadOnlyList? StoresAllowed`
- `IReadOnlyList? StoresNotAllowed`
- `string? SupplierID`
- `string? SupplierName`
- `string? SupplierProductNumber`
- `IReadOnlyList? Units`
- `string? UnitBarcode`
- `string? UnitName`
- `Double UnitQuantity`
- `string? VariantCode`
- `Double? VariantFactor`
- `string? VariantFamily`
- `string? Volume`