# Store Products

## Retrieves a paged list of store products with stock, optionally including locations.

**get** `/api/v2/public/storeproducts/stock`

Retrieves a paged list of store products with stock, optionally including locations.

### Query Parameters

- `article_no: optional string`

- `barcode: optional string`

- `category_code: optional string`

- `exclude_customer_order_stock: optional boolean`

  When true, excludes stock already reserved for customer orders.

- `from_id: optional number`

- `include_locations: optional boolean`

  When true, includes location-level stock details for each product.

- `last_modified_date: optional string`

- `last_stock_modified_datetime: optional string`

- `page_size: optional number`

- `page_start: optional number`

- `parent_category_code: optional string`

- `product_number: optional string`

- `search_text: optional string`

- `store_number: optional string`

- `to_id: optional number`

### Returns

- `page_size: number`

  Maximum number of items returned per page.

- `page_start: number`

  Current page number (1-based).

- `total_count: number`

  Total number of records matching the query across all pages.

- `list: optional array of object { id, is_replenishment, is_stock, 52 more }`

  Collection of items for the current page.

  - `id: number`

  - `is_replenishment: boolean`

  - `is_stock: boolean`

  - `most_likely_quantity: number`

  - `adjusted_order_level: optional number`

  - `attention_codes: optional string`

  - `average_array: optional string`

  - `barcode: optional string`

  - `category_code: optional string`

  - `category_name: optional string`

  - `category_order: optional number`

  - `delivery_datetimes: optional array of string`

  - `demand_until_delivery: optional number`

  - `forecast: optional number`

  - `forecast_array: optional string`

  - `group_code: optional string`

  - `history_array: optional string`

  - `last_counted_datetime: optional string`

  - `last_expiry_datetime: optional string`

  - `last_expiry_updatedby: optional string`

  - `last_loss_updatedby: optional string`

  - `last_minmax_updatedby: optional string`

  - `last_receipt_updatedby: optional string`

  - `max: optional number`

  - `min: optional number`

  - `most_likely_datetime: optional string`

  - `most_likely_pool_1: optional number`

  - `most_likely_pool_10: optional number`

  - `most_likely_pool_2: optional number`

  - `most_likely_pool_3: optional number`

  - `most_likely_pool_4: optional number`

  - `most_likely_pool_5: optional number`

  - `most_likely_pool_6: optional number`

  - `most_likely_pool_7: optional number`

  - `most_likely_pool_8: optional number`

  - `most_likely_pool_9: optional number`

  - `next_delivery_datetime: optional string`

  - `next_ordering_datetime: optional string`

  - `order_level: optional number`

  - `ordering_datetimes: optional array of string`

  - `original_max: optional number`

  - `original_min: optional number`

  - `price: optional number`

  - `product_description: optional string`

  - `product_number: optional string`

  - `promotion_week: optional string`

  - `purchase_unit_name: optional string`

  - `purchase_unit_quantity: optional number`

  - `referral_product: optional string`

  - `smallest_item_quantity: optional number`

  - `smallest_product_number: optional string`

  - `store_locations: optional array of object { quantity, carrier_code, default_stock_pool, 12 more }`

    - `quantity: number`

    - `carrier_code: optional string`

    - `default_stock_pool: optional string`

    - `stock_pool_1: optional number`

    - `stock_pool_10: optional number`

    - `stock_pool_2: optional number`

    - `stock_pool_3: optional number`

    - `stock_pool_4: optional number`

    - `stock_pool_5: optional number`

    - `stock_pool_6: optional number`

    - `stock_pool_7: optional number`

    - `stock_pool_8: optional number`

    - `stock_pool_9: optional number`

    - `store_location_code: optional string`

    - `tags: optional array of string`

  - `store_number: optional string`

  - `storeproduct_attention_codes: optional string`

  - `validate_expiry_datetime: optional string`

- `list_body: optional map[unknown]`

  Additional body-level metadata for the list.

- `list_filters: optional map[array of string]`

  Active filter criteria applied to the result set, keyed by field name.

