## List Products `products.list_products(ProductListProductsParams**kwargs) -> ProductListProductsResponse` **get** `/api/v2/public/products` Retrieves a paginated list of products. ### Parameters - `page_size: Optional[str]` The number of items per page. - `page_start: Optional[str]` The starting page index for pagination. - `product_number: Optional[SequenceNotStr[str]]` Optional array of product numbers to filter by. ### Returns - `class ProductListProductsResponse: …` Lightweight paginated result set. - `page_number: Optional[int]` Current page number (1-based). - `page_size: Optional[int]` Maximum number of records returned per page. - `records: Optional[List[ProductItem]]` Collection of records for the current page. - `barcode: str` - `product_name: str` Display name of the product. - `product_number: str` Unique product number. - `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]` - `carrier_item_quantity: Optional[float]` - `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]` - `edit_min_max_percentage: Optional[int]` - `expiration_min_range: Optional[int]` - `free_fields: Optional[List[FreeField]]` - `key: Optional[str]` - `sort_order: Optional[int]` - `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_multiplier: 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_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]` - `shelf_label_quantity: Optional[int]` - `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_barcode: Optional[str]` - `unit_name: Optional[str]` - `unit_quantity: Optional[float]` - `variant_code: Optional[str]` - `variant_factor: Optional[float]` - `variant_family: Optional[str]` - `volume: Optional[str]` - `total_record_count: Optional[int]` Total number of records matching the query across all pages. ### 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) ```