RedisProduct
A product document as stored in redis (JSON.GET on the product key).
This is the shape returned RAW by the shopify/product/handle(s) alias
routes, which skip mapOutput entirely.
NOTE: prices here are integer minor units (cents); mapOutput divides by
100 before sending. Fields written only for some stores are optional.
Type: object
| Field | Type | Description | ||||||
|---|---|---|---|---|---|---|---|---|
collectionPosition optional | { [key]: number } | Position of the product per collection handle. Fields
| ||||||
id | string | Shopify GID, e.g. | ||||||
title | string | |||||||
implode | ImplodeMode | |||||||
imploded optional | RedisProduct[] | Imploded products only: the variant products as STORED in Redis (unmapped: prices in minor units), filtered to the request's tag clauses (RedisSearchService.mapImploded). | ||||||
description_string optional | string | |||||||
tags_string optional | string | |||||||
handle | string | |||||||
min_price | number | Minor units (cents) in the stored document. | ||||||
max_price | number | Minor units (cents) in the stored document. | ||||||
compare_at_min_price | number | Minor units (cents) in the stored document. | ||||||
compare_at_max_price | number | Minor units (cents) in the stored document. | ||||||
vendor | string | |||||||
type | string | |||||||
on_sale | boolean | |||||||
total_stock | number | |||||||
normalised_popularity optional | number | |||||||
normalised_stock optional | number | |||||||
variants | RenderedVariant[] | |||||||
prices | RedisPricesMap | |||||||
created_date | string | ISO date string on the wire. | ||||||
tags | string[] | |||||||
image optional | string | |||||||
images optional | string[] | |||||||
options optional | any | |||||||
related optional | string | Stringified Juno related-products object. | ||||||
meta optional | RedisProductMeta |
Example (illustrative)
{
"collectionPosition": {
"key": 1
},
"id": "7712345678901",
"title": "Linen shirt",
"implode": 1,
"imploded": [
{
"collectionPosition": {
"key": 1
},
"id": "7712345678901",
"title": "Linen shirt",
"implode": 1,
"imploded": [
{}
],
"description_string": "string",
"tags_string": "summer",
"handle": "linen-shirt",
"min_price": 89,
"max_price": 89,
"compare_at_min_price": 89,
"compare_at_max_price": 89,
"vendor": "Mercury Apparel",
"type": "Shirts",
"on_sale": false,
"total_stock": 12,
"normalised_popularity": 1,
"normalised_stock": 12,
"variants": [
{
"title": "Linen shirt",
"id": 7712345678901,
"inventory": 12,
"price": "89.00",
"compare_at_price": "89.00"
}
],
"prices": {
"AUD": {
"price": 89
}
},
"created_date": "2026-11-01T00:00:00.000Z",
"tags": [
"summer"
],
"image": "https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg",
"images": [
"https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg"
],
"options": null,
"related": "string",
"meta": {
"key": null
}
}
],
"description_string": "string",
"tags_string": "summer",
"handle": "linen-shirt",
"min_price": 89,
"max_price": 89,
"compare_at_min_price": 89,
"compare_at_max_price": 89,
"vendor": "Mercury Apparel",
"type": "Shirts",
"on_sale": false,
"total_stock": 12,
"normalised_popularity": 1,
"normalised_stock": 12,
"variants": [
{
"title": "Linen shirt",
"id": 7712345678901,
"inventory": 12,
"price": "89.00",
"compare_at_price": "89.00",
"option1": "string",
"option2": "string",
"option3": "string",
"grams": 1
}
],
"prices": {
"AUD": {
"price": 89,
"compare_at_price": 89
}
},
"created_date": "2026-11-01T00:00:00.000Z",
"tags": [
"summer"
],
"image": "https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg",
"images": [
"https://cdn.shopify.com/s/files/1/0000/0001/files/linen-shirt.jpg"
],
"options": null,
"related": "string",
"meta": {
"reviews": null,
"badges": [
{
"content": "string",
"background": "#1f6feb",
"colour": "#1f6feb",
"positiony": "top",
"positionx": "left",
"classes": "string",
"type": "manual"
}
],
"personalise": {
"description": "string"
},
"related": null
}
}Used by
- GET
/search/collection/{handle} - GET
/search/product/{handles} - GET
/search/query/{term} - GET
/zone/query - POST
/zone/query - GET
/zone/query/{id} - POST
/zone/query/{id}
Declared in api-types/src/models/product.ts.