# Products

## Creates or updates products in bulk.

`products.create_products(ProductCreateProductsParams**kwargs)  -> ProductCreateProductsResponse`

**post** `/api/v2/public/products`

Creates or updates products in bulk.

### Parameters

- `flush: Optional[bool]`

  When true, removes existing products before inserting.

- `products: Optional[Iterable[Product]]`

  The products to create or update.

  - `carrier_item_quantity: float`

    Quantity per carrier item.

  - `is_counted: bool`

    Whether the product is counted.

  - `price_compare_multiplier: float`

    Multiplier used for unit price comparison.

  - `product_name: str`

    Display name of the product.

  - `product_number: str`

    Unique product number.

  - `allow_decimal: Optional[bool]`

    Whether decimal quantities are allowed.

  - `attention_code: Optional[Sequence[str]]`

    Attention codes applied to the product.

  - `average_weight: Optional[float]`

    Average weight of the product.

  - `barcode: Optional[str]`

    Primary barcode for the product.

  - `barcodes_array: Optional[Iterable[ProductBarcodesArray]]`

    Additional barcodes for the product.

    - `barcode: Optional[str]`

      Barcode value.

  - `base_unit_name: Optional[str]`

    Name of the base unit (e.g. piece, kg).

  - `brand_code: Optional[str]`

    Brand code.

  - `brand_description: Optional[str]`

    Brand description.

  - `category_code: Optional[str]`

    Category code the product belongs to.

  - `color: Optional[str]`

    Color name.

  - `color_code: Optional[str]`

    Color code.

  - `countries_allowed: Optional[Sequence[str]]`

    Countries where the product is allowed.

  - `countries_not_allowed: Optional[Sequence[str]]`

    Countries where the product is excluded.

  - `country_code: Optional[str]`

    ISO country code; defaults to "NL".

  - `default_location_tag: Optional[str]`

    Default location tag for the product.

  - `deprecation_date: Optional[Union[str, datetime, null]]`

    Date the product is deprecated.

  - `expiration_min_range: Optional[int]`

    Minimum days remaining before expiration triggers an alert.

  - `free_fields: Optional[Iterable[ProductFreeField]]`

    Custom free-field key/value pairs.

    - `sort_order: int`

      Sort order for display purposes.

    - `key: Optional[str]`

      Free-field key.

    - `value: Optional[str]`

      Free-field value.

  - `general_ledger_account_number: Optional[int]`

    General ledger account number.

  - `image_url: Optional[str]`

    URL of the product image.

  - `ioq: Optional[int]`

    Initial order quantity.

  - `is_active: Optional[bool]`

    Whether the product is active.

  - `is_adr: Optional[bool]`

    Whether the product is classified as ADR (hazardous goods).

  - `is_deleted: Optional[bool]`

    Whether the product is marked deleted.

  - `is_edit_min_max: Optional[bool]`

    Whether min/max can be edited at store level.

  - `is_edit_replenishment: Optional[bool]`

    Whether replenishment values can be edited at store level.

  - `is_expiration: Optional[bool]`

    Whether expiration tracking is enabled for the product.

  - `is_markdown_allowed: Optional[bool]`

    Whether markdown is allowed for the product.

  - `is_order_manually: Optional[bool]`

    Whether the product is ordered manually.

  - `is_ordering: Optional[bool]`

    Whether the product can be ordered.

  - `is_promotion: Optional[bool]`

    Whether the product is currently in promotion.

  - `is_reset_store_stock: Optional[bool]`

    When true, resets store stock for the product.

  - `is_set: Optional[bool]`

    Whether the product is a set/bundle.

  - `is_stock: Optional[bool]`

    Whether the product is stocked.

  - `is_store_product: Optional[bool]`

    Whether the product is store-specific.

  - `is_template: Optional[bool]`

    Whether the product is a template.

  - `is_theft: Optional[bool]`

    Whether the product is theft-sensitive.

  - `ledger_dimension_value: Optional[str]`

    Ledger dimension value used for VC exports.

  - `margin_category: Optional[str]`

    Margin category classification.

  - `moq: Optional[float]`

    Minimum order quantity.

  - `price: Optional[float]`

    Sale price.

  - `price_compare_unit: Optional[str]`

    Unit used for price comparison (e.g. per kg).

  - `price_lines: Optional[str]`

    Comma-separated price line identifiers.

  - `product_description: Optional[str]`

    A description of the product.

  - `product_details: Optional[str]`

    Free-form product details.

  - `product_reference_number: Optional[str]`

    External product reference number.

  - `product_status: Optional[str]`

    Product life-cycle status.

  - `product_type: Optional[str]`

    Product type classification.

  - `product_url: Optional[str]`

    URL of the product detail page.

  - `promo_stores_allowed: Optional[Sequence[str]]`

    Stores where the product is allowed for promotion.

  - `promo_stores_not_allowed: Optional[Sequence[str]]`

    Stores where the product is excluded from promotion.

  - `promotion_price: Optional[float]`

    Promotional price.

  - `promotion_text: Optional[str]`

    Promotion text shown on shelf labels.

  - `promotion_week: Optional[str]`

    Week identifier the promotion applies to.

  - `purchase_price: Optional[float]`

    Purchase price from the supplier.

  - `purchase_unit_barcode: Optional[str]`

    Barcode of the purchase unit.

  - `purchase_unit_name: Optional[str]`

    Name of the purchase unit.

  - `purchase_unit_product_number: Optional[str]`

    Product number of the purchase unit.

  - `purchase_unit_quantity: Optional[float]`

    Quantity in a purchase unit.

  - `purchbook_free_txt: Optional[str]`

    Free text used for purchase book/order exports.

  - `referral_product_number: Optional[str]`

    Referral product number used as a substitute.

  - `set_products: Optional[Iterable[ProductSetProduct]]`

    Products bundled within this set.

    - `set_item_quantity: Optional[str]`

      Quantity of the bundled item.

    - `set_product_number: Optional[str]`

      Product number of the bundled item.

  - `shelf_labels: Optional[Iterable[ProductShelfLabel]]`

    Shelf-label text fields for the product.

    - `shelflabel_1: Optional[str]`

      Shelf label slot 1.

    - `shelflabel_2: Optional[str]`

      Shelf label slot 2.

    - `shelflabel_3: Optional[str]`

      Shelf label slot 3.

    - `shelflabel_4: Optional[str]`

      Shelf label slot 4.

    - `shelflabel_5: Optional[str]`

      Shelf label slot 5.

    - `shelflabel_6: Optional[str]`

      Shelf label slot 6.

  - `size: Optional[str]`

    Size descriptor.

  - `size_code: Optional[str]`

    Size code.

  - `smallest_product_number: Optional[str]`

    Product number of the smallest sub-unit.

  - `smallest_quantity: Optional[float]`

    Quantity of the smallest sub-unit.

  - `store_number: Optional[str]`

    Store number when the product is store-specific.

  - `stores_allowed: Optional[Sequence[str]]`

    Stores where the product is allowed.

  - `stores_not_allowed: Optional[Sequence[str]]`

    Stores where the product is excluded.

  - `supplier_name: Optional[str]`

    Supplier name.

  - `supplier_number: Optional[str]`

    Supplier number.

  - `supplier_product_number: Optional[str]`

    Supplier's product number.

  - `units: Optional[Iterable[ProductUnit]]`

    Units of measure (e.g. box, pallet) the product is sold in.

    - `unit_barcode: str`

      Barcode of the unit.

    - `unit_name: str`

      Name of the unit.

    - `unit_quantity: float`

      Quantity per unit.

  - `variant_code: Optional[str]`

    Variant code.

  - `variant_family: Optional[str]`

    Variant family.

  - `volume: Optional[str]`

    Volume / size descriptor.

