PlutocracyMercury developer docs

RenderedProduct

A product AFTER RedisSearchService.mapOutput — the shape appearing in products arrays of rendered search/collection/zone responses and in GET search/product/:handles.

Differences from RedisProduct:

  • prices divided by 100 (major units);
  • 0 prices become undefined (the code does x / 100 || undefined), so free products serialise with the price fields ABSENT;
  • max_price / compare_at_max_price are dropped from the output object;
  • prices narrowed to the requested currency when ?currency= was sent.

Type: object

FieldTypeDescription
idstring
titlestring
implodeImplodeMode
handlestring
min_price optionalnumber

Major units. Absent/undefined when the stored price was 0 or missing.

compare_at_min_price optionalnumber

Major units. Absent/undefined when the stored price was 0 or missing.

vendorstring
typestring
on_saleboolean
total_stocknumber
variantsRenderedVariant[]
pricesRedisPricesMap
created_datestring

ISO date string on the wire.

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

Stringified Juno related-products object.

imploded optionalRedisProduct[]

As stored: see RedisProduct.imploded (mapOutput passes it through unmapped).

meta optionalRedisProductMeta
Example (illustrative)
{
  "id": "7712345678901",
  "title": "Linen shirt",
  "implode": 1,
  "handle": "linen-shirt",
  "min_price": 89,
  "compare_at_min_price": 89,
  "vendor": "Mercury Apparel",
  "type": "Shirts",
  "on_sale": false,
  "total_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",
  "options": null,
  "normalised_stock": 12,
  "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"
  ],
  "related": "string",
  "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
      }
    }
  ],
  "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.