- `next_page: optional number`

  Next page number, or null when on the last page.

- `previous_page: optional number`

  Previous page number, or null when on the first page.

- `project_last_modified_date: optional string`

  Last modified date/time of the project.

- `scroll_id: optional string`

  Opaque scroll identifier for deep-pagination scenarios.

- `server_time: optional string`

  Server UTC date/time when the response was generated.

- `sort_column: optional string`

  Column name the results are sorted by.

- `sort_order: optional string`

  Sort direction (asc or desc).

- `task_last_modified_date: optional string`

  Last modified date/time of the task.

### Example

```http
curl https://api.colleqtive.net/api/v2/public/storeproducts/stock \
    -H "Authorization: $COLLEQTIVE_BEARER_TOKEN"
```

#### Response

```json
{
  "page_size": 0,
  "page_start": 0,
  "total_count": 0,
  "list": [
    {
      "id": 0,
      "is_replenishment": true,
      "is_stock": true,
      "most_likely_quantity": 0,
      "adjusted_order_level": 0,
      "attention_codes": "attention_codes",
      "average_array": "average_array",
      "barcode": "barcode",
      "category_code": "category_code",
      "category_name": "category_name",
      "category_order": 0,
      "delivery_datetimes": [
        "string"
      ],
      "demand_until_delivery": 0,
      "forecast": 0,
      "forecast_array": "forecast_array",
      "group_code": "group_code",
      "history_array": "history_array",
      "last_counted_datetime": "2019-12-27T18:11:19.117Z",
      "last_expiry_datetime": "2019-12-27T18:11:19.117Z",
      "last_expiry_updatedby": "last_expiry_updatedby",
      "last_loss_updatedby": "last_loss_updatedby",
      "last_minmax_updatedby": "last_minmax_updatedby",
      "last_receipt_updatedby": "last_receipt_updatedby",
      "max": 0,
      "min": 0,
      "most_likely_datetime": "2019-12-27T18:11:19.117Z",
      "most_likely_pool_1": 0,
      "most_likely_pool_10": 0,
      "most_likely_pool_2": 0,
      "most_likely_pool_3": 0,
      "most_likely_pool_4": 0,
      "most_likely_pool_5": 0,
      "most_likely_pool_6": 0,
      "most_likely_pool_7": 0,
      "most_likely_pool_8": 0,
      "most_likely_pool_9": 0,
      "next_delivery_datetime": "2019-12-27T18:11:19.117Z",
      "next_ordering_datetime": "2019-12-27T18:11:19.117Z",
      "order_level": 0,
      "ordering_datetimes": [
        "string"
      ],
      "original_max": 0,
      "original_min": 0,
      "price": 0,
      "product_description": "product_description",
      "product_number": "product_number",
      "promotion_week": "promotion_week",
      "purchase_unit_name": "purchase_unit_name",
      "purchase_unit_quantity": 0,
      "referral_product": "referral_product",
      "smallest_item_quantity": 0,
      "smallest_product_number": "smallest_product_number",
      "store_locations": [
        {
          "quantity": 0,
          "carrier_code": "carrier_code",
          "default_stock_pool": "default_stock_pool",
          "stock_pool_1": 0,
          "stock_pool_10": 0,
          "stock_pool_2": 0,
          "stock_pool_3": 0,
          "stock_pool_4": 0,
          "stock_pool_5": 0,
          "stock_pool_6": 0,
          "stock_pool_7": 0,
          "stock_pool_8": 0,
          "stock_pool_9": 0,
          "store_location_code": "store_location_code",
          "tags": [
            "string"
          ]
        }
      ],
      "store_number": "store_number",
      "storeproduct_attention_codes": "storeproduct_attention_codes",
      "validate_expiry_datetime": "2019-12-27T18:11:19.117Z"
    }
  ],
  "list_body": {
    "foo": "bar"
  },
  "list_filters": {
    "foo": [
      "string"
    ]
  },
  "next_page": 0,
  "previous_page": 0,
  "project_last_modified_date": "project_last_modified_date",
  "scroll_id": "scroll_id",
  "server_time": "server_time",
  "sort_column": "sort_column",
  "sort_order": "sort_order",
  "task_last_modified_date": "task_last_modified_date"
}
```

