# 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`