# Products ## Create Products **post** `/api/v2/public/products` Creates or updates products in bulk. ### Query Parameters - `flush: optional boolean` When true, removes existing products before inserting. ### Body Parameters - `body: optional array of object { is_counted, product_name, product_number, 74 more }` - `is_counted: boolean` - `product_name: string` Display name of the product. - `product_number: string` Unique product number. - `allow_decimal: optional boolean` - `attention_code: optional array of string` - `average_weight: optional number` - `barcode: optional string` - `barcodes_array: optional array of object { barcode }` - `barcode: optional string` - `base_unit_name: optional string` - `brand_code: optional string` - `brand_description: optional string` - `carrier_item_quantity: optional number` - `category_code: optional string` - `color: optional string` - `color_code: optional string` - `countries_allowed: optional array of string` - `countries_not_allowed: optional array of string` - `country_code: optional string` - `default_location_tag: optional string` - `deprecation_date: optional string` - `expiration_min_range: optional number` - `free_fields: optional array of object { key, sort_order, value }` - `key: optional string` - `sort_order: optional number` - `value: optional string` - `image_url: optional string` - `ioq: optional number` - `is_active: optional boolean` - `is_adr: optional boolean` - `is_deleted: optional boolean` - `is_edit_min_max: optional boolean` - `is_edit_replenishment: optional boolean` - `is_expiration: optional boolean` - `is_markdown_allowed: optional boolean` - `is_order_manually: optional boolean` - `is_ordering: optional boolean` - `is_promotion: optional boolean` - `is_reset_store_stock: optional boolean` - `is_set: optional boolean` - `is_stock: optional boolean` - `is_store_product: optional boolean` - `is_template: optional boolean` - `is_theft: optional boolean` - `margin_category: optional string` - `moq: optional number` - `price: optional number` - `price_compare_multiplier: optional number` - `price_compare_unit: optional string` - `price_lines: optional string` - `product_details: optional string` - `product_reference_number: optional string` - `product_status: optional string` - `product_type: optional string` - `product_url: optional string` - `promo_stores_allowed: optional array of string` - `promo_stores_not_allowed: optional array of string` - `promotion_price: optional number` - `promotion_text: optional string` - `promotion_week: optional string` - `purchase_price: optional number` - `purchase_unit_barcode: optional string` - `purchase_unit_name: optional string` - `purchase_unit_product_number: optional string` - `purchase_unit_quantity: optional number` - `referral_product_number: optional string` - `set_products: optional array of object { set_item_quantity, set_product_number }` - `set_item_quantity: optional string` - `set_product_number: optional string` - `shelf_labels: optional array of object { shelflabel_1, shelflabel_2, shelflabel_3, 3 more }` - `shelflabel_1: optional string` - `shelflabel_2: optional string` - `shelflabel_3: optional string` - `shelflabel_4: optional string` - `shelflabel_5: optional string` - `shelflabel_6: optional string` - `size: optional string` - `size_code: optional string` - `smallest_product_number: optional string` - `smallest_quantity: optional number` - `store_number: optional string` - `stores_allowed: optional array of string` - `stores_not_allowed: optional array of string` - `supplier_name: optional string` - `supplier_number: optional string` - `supplier_product_number: optional string` - `units: optional array of object { unit_barcode, unit_name, unit_quantity }` - `unit_barcode: string` - `unit_name: string` - `unit_quantity: number` - `variant_code: optional string` - `volume: optional string` ### Returns - `data: optional string` Optional data payload returned by the operation. - `message: optional string` Human-readable message describing the result. - `success: optional boolean` Indicates whether the operation completed successfully. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products \ -X POST \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" ``` ## List Products **get** `/api/v2/public/products` Retrieves a paginated list of products. ### Query Parameters - `Page_Size: optional string` The number of items per page. - `Page_Start: optional string` The starting page index for pagination. - `product_number: optional array of string` Optional array of product numbers to filter by. ### Returns - `page_number: optional number` Current page number (1-based). - `page_size: optional number` Maximum number of records returned per page. - `records: optional array of ProductItem` Collection of records for the current page. - `barcode: string` - `product_name: string` Display name of the product. - `product_number: string` Unique product number. - `allow_decimal: optional boolean` - `attention_code: optional string` - `average_weight: optional number` - `barcodes_array: optional string` - `base_unit_name: optional string` - `brand_code: optional string` - `brand_description: optional string` - `carrier_item_quantity: optional number` - `category_code: optional string` - `color: optional string` - `color_code: optional string` - `countries_allowed: optional array of string` - `countries_not_allowed: optional array of string` - `country_code: optional string` - `deprecation_date: optional string` - `edit_min_max_percentage: optional number` - `expiration_min_range: optional number` - `free_fields: optional array of object { key, sort_order, value }` - `key: optional string` - `sort_order: optional number` - `value: optional string` - `general_ledger: optional string` - `image_url: optional string` - `is_active: optional boolean` - `is_counted: optional boolean` - `is_edit_min_max: optional boolean` - `is_edit_replenishment: optional boolean` - `is_expiration: optional boolean` - `is_order_manually: optional boolean` - `is_promotion: optional boolean` - `is_set: optional boolean` - `is_stock: optional boolean` - `is_store_product: optional boolean` - `is_template: optional boolean` - `margin_category: optional string` - `moq: optional number` - `old_price: optional number` - `price: optional number` - `price_compare_multiplier: optional number` - `price_compare_unit: optional string` - `price_lines: optional string` - `product_details: optional string` - `product_type: optional string` - `product_url: optional string` - `promo_stores_allowed: optional array of string` - `promo_stores_not_allowed: optional array of string` - `promotion: optional string` - `promotion_week: optional string` - `purchase_price: optional number` - `purchase_unit_barcode: optional string` - `purchase_unit_name: optional string` - `purchase_unit_product_number: optional string` - `purchase_unit_quantity: optional number` - `referral_product_id: optional string` - `reset_store_stock: optional boolean` - `set_product: optional array of object { set_item_quantity, set_product_number }` - `set_item_quantity: optional string` - `set_product_number: optional string` - `shelf_label: optional boolean` - `shelf_label_barcode: optional boolean` - `shelf_label_layout: optional number` - `shelf_label_price: optional boolean` - `shelf_label_quantity: optional number` - `size: optional string` - `size_code: optional string` - `smallest_product_number: optional string` - `smallest_quantity: optional number` - `special_price: optional number` - `stores_allowed: optional array of string` - `stores_not_allowed: optional array of string` - `supplier_id: optional string` - `supplier_name: optional string` - `supplier_product_number: optional string` - `units: optional array of object { unit_barcode, unit_name, unit_quantity }` - `unit_barcode: optional string` - `unit_name: optional string` - `unit_quantity: optional number` - `variant_code: optional string` - `variant_factor: optional number` - `variant_family: optional string` - `volume: optional string` - `total_record_count: optional number` Total number of records matching the query across all pages. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" ``` ## Delete Products **delete** `/api/v2/public/products` Deletes products by product numbers. ### Body Parameters - `product_number: optional array of string` The product numbers to target. ### Returns - `data: optional string` Optional data payload returned by the operation. - `message: optional string` Human-readable message describing the result. - `success: optional boolean` Indicates whether the operation completed successfully. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products \ -X DELETE \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" ``` ## Update Product Attributes **put** `/api/v2/public/products/attributes` Updates a product attribute value across all products matching the old value. ### Body Parameters - `attribute: string` The attribute name to update. - `new_value: string` The new value to set. - `old_value: string` The current value to match. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products/attributes \ -X PUT \ -H 'Content-Type: application/json' \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" \ -d '{ "attribute": "category_code", "new_value": "CAT-NEW", "old_value": "CAT-OLD" }' ``` ## Create Prices **post** `/api/v2/public/products/prices` Creates or updates product prices. ### Body Parameters - `body: optional array of object { price_id, product_number, country_code, 8 more }` - `price_id: string` Unique price identifier. - `product_number: string` The product number this price applies to. - `country_code: optional string` - `price: optional number` - `price_group: optional string` - `price_quantity: optional number` - `price_type: optional number` - `price_unit: optional string` - `store_number: optional string` - `valid_from: optional string` - `valid_to: optional string` ### Returns - `data: optional string` Optional data payload returned by the operation. - `message: optional string` Human-readable message describing the result. - `success: optional boolean` Indicates whether the operation completed successfully. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products/prices \ -X POST \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" ``` ## Create Discount Prices **post** `/api/v2/public/products/discountprices` Creates or updates discount prices for products. ### Header Parameters - `is_flush: optional boolean` ### Body Parameters - `discounts: optional array of object { discount_description, discount_group, discount_id, 7 more }` The list of discount price entries. - `discount_description: optional string` - `discount_group: optional string` - `discount_id: optional string` - `discount_type: optional number` - `is_delete: optional boolean` - `line_number: optional number` - `price: optional number` - `product_number: optional string` The product number this discount applies to. - `valid_from: optional string` - `valid_to: optional string` ### Returns - `data: optional string` Optional data payload returned by the operation. - `message: optional string` Human-readable message describing the result. - `success: optional boolean` Indicates whether the operation completed successfully. ### Example ```http curl https://api.colleqtive.net/api/v2/public/products/discountprices \ -X POST \ -H "Authorization: $COLLEQTIVE_BEARER_TOKEN" ``` ## Domain Types ### Product Item - `ProductItem = object { barcode, product_name, product_number, 73 more }` Full product details returned from the products GET endpoint, including units, barcodes, pricing, and store/country assignments. - `barcode: string` - `product_name: string` Display name of the product. - `product_number: string` Unique product number. - `allow_decimal: optional boolean` - `attention_code: optional string` - `average_weight: optional number` - `barcodes_array: optional string` - `base_unit_name: optional string` - `brand_code: optional string` - `brand_description: optional string` - `carrier_item_quantity: optional number` - `category_code: optional string` - `color: optional string` - `color_code: optional string` - `countries_allowed: optional array of string` - `countries_not_allowed: optional array of string` - `country_code: optional string` - `deprecation_date: optional string` - `edit_min_max_percentage: optional number` - `expiration_min_range: optional number` - `free_fields: optional array of object { key, sort_order, value }` - `key: optional string` - `sort_order: optional number` - `value: optional string` - `general_ledger: optional string` - `image_url: optional string` - `is_active: optional boolean` - `is_counted: optional boolean` - `is_edit_min_max: optional boolean` - `is_edit_replenishment: optional boolean` - `is_expiration: optional boolean` - `is_order_manually: optional boolean` - `is_promotion: optional boolean` - `is_set: optional boolean` - `is_stock: optional boolean` - `is_store_product: optional boolean` - `is_template: optional boolean` - `margin_category: optional string` - `moq: optional number` - `old_price: optional number` - `price: optional number` - `price_compare_multiplier: optional number` - `price_compare_unit: optional string` - `price_lines: optional string` - `product_details: optional string` - `product_type: optional string` - `product_url: optional string` - `promo_stores_allowed: optional array of string` - `promo_stores_not_allowed: optional array of string` - `promotion: optional string` - `promotion_week: optional string` - `purchase_price: optional number` - `purchase_unit_barcode: optional string` - `purchase_unit_name: optional string` - `purchase_unit_product_number: optional string` - `purchase_unit_quantity: optional number` - `referral_product_id: optional string` - `reset_store_stock: optional boolean` - `set_product: optional array of object { set_item_quantity, set_product_number }` - `set_item_quantity: optional string` - `set_product_number: optional string` - `shelf_label: optional boolean` - `shelf_label_barcode: optional boolean` - `shelf_label_layout: optional number` - `shelf_label_price: optional boolean` - `shelf_label_quantity: optional number` - `size: optional string` - `size_code: optional string` - `smallest_product_number: optional string` - `smallest_quantity: optional number` - `special_price: optional number` - `stores_allowed: optional array of string` - `stores_not_allowed: optional array of string` - `supplier_id: optional string` - `supplier_name: optional string` - `supplier_product_number: optional string` - `units: optional array of object { unit_barcode, unit_name, unit_quantity }` - `unit_barcode: optional string` - `unit_name: optional string` - `unit_quantity: optional number` - `variant_code: optional string` - `variant_factor: optional number` - `variant_family: optional string` - `volume: optional string`