> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stateset.com/llms.txt
> Use this file to discover all available pages before exploring further.

# The item master (assortment) for the tenant, optionally by partner.

> Item-master records

### Query parameters

<ParamField query="partner_id" type="string">
  Filter to one partner
</ParamField>

### Response

`CatalogItemRecord[]` — each element:

<ResponseField name="description" type="string" />

<ResponseField name="history" type="CatalogChange[]">
  Append-only changelog of which attributes changed at each version bump.

  <Expandable title="CatalogChange">
    <ResponseField name="at" type="string (date-time)" required />

    <ResponseField name="changed_fields" type="string[]" required>
      Which attributes changed (`description`, `prices`, `pack_size`, `ids`).
    </ResponseField>

    <ResponseField name="version" type="integer (int32)" required />
  </Expandable>
</ResponseField>

<ResponseField name="ids" type="ProductId[]">
  <Expandable title="ProductId">
    <ResponseField name="qualifier" type="string" required />

    <ResponseField name="value" type="string" required />
  </Expandable>
</ResponseField>

<ResponseField name="pack_size" type="string" />

<ResponseField name="partner_id" type="string" required />

<ResponseField name="prices" type="CatalogPrice[]">
  <Expandable title="CatalogPrice">
    <ResponseField name="price" type="string" required>
      CTP-03 unit price.
    </ResponseField>

    <ResponseField name="qualifier" type="string" required>
      CTP-02 price-qualifier code (e.g. `RES` resale, `UCP` unit cost, `LIS` list). Defaults to an empty qualifier when the segment omits it.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="sku" type="string" required />

<ResponseField name="tenant_id" type="string" required />

<ResponseField name="updated_at" type="string (date-time)" required />

<ResponseField name="version" type="integer (int32)" required>
  Bumped each time the attributes change; 1 on first ingest.
</ResponseField>

### Status codes

| Code  | Meaning                   |
| ----- | ------------------------- |
| `200` | Item-master records       |
| `403` | Admin credential required |

<RequestExample>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://edi.stateset.com/v1/catalog' \
    --header 'Authorization: Bearer YOUR_API_KEY'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  [
    {
      "description": "string",
      "history": [
        {
          "at": null,
          "changed_fields": null,
          "version": null
        }
      ],
      "ids": [
        {
          "qualifier": null,
          "value": null
        }
      ],
      "pack_size": "string",
      "partner_id": "string",
      "prices": [
        {
          "price": null,
          "qualifier": null
        }
      ],
      "sku": "string",
      "tenant_id": "string",
      "updated_at": "2026-07-24T12:00:00Z",
      "version": 1
    }
  ]
  ```
</ResponseExample>