### Returns

- `class ProductCreateProductsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.create_products()
print(response.success)
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```

## Retrieves a paginated list of products.

`products.list_products(ProductListProductsParams**kwargs)  -> ProductListProductsResponse`

**get** `/api/v2/public/products`

Retrieves a paginated list of products.

### Parameters

- `page_size: Optional[str]`

- `page_start: Optional[str]`

- `product_number: Optional[Sequence[str]]`

### Returns

- `class ProductListProductsResponse: …`

  Lightweight paginated result set.

  - `page_number: int`

    Current page number (1-based).

  - `page_size: int`

    Maximum number of records returned per page.

  - `total_record_count: int`

    Total number of records matching the query across all pages.

  - `records: Optional[List[ProductItem]]`

    Collection of records for the current page.

    - `barcode: str`

      Primary barcode for the product.

    - `carrier_item_quantity: float`

    - `edit_min_max_percentage: int`

    - `price_compare_multiplier: float`

    - `product_name: str`

      Display name of the product.

    - `product_number: str`

      Unique product number.

    - `shelf_label_quantity: int`

    - `allow_decimal: Optional[bool]`

    - `attention_code: Optional[str]`

    - `average_weight: Optional[float]`

    - `barcodes_array: Optional[str]`

    - `base_unit_name: Optional[str]`

    - `brand_code: Optional[str]`

    - `brand_description: Optional[str]`

    - `category_code: Optional[str]`

    - `color: Optional[str]`

    - `color_code: Optional[str]`

    - `countries_allowed: Optional[List[str]]`

    - `countries_not_allowed: Optional[List[str]]`

    - `country_code: Optional[str]`

    - `deprecation_date: Optional[datetime]`

    - `expiration_min_range: Optional[int]`

    - `free_fields: Optional[List[FreeField]]`

      - `sort_order: int`

      - `key: Optional[str]`

      - `value: Optional[str]`

    - `general_ledger: Optional[str]`

    - `image_url: Optional[str]`

    - `is_active: Optional[bool]`

    - `is_counted: Optional[bool]`

    - `is_edit_min_max: Optional[bool]`

    - `is_edit_replenishment: Optional[bool]`

    - `is_expiration: Optional[bool]`

    - `is_order_manually: Optional[bool]`

    - `is_promotion: Optional[bool]`

    - `is_set: Optional[bool]`

    - `is_stock: Optional[bool]`

    - `is_store_product: Optional[bool]`

    - `is_template: Optional[bool]`

    - `margin_category: Optional[str]`

    - `moq: Optional[float]`

    - `old_price: Optional[float]`

    - `price: Optional[float]`

    - `price_compare_unit: Optional[str]`

    - `price_lines: Optional[str]`

    - `product_details: Optional[str]`

    - `product_type: Optional[str]`

    - `product_url: Optional[str]`

    - `promo_stores_allowed: Optional[List[str]]`

    - `promo_stores_not_allowed: Optional[List[str]]`

    - `promotion: Optional[str]`

    - `promotion_price: Optional[float]`

    - `promotion_week: Optional[str]`

    - `purchase_price: Optional[float]`

    - `purchase_unit_barcode: Optional[str]`

    - `purchase_unit_name: Optional[str]`

    - `purchase_unit_product_number: Optional[str]`

    - `purchase_unit_quantity: Optional[float]`

    - `referral_product_id: Optional[str]`

    - `reset_store_stock: Optional[bool]`

    - `set_product: Optional[List[SetProduct]]`

      - `set_item_quantity: Optional[str]`

      - `set_product_number: Optional[str]`

    - `shelf_label: Optional[bool]`

    - `shelf_label_barcode: Optional[bool]`

    - `shelf_label_layout: Optional[int]`

    - `shelf_label_price: Optional[bool]`

    - `size: Optional[str]`

    - `size_code: Optional[str]`

    - `smallest_product_number: Optional[str]`

    - `smallest_quantity: Optional[float]`

    - `special_price: Optional[float]`

    - `stores_allowed: Optional[List[str]]`

    - `stores_not_allowed: Optional[List[str]]`

    - `supplier_id: Optional[str]`

    - `supplier_name: Optional[str]`

    - `supplier_product_number: Optional[str]`

    - `units: Optional[List[Unit]]`

      - `unit_quantity: float`

      - `unit_barcode: Optional[str]`

      - `unit_name: Optional[str]`

    - `variant_code: Optional[str]`

    - `variant_factor: Optional[float]`

    - `variant_family: Optional[str]`

    - `volume: Optional[str]`

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.list_products()
print(response.page_number)
```

#### Response

```json
{
  "page_number": 0,
  "page_size": 0,
  "total_record_count": 0,
  "records": [
    {
      "barcode": "barcode",
      "carrier_item_quantity": 0,
      "edit_min_max_percentage": 0,
      "price_compare_multiplier": 0,
      "product_name": "product_name",
      "product_number": "product_number",
      "shelf_label_quantity": 0,
      "allow_decimal": true,
      "attention_code": "attention_code",
      "average_weight": 0,
      "barcodes_array": "barcodes_array",
      "base_unit_name": "base_unit_name",
      "brand_code": "brand_code",
      "brand_description": "brand_description",
      "category_code": "category_code",
      "color": "color",
      "color_code": "color_code",
      "countries_allowed": [
        "string"
      ],
      "countries_not_allowed": [
        "string"
      ],
      "country_code": "country_code",
      "deprecation_date": "2019-12-27T18:11:19.117Z",
      "expiration_min_range": 0,
      "free_fields": [
        {
          "sort_order": 0,
          "key": "key",
          "value": "value"
        }
      ],
      "general_ledger": "general_ledger",
      "image_url": "image_url",
      "is_active": true,
      "is_counted": true,
      "is_edit_min_max": true,
      "is_edit_replenishment": true,
      "is_expiration": true,
      "is_order_manually": true,
      "is_promotion": true,
      "is_set": true,
      "is_stock": true,
      "is_store_product": true,
      "is_template": true,
      "margin_category": "margin_category",
      "moq": 0,
      "old_price": 0,
      "price": 0,
      "price_compare_unit": "price_compare_unit",
      "price_lines": "price_lines",
      "product_details": "product_details",
      "product_type": "product_type",
      "product_url": "product_url",
      "promo_stores_allowed": [
        "string"
      ],
      "promo_stores_not_allowed": [
        "string"
      ],
      "promotion": "promotion",
      "promotion_price": 0,
      "promotion_week": "promotion_week",
      "purchase_price": 0,
      "purchase_unit_barcode": "purchase_unit_barcode",
      "purchase_unit_name": "purchase_unit_name",
      "purchase_unit_product_number": "purchase_unit_product_number",
      "purchase_unit_quantity": 0,
      "referral_product_id": "referral_product_id",
      "reset_store_stock": true,
      "set_product": [
        {
          "set_item_quantity": "set_item_quantity",
          "set_product_number": "set_product_number"
        }
      ],
      "shelf_label": true,
      "shelf_label_barcode": true,
      "shelf_label_layout": 0,
      "shelf_label_price": true,
      "size": "size",
      "size_code": "size_code",
      "smallest_product_number": "smallest_product_number",
      "smallest_quantity": 0,
      "special_price": 0,
      "stores_allowed": [
        "string"
      ],
      "stores_not_allowed": [
        "string"
      ],
      "supplier_id": "supplier_id",
      "supplier_name": "supplier_name",
      "supplier_product_number": "supplier_product_number",
      "units": [
        {
          "unit_quantity": 0,
          "unit_barcode": "unit_barcode",
          "unit_name": "unit_name"
        }
      ],
      "variant_code": "variant_code",
      "variant_factor": 0,
      "variant_family": "variant_family",
      "volume": "volume"
    }
  ]
}
```

## Deletes products by product numbers.

`products.delete_products(ProductDeleteProductsParams**kwargs)  -> ProductDeleteProductsResponse`

**delete** `/api/v2/public/products`

Deletes products by product numbers.

### Parameters

- `product_number: Optional[Sequence[str]]`

  The product numbers to target.

### Returns

- `class ProductDeleteProductsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.delete_products()
print(response.success)
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```

## Updates a product attribute value across all products matching the old value.

`products.update_product_attributes(ProductUpdateProductAttributesParams**kwargs)`

**put** `/api/v2/public/products/attributes`

Updates a product attribute value across all products matching the old value.

### Parameters

- `attribute: str`

  The attribute name to update.

- `new_value: str`

  The new value to set.

- `old_value: str`

  The current value to match.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
client.products.update_product_attributes(
    attribute="x",
    new_value="x",
    old_value="x",
)
```

