> For the complete documentation index, see [llms.txt](https://the-wishlist-documentation.gitbook.io/the-wishlist-documentation-docs/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://the-wishlist-documentation.gitbook.io/the-wishlist-documentation-docs/deprecated-apis/migration-guide-wishlist-all.md).

# Migration Guide: Wishlist All

**Status:** Deprecated May 2026\
**Effective:** Immediately\
**Replacement Endpoint:** \`GET /wishlist/all/withItems

This guide is intended for Shopify partners that have directly accessed our javascript `GET /wishlist/all` endpoint.

## 1. Summary of changes

The existing `GET /wishlist/all` endpoint is being replaced by `GET /wishlist/all/withItems`. The new endpoint returns a **lighter payload**: only product references (IDs) instead of the full Shopify product detail inlined per item. Clients are expected to fetch product details from Shopify directly when needed for rendering.

## 2. Endpoint

|        | Old                         | New                                   |
| ------ | --------------------------- | ------------------------------------- |
| Method | `GET`                       | `GET`                                 |
| Path   | `/store-front/wishlist/all` | `/store-front/wishlist/all/withItems` |

## 3. Query parameters

| Param       | Old      | New          | Notes       |
| ----------- | -------- | ------------ | ----------- |
| `owner`     | required | **required** | Customer ID |
| `shop_hash` | required | **required** | Store hash  |

Example request:

```
GET /store-front/wishlist/all/withItems?owner=8123456789012&shop_hash=abc123
```

## 4. Response envelope (unchanged)

```json
{
  "code": 200,
  "success": true,
  "message": "...",
  "detail_error": null,
  "data": { ... }
}
```

Only the shape of `data` changes.

## 5. `data` schema comparison

### 5.1. Top-level

**Old (`/all`)**

```json
{
  "wishlists": [ ... ],
  "page": 1,
  "limit": 10,
  "total": 25
}
```

**New (`/all/withItems`)**

```json
{
  "wishlist_count": 3,
  "total_items": 12,
  "wishlists": [ ... ]
}
```

| Old field                 | New field        | Notes                                           |
| ------------------------- | ---------------- | ----------------------------------------------- |
| `total` (total wishlists) | `wishlist_count` | Renamed                                         |
| `page`, `limit`           | —                | Removed; all wishlists returned in one call     |
| —                         | `total_items`    | New: total number of items across all wishlists |

### 5.2. Each wishlist

**Old**

```json
{
  "id": "uuid-wishlist",
  "uuid": "",
  "title": "My wishlist",
  "owner": "8123456789012",
  "subscribe": false,
  "shop_hash": "abc123",
  "published": true,
  "is_default_wishlist": false,
  "uuid_share": "share-uuid",
  "created_time": "2025-01-15T03:21:00Z",
  "items": {
    "item": [ ... ],
    "limit": 0, "page": 0, "total": 0
  }
}
```

**New**

```json
{
  "id": "uuid-wishlist",
  "title": "My wishlist",
  "is_default_wishlist": false,
  "created_time": "2025-01-15T03:21:00Z",
  "items": {
    "item": [ ... ]
  }
}
```

| Old field             | New field             | Client action                 |
| --------------------- | --------------------- | ----------------------------- |
| `id`                  | `id`                  | Unchanged                     |
| `title`               | `title`               | Unchanged                     |
| `is_default_wishlist` | `is_default_wishlist` | Unchanged                     |
| `created_time`        | `created_time`        | Unchanged                     |
| `items`               | `items`               | Item schema changed — see 5.3 |

### 5.3. Each item inside `items.item[]`

**Old**

```json
{
  "id": "wishlist-item-uuid",
  "variant_ids": ["44123456789"],
  "items_uuid": ["..."],
  "product": {
    "id": 7012345678901,
    "title": "T-shirt",
    "body_html": "<p>...</p>",
    "vendor": "...",
    "handle": "t-shirt",
    "options": { ... },
    "variants": [ ... ],
    "image": { ... },
    "images": [ ... ],
    "created_at": ...,
    "updated_at": ...,
    "published_at": ...
  }
}
```

**New**

```json
{
  "item_id": "wishlist-item-uuid",
  "product_id": "7012345678901",
  "variant_id": "44123456789"
}
```

| Old field        | New field    | Notes                                                                                   |
| ---------------- | ------------ | --------------------------------------------------------------------------------------- |
| `id`             | `item_id`    | **Renamed**                                                                             |
| `product.id`     | `product_id` | **Renamed and type changed**: `int64` → `string`                                        |
| `variant_ids[0]` | `variant_id` | **Flattened**: array → string (each wishlist item is now a single product/variant pair) |

## 6. Error codes

| HTTP  | Case                                                                                 |
| ----- | ------------------------------------------------------------------------------------ |
| `200` | Success                                                                              |
| `422` | Missing `owner` or `shop_hash`, or `owner` is not a numeric string                   |
| `403` | Backend error while looking up wishlists (details in `detail_error["detail error"]`) |

## 7. Client migration checklist

* [ ] Change URL from `/wishlist/all` to `/wishlist/all/withItems`
* [ ] Stop sending `page`, `limit`, `published`, `wishlist_title`, `variant_id`
* [ ] Update top-level parser: `total/page/limit` → `wishlist_count/total_items`
* [ ] Update item parser: `id` → `item_id`, `product.id` → `product_id`, `variant_ids[0]` → `variant_id`; note that `product_id` and `variant_id` are now strings
* [ ] Implement batched product-detail fetch from Shopify using `product_id`
* [ ] Move pagination to the client side
* [ ] Regression test: add product still updates the list correctly; empty wishlist renders; customers with more than 50 items render correctly
