> For the complete documentation index, see [llms.txt](https://apidocs.akinon.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://apidocs.akinon.com/commerce-openapis/wishlist/wishlists.md).

# Wishlists

Customer favourite products

## List favourite products

> Returns the customer's favourite products with merchandising metadata.

```json
{"openapi":"3.1.0","info":{"title":"Wishlists API - Customer Favourites & Collections","version":"1.0.0"},"tags":[{"name":"Wishlists","description":"Customer favourite products"}],"servers":[{"description":"Default commerce site","url":"https://{commerce_url}","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Commerce storefront hostname"}}},{"description":"Local development","url":"http://localhost:8000"}],"paths":{"/wishlists/favourite-products/":{"get":{"tags":["Wishlists"],"operationId":"listFavouriteProducts","summary":"List favourite products","description":"Returns the customer's favourite products with merchandising metadata.","parameters":[{"$ref":"#/components/parameters/SessionCookieHeader"},{"$ref":"#/components/parameters/PageParameter"},{"$ref":"#/components/parameters/PageSizeParameter"},{"$ref":"#/components/parameters/FavouriteProductIdParameter"},{"$ref":"#/components/parameters/FavouriteSearchParameter"},{"$ref":"#/components/parameters/FavouriteBaseCodeParameter"},{"$ref":"#/components/parameters/FavouriteProductNameParameter"}],"responses":{"200":{"description":"Favourite products listed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaginatedFavouriteProductList"}}}},"401":{"$ref":"#/components/responses/UnauthorizedResponse"}}}}},"components":{"parameters":{"SessionCookieHeader":{"name":"X-Cookie","in":"header","required":true,"description":"Session cookie header (e.g. `sessionid=abc123`)","schema":{"type":"string"}},"PageParameter":{"name":"page","in":"query","description":"Page number (1-indexed)","required":false,"schema":{"type":"integer","minimum":1}},"PageSizeParameter":{"name":"page_size","in":"query","description":"Number of results per page","required":false,"schema":{"type":"integer","minimum":1}},"FavouriteProductIdParameter":{"name":"product_id","in":"query","description":"Filter favourites by product identifier (repeatable)","required":false,"schema":{"type":"array","items":{"type":"integer"},"style":"form","explode":true}},"FavouriteSearchParameter":{"name":"search","in":"query","description":"Filter favourites by exact product identifier","required":false,"schema":{"type":"integer"}},"FavouriteBaseCodeParameter":{"name":"base_code__in","in":"query","description":"Filter favourites by product base codes (comma separated)","required":false,"schema":{"type":"string"}},"FavouriteProductNameParameter":{"name":"product__name","in":"query","description":"Filter favourites by product name (case insensitive contains)","required":false,"schema":{"type":"string"}}},"schemas":{"PaginatedFavouriteProductList":{"type":"object","required":["count","results"],"properties":{"count":{"type":"integer"},"next":{"type":["string","null"],"format":"uri"},"previous":{"type":["string","null"],"format":"uri"},"results":{"type":"array","items":{"$ref":"#/components/schemas/FavouriteProduct"}}}},"FavouriteProduct":{"type":"object","description":"Favourite product entry","required":["pk","product"],"properties":{"pk":{"type":"integer"},"product":{"$ref":"#/components/schemas/WishlistProduct"}}},"WishlistProduct":{"type":"object","description":"Product payload returned within wishlists and alerts","required":["pk","name","sku","price","currency_type","in_stock"],"properties":{"pk":{"type":"integer"},"name":{"type":"string"},"sku":{"type":"string"},"base_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"price":{"type":"string","description":"Sale price (stringified decimal)"},"retail_price":{"type":"string","description":"Original list price (stringified decimal)"},"currency_type":{"type":"string","description":"Currency code"},"in_stock":{"type":"boolean"},"stock":{"type":["integer","null"]},"absolute_url":{"type":["string","null"],"format":"uri"},"productimage_set":{"type":"array","items":{"$ref":"#/components/schemas/WishlistProductImage"}},"productvideo_set":{"type":"array","items":{"$ref":"#/components/schemas/WishlistProductVideo"}},"is_ready_to_basket":{"type":["boolean","null"]},"extra_data":{"type":"object","description":"Additional merchandising metadata (variants, etc.)","additionalProperties":true},"basket_offers":{"type":"array","description":"Promotional basket offers applicable to the product","items":{"type":"object","additionalProperties":true}},"price_type":{"type":"string","description":"Pricing model applied to the product","enum":["default","range_"]},"tax_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"VAT rate as a stringified decimal"},"price_extra_field":{"type":"object","description":"Additional price metadata. Present when the storefront is configured to expose extended pricing information.","additionalProperties":true}}},"WishlistProductImage":{"type":"object","description":"Product image metadata","required":["pk","image"],"properties":{"pk":{"type":"integer"},"image":{"type":"string","format":"uri"},"order":{"type":["integer","null"]},"specialimage_set":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"WishlistProductVideo":{"type":"object","description":"Product video metadata","properties":{"pk":{"type":"integer"},"video":{"type":"string","format":"uri"}}},"ErrorResponse":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"},"code":{"type":["string","null"]}}}},"responses":{"UnauthorizedResponse":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Add product to favourites

> Stores the given product in the authenticated shopper's favourites.

```json
{"openapi":"3.1.0","info":{"title":"Wishlists API - Customer Favourites & Collections","version":"1.0.0"},"tags":[{"name":"Wishlists","description":"Customer favourite products"}],"servers":[{"description":"Default commerce site","url":"https://{commerce_url}","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Commerce storefront hostname"}}},{"description":"Local development","url":"http://localhost:8000"}],"paths":{"/wishlists/favourite-products/":{"post":{"tags":["Wishlists"],"operationId":"createFavouriteProduct","summary":"Add product to favourites","description":"Stores the given product in the authenticated shopper's favourites.","parameters":[{"$ref":"#/components/parameters/SessionCookieHeader"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavouriteProductCreateRequest"}}}},"responses":{"201":{"description":"Favourite created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavouriteProduct"}}}},"400":{"$ref":"#/components/responses/ValidationErrorResponse"},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"409":{"description":"Product already exists in favourites"}}}}},"components":{"parameters":{"SessionCookieHeader":{"name":"X-Cookie","in":"header","required":true,"description":"Session cookie header (e.g. `sessionid=abc123`)","schema":{"type":"string"}}},"schemas":{"FavouriteProductCreateRequest":{"type":"object","required":["product"],"properties":{"product":{"type":"integer","description":"Product identifier to favourite"}}},"FavouriteProduct":{"type":"object","description":"Favourite product entry","required":["pk","product"],"properties":{"pk":{"type":"integer"},"product":{"$ref":"#/components/schemas/WishlistProduct"}}},"WishlistProduct":{"type":"object","description":"Product payload returned within wishlists and alerts","required":["pk","name","sku","price","currency_type","in_stock"],"properties":{"pk":{"type":"integer"},"name":{"type":"string"},"sku":{"type":"string"},"base_code":{"anyOf":[{"type":"string"},{"type":"null"}]},"price":{"type":"string","description":"Sale price (stringified decimal)"},"retail_price":{"type":"string","description":"Original list price (stringified decimal)"},"currency_type":{"type":"string","description":"Currency code"},"in_stock":{"type":"boolean"},"stock":{"type":["integer","null"]},"absolute_url":{"type":["string","null"],"format":"uri"},"productimage_set":{"type":"array","items":{"$ref":"#/components/schemas/WishlistProductImage"}},"productvideo_set":{"type":"array","items":{"$ref":"#/components/schemas/WishlistProductVideo"}},"is_ready_to_basket":{"type":["boolean","null"]},"extra_data":{"type":"object","description":"Additional merchandising metadata (variants, etc.)","additionalProperties":true},"basket_offers":{"type":"array","description":"Promotional basket offers applicable to the product","items":{"type":"object","additionalProperties":true}},"price_type":{"type":"string","description":"Pricing model applied to the product","enum":["default","range_"]},"tax_rate":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"VAT rate as a stringified decimal"},"price_extra_field":{"type":"object","description":"Additional price metadata. Present when the storefront is configured to expose extended pricing information.","additionalProperties":true}}},"WishlistProductImage":{"type":"object","description":"Product image metadata","required":["pk","image"],"properties":{"pk":{"type":"integer"},"image":{"type":"string","format":"uri"},"order":{"type":["integer","null"]},"specialimage_set":{"type":"array","items":{"type":"object","additionalProperties":true}}}},"WishlistProductVideo":{"type":"object","description":"Product video metadata","properties":{"pk":{"type":"integer"},"video":{"type":"string","format":"uri"}}},"ValidationErrorResponse":{"type":"object","description":"Validation errors keyed by field name","additionalProperties":{"type":"array","items":{"type":"string"}}},"ErrorResponse":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"},"code":{"type":["string","null"]}}}},"responses":{"ValidationErrorResponse":{"description":"Request payload validation error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationErrorResponse"}}}},"UnauthorizedResponse":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## Check which products are favourited

> Lightweight favourite check for product listing pages. Given a set of\
> repeatable \`product\_id\` query parameters, returns the ones favourited by\
> the authenticated shopper, each paired with the wishlist item id\
> (\`favourite\_id\`) required to remove it from favourites via\
> \`deleteFavouriteProduct\`.\
> \
> Unlike \`listFavouriteProducts\`, this endpoint performs a \*\*single\
> database query\*\* and returns \*\*only identifiers\*\* — no product cards,\
> pricing, stock, or media are serialized. It is intended for storefront\
> listing / infinite-scroll views that need to render the "favourited"\
> state of many products at once (and offer a remove action) without the\
> cost of the full favourites payload.\
> \
> Behaviour notes:\
> \* Invalid (non-integer) \`product\_id\` values are silently ignored.\
> \* When no valid \`product\_id\` is supplied, an empty list is returned.\
> \* When SKU-level favourites are disabled (\`FAVOURITE\_SKU\_IS\_ACTIVE=false\`),\
> &#x20; a product is reported as favourited if the shopper has favourited any\
> &#x20; product sharing its \`base\_code\`, and \`favourite\_id\` points at that\
> &#x20; existing base\_code favourite.

```json
{"openapi":"3.1.0","info":{"title":"Wishlists API - Customer Favourites & Collections","version":"1.0.0"},"tags":[{"name":"Wishlists","description":"Customer favourite products"}],"servers":[{"description":"Default commerce site","url":"https://{commerce_url}","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Commerce storefront hostname"}}},{"description":"Local development","url":"http://localhost:8000"}],"paths":{"/wishlists/favourite-product-ids/":{"get":{"tags":["Wishlists"],"operationId":"listFavouritedProductIds","summary":"Check which products are favourited","description":"Lightweight favourite check for product listing pages. Given a set of\nrepeatable `product_id` query parameters, returns the ones favourited by\nthe authenticated shopper, each paired with the wishlist item id\n(`favourite_id`) required to remove it from favourites via\n`deleteFavouriteProduct`.\n\nUnlike `listFavouriteProducts`, this endpoint performs a **single\ndatabase query** and returns **only identifiers** — no product cards,\npricing, stock, or media are serialized. It is intended for storefront\nlisting / infinite-scroll views that need to render the \"favourited\"\nstate of many products at once (and offer a remove action) without the\ncost of the full favourites payload.\n\nBehaviour notes:\n* Invalid (non-integer) `product_id` values are silently ignored.\n* When no valid `product_id` is supplied, an empty list is returned.\n* When SKU-level favourites are disabled (`FAVOURITE_SKU_IS_ACTIVE=false`),\n  a product is reported as favourited if the shopper has favourited any\n  product sharing its `base_code`, and `favourite_id` points at that\n  existing base_code favourite.","parameters":[{"$ref":"#/components/parameters/SessionCookieHeader"},{"$ref":"#/components/parameters/FavouritedCheckProductIdParameter"}],"responses":{"200":{"description":"Favourited products resolved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FavouritedProducts"}}}},"401":{"$ref":"#/components/responses/UnauthorizedResponse"}}}}},"components":{"parameters":{"SessionCookieHeader":{"name":"X-Cookie","in":"header","required":true,"description":"Session cookie header (e.g. `sessionid=abc123`)","schema":{"type":"string"}},"FavouritedCheckProductIdParameter":{"name":"product_id","in":"query","description":"Product identifiers to check for favourited state (repeatable)","required":false,"schema":{"type":"array","items":{"type":"integer"},"style":"form","explode":true}}},"schemas":{"FavouritedProducts":{"type":"object","description":"Favourited entries among the queried products. Each entry pairs the\nqueried `product_id` with the wishlist item id (`favourite_id`) needed\nto remove it from favourites via `deleteFavouriteProduct`.","required":["favourite_products"],"properties":{"favourite_products":{"type":"array","items":{"type":"object","required":["product_id","favourite_id"],"properties":{"product_id":{"type":"integer","description":"Queried product identifier that is favourited"},"favourite_id":{"type":"integer","description":"Wishlist item id (FavouriteProduct pk) to pass as `pk` to deleteFavouriteProduct"}}}}}},"ErrorResponse":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"},"code":{"type":["string","null"]}}}},"responses":{"UnauthorizedResponse":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}}}}
```

## DELETE /wishlists/favourite-products/{pk}/

> Remove product from favourites

```json
{"openapi":"3.1.0","info":{"title":"Wishlists API - Customer Favourites & Collections","version":"1.0.0"},"tags":[{"name":"Wishlists","description":"Customer favourite products"}],"servers":[{"description":"Default commerce site","url":"https://{commerce_url}","variables":{"commerce_url":{"default":"sandbox.akinon.com","description":"Commerce storefront hostname"}}},{"description":"Local development","url":"http://localhost:8000"}],"paths":{"/wishlists/favourite-products/{pk}/":{"delete":{"tags":["Wishlists"],"operationId":"deleteFavouriteProduct","summary":"Remove product from favourites","parameters":[{"$ref":"#/components/parameters/SessionCookieHeader"},{"name":"pk","in":"path","required":true,"schema":{"type":"integer"},"description":"Favourite identifier"}],"responses":{"204":{"description":"Favourite removed"},"401":{"$ref":"#/components/responses/UnauthorizedResponse"},"404":{"description":"Favourite not found"}}}}},"components":{"parameters":{"SessionCookieHeader":{"name":"X-Cookie","in":"header","required":true,"description":"Session cookie header (e.g. `sessionid=abc123`)","schema":{"type":"string"}}},"responses":{"UnauthorizedResponse":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}}}},"schemas":{"ErrorResponse":{"type":"object","required":["detail"],"properties":{"detail":{"type":"string"},"code":{"type":["string","null"]}}}}}}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://apidocs.akinon.com/commerce-openapis/wishlist/wishlists.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