## Creates or updates product prices.

`products.create_prices(ProductCreatePricesParams**kwargs)  -> ProductCreatePricesResponse`

**post** `/api/v2/public/products/prices`

Creates or updates product prices.

### Parameters

- `prices: Optional[Iterable[Price]]`

  The product prices to create or update.

  - `price: float`

    Price value.

  - `price_id: str`

    Unique price identifier.

  - `price_type: int`

    Numeric price type.

  - `product_number: str`

    The product number this price applies to.

  - `valid_from: Union[str, datetime]`

    Start of the price's validity period.

  - `valid_to: Union[str, datetime]`

    End of the price's validity period.

  - `country_code: Optional[str]`

    Optional ISO country code restricting the price.

  - `price_group: Optional[str]`

    Optional price group identifier.

  - `price_quantity: Optional[float]`

    Quantity for which the price applies.

  - `price_unit: Optional[str]`

    Unit of measure the price applies to.

  - `store_number: Optional[str]`

    Optional store number restricting the price.

### Returns

- `class ProductCreatePricesResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.create_prices()
print(response.success)
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```

## Creates or updates discount prices for products.

`products.create_discount_prices(ProductCreateDiscountPricesParams**kwargs)  -> ProductCreateDiscountPricesResponse`

**post** `/api/v2/public/products/discountprices`

