---
title: "List product POS mappings"
method: GET
path: "/public/v1/product-pos-mappings"
tags: ["ProductPosMapping"]
---

# List product POS mappings

`GET /public/v1/product-pos-mappings`

## Request

- Base URL: `https://app.distru.com`
- URL: `https://app.distru.com/public/v1/product-pos-mappings`
- Auth: HTTP bearer

List the links between your Distru products and their matching products in an external point-of-sale (POS) catalog — Blaze, Dutchie, or Treez. Each row is one product-to-POS-product link; a single Distru product can appear more than once when it is mapped in several POS systems or to several retailers.

Filtering:
• Pass no filter to return every POS mapping for your company, across all POS systems and retailers.
• `product_id` returns every mapping for one Distru product.
• `blaze_retailer_id`, `dutchie_retailer_id`, or `treez_retailer_id` returns every mapping for one connected retailer of that POS.

At most one of the id selectors (`product_id`, `blaze_retailer_id`, `dutchie_retailer_id`, `treez_retailer_id`) may be supplied per request — sending more than one returns 400. Each id selector is an exact match on the stored id, not a search. The `inserted_datetime` and `updated_datetime` ranges are separate and may be added on top of any (or no) id selector to narrow the result to a creation/last-updated window. The full matching set is returned in one response.

This endpoint returns eventually consistent data, with changes taking up to 1 second to propagate in responses.

Required permission: `products_permissions_view`.

## Query parameters

- `product_id` string
- `blaze_retailer_id` string
- `dutchie_retailer_id` string
- `treez_retailer_id` integer
- `inserted_datetime` string
- `updated_datetime` string

## Response `200`

Success

- ProductPosMappingsResponse
  - `data` ProductPosMapping[], required: The matching POS mappings. Empty when your company has no mappings (or none match the filter).
    - `blaze_asset_id` string, nullable: Blaze asset (image) id for the product, or null if none was set. Present only when `pos_type` is `BLAZE`.
    - `blaze_product_id` string: Blaze's own id for the mapped product. Present and non-null only when `pos_type` is `BLAZE`; omitted entirely for other POS types.
    - `blaze_retailer_id` string: Distru ID of the connected Blaze retailer this mapping is scoped to. Present and non-null only when `pos_type` is `BLAZE`; omitted entirely for other POS types.
    - `dutchie_product_id` integer: Dutchie's own numeric id for the mapped product (a Dutchie identifier, not a Distru id). Present and non-null only when `pos_type` is `DUTCHIE`; omitted entirely for other POS types.
    - `dutchie_retailer_id` string: Distru ID of the connected Dutchie retailer this mapping is scoped to. Present and non-null only when `pos_type` is `DUTCHIE`; omitted entirely for other POS types.
    - `id` string, required: ID of this mapping. Use it to fetch or delete the mapping. Always present.
    - `inserted_datetime` string, datetime, required: When the mapping was created, in UTC. Always present.
    - `pos_type` 'BLAZE' | 'DUTCHIE' | 'TREEZ', required: Which external POS this mapping targets. One of `BLAZE`, `DUTCHIE`, or `TREEZ` (SCREAMING_CASE). Determines which POS-specific fields below are present. Always present.
    - `product_id` string, required: ID of the linked Distru product. Always present.
    - `treez_photo_url` string, nullable: URL of the product photo in Treez, or null if none was set. Present only when `pos_type` is `TREEZ`.
    - `treez_product_id` string: Treez's own id for the mapped product (a Treez identifier, not a Distru id). Present and non-null only when `pos_type` is `TREEZ`; omitted entirely for other POS types.
    - `treez_retailer_id` integer: ID of the connected Treez retailer this mapping is scoped to, as an integer. Present and non-null only when `pos_type` is `TREEZ`; omitted entirely for other POS types.
    - `updated_datetime` string, datetime, required: When the mapping was last updated, in UTC. Equals `inserted_datetime` until the first update. Always present.
  - `next_page` string: URL for the next page of results; null when there is no next page

## Other responses

- `400`: Invalid parameters
- `401`: Missing or invalid API token
- `403`: The API token lacks the required permission, or team restrictions hide the record

---

[API](https://skmtc.dev/distru/apis/distru-api.md) - [All operations](https://skmtc.dev/distru/apis/distru-api/llms.txt) - [OpenAPI document](https://skmtc.dev/distru/apis/distru-api/revisions/9d851a88e82f?raw)