## Retrieves stock for a single product at a store, optionally including locations.

**get** `/api/v2/public/stores/{store_number}/products/{product_number}/stock`

Retrieves stock for a single product at a store, optionally including locations.

### Path Parameters

- `store_number: string`

- `product_number: string`

### Query Parameters

- `exclude_customer_order_stock: optional boolean`

  When true, excludes stock already reserved for customer orders.

- `include_locations: optional boolean`

  When true, includes location-level stock details.

- `include_zero_lines: optional boolean`

  When true, includes lines with zero stock.

### Returns

- `products: optional array of object { most_likely_stock, delivery_datetimes, next_delivery_datetime, 15 more }`

  The list of products with stock data.

  - `most_likely_stock: number`

  - `delivery_datetimes: optional array of string`

  - `next_delivery_datetime: optional string`

  - `next_ordering_datetime: optional string`

  - `ordering_datetimes: optional array of string`

  - `product_number: optional string`

  - `stock_pool_1: optional number`

  - `stock_pool_10: optional number`

  - `stock_pool_2: optional number`

  - `stock_pool_3: optional number`

  - `stock_pool_4: optional number`

  - `stock_pool_5: optional number`

  - `stock_pool_6: optional number`

  - `stock_pool_7: optional number`

  - `stock_pool_8: optional number`

  - `stock_pool_9: optional number`

  - `store_locations: optional array of object { quantity, carrier_code, default_stock_pool, 12 more }`

    - `quantity: number`

    - `carrier_code: optional string`

    - `default_stock_pool: optional string`

    - `stock_pool_1: optional number`

    - `stock_pool_10: optional number`

    - `stock_pool_2: optional number`

    - `stock_pool_3: optional number`

    - `stock_pool_4: optional number`

    - `stock_pool_5: optional number`

    - `stock_pool_6: optional number`

    - `stock_pool_7: optional number`

    - `stock_pool_8: optional number`

    - `stock_pool_9: optional number`

    - `store_location_code: optional string`

    - `tags: optional array of string`

  - `store_number: optional string`

### Example

```http
curl https://api.colleqtive.net/api/v2/public/stores/$STORE_NUMBER/products/$PRODUCT_NUMBER/stock \
    -H "Authorization: $COLLEQTIVE_BEARER_TOKEN"
```

#### Response

```json
{
  "products": [
    {
      "most_likely_stock": 0,
      "delivery_datetimes": [
        "string"
      ],
      "next_delivery_datetime": "2019-12-27T18:11:19.117Z",
      "next_ordering_datetime": "2019-12-27T18:11:19.117Z",
      "ordering_datetimes": [
        "string"
      ],
      "product_number": "product_number",
      "stock_pool_1": 0,
      "stock_pool_10": 0,
      "stock_pool_2": 0,
      "stock_pool_3": 0,
      "stock_pool_4": 0,
      "stock_pool_5": 0,
      "stock_pool_6": 0,
      "stock_pool_7": 0,
      "stock_pool_8": 0,
      "stock_pool_9": 0,
      "store_locations": [
        {
          "quantity": 0,
          "carrier_code": "carrier_code",
          "default_stock_pool": "default_stock_pool",
          "stock_pool_1": 0,
          "stock_pool_10": 0,
          "stock_pool_2": 0,
          "stock_pool_3": 0,
          "stock_pool_4": 0,
          "stock_pool_5": 0,
          "stock_pool_6": 0,
          "stock_pool_7": 0,
          "stock_pool_8": 0,
          "stock_pool_9": 0,
          "store_location_code": "store_location_code",
          "tags": [
            "string"
          ]
        }
      ],
      "store_number": "store_number"
    }
  ]
}
```

## Retrieves aggregate surrounding stock for a product across nearby stores/warehouses.

