PlutocracyMercury developer docs

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

FieldTypeDescription
collectionPosition optional{ [key]: number }

Position of the product per collection handle.

Fields
FieldTypeDescription
[key: string]number

Any further keys.

idstring

Shopify GID, e.g. gid://shopify/Product/1.

titlestring
implodeImplodeMode
imploded optionalRedisProduct[]

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 optionalstring
tags_string optionalstring
handlestring
min_pricenumber

Minor units (cents) in the stored document.

max_pricenumber

Minor units (cents) in the stored document.

compare_at_min_pricenumber

Minor units (cents) in the stored document.

compare_at_max_pricenumber

Minor units (cents) in the stored document.

vendorstring
typestring
on_saleboolean
total_stocknumber
normalised_popularity optionalnumber
normalised_stock optionalnumber
variantsRenderedVariant[]
pricesRedisPricesMap
created_datestring

ISO date string on the wire.

tagsstring[]
image optionalstring
images optionalstring[]
options optionalany
related optionalstring

Stringified Juno related-products object.

meta optionalRedisProductMeta
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

Declared in api-types/src/models/product.ts.