{ "opencollection": "1.0.0", "info": { "name": "Vori Store products API", "version": "1.0.0" }, "items": [ { "info": { "name": "Store products", "type": "folder" }, "items": [ { "info": { "name": "List store products", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products", "params": [ { "name": "state", "value": "", "type": "query", "description": "Filter, sort, and paginate products with a URL-encoded JSON object:\n\n```json\n{\n \"startRow\": 0,\n \"endRow\": 50,\n \"filterModel\": { \"\": },\n \"sortModel\": [{ \"colId\": \"\", \"sort\": \"asc\" }]\n}\n```\n\nAny other top-level property is rejected.\n\n**Pagination** — `startRow` and `endRow` select which slice of results to return: `startRow` defaults to 0, and `endRow` defaults to `startRow` plus 10. You can request at most 1000 rows at a time (`endRow - startRow <= 1000`). The response's `rowCount` field always reflects the total number of matching rows across the entire result set, not just the rows returned in this request.\n\n**Sorting** — `sortModel` orders results by any filterable field except the related-entity fields, plus `id`. If you don't specify a `sortModel`, results are sorted by `created_at` descending (newest first).\n\n**Filtering** — `filterModel` is an object keyed by field name, where each value describes how to match that field:\n\n| Filter | Example | `type` values | Fields |\n| ------ | ------- | --------------- | ------ |\n| Set | `{\"filterType\": \"set\", \"values\": [\"1\", \"2\"]}` |
  • in
  • notIn
|
  • barcode_type
  • retail_price_uom_id
  • store_department_id
  • store_id
  • unit_of_measure_mapping_id
|\n| Boolean | `{\"filterType\": \"boolean\", \"values\": [true]}` |
  • in
  • notIn
|
  • active
  • earns_loyalty_points
  • ebt_enabled
  • ecommerce_enabled
  • esl_enabled
  • is_blackhawk_gift_card
  • is_reloadable_blackhawk_gift_card
  • is_tippable
  • manual_item
  • print_physical_tag
  • prompt_for_quantity
  • snap_incentive_earnable
  • snap_incentive_redeemable
  • sync_to_deli_scales
  • variable_sale_price
  • wic_enabled
|\n| Text | `{\"filterType\": \"text\", \"type\": \"contains\", \"filter\": \"cola\"}` |
  • equals
  • notEqual
  • contains
  • notContains
  • startsWith
  • endsWith
  • blank
  • notBlank
|
  • barcode
  • brand_string
  • country_of_origin
  • description
  • name
  • raw_barcode
  • unit_volume_string
  • wic_override_plu
|\n| Number | `{\"filterType\": \"number\", \"type\": \"greaterThan\", \"filter\": 10}` |
  • equals
  • notEqual
  • lessThan
  • lessThanOrEqual
  • greaterThan
  • greaterThanOrEqual
  • inRange
  • blank
  • notBlank
|
  • base_retail_price
  • case_cost
  • case_size
  • current_margin
  • each_cost
  • lb_cost
  • min_customer_age
  • pack_size
  • store_product.unit_of_measure_amount
  • target_margin
|\n| Date | `{\"filterType\": \"date\", \"type\": \"greaterThan\", \"dateFrom\": \"2026-01-01\", \"dateTo\": null}` |
  • equals
  • notEqual
  • lessThan
  • greaterThan
  • inRange
  • blank
  • notBlank
|
  • base_retail_price_start_time
  • created_at
  • updated_at
|\n| Related entities | `{\"filterType\": \"set\", \"values\": [\"1\"]}` |
  • in
|
  • store_product_item_modifiers.item_modifier_id
  • store_product_tax_rates.tax_rate_id
  • store_product_variable_weights.variable_weight_id
|\n| Product group rules | `{\"filterType\": \"set\", \"values\": [\"0195f9a8-7d64-7c3a-b7f5-3e0a5a2b9c11\"]}` |
  • in
|
  • store_product_group_rule_ids
|\n\n`type` is optional for set and boolean filters and defaults to `in`. Boolean fields also accept set filters, and date fields also accept `\"filterType\": \"datetime\"`. Set filters must be flat — compound `AND`/`OR` conditions are rejected." }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated list of related data to include on each product:\n\n- `active_vendor` — Populates `active_vendor` with the product's primary vendor.\n- `active_vendor_product` — Populates `active_vendor_product` with the primary vendor's catalog entry, including costs.\n- `inventory` — Populates `inventory` with on-hand quantity data.\n- `store_vendor_products` — Populates `store_vendor_products` with every vendor's catalog entry for the product." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Lists store products. Use the `state` parameter to filter, sort, and paginate results." }, { "info": { "name": "Create store product", "type": "http" }, "http": { "method": "POST", "url": "https://api.vori.com/v1/store-products", "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Create store product" }, { "info": { "name": "Get processed store product rule", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products/:id/rules", "params": [ { "name": "id", "value": "", "type": "path" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Get processed store product rule" }, { "info": { "name": "Get store product", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products/:id", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "include", "value": "", "type": "query", "description": "Comma-separated list of related data to include on each product:\n\n- `active_vendor` — Populates `active_vendor` with the product's primary vendor.\n- `active_vendor_product` — Populates `active_vendor_product` with the primary vendor's catalog entry, including costs.\n- `inventory` — Populates `inventory` with on-hand quantity data.\n- `store_vendor_products` — Populates `store_vendor_products` with every vendor's catalog entry for the product." } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Get store product" }, { "info": { "name": "Update store product", "type": "http" }, "http": { "method": "PATCH", "url": "https://api.vori.com/v1/store-products/:id", "params": [ { "name": "id", "value": "", "type": "path" } ], "body": { "type": "json", "data": "{}" }, "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Update store product" }, { "info": { "name": "List processed store product rules", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products/rules", "params": [ { "name": "state", "value": "", "type": "query" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "List processed store product rules" }, { "info": { "name": "List store product history", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products/:id/history", "params": [ { "name": "id", "value": "", "type": "path" }, { "name": "state", "value": "", "type": "query" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Retrieve change history for a specific store product" }, { "info": { "name": "Restore store product", "type": "http" }, "http": { "method": "POST", "url": "https://api.vori.com/v1/store-products/:id/restore", "params": [ { "name": "id", "value": "", "type": "path" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Restore a soft-deleted store product" }, { "info": { "name": "Search store products", "type": "http" }, "http": { "method": "GET", "url": "https://api.vori.com/v1/store-products/search", "params": [ { "name": "page", "value": "", "type": "query" }, { "name": "take", "value": "", "type": "query" }, { "name": "store_ids", "value": "", "type": "query" }, { "name": "query", "value": "", "type": "query" }, { "name": "active", "value": "", "type": "query" } ], "auth": { "type": "bearer", "token": "{{bearerToken}}" } }, "docs": "Endpoint for fast full-text product search. This returns only what is indexed in Algolia and does not hit the database." } ] } ], "bundled": true }