**get** `/api/v2/public/stores/{store_number}/storeproducts/{product_number}/surrounding`

Retrieves aggregate surrounding stock for a product across nearby stores/warehouses.

### Path Parameters

- `store_number: string`

- `product_number: string`

### Returns

- `is_warehouse: boolean`

- `most_likely_quantity: number`

- `area_description: optional string`

- `area_id: optional string`

- `most_likely_pool_1: optional number`

- `most_likely_pool_10: optional number`

- `most_likely_pool_2: optional number`

- `most_likely_pool_3: optional number`

- `most_likely_pool_4: optional number`

- `most_likely_pool_5: optional number`

- `most_likely_pool_6: optional number`

- `most_likely_pool_7: optional number`

- `most_likely_pool_8: optional number`

- `most_likely_pool_9: optional number`

- `store_name: optional string`

- `store_number: optional string`

### Example

```http
curl https://api.colleqtive.net/api/v2/public/stores/$STORE_NUMBER/storeproducts/$PRODUCT_NUMBER/surrounding \
    -H "Authorization: $COLLEQTIVE_BEARER_TOKEN"
```

#### Response

```json
[
  {
    "is_warehouse": true,
    "most_likely_quantity": 0,
    "area_description": "area_description",
    "area_id": "area_id",
    "most_likely_pool_1": 0,
    "most_likely_pool_10": 0,
    "most_likely_pool_2": 0,
    "most_likely_pool_3": 0,
    "most_likely_pool_4": 0,
    "most_likely_pool_5": 0,
    "most_likely_pool_6": 0,
    "most_likely_pool_7": 0,
    "most_likely_pool_8": 0,
    "most_likely_pool_9": 0,
    "store_name": "store_name",
    "store_number": "store_number"
  }
]
```

## Updates store product properties (min/max, prices, forecast, attention codes, replenishment, etc.) for one or more products at a store.

**put** `/api/v2/public/stores/{store_number}/storeproducts`

Updates store product properties (min/max, prices, forecast, attention codes, replenishment, etc.) for one or more products at a store.

### Path Parameters

- `store_number: string`

### Body Parameters

- `products: optional array of object { product_number, adjustment_level_decrease, adjustment_level_increase, 26 more }`

  The store product updates to apply.

  - `product_number: string`

    The product number.

  - `adjustment_level_decrease: optional number`

    Adjustment level decrease value for the product at the store.

  - `adjustment_level_increase: optional number`

    Adjustment level increase value for the product at the store.

  - `attention_codes: optional array of string`

    Attention codes applied to the product at the store.

  - `average_array: optional array of number`

    Average values aligned with average_keys.

  - `average_keys: optional array of string`

    Keys for the average array.

  - `counting_assignment_code: optional string`

    Counting assignment code for the product at the store.

  - `default_salesorder_type: optional string`

    Default sales order type for the product at the store.

  - `delivery_datetimes: optional array of string`

    Upcoming delivery date/times.

  - `demand_until_delivery: optional number`

    Forecasted demand until next delivery.

  - `discount_price: optional number`

    Discounted price.

  - `expiry_date_time: optional string`

    Expiry date/time for the product at the store.

  - `forecast: optional number`

    Forecast value for the product at the store.

  - `forecast_array: optional array of number`

    Forecast values aligned with forecast_keys.

  - `forecast_keys: optional array of string`

    Keys (e.g. week identifiers) for the forecast array.

  - `group_code: optional string`

    Group code used for replenishment/order grouping.

  - `history_array: optional array of number`

    History values aligned with history_keys.

  - `history_keys: optional array of string`

    Keys for the history array.

  - `is_promotion: optional boolean`

    Whether the product is currently in promotion.

  - `is_replenishment: optional boolean`

    Whether replenishment is enabled for the product at the store.

  - `max: optional number`

    Maximum stock level for the product at the store.

  - `min: optional number`

    Minimum stock level for the product at the store.

  - `next_delivery_date: optional string`

    Next delivery date.

  - `next_ordering_date: optional string`

    Next ordering date.

  - `order_level: optional number`

    Order level used for replenishment.

  - `ordering_datetimes: optional array of string`

    Upcoming ordering date/times.

  - `price: optional number`

    Sale price.

  - `replenishment_action: optional string`

    Replenishment action for the product at the store.

  - `validate_expiry_date_time: optional string`

    Date/time the expiry was last validated.