Creates or updates discount prices for products.

### Parameters

- `discounts: Optional[Iterable[Discount]]`

  The list of discount price entries.

  - `is_delete: bool`

    When true, removes the existing discount entry.

  - `discount_description: Optional[str]`

    Human-readable description of the discount.

  - `discount_group: Optional[str]`

    Optional discount group identifier.

  - `discount_id: Optional[str]`

    Unique discount identifier.

  - `discount_type: Optional[int]`

    Numeric discount type.

  - `line_number: Optional[int]`

    Line number on the discount.

  - `price: Optional[float]`

    Discounted price value.

  - `product_number: Optional[str]`

    The product number this discount applies to.

  - `valid_from: Optional[Union[str, datetime, null]]`

    Start of the discount's validity period.

  - `valid_to: Optional[Union[str, datetime, null]]`

    End of the discount's validity period.

- `is_expire_discounts: Optional[bool]`

- `is_flush: Optional[bool]`

### Returns

- `class ProductCreateDiscountPricesResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.create_discount_prices()
print(response.success)
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```

## Creates or updates submitted product free fields. Existing keys not included in the request are unchanged.

`products.create_product_free_fields(ProductCreateProductFreeFieldsParams**kwargs)  -> ProductCreateProductFreeFieldsResponse`

**post** `/api/v2/public/products/freefields`