### Returns

- `success: boolean`

  Indicates whether the operation completed successfully.

- `data: optional string`

  Optional data payload returned by the operation.

- `message: optional string`

  Human-readable message describing the result.

### Example

```http
curl https://api.colleqtive.net/api/v2/public/stores/$STORE_NUMBER/storeproducts \
    -X PUT \
    -H "Authorization: $COLLEQTIVE_BEARER_TOKEN"
```

#### Response

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

## Create Store Products

**post** `/api/v2/public/stores/{store_number}/storeproducts`

### Path Parameters

- `store_number: string`

### Body Parameters

- `products: optional array of object { product_number, attention_codes, average_array, 20 more }`

  The store products to create.

  - `product_number: string`

  - `attention_codes: optional array of string`

  - `average_array: optional array of number`

  - `average_keys: optional array of string`

  - `default_salesorder_type: optional string`

  - `delivery_datetimes: optional array of string`

  - `demand_until_delivery: optional number`

  - `discount_price: optional number`

  - `expiry_date_time: optional string`

  - `forecast_array: optional array of number`

  - `forecast_keys: optional array of string`

  - `history_array: optional array of number`

  - `history_keys: optional array of string`

  - `is_promotion: optional boolean`

  - `is_replenishment: optional boolean`

  - `max: optional number`

  - `min: optional number`

  - `next_delivery_date: optional string`

  - `next_ordering_date: optional string`

  - `order_level: optional number`

  - `ordering_datetimes: optional array of string`

  - `price: optional number`

  - `validate_expiry_date_time: optional string`

### Example

```http
curl https://api.colleqtive.net/api/v2/public/stores/$STORE_NUMBER/storeproducts \
    -X POST \
    -H "Authorization: $COLLEQTIVE_BEARER_TOKEN"
```

## Domain Types

### Store Product List Store Products Stock Response

- `StoreProductListStoreProductsStockResponse object { id, is_replenishment, is_stock, 52 more }`

  Store product entry returned by the public store products list endpoint, with stock and optional location breakdown.

  - `id: number`

  - `is_replenishment: boolean`

  - `is_stock: boolean`

  - `most_likely_quantity: number`

  - `adjusted_order_level: optional number`

  - `attention_codes: optional string`

  - `average_array: optional string`

  - `barcode: optional string`

  - `category_code: optional string`

  - `category_name: optional string`

  - `category_order: optional number`

  - `delivery_datetimes: optional array of string`

  - `demand_until_delivery: optional number`

  - `forecast: optional number`

  - `forecast_array: optional string`

  - `group_code: optional string`

  - `history_array: optional string`

  - `last_counted_datetime: optional string`

  - `last_expiry_datetime: optional string`

  - `last_expiry_updatedby: optional string`

  - `last_loss_updatedby: optional string`

  - `last_minmax_updatedby: optional string`

  - `last_receipt_updatedby: optional string`

  - `max: optional number`

  - `min: optional number`

  - `most_likely_datetime: optional string`

  - `most_likely_pool_1: optional number`

  - `most_likely_pool_10: optional number`

  - `most_likely_pool_2: optional number`

  - `most_likely_pool_3: optional number`

  - `most_likely_pool_4: optional number`

  - `most_likely_pool_5: optional number`

  - `most_likely_pool_6: optional number`

  - `most_likely_pool_7: optional number`

  - `most_likely_pool_8: optional number`

  - `most_likely_pool_9: optional number`

  - `next_delivery_datetime: optional string`

  - `next_ordering_datetime: optional string`

  - `order_level: optional number`

  - `ordering_datetimes: optional array of string`

  - `original_max: optional number`

  - `original_min: optional number`

  - `price: optional number`

  - `product_description: optional string`

  - `product_number: optional string`

  - `promotion_week: optional string`

  - `purchase_unit_name: optional string`

  - `purchase_unit_quantity: optional number`

  - `referral_product: optional string`

  - `smallest_item_quantity: optional number`

  - `smallest_product_number: optional string`

  - `store_locations: optional array of object { quantity, carrier_code, default_stock_pool, 12 more }`

    - `quantity: number`

    - `carrier_code: optional string`

    - `default_stock_pool: optional string`

    - `stock_pool_1: optional number`

    - `stock_pool_10: optional number`

    - `stock_pool_2: optional number`

    - `stock_pool_3: optional number`

    - `stock_pool_4: optional number`

    - `stock_pool_5: optional number`

    - `stock_pool_6: optional number`

    - `stock_pool_7: optional number`

    - `stock_pool_8: optional number`

    - `stock_pool_9: optional number`

    - `store_location_code: optional string`

    - `tags: optional array of string`

  - `store_number: optional string`

  - `storeproduct_attention_codes: optional string`

  - `validate_expiry_datetime: optional string`