Creates or updates submitted product free fields. Existing keys not included in the request are unchanged.

### Parameters

- `free_fields: Optional[Iterable[FreeField]]`

  The product free fields to create or update.

  - `country_code: str`

  - `free_fields: Iterable[FreeFieldFreeField]`

    - `key: Optional[str]`

    - `sort_order: Optional[int]`

    - `value: Optional[str]`

  - `product_number: str`

  - `entity_type: Optional[str]`

### Returns

- `class ProductCreateProductFreeFieldsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Example

```python
import os
from colleqtive_sdk import Colleqtive

client = Colleqtive(
    bearer_token=os.environ.get("COLLEQTIVE_BEARER_TOKEN"),  # This is the default and can be omitted
)
response = client.products.create_product_free_fields()
print(response.success)
```

#### Response

```json
{
  "success": true,
  "data": "data",
  "message": "message"
}
```

## Domain Types

### Product Item

- `class ProductItem: …`

  Full product details returned from the products GET endpoint, including units, barcodes, pricing, and store/country assignments.

  - `barcode: str`

    Primary barcode for the product.

  - `carrier_item_quantity: float`

  - `edit_min_max_percentage: int`

  - `price_compare_multiplier: float`

  - `product_name: str`

    Display name of the product.

  - `product_number: str`

    Unique product number.

  - `shelf_label_quantity: int`

  - `allow_decimal: Optional[bool]`

  - `attention_code: Optional[str]`

  - `average_weight: Optional[float]`

  - `barcodes_array: Optional[str]`

  - `base_unit_name: Optional[str]`

  - `brand_code: Optional[str]`

  - `brand_description: Optional[str]`

  - `category_code: Optional[str]`

  - `color: Optional[str]`

  - `color_code: Optional[str]`

  - `countries_allowed: Optional[List[str]]`

  - `countries_not_allowed: Optional[List[str]]`

  - `country_code: Optional[str]`

  - `deprecation_date: Optional[datetime]`

  - `expiration_min_range: Optional[int]`

  - `free_fields: Optional[List[FreeField]]`

    - `sort_order: int`

    - `key: Optional[str]`

    - `value: Optional[str]`

  - `general_ledger: Optional[str]`

  - `image_url: Optional[str]`

  - `is_active: Optional[bool]`

  - `is_counted: Optional[bool]`

  - `is_edit_min_max: Optional[bool]`

  - `is_edit_replenishment: Optional[bool]`

  - `is_expiration: Optional[bool]`

  - `is_order_manually: Optional[bool]`

  - `is_promotion: Optional[bool]`

  - `is_set: Optional[bool]`

  - `is_stock: Optional[bool]`

  - `is_store_product: Optional[bool]`

  - `is_template: Optional[bool]`

  - `margin_category: Optional[str]`

  - `moq: Optional[float]`

  - `old_price: Optional[float]`

  - `price: Optional[float]`

  - `price_compare_unit: Optional[str]`

  - `price_lines: Optional[str]`

  - `product_details: Optional[str]`

  - `product_type: Optional[str]`

  - `product_url: Optional[str]`

  - `promo_stores_allowed: Optional[List[str]]`

  - `promo_stores_not_allowed: Optional[List[str]]`

  - `promotion: Optional[str]`

  - `promotion_price: Optional[float]`

  - `promotion_week: Optional[str]`

  - `purchase_price: Optional[float]`

  - `purchase_unit_barcode: Optional[str]`

  - `purchase_unit_name: Optional[str]`

  - `purchase_unit_product_number: Optional[str]`

  - `purchase_unit_quantity: Optional[float]`

  - `referral_product_id: Optional[str]`

  - `reset_store_stock: Optional[bool]`

  - `set_product: Optional[List[SetProduct]]`

    - `set_item_quantity: Optional[str]`

    - `set_product_number: Optional[str]`

  - `shelf_label: Optional[bool]`

  - `shelf_label_barcode: Optional[bool]`

  - `shelf_label_layout: Optional[int]`

  - `shelf_label_price: Optional[bool]`

  - `size: Optional[str]`

  - `size_code: Optional[str]`

  - `smallest_product_number: Optional[str]`

  - `smallest_quantity: Optional[float]`

  - `special_price: Optional[float]`

  - `stores_allowed: Optional[List[str]]`

  - `stores_not_allowed: Optional[List[str]]`

  - `supplier_id: Optional[str]`

  - `supplier_name: Optional[str]`

  - `supplier_product_number: Optional[str]`

  - `units: Optional[List[Unit]]`

    - `unit_quantity: float`

    - `unit_barcode: Optional[str]`

    - `unit_name: Optional[str]`

  - `variant_code: Optional[str]`

  - `variant_factor: Optional[float]`

  - `variant_family: Optional[str]`

  - `volume: Optional[str]`

### Product Create Products Response

- `class ProductCreateProductsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Product List Products Response