### Store Product Retrieve Store Product Stock Response

- `StoreProductRetrieveStoreProductStockResponse object { products }`

  Wrapper containing a list of store product stock entries.

  - `products: optional array of object { most_likely_stock, delivery_datetimes, next_delivery_datetime, 15 more }`

    The list of products with stock data.

    - `most_likely_stock: number`

    - `delivery_datetimes: optional array of string`

    - `next_delivery_datetime: optional string`

    - `next_ordering_datetime: optional string`

    - `ordering_datetimes: optional array of string`

    - `product_number: optional string`

    - `stock_pool_1: optional number`

    - `stock_pool_10: optional number`

    - `stock_pool_2: optional number`

    - `stock_pool_3: optional number`

    - `stock_pool_4: optional number`

    - `stock_pool_5: optional number`

    - `stock_pool_6: optional number`

    - `stock_pool_7: optional number`

    - `stock_pool_8: optional number`

    - `stock_pool_9: optional number`

    - `store_locations: optional array of object { quantity, carrier_code, default_stock_pool, 12 more }`

      - `quantity: number`

      - `carrier_code: optional string`

      - `default_stock_pool: optional string`

      - `stock_pool_1: optional number`

      - `stock_pool_10: optional number`

      - `stock_pool_2: optional number`

      - `stock_pool_3: optional number`

      - `stock_pool_4: optional number`

      - `stock_pool_5: optional number`

      - `stock_pool_6: optional number`

      - `stock_pool_7: optional number`

      - `stock_pool_8: optional number`

      - `stock_pool_9: optional number`

      - `store_location_code: optional string`

      - `tags: optional array of string`

    - `store_number: optional string`

### Store Product Retrieve Store Product Surrounding Response

- `StoreProductRetrieveStoreProductSurroundingResponse = array of object { is_warehouse, most_likely_quantity, area_description, 13 more }`

  - `is_warehouse: boolean`

  - `most_likely_quantity: number`

  - `area_description: optional string`

  - `area_id: optional string`

  - `most_likely_pool_1: optional number`

  - `most_likely_pool_10: optional number`

  - `most_likely_pool_2: optional number`

  - `most_likely_pool_3: optional number`

  - `most_likely_pool_4: optional number`

  - `most_likely_pool_5: optional number`

  - `most_likely_pool_6: optional number`

  - `most_likely_pool_7: optional number`

  - `most_likely_pool_8: optional number`

  - `most_likely_pool_9: optional number`

  - `store_name: optional string`

  - `store_number: optional string`

### Store Product Update Store Products Response

- `StoreProductUpdateStoreProductsResponse object { success, data, message }`

  Standard success response returned by mutation endpoints.

  - `success: boolean`

    Indicates whether the operation completed successfully.

  - `data: optional string`

    Optional data payload returned by the operation.

  - `message: optional string`

    Human-readable message describing the result.