- `class ProductListProductsResponse: …`

  Lightweight paginated result set.

  - `page_number: int`

    Current page number (1-based).

  - `page_size: int`

    Maximum number of records returned per page.

  - `total_record_count: int`

    Total number of records matching the query across all pages.

  - `records: Optional[List[ProductItem]]`

    Collection of records for the current page.

    - `barcode: str`

      Primary barcode for the product.

    - `carrier_item_quantity: float`

    - `edit_min_max_percentage: int`

    - `price_compare_multiplier: float`

    - `product_name: str`

      Display name of the product.

    - `product_number: str`

      Unique product number.

    - `shelf_label_quantity: int`

    - `allow_decimal: Optional[bool]`

    - `attention_code: Optional[str]`

    - `average_weight: Optional[float]`

    - `barcodes_array: Optional[str]`

    - `base_unit_name: Optional[str]`

    - `brand_code: Optional[str]`

    - `brand_description: Optional[str]`

    - `category_code: Optional[str]`

    - `color: Optional[str]`

    - `color_code: Optional[str]`

    - `countries_allowed: Optional[List[str]]`

    - `countries_not_allowed: Optional[List[str]]`

    - `country_code: Optional[str]`

    - `deprecation_date: Optional[datetime]`

    - `expiration_min_range: Optional[int]`

    - `free_fields: Optional[List[FreeField]]`

      - `sort_order: int`

      - `key: Optional[str]`

      - `value: Optional[str]`

    - `general_ledger: Optional[str]`

    - `image_url: Optional[str]`

    - `is_active: Optional[bool]`

    - `is_counted: Optional[bool]`

    - `is_edit_min_max: Optional[bool]`

    - `is_edit_replenishment: Optional[bool]`

    - `is_expiration: Optional[bool]`

    - `is_order_manually: Optional[bool]`

    - `is_promotion: Optional[bool]`

    - `is_set: Optional[bool]`

    - `is_stock: Optional[bool]`

    - `is_store_product: Optional[bool]`

    - `is_template: Optional[bool]`

    - `margin_category: Optional[str]`

    - `moq: Optional[float]`

    - `old_price: Optional[float]`

    - `price: Optional[float]`

    - `price_compare_unit: Optional[str]`

    - `price_lines: Optional[str]`

    - `product_details: Optional[str]`

    - `product_type: Optional[str]`

    - `product_url: Optional[str]`

    - `promo_stores_allowed: Optional[List[str]]`

    - `promo_stores_not_allowed: Optional[List[str]]`

    - `promotion: Optional[str]`

    - `promotion_price: Optional[float]`

    - `promotion_week: Optional[str]`

    - `purchase_price: Optional[float]`

    - `purchase_unit_barcode: Optional[str]`

    - `purchase_unit_name: Optional[str]`

    - `purchase_unit_product_number: Optional[str]`

    - `purchase_unit_quantity: Optional[float]`

    - `referral_product_id: Optional[str]`

    - `reset_store_stock: Optional[bool]`

    - `set_product: Optional[List[SetProduct]]`

      - `set_item_quantity: Optional[str]`

      - `set_product_number: Optional[str]`

    - `shelf_label: Optional[bool]`

    - `shelf_label_barcode: Optional[bool]`

    - `shelf_label_layout: Optional[int]`

    - `shelf_label_price: Optional[bool]`

    - `size: Optional[str]`

    - `size_code: Optional[str]`

    - `smallest_product_number: Optional[str]`

    - `smallest_quantity: Optional[float]`

    - `special_price: Optional[float]`

    - `stores_allowed: Optional[List[str]]`

    - `stores_not_allowed: Optional[List[str]]`

    - `supplier_id: Optional[str]`

    - `supplier_name: Optional[str]`

    - `supplier_product_number: Optional[str]`

    - `units: Optional[List[Unit]]`

      - `unit_quantity: float`

      - `unit_barcode: Optional[str]`

      - `unit_name: Optional[str]`

    - `variant_code: Optional[str]`

    - `variant_factor: Optional[float]`

    - `variant_family: Optional[str]`

    - `volume: Optional[str]`

### Product Delete Products Response

- `class ProductDeleteProductsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Product Create Prices Response

- `class ProductCreatePricesResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Product Create Discount Prices Response

- `class ProductCreateDiscountPricesResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.

### Product Create Product Free Fields Response

- `class ProductCreateProductFreeFieldsResponse: …`

  Standard success response returned by mutation endpoints.

  - `success: bool`

    Indicates whether the operation completed successfully.

  - `data: Optional[str]`

    Optional data payload returned by the operation.

  - `message: Optional[str]`

    Human-readable message describing the result.
