The handle of the collection you wish to browse.Use all to browse every browsable product in the catalog. This works whether or not your store has a synced /collections/all collection. If a collection with the handle all is synced, Layers browses that collection’s products. If not, it browses the whole catalog with the store’s default sort order and no collection-specific variant breakouts. Any other handle that doesn’t match a synced collection returns an error.
Code of the sort order. When provided, it takes precedence over collection and store defaults. If omitted, Layers uses the collection’s default sort order, then the store default when the collection has no default. Existing merchandising rules continue to apply as configured.
Dynamic linking promotes specific products to the top of the first page of results. Dynamic linking takes priority over merchandising rules and sort orders.
If the Layers tracking pixel is installed, this parameter is automatically injected when customers arrive with a utm_products URL parameter (e.g., ?utm_products=summer-dress-blue_classic-tee-white_beach-hat). See Dynamic Linking for ads for details.
Products to pin. Each entry is either a plain identifier or an object:
Handle: a string, for example "summer-dress-blue".
ID: a number or numeric string, for example 8234567890123.
Object: { "productId": "summer-dress-blue", "position": 2 }. productId takes a handle or ID. position is optional.
You can mix all three in one array. Any other entry shape (an object without productId, an empty string, a nested array) returns 422.Position:
Plain identifiers, and objects without position, are pinned in array order: the first one at position 1 (after any offset), the next at position 2, and so on.
An object’s position is the exact 1-based slot for that product on the first page. It must be an integer of 1 or more, and offset doesn’t apply to it.
Unpositioned products fill the remaining pinned slots in array order.
If the same product appears more than once, the first explicit position for it wins.
Behavior:
Only applies on the first page of results (page 1)
Non-existent or unavailable products are silently skipped
Subsequent products shift up to fill any gaps
Takes priority over merchandising rules and sort orders
Number of leading positions to leave to the normal result order before the linked products. Defaults to 0, which pins the first product at position 1. An offset of 2 places the first linked product at position 3. Products with an explicit position ignore offset.Example:
Specify which product variants should be selected by default in the first_or_matched_variant field. This is useful for scenarios like defaulting to a specific birthstone option in a jewelry collection.
The option value to match (e.g., "February", "Blue").
Behavior:
Uses OR logic - selects the first variant matching ANY of the specified option values
Falls back to the first variant by position if no match is found
Automatically skipped when any option or variant filters are applied (filters take precedence)
Only affects the first_or_matched_variant field in the response
Works with Variant Breakouts — product tiles respect your default selected options, and variant tiles respect non-breakout default selected options (preferring variants that match your preferences within each breakout group, with fallback to position ordering)
Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: id, title, handle, body_html, vendor, product_type, tags, images, available, created_at, updated_at, published_at, price_range, options, original_options, metafields, named_tags, calculated, category, featured_media, is_gift_card, has_variants_that_require_components, combined_listing_parent_product_id, combined_listing_role, first_or_matched_variant, and variants. The collection_titles attribute is opt-in: pass it in attributes to include the array of collection titles each product belongs to. It is excluded from responses by default. See the Product Schema for detailed descriptions, including nested field selection for slicing arrays and filtering collections (for example, images[:2].src, variants[sku=ABC].price, metafields[namespace=custom]).
Storefront endpoints accept nested AND/OR filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example metafields.my-app.fit-type.Refer to the dedicated Filter Expressions guide to learn more about filter expressions.
Facets to be included. Accepts both exact facet codes (e.g., "vendor", "options.Size") and wildcard patterns (e.g., "options.*", "metafields.product.*").Wildcard patterns expand to all matching attribute codes. For example, "options.*" expands to all option facets like "options.Size" and "options.Color". Wildcards must match at least one attribute code to be valid.Examples:
When true, any facet backed by a metaobject_reference or list.metaobject_reference metafield is returned with a companion facetDisplay object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s display_name and fields. When the metaobject defines a color or image field, the entry also carries a resolved swatch object.Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When false or omitted, only the handles are returned in facets.Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from facetDisplay and remain as plain values in facets. See Metaobjects and reference metafields for the normalized shape of each entry.
Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the Discount Entitlements guide for detailed usage.Fixed amounts use your shop’s base currency. Layers skips them on market pricing rows in a different native currency, without converting the discount. Percentage discounts still apply to those localized prices. A variant that falls back to its base price can still receive a fixed-amount discount.
Optional filter group that qualifies products for the discount based on their attributes (for example, tags or vendor). Uses the same shape as the top-level filter_group parameter. Matches are additive with products, variants, and collections on the same entitlement.
The discount value. For PERCENTAGE, this must be a number between 0 and 100 (e.g., 10 for 10% off). For FIXED_AMOUNT, this is the amount in your shop’s base currency, not the shopper’s market currency.
Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel.
Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie.
Shopify B2B company location GID (e.g. gid://shopify/CompanyLocation/123456789) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic.When you pass companyLocationId, you must also pass the buyer’s customerId. Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a 403. See B2B catalogs.
When provided, the Browse API loads the specified preview rule instead of the collection’s active merchandising rule. Preview rules are temporary and expire one hour after creation.This parameter is automatically included when you open a preview URL from the Layers dashboard. You do not need to set it manually in production integrations.Behavior:
Overrides normal merchandising rule resolution for this request
Analytics and beacon events are not recorded for preview requests
Returns a 404 if the preview has expired or does not exist
When set to true, products with no available variants are excluded from results regardless of the store-level out-of-stock visibility setting. If your store’s inventory location scope is narrowed, the same location rules apply.This is useful when a specific browse integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear.
Store-level out-of-stock demoting (the “At the end” option) does not apply to browse results. Browse relies on the Shopify collection itself for product ordering. When you set forceHideOutOfStock to true on a browse request, out-of-stock products are hidden entirely rather than demoted.
Declares the storefront grid so inline merchandising banners can reserve grid cells and products are paged around them. When grid is present, the response includes a top-level grid block and each anchored inline banner gets a page-local placement object.Omit grid to keep the legacy behavior. Banners return without placement, and pagination is computed against products only.
Number of columns in your product grid. Must be between 1 and 12. Inline banner widths are clamped to [1, columns] and heights to [1, 4]. When pagination.limit >= columns, height is also limited to the number of rows per page (floor(pagination.limit / columns)).
"desktop" or "mobile". Selects which per-device layout (web_layout or mobile_layout) the planner reads when anchoring banners to grid cells.
Behavior:
cellsPerPage = floor(pagination.limit / columns) * columns. Any remainder is dropped so pages are always whole rows.
Banners taller than one row cannot straddle a page’s last row; they move forward to the next open block.
When two banners target the same cell, the second is bumped to the next open cell (row-major scan).
Banners that cannot be anchored to the grid (missing device layout, no saved position, or no fit within the scan buffer) are still returned, but without a placement key.
totalPages accounts for banner cells across the collection, not just product count.
Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See Contextual Information for implementation guidance.
Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide geo explicitly.
Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below 1 count as 1. Layers uses it to calculate the cart subtotal for Free Shipping Picks.
The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. 75.00 for $75), not cents. Layers ignores values that aren’t a number greater than 0. Required for Free Shipping Picks blocks.
Shopify’s /cart.js and Liquid money values such as cart.total_price and item.price are in cents. Divide them by 100 before sending productsInCart[].price or freeShippingThreshold.
Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See Recently viewed products.
Unit price in the request currency’s major units (e.g. 29.00 for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as "29.00".
The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules.
Click identifiers from the landing URL, keyed by parameter name (e.g., fbclid, gclid). Layers derives the originating network from them as marketing.clickSource and discards the raw tokens. See Context data structure.
A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., {"exp_123": "group_b"}). Used by the Experiment Group contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped.
Shopify customer tags on the shopper’s profile (e.g., ["vip", "wholesale"]). Collected by the Storefront Pixel for signed-in customers; null for guests.
Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in identity.customerId on every request and ignores any value you send. null for guests and customers with no segment memberships. Available as context.customer.segments in contextual conditions.
Explicitly set the Shopify Market for this request. Must be provided inside context; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., "US", "CA"), a numeric Shopify Market ID (e.g., "12345"), or a Shopify Market GID (e.g., "gid://shopify/Market/12345").When not provided, the market is automatically resolved from context.geo.country (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback.When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See Market resolution.Behavior depends on the store’s market application mode (set under Settings > Search & Discovery > Search Behavior, in the Markets card):
Restrict to market catalog — Products are filtered to only those available in the resolved market, and market-specific pricing is applied
Adjust pricing only — The full catalog remains visible, but variant prices are swapped to market-specific values where available
Ignore markets (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers
ISO 4217 currency code (e.g., "USD", "EUR"). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence.
Shopify B2B company location identifier. When identity.companyLocationId is provided, Layers resolves the company location server-side and the server value takes precedence.
The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as "app").Accepted values:
"web" — Standard web browser (default)
"app" — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)
Per-request overrides for response behavior. Currently controls image preload hints emitted in the Link response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled.
Set to false to skip the Link header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level.
Custom responsive image widths (in pixels) to emit in imagesrcset. Each value must be an integer between 1 and 10000. Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used.
Media query string emitted as the imagesizes attribute in the preload Link header (for example (max-width: 600px) 100vw, 50vw). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the accepted format for details. The API rejects invalid values with a validation error.
The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted.
Total inventory quantity across the locations in the store’s inventory location scope, which is all locations by default. Only included when the store has the Expose Variant Inventory setting enabled.
Inventory policy for the variant: DENY (stop selling when out of stock) or CONTINUE (allow overselling). Only included when the store has the Expose Variant Inventory setting enabled.
Object mapping location IDs to available inventory quantities (e.g., {"1001": 5, "1002": 10}). Returns empty object {} when no inventory data exists. Only included when the store has the Expose Variant Inventory setting enabled.
The total number of results. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products.The count is scoped to the visibility of the active shopping channel. When context.shoppingChannel is "web" (the default), only products published to the online store are counted. When it is "app" and an app sales channel is configured, only products published to that channel are counted. As a result, totalResults always matches the number of products a shopper can actually see for that channel.
If retrieveFacetCount is true then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal "null" strings are automatically excluded from facet results.Counts are scoped to the visibility of the active shopping channel, so they match the number of products (or tiles) a shopper can actually see. Products that are not published to the requester’s channel, are B2B-only, or are hidden by a combined-listing role are excluded from every bucket. When context.shoppingChannel is "app" but the store does not have an app sales channel configured, counts fall back to the web channel.When filter_group is present, counts follow the standard “OR within a facet, AND across facets” pattern. Facets whose condition uses a multi-select operator (IN, NOT IN) are counted against every other active filter except the facet’s own, so other values in the same facet stay selectable. Facets whose condition uses a single-select or predicate operator (EQ, NEQ, GT, LT, BETWEEN, NULL, and so on) are counted against the fully filtered result set.
Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object.Metaobject-reference facets require enrichFacetMetaobjects: true and map each handle to the metaobject’s display_name and fields. Entries also carry a swatch object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in facets. See Metaobjects and reference metafields for the normalized field shape and the Facets API response for the swatch shape.For variants.pickup_locations, each entry maps a Shopify location id to the location’s id, name, address, instructions, pickupTime, and (when the filter is a geoRadius) distance and distanceUnit. Pickup entries are returned whenever pickup facets are requested, regardless of enrichFacetMetaobjects. See Local pickup filtering.
Merchandising banners emitted by any merchandising rules that matched this request. Flat across all applied rules and pre-sorted by sort_index. Your storefront is responsible for rendering banners into the grid. See Rendering banners in Liquid and Rendering banners with the SDK. Each banner carries the rule_id of the rule that produced it. _meta.appliedRules still lists every applied rule ID.
ID of the merchandising rule that produced this banner. Send it on banner_impression and banner_clicktracking events so engagement attributes back to the rule.
Click-through URL. Only honored on inject banners, and only meaningful when type is "link" (the built-in type). Custom banner types put their click-through URL inside data instead.
Banner type slug. "link" for the built-in type, otherwise the slug of a custom banner type defined for your store. Storefronts switch renderers on this value.
Saved values for the banner type’s field schema. Keys match the schema’s key values. Only keys defined in the current schema are returned. Retyped or removed fields are dropped. product_reference, collection_reference, and variant_reference fields (and their list. variants) are resolved to { "id", "handle" } objects; unpublished references are omitted.
Desktop layout. { placement: "hero" | "inline", width, height, position }. For hero, render a horizontal banner across the full product-grid width above the first product row; ignore the cell spans and position. For inline, position is a row-major 0-indexed grid cell, and width and height are column and row spans, not image dimensions in pixels. Inline width is bounded by the grid columns, not limited to one or two; inline banners can span up to four rows, and the editor resizes both width and height.
Only present when the request includes a grid block and the banner is an inline banner anchored to a cell on the current page. Hero banners never carry placement and are always returned. Inline banners that could not be anchored (missing device layout, no saved position, or no fit within the scan buffer) are still returned without this key so they do not vanish from the storefront.
Only present when the request includes a grid block. Echoes the resolved grid geometry so the storefront can render banners into the exact cells the planner used to page products.
A unique request identifier (ULID) for this API call. Use this token to correlate browse requests with analytics events via the Beacon API, and to match requests to entries in the Search Inspector.
The IDs of request transforms whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given browse request.
One entry per action executed by a matched request transform, in execution order. Use changed to tell whether an action actually modified the request. A matched rule can appear in appliedSearchRules while all of its actions report changed: false. See Debugging with _meta.
true when the action modified the request. false when the action was a no-op, for example an override_sort_order action matching the already-active sort order.
Only present when the action could not run. "unsupported_action_type" indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally.
Array of variant breakout configurations applied to this collection. Only present when one or more variant breakouts are active for the collection. Multiple breakouts with different option codes can work simultaneously in the same collection. Each object has the structure {optionCode: "Stone"}.
The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array.
Echoes the image preload configuration used to build the Link response header for this request. Only present when image preloads are emitted. See Early hints.
The responsive image widths (in pixels) used in the imagesrcset of the Link header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults.
Echoes the discount entitlements applied to this request. Only present when the request included discountEntitlements (either directly or via a matched request transform). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request.
The entitlement criteria that qualified products for the discount. Contains any of all, products, variants, collections, or conditions. See the entitlement criteria reference.
The discount value. Percent off for PERCENTAGE, shop base-currency amount for FIXED_AMOUNT. An echoed entitlement doesn’t guarantee a price reduction on every variant; see the shared discountEntitlements request parameter for market-currency limits.
An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the browse pipeline, recorded in the order it was executed. Use this field to understand which merchandising rules, sort orders, and boosts were applied.This field is useful for debugging browse behavior in development and is also surfaced in the Search Inspector panel.
Every API response includes the following headers for request tracing and performance optimization:
Header
Description
x-request-id
A unique identifier (ULID) for the request. This matches the attributionToken in the response body. Use it to correlate requests across your infrastructure or when contacting support.
x-layers-build
The Layers build version that served the request.
X-Layers-Results-Cache
Indicates whether the response was served from the results cache. Returns HIT when cached results were used, or MISS when results were computed fresh.
Link
Contains rel="preload" directives for product images in the response (up to 6 items), enabling browsers and CDNs to begin fetching images before your application processes the JSON body. See Early hints for configuration options. Only included when early hints are enabled (enabled by default).
When variant breakouts are configured, results may include both product tiles and variant tiles. Each result includes a __typename field to identify the tile type:
The specific variant ID. For variant tiles, this matches the id field.
For variant tiles, the id field contains the variant ID (not the product ID). The title field is formatted as "{product title} - {option value}" by default (e.g., “Amethyst Ring - Rose Quartz”), but the format can be configured per breakout. If the breakout’s Include Option Value in Title setting is disabled, the title is the original product title. See the Variant Breakouts documentation for more details.
{ "results": [ { "id": 7003338965178, "title": "SUPREME SEALLINE SEE POUCH SMALL", "body_html": "The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..", "vendor": "SUPREME", "product_type": "Accessories", "created_at": "2022-02-05T01:22:05.000000Z", "handle": "supreme-pouch-44370ss18a32-sm", "updated_at": "2023-10-25T20:47:04.000000Z", "published_at": "2022-02-05T01:22:05.000000Z", "tags": [ "consignment" ], "images": [ { "alt": "SUPREME POUCH", "src": "https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927", "width": 800, "height": 534, "variant_ids": [] } ], "metafields": { "product": { "alias": "SEALLINE SEE POUCH SMALL", "colorway": "BLACK", "styleCode": "SS18A30 BLACK", "yearOfRelease": 2018, "searchColor": [ "black" ] } }, "available": true, "price_range": { "from": 30, "to": 30 } } ], "totalResults": 1000, "page": 1, "totalPages": 20, "facets": { "vendor": { "ADIDAS": 30, "JORDAN": 336, "NEW BALANCE": 15, "NIKE": 384, "REEBOK": 4, "SUPREME": 624, "VANS": 32 } }, "attributionToken": "01JRVX8M3N4P5Q6R7S8T9U0V1W", "_meta": { "appliedRules": [], "appliedSearchRules": [], "appliedSearchRuleActions": [] }, "_workflow": [ { "type": "rule-applied", "payload": "rule_01JRVX8M3N4P5Q6R7S8T9U0V1W" } ]}
Was this page helpful?
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Layers","colors":{"primary":"#607FFD","light":"#AFC0FF","dark":"#3A57E8"},"logo":{"light":"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007","dark":"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007","href":"https://www.uselayers.com/?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"},"favicon":"https://mintcdn.com/protoninc/qubyNEZK4oJTl9By/favicon.svg?fit=max\u0026auto=format\u0026n=qubyNEZK4oJTl9By\u0026q=85\u0026s=3611d60346e12f15e4684bc60cb69ece","api":{"mdx":{"server":"https://app.uselayers.com/api/storefront/v1"}},"navbar":{"links":[{"href":"https://www.uselayers.com/changelog?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site","label":"Changelog"},{"href":"mailto:support@uselayers.com","label":"Support"},{"href":"https://app.uselayers.com/dashboard?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-dashboard","label":"Dashboard"}],"primary":{"type":"button","label":"Request Demo","href":"https://www.uselayers.com/demo?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/uselayers"},"links":[{"header":"Legal","items":[{"label":"Privacy Statement","href":"https://docs.uselayers.com/legal/privacy-statement"},{"label":"Terms of Use","href":"https://docs.uselayers.com/legal/terms-of-use"}]}]},"contextual":{"options":["copy","view","chatgpt","claude","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"protoninc","hasAudioNarration":false,"actualSubdomain":"protoninc","customDomains":["docs.uselayers.com"],"gitSource":{"type":"github","owner":"protonagency","repo":"layers-docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adf743116765f5140a14d41","collectionId":"d2677469-6157-4dbd-b743-cfc9a9ac4f5d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adf743116765f5140a14d41"},"feedback":{"thumbs":true,"edits":false,"issues":false,"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"REMOVE_BRANDING":{"status":"ENABLED"}},"buildId":"6adf743116765f5140a14d41","clientVersion":"0.0.3990","searchFilterCounts":[{"language":"default","tag":"Documentation","count":102},{"language":"default","tag":"Help Center","count":72},{"language":"default","tag":"Merchandising","count":54},{"language":"default","tag":"Developers","count":42},{"language":"default","tag":"API Reference","count":25},{"language":"default","tag":"SDK","count":20},{"language":"default","tag":"Sort Orders","count":16},{"language":"default","tag":"Liquid","count":14},{"language":"default","tag":"Search \u0026 Discovery","count":14},{"language":"default","tag":"Configuration","count":14}]},"assistantConfig":{"enableAskAiButton":true,"enableAskAiSearchBar":false,"deflection":{"enabled":true,"email":"support@uselayers.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"api-reference/browse","slug":"/api-reference/browse","pageMetadata":{"api":"POST /browse/{collection_handle}","title":"Browse API: Browse Collection Page","sidebarTitle":"Collection Page","description":"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.","href":"/api-reference/browse"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Expandable,Heading,Note,ParamField,ResponseField,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Expandable)_missingMdxReference(`Expandable`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Note)_missingMdxReference(`Note`,true);if(!ParamField)_missingMdxReference(`ParamField`,true);if(!ResponseField)_missingMdxReference(`ResponseField`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`2`,id:`authorization`,children:`Authorization`}),`\n`,_jsx(ParamField,{header:`X-Storefront-Access-Token`,type:`string`,required:true,id:`param-x-storefront-access-token`,children:_jsxs(_components.p,{children:[`Token-based authentication header in the form of `,_jsx(_components.code,{children:`\u003cYOUR_LAYERS_TOKEN>`}),`.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`headers`,children:`Headers`}),`\n`,_jsx(ParamField,{header:`Content-Type`,type:`string`,default:`application/json`,required:true,id:`param-content-type`}),`\n`,_jsx(ParamField,{header:`Accept`,type:`string`,default:`application/json`,required:true,id:`param-accept`}),`\n`,_jsx(Heading,{level:`2`,id:`path-parameters`,children:`Path parameters`}),`\n`,_jsxs(ParamField,{path:`collection_handle`,type:`string`,required:true,id:`param-collection-handle`,children:[_jsx(_components.p,{children:`The handle of the collection you wish to browse.`}),_jsxs(_components.p,{children:[`Use `,_jsx(_components.code,{children:`all`}),` to browse every browsable product in the catalog. This works whether or not your store has a synced `,_jsx(_components.code,{children:`/collections/all`}),` collection. If a collection with the handle `,_jsx(_components.code,{children:`all`}),` is synced, Layers browses that collection’s products. If not, it browses the whole catalog with the store’s default sort order and no collection-specific variant breakouts. Any other handle that doesn’t match a synced collection returns an error.`]})]}),`\n`,_jsx(Heading,{level:`2`,id:`body`,children:`Body`}),`\n`,_jsx(ParamField,{body:`sort_order_code`,type:`string`,description:`The sort order for the results`,id:`param-sort-order-code`,children:_jsx(_components.p,{children:`Code of the sort order. When provided, it takes precedence over collection and store defaults. If omitted, Layers uses the collection’s default sort order, then the store default when the collection has no default. Existing merchandising rules continue to apply as configured.`})}),`\n`,_jsxs(ParamField,{body:`dynamicLinking`,type:`object`,description:`Pin products to specific positions on the first page.`,id:`param-dynamic-linking`,children:[_jsx(_components.p,{children:`Dynamic linking promotes specific products to the top of the first page of results. Dynamic linking takes priority over merchandising rules and sort orders.`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`If the Layers tracking pixel is installed, this parameter is `,_jsx(_components.strong,{children:`automatically injected`}),` when customers arrive with a `,_jsx(_components.code,{children:`utm_products`}),` URL parameter (e.g., `,_jsx(_components.code,{children:`?utm_products=summer-dress-blue_classic-tee-white_beach-hat`}),`). See `,_jsx(_components.a,{href:`/help/merchandising/dynamic-linking`,children:`Dynamic Linking for ads`}),` for details.`]})}),_jsxs(Expandable,{title:`Properties`,children:[_jsxs(ParamField,{body:`products`,type:`array`,required:true,id:`param-products`,children:[_jsx(_components.p,{children:`Products to pin. Each entry is either a plain identifier or an object:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Handle`}),`: a string, for example `,_jsx(_components.code,{children:`\"summer-dress-blue\"`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`ID`}),`: a number or numeric string, for example `,_jsx(_components.code,{children:`8234567890123`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Object`}),`: `,_jsx(_components.code,{children:`{ \"productId\": \"summer-dress-blue\", \"position\": 2 }`}),`. `,_jsx(_components.code,{children:`productId`}),` takes a handle or ID. `,_jsx(_components.code,{children:`position`}),` is optional.`]}),`\n`]}),_jsxs(_components.p,{children:[`You can mix all three in one array. Any other entry shape (an object without `,_jsx(_components.code,{children:`productId`}),`, an empty string, a nested array) returns `,_jsx(_components.code,{children:`422`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Position:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Plain identifiers, and objects without `,_jsx(_components.code,{children:`position`}),`, are pinned in array order: the first one at position 1 (after any `,_jsx(_components.code,{children:`offset`}),`), the next at position 2, and so on.`]}),`\n`,_jsxs(_components.li,{children:[`An object’s `,_jsx(_components.code,{children:`position`}),` is the exact 1-based slot for that product on the first page. It must be an integer of `,_jsx(_components.code,{children:`1`}),` or more, and `,_jsx(_components.code,{children:`offset`}),` doesn’t apply to it.`]}),`\n`,_jsx(_components.li,{children:`Unpositioned products fill the remaining pinned slots in array order.`}),`\n`,_jsxs(_components.li,{children:[`If the same product appears more than once, the first explicit `,_jsx(_components.code,{children:`position`}),` for it wins.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Only applies on the first page of results (page 1)`}),`\n`,_jsx(_components.li,{children:`Non-existent or unavailable products are silently skipped`}),`\n`,_jsx(_components.li,{children:`Subsequent products shift up to fill any gaps`}),`\n`,_jsx(_components.li,{children:`Takes priority over merchandising rules and sort orders`}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`5`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`5`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dynamicLinking\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"products\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"summer-dress-blue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`8234567890123`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"classic-tee-white\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Example with explicit positions:`}),` pins `,_jsx(_components.code,{children:`classic-tee-white`}),` to position 1 and `,_jsx(_components.code,{children:`summer-dress-blue`}),` to position 4.`]}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dynamicLinking\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"products\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"summer-dress-blue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"position\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"productId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"classic-tee-white\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"position\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),_jsxs(ParamField,{body:`offset`,type:`integer`,id:`param-offset`,children:[_jsxs(_components.p,{children:[`Number of leading positions to leave to the normal result order before the linked products. Defaults to `,_jsx(_components.code,{children:`0`}),`, which pins the first product at position 1. An offset of `,_jsx(_components.code,{children:`2`}),` places the first linked product at position 3. Products with an explicit `,_jsx(_components.code,{children:`position`}),` ignore `,_jsx(_components.code,{children:`offset`}),`.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`6`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"dynamicLinking\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"products\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"summer-dress-blue\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"classic-tee-white\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"offset\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})]}),`\n`,_jsxs(ParamField,{body:`defaultSelectedOptions`,type:`array`,description:`Default variant selection preferences when no filters are applied.`,id:`param-default-selected-options`,children:[_jsxs(_components.p,{children:[`Specify which product variants should be selected by default in the `,_jsx(_components.code,{children:`first_or_matched_variant`}),` field. This is useful for scenarios like defaulting to a specific birthstone option in a jewelry collection.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`optionCode`,type:`string`,required:true,id:`param-option-code`,children:_jsxs(_components.p,{children:[`The product option code to match (e.g., `,_jsx(_components.code,{children:`\"birthstone\"`}),`, `,_jsx(_components.code,{children:`\"color\"`}),`). Option codes are automatically normalized (e.g., `,_jsx(_components.code,{children:`\"Birth Stone\"`}),` becomes `,_jsx(_components.code,{children:`\"birth_stone\"`}),`).`]})}),_jsx(ParamField,{body:`value`,type:`string`,required:true,id:`param-value`,children:_jsxs(_components.p,{children:[`The option value to match (e.g., `,_jsx(_components.code,{children:`\"February\"`}),`, `,_jsx(_components.code,{children:`\"Blue\"`}),`).`]})})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Uses `,_jsx(_components.strong,{children:`OR logic`}),` - selects the first variant matching ANY of the specified option values`]}),`\n`,_jsx(_components.li,{children:`Falls back to the first variant by position if no match is found`}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Automatically skipped`}),` when any option or variant filters are applied (filters take precedence)`]}),`\n`,_jsxs(_components.li,{children:[`Only affects the `,_jsx(_components.code,{children:`first_or_matched_variant`}),` field in the response`]}),`\n`,_jsxs(_components.li,{children:[_jsxs(_components.strong,{children:[`Works with `,_jsx(_components.a,{href:`/platform/variant-breakouts`,children:`Variant Breakouts`})]}),` — product tiles respect your default selected options, and variant tiles respect non-breakout default selected options (preferring variants that match your preferences within each breakout group, with fallback to position ordering)`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"defaultSelectedOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"February\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Multiple options example (OR logic):`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`12`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`12`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"defaultSelectedOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"February\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"optionCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"birthstone\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"value\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"March\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(_components.p,{children:`This will select variants with either February OR March birthstone, preferring the first match found.`})]}),`\n`,_jsx(ParamField,{body:`attributes`,type:`string[]`,description:`Product attributes to include in the response.`,id:`param-attributes`,children:_jsxs(_components.p,{children:[`Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`title`}),`, `,_jsx(_components.code,{children:`handle`}),`, `,_jsx(_components.code,{children:`body_html`}),`, `,_jsx(_components.code,{children:`vendor`}),`, `,_jsx(_components.code,{children:`product_type`}),`, `,_jsx(_components.code,{children:`tags`}),`, `,_jsx(_components.code,{children:`images`}),`, `,_jsx(_components.code,{children:`available`}),`, `,_jsx(_components.code,{children:`created_at`}),`, `,_jsx(_components.code,{children:`updated_at`}),`, `,_jsx(_components.code,{children:`published_at`}),`, `,_jsx(_components.code,{children:`price_range`}),`, `,_jsx(_components.code,{children:`options`}),`, `,_jsx(_components.code,{children:`original_options`}),`, `,_jsx(_components.code,{children:`metafields`}),`, `,_jsx(_components.code,{children:`named_tags`}),`, `,_jsx(_components.code,{children:`calculated`}),`, `,_jsx(_components.code,{children:`category`}),`, `,_jsx(_components.code,{children:`featured_media`}),`, `,_jsx(_components.code,{children:`is_gift_card`}),`, `,_jsx(_components.code,{children:`has_variants_that_require_components`}),`, `,_jsx(_components.code,{children:`combined_listing_parent_product_id`}),`, `,_jsx(_components.code,{children:`combined_listing_role`}),`, `,_jsx(_components.code,{children:`first_or_matched_variant`}),`, and `,_jsx(_components.code,{children:`variants`}),`. The `,_jsx(_components.code,{children:`collection_titles`}),` attribute is opt-in: pass it in `,_jsx(_components.code,{children:`attributes`}),` to include the array of collection titles each product belongs to. It is excluded from responses by default. See the `,_jsx(_components.a,{href:`/developers/product-schema/api-attributes`,children:`Product Schema`}),` for detailed descriptions, including `,_jsx(_components.a,{href:`/developers/product-schema/api-attributes#selecting-nested-fields`,children:`nested field selection`}),` for slicing arrays and filtering collections (for example, `,_jsx(`code`,{children:`images[:2].src`}),`, `,_jsx(`code`,{children:`variants[sku=ABC].price`}),`, `,_jsx(`code`,{children:`metafields[namespace=custom]`}),`).`]})}),`\n`,_jsxs(ParamField,{body:`filter_group`,type:`object`,description:`A group of filter conditions using various operators.`,id:`param-filter-group`,children:[_jsxs(_components.p,{children:[`Storefront endpoints accept nested `,_jsx(_components.code,{children:`AND`}),`/`,_jsx(_components.code,{children:`OR`}),` filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example `,_jsx(_components.code,{children:`metafields.my-app.fit-type`}),`.`]}),_jsxs(_components.p,{children:[`Refer to the dedicated `,_jsx(_components.a,{href:`/engine/filtering`,children:`Filter Expressions`}),` guide to learn more about filter expressions.`]})]}),`\n`,_jsx(ParamField,{body:`pagination`,type:`Pagination Object`,description:`Specifies the page number and limit for pagination.`,id:`param-pagination`,children:_jsxs(Expandable,{title:`pagination`,children:[_jsx(ParamField,{body:`page`,type:`int`,min:`1`,max:`100`,id:`param-page`,children:_jsx(_components.p,{children:`The current page of results to fetch.`})}),_jsx(ParamField,{body:`limit`,type:`int`,min:`1`,max:`100`,id:`param-limit`,children:_jsx(_components.p,{children:`The max results to fetch per page.`})})]})}),`\n`,_jsxs(ParamField,{body:`facets`,type:`string[]`,description:`List of facets to include in the response.`,id:`param-facets`,children:[_jsxs(_components.p,{children:[`Facets to be included. Accepts both exact facet codes (e.g., `,_jsx(_components.code,{children:`\"vendor\"`}),`, `,_jsx(_components.code,{children:`\"options.Size\"`}),`) and wildcard patterns (e.g., `,_jsx(_components.code,{children:`\"options.*\"`}),`, `,_jsx(_components.code,{children:`\"metafields.product.*\"`}),`).`]}),_jsxs(_components.p,{children:[`Wildcard patterns expand to all matching attribute codes. For example, `,_jsx(_components.code,{children:`\"options.*\"`}),` expands to all option facets like `,_jsx(_components.code,{children:`\"options.Size\"`}),` and `,_jsx(_components.code,{children:`\"options.Color\"`}),`. Wildcards must match at least one attribute code to be valid.`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Examples:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`8`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`8`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Exact facet codes`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.Size\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.Color\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Wildcard pattern`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`// Mixed exact and wildcard`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"options.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"metafields.product.*\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`]`})]}),`\n`]})})})]}),`\n`,_jsx(ParamField,{body:`retrieveFacetCount`,type:`boolean`,description:`Retrieve facet count.`,id:`param-retrieve-facet-count`,children:_jsx(_components.p,{children:`If the count of each facet value should be calculated.`})}),`\n`,_jsx(ParamField,{body:`includeFacetRanges`,type:`boolean`,description:`Return min/max range for facets with a numeric value.`,id:`param-include-facet-ranges`,children:_jsx(_components.p,{children:`If you want a min/max range for numeric facets such as price.`})}),`\n`,_jsxs(ParamField,{body:`enrichFacetMetaobjects`,type:`boolean`,description:`Hydrate metaobject-reference facet values with display data.`,id:`param-enrich-facet-metaobjects`,children:[_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`true`}),`, any facet backed by a `,_jsx(_components.code,{children:`metaobject_reference`}),` or `,_jsx(_components.code,{children:`list.metaobject_reference`}),` metafield is returned with a companion `,_jsx(_components.code,{children:`facetDisplay`}),` object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s `,_jsx(_components.code,{children:`display_name`}),` and `,_jsx(_components.code,{children:`fields`}),`. When the metaobject defines a color or image field, the entry also carries a resolved `,_jsx(_components.code,{children:`swatch`}),` object.`]}),_jsxs(_components.p,{children:[`Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When `,_jsx(_components.code,{children:`false`}),` or omitted, only the handles are returned in `,_jsx(_components.code,{children:`facets`}),`.`]}),_jsxs(_components.p,{children:[`Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from `,_jsx(_components.code,{children:`facetDisplay`}),` and remain as plain values in `,_jsx(_components.code,{children:`facets`}),`. See `,_jsx(_components.a,{href:`/developers/product-schema/metafields/metaobjects-and-references`,children:`Metaobjects and reference metafields`}),` for the normalized shape of each entry.`]})]}),`\n`,_jsxs(ParamField,{body:`discountEntitlements`,type:`array`,description:`Array of discount entitlement objects for applying dynamic discounts to products. Maximum 50 entries.`,id:`param-discount-entitlements`,children:[_jsxs(_components.p,{children:[`Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements`,children:`Discount Entitlements`}),` guide for detailed usage.`]}),_jsx(_components.p,{children:`Fixed amounts use your shop’s base currency. Layers skips them on market pricing rows in a different native currency, without converting the discount. Percentage discounts still apply to those localized prices. A variant that falls back to its base price can still receive a fixed-amount discount.`}),_jsxs(Expandable,{title:`Discount Entitlement Object`,children:[_jsxs(ParamField,{body:`entitled`,type:`object`,required:true,id:`param-entitled`,children:[_jsx(_components.p,{children:`Defines which products qualify for the discount.`}),_jsxs(Expandable,{title:`entitled`,children:[_jsx(ParamField,{body:`all`,type:`boolean`,id:`param-all`,children:_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`true`}),`, applies discount to all products. When `,_jsx(_components.code,{children:`false`}),`, uses products, variants, or collections arrays.`]})}),_jsx(ParamField,{body:`products`,type:`string[]`,id:`param-products-1`,children:_jsx(_components.p,{children:`Array of product IDs or handles that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`variants`,type:`string[] | number[]`,id:`param-variants`,children:_jsx(_components.p,{children:`Array of variant IDs that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`collections`,type:`string[]`,id:`param-collections`,children:_jsx(_components.p,{children:`Array of collection handles that qualify for the discount. Maximum 250 entries.`})}),_jsx(ParamField,{body:`conditions`,type:`object`,id:`param-conditions`,children:_jsxs(_components.p,{children:[`Optional filter group that qualifies products for the discount based on their attributes (for example, `,_jsx(_components.code,{children:`tags`}),` or `,_jsx(_components.code,{children:`vendor`}),`). Uses the same shape as the top-level `,_jsx(_components.code,{children:`filter_group`}),` parameter. Matches are additive with `,_jsx(_components.code,{children:`products`}),`, `,_jsx(_components.code,{children:`variants`}),`, and `,_jsx(_components.code,{children:`collections`}),` on the same entitlement.`]})})]})]}),_jsxs(ParamField,{body:`discount`,type:`object`,required:true,id:`param-discount`,children:[_jsx(_components.p,{children:`Defines the discount to apply.`}),_jsxs(Expandable,{title:`discount`,children:[_jsx(ParamField,{body:`type`,type:`string`,required:true,id:`param-type`,children:_jsxs(_components.p,{children:[`The discount type: `,_jsx(_components.code,{children:`PERCENTAGE`}),` or `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`.`]})}),_jsx(ParamField,{body:`value`,type:`number`,required:true,id:`param-value-1`,children:_jsxs(_components.p,{children:[`The discount value. For `,_jsx(_components.code,{children:`PERCENTAGE`}),`, this must be a number between 0 and 100 (e.g., 10 for 10% off). For `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`, this is the amount in your shop’s base currency, not the shopper’s market currency.`]})})]})]})]})]}),`\n`,_jsxs(ParamField,{body:`identity`,type:`object`,id:`param-identity`,children:[_jsx(_components.p,{children:`User identity information for tracking and personalization. Automatically managed by the Storefront Pixel; required for headless integrations.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`deviceId`,type:`string`,id:`param-device-id`,children:_jsx(_components.p,{children:`Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel.`})}),_jsx(ParamField,{body:`sessionId`,type:`string`,id:`param-session-id`,children:_jsx(_components.p,{children:`Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie.`})}),_jsx(ParamField,{body:`customerId`,type:`string`,id:`param-customer-id`,children:_jsx(_components.p,{children:`Shopify customer ID for authenticated users. Only present when the customer is signed in to their account.`})}),_jsxs(ParamField,{body:`companyLocationId`,type:`string`,id:`param-company-location-id`,children:[_jsxs(_components.p,{children:[`Shopify B2B company location GID (e.g. `,_jsx(_components.code,{children:`gid://shopify/CompanyLocation/123456789`}),`) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic.`]}),_jsxs(_components.p,{children:[`When you pass `,_jsx(_components.code,{children:`companyLocationId`}),`, you must also pass the buyer’s `,_jsx(_components.code,{children:`customerId`}),`. Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a `,_jsx(_components.code,{children:`403`}),`. See `,_jsx(_components.a,{href:`/shopify-integration/b2b-catalogs`,children:`B2B catalogs`}),`.`]})]})]})]}),`\n`,_jsxs(ParamField,{body:`preview_id`,type:`string`,description:`UUID of a merchandising rule preview.`,id:`param-preview-id`,children:[_jsx(_components.p,{children:`When provided, the Browse API loads the specified preview rule instead of the collection’s active merchandising rule. Preview rules are temporary and expire one hour after creation.`}),_jsx(_components.p,{children:`This parameter is automatically included when you open a preview URL from the Layers dashboard. You do not need to set it manually in production integrations.`}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Overrides normal merchandising rule resolution for this request`}),`\n`,_jsx(_components.li,{children:`Analytics and beacon events are not recorded for preview requests`}),`\n`,_jsxs(_components.li,{children:[`Returns a `,_jsx(_components.code,{children:`404`}),` if the preview has expired or does not exist`]}),`\n`]})]}),`\n`,_jsxs(ParamField,{body:`forceHideOutOfStock`,type:`boolean`,default:`false`,description:`Force-hide out-of-stock products from results.`,id:`param-force-hide-out-of-stock`,children:[_jsxs(_components.p,{children:[`When set to `,_jsx(_components.code,{children:`true`}),`, products with no available variants are excluded from results regardless of the store-level `,_jsx(_components.a,{href:`/help/configuration/configure-search-behavior#out-of-stock-product-visibility`,children:`out-of-stock visibility`}),` setting. If your store’s `,_jsx(_components.a,{href:`/shopify-integration/catalog-sync#inventory-location-scope`,children:`inventory location scope`}),` is narrowed, the same location rules apply.`]}),_jsx(_components.p,{children:`This is useful when a specific browse integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear.`}),_jsx(Note,{children:_jsxs(_components.p,{children:[`Store-level out-of-stock demoting (the “At the end” option) does not apply to browse results. Browse relies on the Shopify collection itself for product ordering. When you set `,_jsx(_components.code,{children:`forceHideOutOfStock`}),` to `,_jsx(_components.code,{children:`true`}),` on a browse request, out-of-stock products are hidden entirely rather than demoted.`]})})]}),`\n`,_jsxs(ParamField,{body:`grid`,type:`object`,description:`Grid geometry for grid-aware banner pagination.`,id:`param-grid`,children:[_jsxs(_components.p,{children:[`Declares the storefront grid so inline merchandising banners can reserve grid cells and products are paged around them. When `,_jsx(_components.code,{children:`grid`}),` is present, the response includes a top-level `,_jsx(_components.a,{href:`#response`,children:_jsx(_components.code,{children:`grid`})}),` block and each anchored inline banner gets a page-local `,_jsx(_components.a,{href:`#response`,children:_jsx(_components.code,{children:`placement`})}),` object.`]}),_jsxs(_components.p,{children:[`Omit `,_jsx(_components.code,{children:`grid`}),` to keep the legacy behavior. Banners return without `,_jsx(_components.code,{children:`placement`}),`, and pagination is computed against products only.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`columns`,type:`integer`,required:true,id:`param-columns`,children:_jsxs(_components.p,{children:[`Number of columns in your product grid. Must be between `,_jsx(_components.code,{children:`1`}),` and `,_jsx(_components.code,{children:`12`}),`. Inline banner widths are clamped to `,_jsx(_components.code,{children:`[1, columns]`}),` and heights to `,_jsx(_components.code,{children:`[1, 4]`}),`. When `,_jsx(_components.code,{children:`pagination.limit >= columns`}),`, height is also limited to the number of rows per page (`,_jsx(_components.code,{children:`floor(pagination.limit / columns)`}),`).`]})}),_jsx(ParamField,{body:`device`,type:`string`,default:`desktop`,id:`param-device`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"desktop\"`}),` or `,_jsx(_components.code,{children:`\"mobile\"`}),`. Selects which per-device layout (`,_jsx(_components.code,{children:`web_layout`}),` or `,_jsx(_components.code,{children:`mobile_layout`}),`) the planner reads when anchoring banners to grid cells.`]})})]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Behavior:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`cellsPerPage = floor(pagination.limit / columns) * columns`}),`. Any remainder is dropped so pages are always whole rows.`]}),`\n`,_jsx(_components.li,{children:`Banners taller than one row cannot straddle a page’s last row; they move forward to the next open block.`}),`\n`,_jsx(_components.li,{children:`When two banners target the same cell, the second is bumped to the next open cell (row-major scan).`}),`\n`,_jsxs(_components.li,{children:[`Banners that cannot be anchored to the grid (missing device layout, no saved `,_jsx(_components.code,{children:`position`}),`, or no fit within the scan buffer) are still returned, but without a `,_jsx(_components.code,{children:`placement`}),` key.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`totalPages`}),` accounts for banner cells across the collection, not just product count.`]}),`\n`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`7`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pagination\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: { `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"page\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:`\"limit\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`24`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"grid\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"columns\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"device\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"desktop\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsxs(ParamField,{body:`context`,type:`object`,id:`param-context`,children:[_jsxs(_components.p,{children:[`Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See `,_jsx(_components.a,{href:`/engine/contextual-information`,children:`Contextual Information`}),` for implementation guidance.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsxs(ParamField,{body:`geo`,type:`object`,id:`param-geo`,children:[_jsxs(_components.p,{children:[`Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide `,_jsx(_components.code,{children:`geo`}),` explicitly.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`country`,type:`string`,id:`param-country`,children:_jsx(_components.p,{children:`Country code or name (e.g., “US”, “Canada”).`})}),_jsx(ParamField,{body:`province`,type:`string`,id:`param-province`,children:_jsx(_components.p,{children:`State or province name (e.g., “California”, “Ontario”).`})}),_jsx(ParamField,{body:`city`,type:`string`,id:`param-city`,children:_jsx(_components.p,{children:`City name (e.g., “Los Angeles”, “Toronto”).`})})]})]}),_jsxs(ParamField,{body:`productsInCart`,type:`array`,id:`param-products-in-cart`,children:[_jsx(_components.p,{children:`Products currently in the customer’s cart. Used to surface complementary products and influence relevance scoring.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`title`,type:`string`,id:`param-title`,children:_jsxs(_components.p,{children:[`Product title. Each entry needs at least a `,_jsx(_components.code,{children:`productId`}),`, `,_jsx(_components.code,{children:`variantId`}),`, or non-empty `,_jsx(_components.code,{children:`title`}),`. Layers drops entries with none of these.`]})}),_jsx(ParamField,{body:`price`,type:`number`,id:`param-price`,children:_jsxs(_components.p,{children:[`Unit price in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`29.00`}),` for $29), not cents. Accepts a JSON number or a numeric string such as `,_jsx(_components.code,{children:`\"29.00\"`}),`.`]})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-1`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`productId`,type:`string`,id:`param-product-id`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID (e.g., `,_jsx(_components.code,{children:`\"8234567890123\"`}),`) or a Shopify GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Product/8234567890123\"`}),`).`]})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id`,children:_jsx(_components.p,{children:`Product variant identifier.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})}),_jsx(ParamField,{body:`quantity`,type:`integer`,id:`param-quantity`,children:_jsxs(_components.p,{children:[`Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below `,_jsx(_components.code,{children:`1`}),` count as `,_jsx(_components.code,{children:`1`}),`. Layers uses it to calculate the cart subtotal for `,_jsx(_components.a,{href:`/platform/blocks/strategies#free-shipping-picks`,children:`Free Shipping Picks`}),`.`]})})]})]}),_jsx(ParamField,{body:`freeShippingThreshold`,type:`number`,id:`param-free-shipping-threshold`,children:_jsxs(_components.p,{children:[`The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`75.00`}),` for $75), not cents. Layers ignores values that aren’t a number greater than `,_jsx(_components.code,{children:`0`}),`. Required for `,_jsx(_components.a,{href:`/platform/blocks/strategies#free-shipping-picks`,children:`Free Shipping Picks`}),` blocks.`]})}),_jsx(Warning,{children:_jsxs(_components.p,{children:[`Shopify’s `,_jsx(_components.code,{children:`/cart.js`}),` and Liquid money values such as `,_jsx(_components.code,{children:`cart.total_price`}),` and `,_jsx(_components.code,{children:`item.price`}),` are in cents. Divide them by 100 before sending `,_jsx(_components.code,{children:`productsInCart[].price`}),` or `,_jsx(_components.code,{children:`freeShippingThreshold`}),`.`]})}),_jsxs(ParamField,{body:`productsViewed`,type:`array`,id:`param-products-viewed`,children:[_jsxs(_components.p,{children:[`Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#recently-viewed-products`,children:`Recently viewed products`}),`.`]}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`id`,type:`string`,id:`param-id`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID or a Shopify GID. Also accepted as `,_jsx(_components.code,{children:`productId`}),`.`]})}),_jsx(ParamField,{body:`at`,type:`integer`,id:`param-at`,children:_jsxs(_components.p,{children:[`Timestamp of the view in Unix milliseconds. Views without `,_jsx(_components.code,{children:`at`}),` still count but skip recency weighting.`]})}),_jsx(ParamField,{body:`title`,type:`string`,id:`param-title-1`,children:_jsx(_components.p,{children:`Product title.`})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-2`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id-1`,children:_jsx(_components.p,{children:`Variant identifier, if the shopper viewed a specific variant.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options-1`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})})]})]}),_jsxs(ParamField,{body:`productsPurchased`,type:`array`,id:`param-products-purchased`,children:[_jsx(_components.p,{children:`Products the customer has previously purchased. Informs recommendations and prevents over-promotion of owned items.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`title`,type:`string`,id:`param-title-2`,children:_jsxs(_components.p,{children:[`Product title. Each entry needs at least a `,_jsx(_components.code,{children:`productId`}),`, `,_jsx(_components.code,{children:`variantId`}),`, or non-empty `,_jsx(_components.code,{children:`title`}),`. Layers drops entries with none of these.`]})}),_jsx(ParamField,{body:`price`,type:`number`,id:`param-price-1`,children:_jsxs(_components.p,{children:[`Unit price in the request currency’s major units (e.g. `,_jsx(_components.code,{children:`29.00`}),` for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as `,_jsx(_components.code,{children:`\"29.00\"`}),`.`]})}),_jsx(ParamField,{body:`type`,type:`string`,id:`param-type-3`,children:_jsx(_components.p,{children:`Product type or category.`})}),_jsx(ParamField,{body:`productId`,type:`string`,id:`param-product-id-1`,children:_jsxs(_components.p,{children:[`Product identifier. Accepts a numeric ID (e.g., `,_jsx(_components.code,{children:`\"8234567890123\"`}),`) or a Shopify GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Product/8234567890123\"`}),`).`]})}),_jsx(ParamField,{body:`variantId`,type:`string`,id:`param-variant-id-2`,children:_jsx(_components.p,{children:`Product variant identifier.`})}),_jsx(ParamField,{body:`options`,type:`object`,id:`param-options-2`,children:_jsxs(_components.p,{children:[`Product variant options (e.g., `,_jsx(_components.code,{children:`{\"Size\": \"11\", \"Color\": \"Red\"}`}),`).`]})})]})]}),_jsxs(ParamField,{body:`priorSearches`,type:`array`,id:`param-prior-searches`,children:[_jsx(_components.p,{children:`Recent search queries and their outcomes. Helps understand customer intent and refine relevance models.`}),_jsxs(Expandable,{title:`Array Item Properties`,children:[_jsx(ParamField,{body:`searchQuery`,type:`string`,required:true,id:`param-search-query`,children:_jsx(_components.p,{children:`The search query text.`})}),_jsx(ParamField,{body:`hadClick`,type:`boolean`,default:`false`,id:`param-had-click`,children:_jsx(_components.p,{children:`Whether the customer clicked on any results from this search.`})}),_jsx(ParamField,{body:`hasResults`,type:`boolean`,default:`false`,id:`param-has-results`,children:_jsx(_components.p,{children:`Whether the search returned any results.`})}),_jsx(ParamField,{body:`fromPage`,type:`string`,id:`param-from-page`,children:_jsx(_components.p,{children:`The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules.`})})]})]}),_jsxs(ParamField,{body:`marketing`,type:`object`,id:`param-marketing`,children:[_jsx(_components.p,{children:`UTM parameters and marketing campaign information for attribution tracking.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`source`,type:`string`,id:`param-source`,children:_jsx(_components.p,{children:`Marketing source (e.g., “google”, “facebook”).`})}),_jsx(ParamField,{body:`medium`,type:`string`,id:`param-medium`,children:_jsx(_components.p,{children:`Marketing medium (e.g., “cpc”, “email”, “social”).`})}),_jsx(ParamField,{body:`campaign`,type:`string`,id:`param-campaign`,children:_jsx(_components.p,{children:`Campaign name.`})}),_jsx(ParamField,{body:`term`,type:`string`,id:`param-term`,children:_jsx(_components.p,{children:`Search term or keyword.`})}),_jsx(ParamField,{body:`content`,type:`string`,id:`param-content`,children:_jsxs(_components.p,{children:[`Ad or link variant, such as the value of `,_jsx(_components.code,{children:`utm_content`}),`.`]})}),_jsx(ParamField,{body:`clickIds`,type:`object`,id:`param-click-ids`,children:_jsxs(_components.p,{children:[`Click identifiers from the landing URL, keyed by parameter name (e.g., `,_jsx(_components.code,{children:`fbclid`}),`, `,_jsx(_components.code,{children:`gclid`}),`). Layers derives the originating network from them as `,_jsx(_components.code,{children:`marketing.clickSource`}),` and discards the raw tokens. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#click-identifiers-and-derived-click-source`,children:`Context data structure`}),`.`]})})]})]}),_jsx(ParamField,{body:`experiments`,type:`object`,id:`param-experiments`,children:_jsxs(_components.p,{children:[`A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., `,_jsx(_components.code,{children:`{\"exp_123\": \"group_b\"}`}),`). Used by the `,_jsx(_components.strong,{children:`Experiment Group`}),` contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped.`]})}),_jsxs(ParamField,{body:`customer`,type:`object`,id:`param-customer`,children:[_jsx(_components.p,{children:`Aggregated customer behavior and purchase patterns for personalization.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`signedIn`,type:`boolean`,id:`param-signed-in`,children:_jsx(_components.p,{children:`Whether the customer is currently authenticated.`})}),_jsx(ParamField,{body:`returning`,type:`boolean`,id:`param-returning`,children:_jsx(_components.p,{children:`Whether this is a returning customer.`})}),_jsx(ParamField,{body:`numberOfOrders`,type:`integer`,id:`param-number-of-orders`,children:_jsx(_components.p,{children:`Total number of orders placed.`})}),_jsx(ParamField,{body:`averageOrderValue`,type:`number`,id:`param-average-order-value`,children:_jsx(_components.p,{children:`Average order value in store currency.`})}),_jsx(ParamField,{body:`daysBetweenOrders`,type:`integer`,id:`param-days-between-orders`,children:_jsx(_components.p,{children:`Average days between orders.`})}),_jsx(ParamField,{body:`daysSinceLastOrder`,type:`integer`,id:`param-days-since-last-order`,children:_jsx(_components.p,{children:`Days since the most recent order.`})}),_jsx(ParamField,{body:`daysSinceOldestOrder`,type:`integer`,id:`param-days-since-oldest-order`,children:_jsx(_components.p,{children:`Days since the first order.`})}),_jsx(ParamField,{body:`totalSpent`,type:`number`,id:`param-total-spent`,children:_jsx(_components.p,{children:`Total amount spent in store currency.`})}),_jsx(ParamField,{body:`tags`,type:`array`,id:`param-tags`,children:_jsxs(_components.p,{children:[`Shopify customer tags on the shopper’s profile (e.g., `,_jsx(_components.code,{children:`[\"vip\", \"wholesale\"]`}),`). Collected by the Storefront Pixel for signed-in customers; `,_jsx(_components.code,{children:`null`}),` for guests.`]})}),_jsx(ParamField,{body:`segments`,type:`array`,id:`param-segments`,children:_jsxs(_components.p,{children:[`Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in `,_jsx(_components.code,{children:`identity.customerId`}),` on every request and ignores any value you send. `,_jsx(_components.code,{children:`null`}),` for guests and customers with no segment memberships. Available as `,_jsx(_components.code,{children:`context.customer.segments`}),` in `,_jsx(_components.a,{href:`/platform/merchandising/contextual-conditions`,children:`contextual conditions`}),`.`]})})]})]}),_jsxs(ParamField,{body:`market`,type:`string`,id:`param-market`,children:[_jsxs(_components.p,{children:[`Explicitly set the Shopify Market for this request. Must be provided inside `,_jsx(_components.code,{children:`context`}),`; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., `,_jsx(_components.code,{children:`\"US\"`}),`, `,_jsx(_components.code,{children:`\"CA\"`}),`), a numeric Shopify Market ID (e.g., `,_jsx(_components.code,{children:`\"12345\"`}),`), or a Shopify Market GID (e.g., `,_jsx(_components.code,{children:`\"gid://shopify/Market/12345\"`}),`).`]}),_jsxs(_components.p,{children:[`When not provided, the market is automatically resolved from `,_jsx(_components.code,{children:`context.geo.country`}),` (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback.`]}),_jsxs(_components.p,{children:[`When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See `,_jsx(_components.a,{href:`/engine/contextual-information/data-structure#market`,children:`Market resolution`}),`.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Behavior depends on the store’s market application mode`}),` (set under `,_jsx(_components.strong,{children:`Settings > Search \u0026 Discovery > Search Behavior`}),`, in the `,_jsx(_components.strong,{children:`Markets`}),` card):`]}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Restrict to market catalog`}),` — Products are filtered to only those available in the resolved market, and market-specific pricing is applied`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Adjust pricing only`}),` — The full catalog remains visible, but variant prices are swapped to market-specific values where available`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Ignore markets`}),` (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers`]}),`\n`]})]}),_jsxs(ParamField,{body:`session`,type:`object`,id:`param-session`,children:[_jsx(_components.p,{children:`Session-level signals about the current visit.`}),_jsx(Expandable,{title:`Properties`,children:_jsx(ParamField,{body:`returning`,type:`boolean`,id:`param-returning-1`,children:_jsx(_components.p,{children:`Whether the current session belongs to a returning visitor. Layers derives this from the storefront’s session cookie when not provided.`})})})]}),_jsx(ParamField,{body:`locale`,type:`string`,id:`param-locale`,children:_jsxs(_components.p,{children:[`Storefront locale code (e.g., `,_jsx(_components.code,{children:`\"en\"`}),`, `,_jsx(_components.code,{children:`\"fr\"`}),`, `,_jsx(_components.code,{children:`\"pt-br\"`}),`). Case-insensitive; Layers normalizes to lowercase.`]})}),_jsx(ParamField,{body:`currency`,type:`string`,id:`param-currency`,children:_jsxs(_components.p,{children:[`ISO 4217 currency code (e.g., `,_jsx(_components.code,{children:`\"USD\"`}),`, `,_jsx(_components.code,{children:`\"EUR\"`}),`). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence.`]})}),_jsx(ParamField,{body:`b2bCompany`,type:`string`,id:`param-b2b-company`,children:_jsxs(_components.p,{children:[`Shopify B2B company location identifier. When `,_jsx(_components.code,{children:`identity.companyLocationId`}),` is provided, Layers resolves the company location server-side and the server value takes precedence.`]})}),_jsxs(ParamField,{body:`shoppingChannel`,type:`string`,default:`web`,id:`param-shopping-channel`,children:[_jsxs(_components.p,{children:[`The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as `,_jsx(_components.code,{children:`\"app\"`}),`).`]}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Accepted values:`})}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"web\"`}),` — Standard web browser (default)`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"app\"`}),` — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)`]}),`\n`]})]}),_jsx(ParamField,{body:`custom`,type:`object`,id:`param-custom`,children:_jsx(_components.p,{children:`Custom contextual data specific to your implementation. Structure is flexible and can contain any key-value pairs relevant to your use case.`})})]})]}),`\n`,_jsxs(ParamField,{body:`responseOptions`,type:`object`,description:`Per-request overrides for response behavior.`,id:`param-response-options`,children:[_jsxs(_components.p,{children:[`Per-request overrides for response behavior. Currently controls image preload hints emitted in the `,_jsx(_components.code,{children:`Link`}),` response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled.`]}),_jsx(Expandable,{title:`Properties`,children:_jsxs(ParamField,{body:`mediaPreloads`,type:`object`,description:`Controls Early Hints preload directives for product images.`,id:`param-media-preloads`,children:[_jsxs(_components.p,{children:[`Controls the `,_jsx(_components.code,{children:`Link: rel=\\\\\"preload\\\\\"`}),` directives generated for product images in this response. See `,_jsx(_components.a,{href:`/sdk/performance#early-hints-link-header-preloading`,children:`Early hints`}),` for background.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ParamField,{body:`enabled`,type:`boolean`,default:`true`,id:`param-enabled`,children:_jsxs(_components.p,{children:[`Set to `,_jsx(_components.code,{children:`false`}),` to skip the `,_jsx(_components.code,{children:`Link`}),` header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level.`]})}),_jsx(ParamField,{body:`srcsetSizes`,type:`int[]`,id:`param-srcset-sizes`,children:_jsxs(_components.p,{children:[`Custom responsive image widths (in pixels) to emit in `,_jsx(_components.code,{children:`imagesrcset`}),`. Each value must be an integer between `,_jsx(_components.code,{children:`1`}),` and `,_jsx(_components.code,{children:`10000`}),`. Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used.`]})}),_jsx(ParamField,{body:`sizes`,type:`string`,id:`param-sizes`,children:_jsxs(_components.p,{children:[`Media query string emitted as the `,_jsx(_components.code,{children:`imagesizes`}),` attribute in the preload `,_jsx(_components.code,{children:`Link`}),` header (for example `,_jsx(_components.code,{children:`(max-width: 600px) 100vw, 50vw`}),`). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the `,_jsx(_components.a,{href:`/sdk/performance#customization`,children:`accepted format`}),` for details. The API rejects invalid values with a validation error.`]})})]})]})}),_jsx(_components.p,{children:_jsx(_components.strong,{children:`Example:`})}),_jsx(CodeBlock,{filename:``,numberOfLines:`9`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`9`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"responseOptions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"mediaPreloads\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"enabled\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"srcsetSizes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`320`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`640`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`960`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sizes\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"(max-width: 600px) 100vw, 50vw\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]}),`\n`,_jsx(Heading,{level:`2`,id:`response`,children:`Response`}),`\n`,_jsx(ResponseField,{name:`results`,type:`Array of Objects`,id:`param-results`,children:_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`number`,id:`param-id-1`,children:_jsx(_components.p,{children:`The unique identifier of the product.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title-3`,children:_jsx(_components.p,{children:`The title of the product.`})}),_jsx(ResponseField,{name:`body_html`,type:`string`,id:`param-body-html`,children:_jsx(_components.p,{children:`The HTML content describing the product.`})}),_jsx(ResponseField,{name:`vendor`,type:`string`,id:`param-vendor`,children:_jsx(_components.p,{children:`The vendor of the product.`})}),_jsx(ResponseField,{name:`product_type`,type:`string`,id:`param-product-type`,children:_jsx(_components.p,{children:`The type of the product.`})}),_jsx(ResponseField,{name:`created_at`,type:`number`,id:`param-created-at`,children:_jsx(_components.p,{children:`The timestamp when the product was created.`})}),_jsx(ResponseField,{name:`handle`,type:`string`,id:`param-handle`,children:_jsx(_components.p,{children:`The handle of the product.`})}),_jsx(ResponseField,{name:`updated_at`,type:`number`,id:`param-updated-at`,children:_jsx(_components.p,{children:`The timestamp when the product was updated.`})}),_jsx(ResponseField,{name:`published_at`,type:`number`,id:`param-published-at`,children:_jsx(_components.p,{children:`The timestamp when the product was published.`})}),_jsx(ResponseField,{name:`tags`,type:`Array of strings`,id:`param-tags-1`,children:_jsx(_components.p,{children:`The tags associated with the product.`})}),_jsx(ResponseField,{name:`combined_listing_parent_product_id`,type:`number`,id:`param-combined-listing-parent-product-id`,children:_jsx(_components.p,{children:`The parent product id if a child in a Combined Listing.`})}),_jsx(ResponseField,{name:`combined_listing_role`,type:`string`,id:`param-combined-listing-role`,children:_jsx(_components.p,{children:`The role of the product if part of a Combined Listing.`})}),_jsxs(ResponseField,{name:`images`,type:`Array of Objects`,id:`param-images`,children:[_jsx(_components.p,{children:`The images of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height`,children:_jsx(_components.p,{children:`The height of the image.`})}),_jsx(ResponseField,{name:`variant_ids`,type:`Array`,id:`param-variant-ids`,children:_jsx(_components.p,{children:`The variant IDs associated with the image.`})})]})]}),_jsx(ResponseField,{name:`metafields`,type:`Object`,id:`param-metafields`,children:_jsx(_components.p,{children:`The metafields of the product.`})}),_jsx(ResponseField,{name:`calculated`,type:`Object`,id:`param-calculated`,children:_jsx(_components.p,{children:`The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted.`})}),_jsxs(ResponseField,{name:`category`,type:`Object`,id:`param-category`,children:[_jsx(_components.p,{children:`The Shopify Product Taxonomy Category of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name`,children:_jsx(_components.p,{children:`The name of the category leaf.`})}),_jsx(ResponseField,{name:`full_name`,type:`string`,id:`param-full-name`,children:_jsx(_components.p,{children:`The full name of the category.`})}),_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-2`,children:_jsx(_components.p,{children:`The ID of the category.`})}),_jsx(ResponseField,{name:`is_leaf`,type:`boolean`,id:`param-is-leaf`,children:_jsx(_components.p,{children:`Is the category a leaf category.`})}),_jsx(ResponseField,{name:`is_root`,type:`boolean`,id:`param-is-root`,children:_jsx(_components.p,{children:`Is the category a root category.`})})]})]}),_jsxs(ResponseField,{name:`first_or_matched_variant`,type:`Object`,id:`param-first-or-matched-variant`,children:[_jsx(_components.p,{children:`The first available variant (depending on OOS settings) or the variant matched with a filter or search query.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`number`,id:`param-id-3`,children:_jsx(_components.p,{children:`The ID of the variant.`})}),_jsx(ResponseField,{name:`title`,type:`string`,id:`param-title-4`,children:_jsx(_components.p,{children:`The title of the variant.`})}),_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available`,children:_jsx(_components.p,{children:`The availability of the variant.`})}),_jsx(ResponseField,{name:`sku`,type:`number`,id:`param-sku`,children:_jsx(_components.p,{children:`The sku of the variant.`})}),_jsx(ResponseField,{name:`price`,type:`string`,id:`param-price-2`,children:_jsx(_components.p,{children:`The price of the variant.`})}),_jsx(ResponseField,{name:`compare_at_price`,type:`string`,id:`param-compare-at-price`,children:_jsx(_components.p,{children:`The compare at price of the variant.`})}),_jsx(ResponseField,{name:`metafields`,type:`Object`,id:`param-metafields-1`,children:_jsx(_components.p,{children:`The metafields of the variant.`})}),_jsxs(ResponseField,{name:`selected_options`,type:`Array of Objects`,id:`param-selected-options`,children:[_jsx(_components.p,{children:`The selected options of the variant.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-1`,children:_jsx(_components.p,{children:`The name of the option.`})}),_jsx(ResponseField,{name:`value`,type:`string`,id:`param-value-2`,children:_jsx(_components.p,{children:`The value of the option.`})}),_jsx(ResponseField,{name:`option_value`,type:`object`,id:`param-option-value`,children:_jsx(_components.p,{children:`The linked metafield of the option.`})})]})]}),_jsx(ResponseField,{name:`position`,type:`number`,id:`param-position`,children:_jsx(_components.p,{children:`The position of the variant in the product’s variant list.`})}),_jsx(ResponseField,{name:`inventory_quantity`,type:`number`,id:`param-inventory-quantity`,children:_jsxs(_components.p,{children:[`Total inventory quantity across the locations in the store’s `,_jsx(_components.a,{href:`/shopify-integration/catalog-sync#inventory-location-scope`,children:`inventory location scope`}),`, which is all locations by default. Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsx(ResponseField,{name:`inventory_policy`,type:`string`,id:`param-inventory-policy`,children:_jsxs(_components.p,{children:[`Inventory policy for the variant: `,_jsx(_components.code,{children:`DENY`}),` (stop selling when out of stock) or `,_jsx(_components.code,{children:`CONTINUE`}),` (allow overselling). Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsx(ResponseField,{name:`inventory_levels`,type:`object`,id:`param-inventory-levels`,children:_jsxs(_components.p,{children:[`Object mapping location IDs to available inventory quantities (e.g., `,_jsx(_components.code,{children:`{\"1001\": 5, \"1002\": 10}`}),`). Returns empty object `,_jsx(_components.code,{children:`{}`}),` when no inventory data exists. Only included when the store has the `,_jsx(_components.strong,{children:`Expose Variant Inventory`}),` setting enabled.`]})}),_jsxs(ResponseField,{name:`featured_media`,type:`Object`,id:`param-featured-media`,children:[_jsx(_components.p,{children:`The featured media of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`mediaContentType`,type:`string`,id:`param-media-content-type`,children:_jsx(_components.p,{children:`The type of media.`})}),_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt-1`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src-1`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width-1`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height-1`,children:_jsx(_components.p,{children:`The height of the image.`})})]})]})]})]}),_jsxs(ResponseField,{name:`featured_media`,type:`Object`,id:`param-featured-media-1`,children:[_jsx(_components.p,{children:`The featured media of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`mediaContentType`,type:`string`,id:`param-media-content-type-1`,children:_jsx(_components.p,{children:`The type of media.`})}),_jsx(ResponseField,{name:`alt`,type:`string`,id:`param-alt-2`,children:_jsx(_components.p,{children:`The alt text of the image.`})}),_jsx(ResponseField,{name:`src`,type:`string`,id:`param-src-2`,children:_jsx(_components.p,{children:`The src of the image.`})}),_jsx(ResponseField,{name:`width`,type:`number`,id:`param-width-2`,children:_jsx(_components.p,{children:`The width of the image.`})}),_jsx(ResponseField,{name:`height`,type:`number`,id:`param-height-2`,children:_jsx(_components.p,{children:`The height of the image.`})})]})]}),_jsx(ResponseField,{name:`available`,type:`boolean`,id:`param-available-1`,children:_jsx(_components.p,{children:`The availability of the product.`})}),_jsxs(ResponseField,{name:`price_range`,type:`Object`,id:`param-price-range`,children:[_jsx(_components.p,{children:`The price range of the product.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`from`,type:`number`,id:`param-from`,children:_jsx(_components.p,{children:`The starting price of the product.`})}),_jsx(ResponseField,{name:`to`,type:`number`,id:`param-to`,children:_jsx(_components.p,{children:`The ending price of the product.`})})]})]})]})}),`\n`,_jsxs(ResponseField,{name:`totalResults`,type:`number`,id:`param-total-results`,children:[_jsx(_components.p,{children:`The total number of results. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products.`}),_jsxs(_components.p,{children:[`The count is scoped to the visibility of the active shopping channel. When `,_jsx(_components.code,{children:`context.shoppingChannel`}),` is `,_jsx(_components.code,{children:`\"web\"`}),` (the default), only products published to the online store are counted. When it is `,_jsx(_components.code,{children:`\"app\"`}),` and an `,_jsx(_components.a,{href:`/help/configuration/configure-search-behavior#app-sales-channel`,children:`app sales channel`}),` is configured, only products published to that channel are counted. As a result, `,_jsx(_components.code,{children:`totalResults`}),` always matches the number of products a shopper can actually see for that channel.`]})]}),`\n`,_jsx(ResponseField,{name:`page`,type:`number`,id:`param-page-1`,children:_jsx(_components.p,{children:`The current page number.`})}),`\n`,_jsx(ResponseField,{name:`totalPages`,type:`number`,id:`param-total-pages`,children:_jsx(_components.p,{children:`The total number of pages. Calculated based on tile count when variant breakouts are enabled.`})}),`\n`,_jsxs(ResponseField,{name:`facets`,type:`object`,id:`param-facets-1`,children:[_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`retrieveFacetCount`}),` is `,_jsx(_components.code,{children:`true`}),` then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal `,_jsx(_components.code,{children:`\"null\"`}),` strings are automatically excluded from facet results.`]}),_jsxs(_components.p,{children:[`Counts are scoped to the visibility of the active shopping channel, so they match the number of products (or tiles) a shopper can actually see. Products that are not published to the requester’s channel, are B2B-only, or are hidden by a combined-listing role are excluded from every bucket. When `,_jsx(_components.code,{children:`context.shoppingChannel`}),` is `,_jsx(_components.code,{children:`\"app\"`}),` but the store does not have an `,_jsx(_components.a,{href:`/help/configuration/configure-search-behavior#app-sales-channel`,children:`app sales channel`}),` configured, counts fall back to the web channel.`]}),_jsxs(_components.p,{children:[`When `,_jsx(_components.code,{children:`filter_group`}),` is present, counts follow the standard “OR within a facet, AND across facets” pattern. Facets whose condition uses a multi-select operator (`,_jsx(_components.code,{children:`IN`}),`, `,_jsx(_components.code,{children:`NOT IN`}),`) are counted against every other active filter except the facet’s own, so other values in the same facet stay selectable. Facets whose condition uses a single-select or predicate operator (`,_jsx(_components.code,{children:`EQ`}),`, `,_jsx(_components.code,{children:`NEQ`}),`, `,_jsx(_components.code,{children:`GT`}),`, `,_jsx(_components.code,{children:`LT`}),`, `,_jsx(_components.code,{children:`BETWEEN`}),`, `,_jsx(_components.code,{children:`NULL`}),`, and so on) are counted against the fully filtered result set.`]})]}),`\n`,_jsx(ResponseField,{name:`facetRanges`,type:`object`,id:`param-facet-ranges`,children:_jsxs(_components.p,{children:[`If `,_jsx(_components.code,{children:`includeFacetRanges`}),` is `,_jsx(_components.code,{children:`true`}),` then an object with keys of the facet attribute code and value is an object with min/max.`]})}),`\n`,_jsxs(ResponseField,{name:`facetDisplay`,type:`object`,id:`param-facet-display`,children:[_jsx(_components.p,{children:`Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object.`}),_jsxs(_components.p,{children:[`Metaobject-reference facets require `,_jsx(_components.code,{children:`enrichFacetMetaobjects: true`}),` and map each handle to the metaobject’s `,_jsx(_components.code,{children:`display_name`}),` and `,_jsx(_components.code,{children:`fields`}),`. Entries also carry a `,_jsx(_components.code,{children:`swatch`}),` object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in `,_jsx(_components.code,{children:`facets`}),`. See `,_jsx(_components.a,{href:`/developers/product-schema/metafields/metaobjects-and-references`,children:`Metaobjects and reference metafields`}),` for the normalized field shape and the `,_jsx(_components.a,{href:`/api-reference/facets#response`,children:`Facets API response`}),` for the `,_jsx(_components.code,{children:`swatch`}),` shape.`]}),_jsxs(_components.p,{children:[`For `,_jsx(_components.code,{children:`variants.pickup_locations`}),`, each entry maps a Shopify location id to the location’s `,_jsx(_components.code,{children:`id`}),`, `,_jsx(_components.code,{children:`name`}),`, `,_jsx(_components.code,{children:`address`}),`, `,_jsx(_components.code,{children:`instructions`}),`, `,_jsx(_components.code,{children:`pickupTime`}),`, and (when the filter is a `,_jsx(_components.code,{children:`geoRadius`}),`) `,_jsx(_components.code,{children:`distance`}),` and `,_jsx(_components.code,{children:`distanceUnit`}),`. Pickup entries are returned whenever pickup facets are requested, regardless of `,_jsx(_components.code,{children:`enrichFacetMetaobjects`}),`. See `,_jsx(_components.a,{href:`/engine/geospatial-filtering#local-pickup-filtering`,children:`Local pickup filtering`}),`.`]})]}),`\n`,_jsxs(ResponseField,{name:`banners`,type:`array of objects`,id:`param-banners`,children:[_jsxs(_components.p,{children:[`Merchandising banners emitted by any `,_jsx(_components.a,{href:`/platform/merchandising`,children:`merchandising rules`}),` that matched this request. Flat across all applied rules and pre-sorted by `,_jsx(_components.code,{children:`sort_index`}),`. Your storefront is responsible for rendering banners into the grid. See `,_jsx(_components.a,{href:`/developers/rendering-banners-in-liquid`,children:`Rendering banners in Liquid`}),` and `,_jsx(_components.a,{href:`/developers/rendering-banners-with-the-sdk`,children:`Rendering banners with the SDK`}),`. Each banner carries the `,_jsx(_components.code,{children:`rule_id`}),` of the rule that produced it. `,_jsx(_components.code,{children:`_meta.appliedRules`}),` still lists every applied rule ID.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`id`,type:`string`,id:`param-id-4`,children:_jsx(_components.p,{children:`Banner ULID.`})}),_jsx(ResponseField,{name:`rule_id`,type:`string | null`,id:`param-rule-id`,children:_jsxs(_components.p,{children:[`ID of the `,_jsx(_components.a,{href:`/platform/merchandising`,children:`merchandising rule`}),` that produced this banner. Send it on `,_jsx(_components.code,{children:`banner_impression`}),` and `,_jsx(_components.code,{children:`banner_click`}),` `,_jsx(_components.a,{href:`/tracking-api/event-types`,children:`tracking events`}),` so engagement attributes back to the rule.`]})}),_jsx(ResponseField,{name:`name`,type:`string`,id:`param-name-2`,children:_jsx(_components.p,{children:`Internal name (not shown to shoppers).`})}),_jsx(ResponseField,{name:`mode`,type:`string`,id:`param-mode`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"inject\"`}),` or `,_jsx(_components.code,{children:`\"overtake\"`}),`. `,_jsx(_components.code,{children:`inject`}),` inserts the banner at `,_jsx(_components.code,{children:`position`}),` and shifts trailing products; `,_jsx(_components.code,{children:`overtake`}),` replaces the product at `,_jsx(_components.code,{children:`position`}),`.`]})}),_jsx(ResponseField,{name:`link`,type:`string | null`,id:`param-link`,children:_jsxs(_components.p,{children:[`Click-through URL. Only honored on `,_jsx(_components.code,{children:`inject`}),` banners, and only meaningful when `,_jsx(_components.code,{children:`type`}),` is `,_jsx(_components.code,{children:`\"link\"`}),` (the built-in type). Custom banner types put their click-through URL inside `,_jsx(_components.code,{children:`data`}),` instead.`]})}),_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type-4`,children:_jsxs(_components.p,{children:[`Banner type slug. `,_jsx(_components.code,{children:`\"link\"`}),` for the built-in type, otherwise the slug of a custom `,_jsx(_components.a,{href:`/platform/merchandising/banner-types`,children:`banner type`}),` defined for your store. Storefronts switch renderers on this value.`]})}),_jsx(ResponseField,{name:`data`,type:`object`,id:`param-data`,children:_jsxs(_components.p,{children:[`Saved values for the banner type’s field schema. Keys match the schema’s `,_jsx(_components.code,{children:`key`}),` values. Only keys defined in the current schema are returned. Retyped or removed fields are dropped. `,_jsx(_components.code,{children:`product_reference`}),`, `,_jsx(_components.code,{children:`collection_reference`}),`, and `,_jsx(_components.code,{children:`variant_reference`}),` fields (and their `,_jsx(_components.code,{children:`list.`}),` variants) are resolved to `,_jsx(_components.code,{children:`{ \"id\", \"handle\" }`}),` objects; unpublished references are omitted.`]})}),_jsx(ResponseField,{name:`sort_index`,type:`number`,id:`param-sort-index`,children:_jsx(_components.p,{children:`Application order when a rule has multiple banners. Lower wins on conflicting cells.`})}),_jsx(ResponseField,{name:`web_media`,type:`object`,id:`param-web-media`,children:_jsxs(_components.p,{children:[`Desktop media. `,_jsx(_components.code,{children:`{ id, src, alt, width, height, source, mediaContentType }`}),`. `,_jsx(_components.code,{children:`source`}),` is `,_jsx(_components.code,{children:`\"store_file\"`}),` today and `,_jsx(_components.code,{children:`mediaContentType`}),` is `,_jsx(_components.code,{children:`\"IMAGE\"`}),` today.`]})}),_jsx(ResponseField,{name:`mobile_media`,type:`object`,id:`param-mobile-media`,children:_jsxs(_components.p,{children:[`Mobile media. Same shape as `,_jsx(_components.code,{children:`web_media`}),`.`]})}),_jsx(ResponseField,{name:`web_layout`,type:`object`,id:`param-web-layout`,children:_jsxs(_components.p,{children:[`Desktop layout. `,_jsx(_components.code,{children:`{ placement: \"hero\" | \"inline\", width, height, position }`}),`. For `,_jsx(_components.code,{children:`hero`}),`, render a horizontal banner across the full product-grid width above the first product row; ignore the cell spans and `,_jsx(_components.code,{children:`position`}),`. For `,_jsx(_components.code,{children:`inline`}),`, `,_jsx(_components.code,{children:`position`}),` is a row-major 0-indexed grid cell, and `,_jsx(_components.code,{children:`width`}),` and `,_jsx(_components.code,{children:`height`}),` are column and row spans, not image dimensions in pixels. Inline width is bounded by the grid columns, not limited to one or two; inline banners can span up to four rows, and the editor resizes both width and height.`]})}),_jsx(ResponseField,{name:`mobile_layout`,type:`object`,id:`param-mobile-layout`,children:_jsxs(_components.p,{children:[`Mobile layout. Same shape as `,_jsx(_components.code,{children:`web_layout`}),`.`]})}),_jsxs(ResponseField,{name:`placement`,type:`object`,id:`param-placement`,children:[_jsxs(_components.p,{children:[`Only present when the request includes a `,_jsx(_components.a,{href:`#body`,children:_jsx(_components.code,{children:`grid`})}),` block and the banner is an inline banner anchored to a cell on the current page. Hero banners never carry `,_jsx(_components.code,{children:`placement`}),` and are always returned. Inline banners that could not be anchored (missing device layout, no saved `,_jsx(_components.code,{children:`position`}),`, or no fit within the scan buffer) are still returned without this key so they do not vanish from the storefront.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`page`,type:`number`,id:`param-page-2`,children:_jsxs(_components.p,{children:[`The 1-indexed page this placement is anchored to. Always matches the requested `,_jsx(_components.code,{children:`pagination.page`}),`.`]})}),_jsx(ResponseField,{name:`row`,type:`number`,id:`param-row`,children:_jsx(_components.p,{children:`0-indexed row within the current page.`})}),_jsx(ResponseField,{name:`colStart`,type:`number`,id:`param-col-start`,children:_jsxs(_components.p,{children:[`0-indexed column where the banner starts. Combined with `,_jsx(_components.code,{children:`colSpan`}),`, gives the CSS `,_jsx(_components.code,{children:`grid-column: colStart + 1 / span colSpan`}),`.`]})}),_jsx(ResponseField,{name:`colSpan`,type:`number`,id:`param-col-span`,children:_jsxs(_components.p,{children:[`Number of columns the banner spans. Clamped to `,_jsx(_components.code,{children:`[1, grid.columns]`}),`.`]})}),_jsx(ResponseField,{name:`rowSpan`,type:`number`,id:`param-row-span`,children:_jsxs(_components.p,{children:[`Number of rows the banner spans. Clamped to `,_jsx(_components.code,{children:`[1, 4]`}),` and, when `,_jsx(_components.code,{children:`pagination.limit >= grid.columns`}),`, to the number of rows per page.`]})})]})]})]})]}),`\n`,_jsxs(ResponseField,{name:`grid`,type:`object`,id:`param-grid-1`,children:[_jsxs(_components.p,{children:[`Only present when the request includes a `,_jsx(_components.a,{href:`#body`,children:_jsx(_components.code,{children:`grid`})}),` block. Echoes the resolved grid geometry so the storefront can render banners into the exact cells the planner used to page products.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`columns`,type:`number`,id:`param-columns-1`,children:_jsx(_components.p,{children:`Column count from the request.`})}),_jsx(ResponseField,{name:`device`,type:`string`,id:`param-device-1`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"desktop\"`}),` or `,_jsx(_components.code,{children:`\"mobile\"`}),`, from the request.`]})}),_jsx(ResponseField,{name:`cellsPerPage`,type:`number`,id:`param-cells-per-page`,children:_jsxs(_components.p,{children:[`Total grid cells on this page, equal to `,_jsx(_components.code,{children:`floor(pagination.limit / columns) * columns`}),`.`]})}),_jsx(ResponseField,{name:`rows`,type:`number`,id:`param-rows`,children:_jsx(_components.p,{children:`Number of full rows on this page.`})}),_jsx(ResponseField,{name:`bannerCells`,type:`number`,id:`param-banner-cells`,children:_jsxs(_components.p,{children:[`How many of `,_jsx(_components.code,{children:`cellsPerPage`}),` are occupied by inline banner placements. The remaining cells hold the products in `,_jsx(_components.code,{children:`results`}),`.`]})})]})]}),`\n`,_jsx(ResponseField,{name:`attributionToken`,type:`string`,id:`param-attribution-token`,children:_jsxs(_components.p,{children:[`A unique request identifier (ULID) for this API call. Use this token to correlate browse requests with analytics events via the `,_jsx(_components.a,{href:`/tracking-api/send-events`,children:`Beacon API`}),`, and to match requests to entries in the `,_jsx(_components.a,{href:`/shopify-integration/storefront-pixel#search-inspector`,children:`Search Inspector`}),`.`]})}),`\n`,_jsx(ResponseField,{name:`_meta`,type:`object`,id:`param-meta`,children:_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`appliedRules`,type:`Array of strings`,id:`param-applied-rules`,children:_jsx(_components.p,{children:`The merchandising rule IDs applied to the request.`})}),_jsx(ResponseField,{name:`appliedSearchRules`,type:`Array of strings`,id:`param-applied-search-rules`,children:_jsxs(_components.p,{children:[`The IDs of `,_jsx(_components.a,{href:`/platform/request-transforms`,children:`request transforms`}),` whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given browse request.`]})}),_jsxs(ResponseField,{name:`appliedSearchRuleActions`,type:`array of objects`,id:`param-applied-search-rule-actions`,children:[_jsxs(_components.p,{children:[`One entry per action executed by a matched request transform, in execution order. Use `,_jsx(_components.code,{children:`changed`}),` to tell whether an action actually modified the request. A matched rule can appear in `,_jsx(_components.code,{children:`appliedSearchRules`}),` while all of its actions report `,_jsx(_components.code,{children:`changed: false`}),`. See `,_jsxs(_components.a,{href:`/platform/request-transforms#debugging-with-_meta`,children:[`Debugging with `,_jsx(_components.code,{children:`_meta`})]}),`.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`ruleId`,type:`string`,id:`param-rule-id-1`,children:_jsx(_components.p,{children:`The ID of the request transform that owns the action.`})}),_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type-5`,children:_jsxs(_components.p,{children:[`The action type, for example `,_jsx(_components.code,{children:`add_filter_group`}),` or `,_jsx(_components.code,{children:`override_sort_order`}),`.`]})}),_jsx(ResponseField,{name:`changed`,type:`boolean`,id:`param-changed`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`true`}),` when the action modified the request. `,_jsx(_components.code,{children:`false`}),` when the action was a no-op, for example an `,_jsx(_components.code,{children:`override_sort_order`}),` action matching the already-active sort order.`]})}),_jsx(ResponseField,{name:`error`,type:`string`,id:`param-error`,children:_jsxs(_components.p,{children:[`Only present when the action could not run. `,_jsx(_components.code,{children:`\"unsupported_action_type\"`}),` indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally.`]})})]})]}),_jsxs(ResponseField,{name:`variantBreakouts`,type:`array of objects`,id:`param-variant-breakouts`,children:[_jsxs(_components.p,{children:[`Array of variant breakout configurations applied to this collection. Only present when one or more variant breakouts are active for the collection. Multiple breakouts with different option codes can work simultaneously in the same collection. Each object has the structure `,_jsx(_components.code,{children:`{optionCode: \"Stone\"}`}),`.`]}),_jsx(Expandable,{title:`Properties`,children:_jsx(ResponseField,{name:`optionCode`,type:`string`,id:`param-option-code-1`,children:_jsx(_components.p,{children:`The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array.`})})})]}),_jsxs(ResponseField,{name:`mediaPreloads`,type:`object`,id:`param-media-preloads-1`,children:[_jsxs(_components.p,{children:[`Echoes the image preload configuration used to build the `,_jsx(_components.code,{children:`Link`}),` response header for this request. Only present when image preloads are emitted. See `,_jsx(_components.a,{href:`/sdk/performance#early-hints-link-header-preloading`,children:`Early hints`}),`.`]}),_jsx(Expandable,{title:`Properties`,children:_jsx(ResponseField,{name:`srcsetSizes`,type:`int[]`,id:`param-srcset-sizes-1`,children:_jsxs(_components.p,{children:[`The responsive image widths (in pixels) used in the `,_jsx(_components.code,{children:`imagesrcset`}),` of the `,_jsx(_components.code,{children:`Link`}),` header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults.`]})})})]}),_jsxs(ResponseField,{name:`discountEntitlements`,type:`array of objects`,id:`param-discount-entitlements-1`,children:[_jsxs(_components.p,{children:[`Echoes the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements`,children:`discount entitlements`}),` applied to this request. Only present when the request included `,_jsx(_components.code,{children:`discountEntitlements`}),` (either directly or via a matched `,_jsx(_components.a,{href:`/platform/request-transforms`,children:`request transform`}),`). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`entitled`,type:`object`,id:`param-entitled-1`,children:_jsxs(_components.p,{children:[`The entitlement criteria that qualified products for the discount. Contains any of `,_jsx(_components.code,{children:`all`}),`, `,_jsx(_components.code,{children:`products`}),`, `,_jsx(_components.code,{children:`variants`}),`, `,_jsx(_components.code,{children:`collections`}),`, or `,_jsx(_components.code,{children:`conditions`}),`. See the `,_jsx(_components.a,{href:`/shopify-integration/discount-entitlements#entitlement-criteria`,children:`entitlement criteria`}),` reference.`]})}),_jsxs(ResponseField,{name:`discount`,type:`object`,id:`param-discount-1`,children:[_jsx(_components.p,{children:`The discount Layers applied.`}),_jsxs(Expandable,{title:`Properties`,children:[_jsx(ResponseField,{name:`type`,type:`string`,id:`param-type-6`,children:_jsxs(_components.p,{children:[_jsx(_components.code,{children:`\"PERCENTAGE\"`}),` or `,_jsx(_components.code,{children:`\"FIXED_AMOUNT\"`}),`.`]})}),_jsx(ResponseField,{name:`value`,type:`number`,id:`param-value-3`,children:_jsxs(_components.p,{children:[`The discount value. Percent off for `,_jsx(_components.code,{children:`PERCENTAGE`}),`, shop base-currency amount for `,_jsx(_components.code,{children:`FIXED_AMOUNT`}),`. An echoed entitlement doesn’t guarantee a price reduction on every variant; see the shared `,_jsx(_components.code,{children:`discountEntitlements`}),` request parameter for market-currency limits.`]})})]})]})]})]})]})}),`\n`,_jsxs(ResponseField,{name:`_workflow`,type:`array of objects`,id:`param-workflow`,children:[_jsx(_components.p,{children:`An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the browse pipeline, recorded in the order it was executed. Use this field to understand which merchandising rules, sort orders, and boosts were applied.`}),_jsxs(_components.p,{children:[`This field is useful for debugging browse behavior in development and is also surfaced in the `,_jsx(_components.a,{href:`/shopify-integration/storefront-pixel#search-inspector`,children:`Search Inspector`}),` panel.`]}),_jsxs(Expandable,{title:`Properties`,children:[_jsxs(ResponseField,{name:`type`,type:`string`,id:`param-type-7`,children:[_jsx(_components.p,{children:`The processing step type. Possible values include:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"rule-applied\"`}),` — A merchandising rule was applied. The `,_jsx(_components.code,{children:`payload`}),` contains the rule identifier.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"ranking-rules\"`}),` — Ranking rules influenced result ordering.`]}),`\n`]}),_jsxs(_components.p,{children:[`See the `,_jsx(_components.a,{href:`/api-reference/search`,children:`Text Search`}),` documentation for a full list of possible step types.`]})]}),_jsx(ResponseField,{name:`payload`,type:`string | array | object`,id:`param-payload`,children:_jsxs(_components.p,{children:[`The data associated with this processing step. The structure varies by `,_jsx(_components.code,{children:`type`}),`.`]})})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`response-headers`,children:`Response headers`}),`\n`,_jsx(_components.p,{children:`Every API response includes the following headers for request tracing and performance optimization:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Header`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`x-request-id`})}),_jsxs(_components.td,{children:[`A unique identifier (ULID) for the request. This matches the `,_jsx(_components.code,{children:`attributionToken`}),` in the response body. Use it to correlate requests across your infrastructure or when contacting support.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`x-layers-build`})}),_jsx(_components.td,{children:`The Layers build version that served the request.`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`X-Layers-Results-Cache`})}),_jsxs(_components.td,{children:[`Indicates whether the response was served from the results cache. Returns `,_jsx(_components.code,{children:`HIT`}),` when cached results were used, or `,_jsx(_components.code,{children:`MISS`}),` when results were computed fresh.`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`Link`})}),_jsxs(_components.td,{children:[`Contains `,_jsx(_components.code,{children:`rel=\"preload\"`}),` directives for product images in the response (up to 6 items), enabling browsers and CDNs to begin fetching images before your application processes the JSON body. See `,_jsx(_components.a,{href:`/sdk/performance#early-hints-link-header-preloading`,children:`Early hints`}),` for configuration options. Only included when early hints are enabled (enabled by default).`]})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`variant-breakouts`,children:`Variant breakouts`}),`\n`,_jsxs(_components.p,{children:[`When variant breakouts are configured, results may include both product tiles and variant tiles. Each result includes a `,_jsx(_components.code,{children:`__typename`}),` field to identify the tile type:`]}),`\n`,_jsxs(ResponseField,{name:`__typename`,type:`string`,id:`param-typename`,children:[_jsx(_components.p,{children:`Identifies the type of tile in the results:`}),_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"Product\"`}),` - A standard product tile`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.code,{children:`\"Variant\"`}),` - An individual variant tile from a product with a configured breakout option`]}),`\n`]})]}),`\n`,_jsx(Heading,{level:`4`,id:`variant-tile-fields`,children:`Variant tile fields`}),`\n`,_jsx(_components.p,{children:`Variant tiles include additional fields to identify the specific variant:`}),`\n`,_jsx(ResponseField,{name:`product_id`,type:`number`,id:`param-product-id-2`,children:_jsx(_components.p,{children:`The parent product ID. Use this to link back to the full product or group variants from the same product.`})}),`\n`,_jsx(ResponseField,{name:`variant_id`,type:`number`,id:`param-variant-id-3`,children:_jsxs(_components.p,{children:[`The specific variant ID. For variant tiles, this matches the `,_jsx(_components.code,{children:`id`}),` field.`]})}),`\n`,_jsx(Note,{children:_jsxs(_components.p,{children:[`For variant tiles, the `,_jsx(_components.code,{children:`id`}),` field contains the variant ID (not the product ID). The `,_jsx(_components.code,{children:`title`}),` field is formatted as `,_jsx(_components.code,{children:`\"{product title} - {option value}\"`}),` by default (e.g., “Amethyst Ring - Rose Quartz”), but the format can be configured per breakout. If the breakout’s `,_jsx(_components.strong,{children:`Include Option Value in Title`}),` setting is disabled, the title is the original product title. See the `,_jsx(_components.a,{href:`/platform/variant-breakouts`,children:`Variant Breakouts`}),` documentation for more details.`]})})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"api":"POST /browse/{collection_handle}","title":"Browse API: Browse Collection Page","sidebarTitle":"Collection Page","description":"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.","href":"/api-reference/browse"}}},"mdxSourceWithNoJs":null,"noJsSplices":[[410,414,"Example,ResponseFiel"],[710,725,"Example)_missingMdxReference(`ResponseExample`,true);if(!ResponseField)_missingM"],[109557,109985,",`\n`,_jsxs(ResponseExample,{children:[_jsx(CodeBlock,{filename:`Request`,numberOfLines:`27`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`27`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`POST /storefront/v`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`/browse/summer-collection`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sort_order_code\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"best-sellers\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"pagination\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"page\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"limit\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"retrieveFacetCount\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"product_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"context\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"geo\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"country\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"US\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"province\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"California\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"marketing\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"source\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"google\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"medium\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"cpc\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"campaign\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"summer-sale\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"shoppingChannel\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"web\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"identity\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"sessionId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"abc123\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"deviceId\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"device-uuid\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})}),_jsx(CodeBlock,{filename:`Response`,numberOfLines:`69`,language:`json`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`json`,children:_jsxs(_components.code,{language:`json`,numberOfLines:`69`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"results\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"id\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`7003338965178`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"title\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME SEALLINE SEE POUCH SMALL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"body_html\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"product_type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"Accessories\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"created_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2022-02-05T01:22:05.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"handle\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"supreme-pouch-44370ss18a32-sm\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"updated_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2023-10-25T20:47:04.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"published_at\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"2022-02-05T01:22:05.000000Z\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"tags\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"consignment\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"images\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"alt\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SUPREME POUCH\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"src\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"width\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`800`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"height\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`534`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"variant_ids\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"metafields\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"product\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"alias\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SEALLINE SEE POUCH SMALL\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"colorway\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"BLACK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"styleCode\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"SS18A30 BLACK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"yearOfRelease\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`2018`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"searchColor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"black\"`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"available\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`true`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"price_range\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"from\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"to\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ],`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalResults\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1000`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"page\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`1`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"totalPages\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`20`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"facets\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"vendor\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"ADIDAS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`30`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"JORDAN\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`336`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"NEW BALANCE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`15`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"NIKE\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`384`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"REEBOK\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`4`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"SUPREME\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`624`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"VANS\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#B5CEA8`},children:`32`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"attributionToken\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"01JRVX8M3N4P5Q6R7S8T9U0V1W\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"_meta\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: {`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appliedRules\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appliedSearchRules\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [],`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"appliedSearchRuleActions\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: []`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` },`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"_workflow\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: [`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` {`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"type\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"rule-applied\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`,`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#9CDCFE`},children:` \"payload\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"rule_01JRVX8M3N4P5Q6R7S8T9U0V1W\"`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` }`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ]`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`}`})}),`\n`]})})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}"]]},"mdxExtracts":{"tableOfContents":[{"title":"Authorization","slug":"authorization","depth":2,"children":[]},{"title":"Headers","slug":"headers","depth":2,"children":[]},{"title":"Path parameters","slug":"path-parameters","depth":2,"children":[]},{"title":"Body","slug":"body","depth":2,"children":[]},{"title":"Response","slug":"response","depth":2,"children":[{"title":"Response headers","slug":"response-headers","depth":3,"children":[]},{"title":"Variant breakouts","slug":"variant-breakouts","depth":3,"children":[]},{"title":"Variant tile fields","slug":"variant-tile-fields","depth":4,"children":[]}]}],"codeExamples":{"response":{"type":"ResponseExample","children":[{"filename":"Request","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"27\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">POST /storefront/v\u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">/browse/summer-collection\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"sort_order_code\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"best-sellers\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"pagination\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"page\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"limit\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">20\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"retrieveFacetCount\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"facets\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">, \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"product_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"context\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"geo\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"country\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"US\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"province\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"California\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"marketing\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"source\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"google\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"medium\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"cpc\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"campaign\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"summer-sale\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"shoppingChannel\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"web\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"identity\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"sessionId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"abc123\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"deviceId\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"device-uuid\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"},{"filename":"Response","html":"\u003cpre class=\"shiki shiki-themes github-light-default dark-plus\" style=\"background-color:#ffffff;--shiki-dark-bg:#0B0C0E;color:#1f2328;--shiki-dark:#D4D4D4\" language=\"json\">\u003ccode language=\"json\" numberOfLines=\"69\">\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">{\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"results\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"id\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">7003338965178\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"title\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME SEALLINE SEE POUCH SMALL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"body_html\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"The Supreme Sealline See Pouch Small is a versatile and waterproof storage solution that seamlessly marries utility and style. With its clear window for easy visibility and the iconic Supreme branding, it's a sought-after accessory for those who appreciate keeping their essentials dry while making a fashion statement, whether at the beach or in the city..\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"product_type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"Accessories\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"created_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2022-02-05T01:22:05.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"handle\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"supreme-pouch-44370ss18a32-sm\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"updated_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2023-10-25T20:47:04.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"published_at\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"2022-02-05T01:22:05.000000Z\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"tags\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"consignment\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"images\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"alt\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SUPREME POUCH\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"src\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"https://cdn.shopify.com/s/files/1/0588/3677/9194/products/ss18_supreme_tnf_pouch_blk_2-l_5fb1316e-22f7-4702-9953-57f3fbdda5be.jpg?v=1644047927\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"width\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">800\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"height\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">534\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"variant_ids\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: []\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"metafields\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"product\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"alias\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SEALLINE SEE POUCH SMALL\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"colorway\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"BLACK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"styleCode\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"SS18A30 BLACK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"yearOfRelease\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">2018\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"searchColor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\"> \"black\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"available\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#569CD6\">true\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"price_range\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"from\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"to\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalResults\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1000\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"page\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">1\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"totalPages\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">20\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"facets\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"vendor\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"ADIDAS\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">30\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"JORDAN\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">336\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"NEW BALANCE\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">15\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"NIKE\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">384\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"REEBOK\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">4\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"SUPREME\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">624\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"VANS\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0550AE;--shiki-dark:#B5CEA8\">32\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"attributionToken\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"01JRVX8M3N4P5Q6R7S8T9U0V1W\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"_meta\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"appliedRules\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"appliedSearchRules\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [],\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"appliedSearchRuleActions\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: []\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> },\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"_workflow\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: [\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> {\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"type\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"rule-applied\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">,\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#116329;--shiki-dark:#9CDCFE\"> \"payload\"\u003c/span>\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">: \u003c/span>\u003cspan style=\"color:#0A3069;--shiki-dark:#CE9178\">\"rule_01JRVX8M3N4P5Q6R7S8T9U0V1W\"\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> }\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\"> ]\u003c/span>\u003c/span>\n\u003cspan class=\"line\">\u003cspan style=\"color:#1F2328;--shiki-dark:#D4D4D4\">}\u003c/span>\u003c/span>\n\u003c/code>\u003c/pre>"}],"attributes":[]}},"endpoint":{"title":"Browse API: Browse Collection Page","path":"/browse/{collection_handle}","servers":[{"url":"https://app.uselayers.com/api/storefront/v1"}],"method":"post","request":{"security":[],"parameters":{"query":{},"header":{"X-Storefront-Access-Token":{"schema":[{"type":"string","description":"Token-based authentication header in the form of `\u003cYOUR_LAYERS_TOKEN>` .","required":true}]},"Content-Type":{"schema":[{"type":"string","required":true}]},"Accept":{"schema":[{"type":"string","required":true}]}},"cookie":{},"path":{"collection_handle":{"schema":[{"type":"string","description":"The handle of the collection you wish to browse. Use `all` to browse every browsable product in the catalog. This works whether or not your store has a synced `/collections/all` collection. If a collection with the handle `all` is synced, Layers browses that collection’s products. If not, it browses the whole catalog with the store’s default sort order and no collection-specific variant breakouts. Any other handle that doesn’t match a synced collection returns an error.","required":true}]}}},"body":{"application/json":{"schemaArray":[{"type":"object","properties":{"sort_order_code":[{"type":"string","description":"Code of the sort order. When provided, it takes precedence over collection and store defaults. If omitted, Layers uses the collection’s default sort order, then the store default when the collection has no default. Existing merchandising rules continue to apply as configured."}],"dynamicLinking":[{"type":"object","properties":{"products":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Products to pin. Each entry is either a plain identifier or an object: Handle : a string, for example `\"summer-dress-blue\"` . ID : a number or numeric string, for example `8234567890123` . Object : `{ \"productId\": \"summer-dress-blue\", \"position\": 2 }` . `productId` takes a handle or ID. `position` is optional. You can mix all three in one array. Any other entry shape (an object without `productId` , an empty string, a nested array) returns `422` . Position: Plain identifiers, and objects without `position` , are pinned in array order: the first one at position 1 (after any `offset` ), the next at position 2, and so on. An object’s `position` is the exact 1-based slot for that product on the first page. It must be an integer of `1` or more, and `offset` doesn’t apply to it. Unpositioned products fill the remaining pinned slots in array order. If the same product appears more than once, the first explicit `position` for it wins. Behavior: Only applies on the first page of results (page 1) Non-existent or unavailable products are silently skipped Subsequent products shift up to fill any gaps Takes priority over merchandising rules and sort orders Example: Example with explicit positions: pins `classic-tee-white` to position 1 and `summer-dress-blue` to position 4.","required":true}],"offset":[{"type":"integer","description":"Number of leading positions to leave to the normal result order before the linked products. Defaults to `0` , which pins the first product at position 1. An offset of `2` places the first linked product at position 3. Products with an explicit `position` ignore `offset` . Example:"}]},"description":"Dynamic linking promotes specific products to the top of the first page of results. Dynamic linking takes priority over merchandising rules and sort orders."}],"defaultSelectedOptions":[{"type":"array","items":[{"type":"object","properties":{"optionCode":[{"type":"string","description":"The product option code to match (e.g., `\"birthstone\"` , `\"color\"` ). Option codes are automatically normalized (e.g., `\"Birth Stone\"` becomes `\"birth_stone\"` ).","required":true}],"value":[{"type":"string","description":"The option value to match (e.g., `\"February\"` , `\"Blue\"` ).","required":true}]}}],"description":"Specify which product variants should be selected by default in the `first_or_matched_variant` field. This is useful for scenarios like defaulting to a specific birthstone option in a jewelry collection. Behavior: Uses OR logic - selects the first variant matching ANY of the specified option values Falls back to the first variant by position if no match is found Automatically skipped when any option or variant filters are applied (filters take precedence) Only affects the `first_or_matched_variant` field in the response Works with Variant Breakouts — product tiles respect your default selected options, and variant tiles respect non-breakout default selected options (preferring variants that match your preferences within each breakout group, with fallback to position ordering) Example: Multiple options example (OR logic): This will select variants with either February OR March birthstone, preferring the first match found."}],"attributes":[{"type":"array","items":[{"type":"string"}],"description":"Product attributes to include in the response. By default, all attributes are included except opt-in attributes noted below. Available attributes include: `id` , `title` , `handle` , `body_html` , `vendor` , `product_type` , `tags` , `images` , `available` , `created_at` , `updated_at` , `published_at` , `price_range` , `options` , `original_options` , `metafields` , `named_tags` , `calculated` , `category` , `featured_media` , `is_gift_card` , `has_variants_that_require_components` , `combined_listing_parent_product_id` , `combined_listing_role` , `first_or_matched_variant` , and `variants` . The `collection_titles` attribute is opt-in: pass it in `attributes` to include the array of collection titles each product belongs to. It is excluded from responses by default. See the for detailed descriptions, including for slicing arrays and filtering collections (for example, , , )."}],"filter_group":[{"type":"object","properties":{},"description":"Storefront endpoints accept nested `AND` / `OR` filter groups up to two levels deep. Each nested group must contain at least one expression; empty nested groups are rejected. Metafield filter properties may include hyphens in their namespace or key, for example `metafields.my-app.fit-type` . Refer to the dedicated Filter Expressions guide to learn more about filter expressions."}],"pagination":[{"type":"object","properties":{"page":[{"type":"integer","description":"The current page of results to fetch."}],"limit":[{"type":"integer","description":"The max results to fetch per page."}]}}],"facets":[{"type":"array","items":[{"type":"string"}],"description":"Facets to be included. Accepts both exact facet codes (e.g., `\"vendor\"` , `\"options.Size\"` ) and wildcard patterns (e.g., `\"options.*\"` , `\"metafields.product.*\"` ). Wildcard patterns expand to all matching attribute codes. For example, `\"options.*\"` expands to all option facets like `\"options.Size\"` and `\"options.Color\"` . Wildcards must match at least one attribute code to be valid. Examples:"}],"retrieveFacetCount":[{"type":"boolean","description":"If the count of each facet value should be calculated."}],"includeFacetRanges":[{"type":"boolean","description":"If you want a min/max range for numeric facets such as price."}],"enrichFacetMetaobjects":[{"type":"boolean","description":"When `true` , any facet backed by a `metaobject_reference` or `list.metaobject_reference` metafield is returned with a companion `facetDisplay` object. Each entry maps a facet value (the metaobject handle) to the referenced metaobject’s `display_name` and `fields` . When the metaobject defines a color or image field, the entry also carries a resolved `swatch` object. Use this when your storefront filter UI needs human-readable labels or nested field data (for example, a color name or swatch hex) instead of the raw handle. When `false` or omitted, only the handles are returned in `facets` . Values are looked up from the local metaobject cache. Handles with no matching cached metaobject are omitted from `facetDisplay` and remain as plain values in `facets` . See Metaobjects and reference metafields for the normalized shape of each entry."}],"discountEntitlements":[{"type":"array","items":[{"type":"object","properties":{"entitled":[{"type":"object","properties":{"all":[{"type":"boolean","description":"When `true` , applies discount to all products. When `false` , uses products, variants, or collections arrays."}],"products":[{"type":"array","items":[{"type":"string"}],"description":"Array of product IDs or handles that qualify for the discount. Maximum 250 entries."}],"variants":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Array of variant IDs that qualify for the discount. Maximum 250 entries."}],"collections":[{"type":"array","items":[{"type":"string"}],"description":"Array of collection handles that qualify for the discount. Maximum 250 entries."}],"conditions":[{"type":"object","properties":{},"description":"Optional filter group that qualifies products for the discount based on their attributes (for example, `tags` or `vendor` ). Uses the same shape as the top-level `filter_group` parameter. Matches are additive with `products` , `variants` , and `collections` on the same entitlement."}]},"description":"Defines which products qualify for the discount.","required":true}],"discount":[{"type":"object","properties":{"type":[{"type":"string","description":"The discount type: `PERCENTAGE` or `FIXED_AMOUNT` .","required":true}],"value":[{"type":"number","description":"The discount value. For `PERCENTAGE` , this must be a number between 0 and 100 (e.g., 10 for 10% off). For `FIXED_AMOUNT` , this is the amount in your shop’s base currency, not the shopper’s market currency.","required":true}]},"description":"Defines the discount to apply.","required":true}]}}],"description":"Apply discounts to products, variants, or collections. When provided, price-based sorting and filtering will use discounted prices. See the Discount Entitlements guide for detailed usage. Fixed amounts use your shop’s base currency. Layers skips them on market pricing rows in a different native currency, without converting the discount. Percentage discounts still apply to those localized prices. A variant that falls back to its base price can still receive a fixed-amount discount."}],"identity":[{"type":"object","properties":{"deviceId":[{"type":"string","description":"Persistent browser identifier that remains constant across sessions. Used to recognize returning visitors for long-term personalization. Automatically generated and managed by the Storefront Pixel."}],"sessionId":[{"type":"string","description":"Temporary session identifier. Layers-generated sessions expire after 30 minutes without activity. The Storefront Pixel refreshes the rolling window at page load and on every route change, including pages without tracked events. When a legacy Shopify or fallback cookie is available, Layers prefers it and does not control its lifetime. Without consent, the pixel uses a sessionStorage or in-memory fallback and does not write an analytics cookie."}],"customerId":[{"type":"string","description":"Shopify customer ID for authenticated users. Only present when the customer is signed in to their account."}],"companyLocationId":[{"type":"string","description":"Shopify B2B company location GID (e.g. `gid://shopify/CompanyLocation/123456789` ) for the authenticated buyer. Layers resolves the catalog assigned to the company location and uses it to scope results: only products in the catalog are returned, prices come from the catalog’s price list, and excluded collections return 404. Omit for retail (DTC) traffic. When you pass `companyLocationId` , you must also pass the buyer’s `customerId` . Layers verifies with Shopify that the customer belongs to the company that owns the location before resolving the catalog; unauthorized or unauthenticated requests return a `403` . See B2B catalogs ."}]},"description":"User identity information for tracking and personalization. Automatically managed by the Storefront Pixel; required for headless integrations."}],"preview_id":[{"type":"string","description":"When provided, the Browse API loads the specified preview rule instead of the collection’s active merchandising rule. Preview rules are temporary and expire one hour after creation. This parameter is automatically included when you open a preview URL from the Layers dashboard. You do not need to set it manually in production integrations. Behavior: Overrides normal merchandising rule resolution for this request Analytics and beacon events are not recorded for preview requests Returns a `404` if the preview has expired or does not exist"}],"forceHideOutOfStock":[{"type":"boolean","description":"When set to `true` , products with no available variants are excluded from results regardless of the store-level out-of-stock visibility setting. If your store’s inventory location scope is narrowed, the same location rules apply. This is useful when a specific browse integration or page requires strict in-stock filtering even though the store default allows out-of-stock products to appear."}],"grid":[{"type":"object","properties":{"columns":[{"type":"integer","description":"Number of columns in your product grid. Must be between `1` and `12` . Inline banner widths are clamped to `[1, columns]` and heights to `[1, 4]` . When `pagination.limit >= columns` , height is also limited to the number of rows per page ( `floor(pagination.limit / columns)` ).","required":true}],"device":[{"type":"string","description":"`\"desktop\"` or `\"mobile\"` . Selects which per-device layout ( `web_layout` or `mobile_layout` ) the planner reads when anchoring banners to grid cells."}]},"description":"Declares the storefront grid so inline merchandising banners can reserve grid cells and products are paged around them. When `grid` is present, the response includes a top-level `grid` block and each anchored inline banner gets a page-local `placement` object. Omit `grid` to keep the legacy behavior. Banners return without `placement` , and pagination is computed against products only. Behavior: `cellsPerPage = floor(pagination.limit / columns) * columns` . Any remainder is dropped so pages are always whole rows. Banners taller than one row cannot straddle a page’s last row; they move forward to the next open block. When two banners target the same cell, the second is bumped to the next open cell (row-major scan). Banners that cannot be anchored to the grid (missing device layout, no saved `position` , or no fit within the scan buffer) are still returned, but without a `placement` key. `totalPages` accounts for banner cells across the collection, not just product count. Example:"}],"context":[{"type":"object","properties":{"geo":[{"type":"object","properties":{"country":[{"type":"string","description":"Country code or name (e.g., “US”, “Canada”)."}],"province":[{"type":"string","description":"State or province name (e.g., “California”, “Ontario”)."}],"city":[{"type":"string","description":"City name (e.g., “Los Angeles”, “Toronto”)."}]},"description":"Geographic location information for regional personalization and merchandising. Layers determines it from the IP address for client-side requests. For server-side API calls (headless integrations), provide `geo` explicitly."}],"productsInCart":[{"type":"array","items":[{"type":"object","properties":{"title":[{"type":"string","description":"Product title. Each entry needs at least a `productId` , `variantId` , or non-empty `title` . Layers drops entries with none of these."}],"price":[{"type":"number","description":"Unit price in the request currency’s major units (e.g. `29.00` for $29), not cents. Accepts a JSON number or a numeric string such as `\"29.00\"` ."}],"type":[{"type":"string","description":"Product type or category."}],"productId":[{"type":"string","description":"Product identifier. Accepts a numeric ID (e.g., `\"8234567890123\"` ) or a Shopify GID (e.g., `\"gid://shopify/Product/8234567890123\"` )."}],"variantId":[{"type":"string","description":"Product variant identifier."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}],"quantity":[{"type":"integer","description":"Number of units of this line in the cart. Layers rounds fractional values down to a whole number. Missing values, non-numeric values, and values below `1` count as `1` . Layers uses it to calculate the cart subtotal for Free Shipping Picks ."}]}}],"description":"Products currently in the customer’s cart. Used to surface complementary products and influence relevance scoring."}],"freeShippingThreshold":[{"type":"number","description":"The cart subtotal at which the shopper qualifies for free shipping, in the request currency’s major units (e.g. `75.00` for $75), not cents. Layers ignores values that aren’t a number greater than `0` . Required for Free Shipping Picks blocks."}],"productsViewed":[{"type":"array","items":[{"type":"object","properties":{"id":[{"type":"string","description":"Product identifier. Accepts a numeric ID or a Shopify GID. Also accepted as `productId` ."}],"at":[{"type":"integer","description":"Timestamp of the view in Unix milliseconds. Views without `at` still count but skip recency weighting."}],"title":[{"type":"string","description":"Product title."}],"type":[{"type":"string","description":"Product type or category."}],"variantId":[{"type":"string","description":"Variant identifier, if the shopper viewed a specific variant."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}]}}],"description":"Products the shopper has viewed during the current session. Layers uses these as short-lived personalization signals, with recent views weighted more heavily. Only the 20 most recent views are used. The Storefront Pixel populates this automatically; send it manually only for headless integrations. See Recently viewed products ."}],"productsPurchased":[{"type":"array","items":[{"type":"object","properties":{"title":[{"type":"string","description":"Product title. Each entry needs at least a `productId` , `variantId` , or non-empty `title` . Layers drops entries with none of these."}],"price":[{"type":"number","description":"Unit price in the request currency’s major units (e.g. `29.00` for $29), not cents, at time of purchase. Accepts a JSON number or a numeric string such as `\"29.00\"` ."}],"type":[{"type":"string","description":"Product type or category."}],"productId":[{"type":"string","description":"Product identifier. Accepts a numeric ID (e.g., `\"8234567890123\"` ) or a Shopify GID (e.g., `\"gid://shopify/Product/8234567890123\"` )."}],"variantId":[{"type":"string","description":"Product variant identifier."}],"options":[{"type":"object","properties":{},"description":"Product variant options (e.g., `{\"Size\": \"11\", \"Color\": \"Red\"}` )."}]}}],"description":"Products the customer has previously purchased. Informs recommendations and prevents over-promotion of owned items."}],"priorSearches":[{"type":"array","items":[{"type":"object","properties":{"searchQuery":[{"type":"string","description":"The search query text.","required":true}],"hadClick":[{"type":"boolean","description":"Whether the customer clicked on any results from this search."}],"hasResults":[{"type":"boolean","description":"Whether the search returned any results."}],"fromPage":[{"type":"string","description":"The page the search was started from (e.g., the referring page URL or page type). Layers accepts this field but doesn’t currently use it for ranking or rules."}]}}],"description":"Recent search queries and their outcomes. Helps understand customer intent and refine relevance models."}],"marketing":[{"type":"object","properties":{"source":[{"type":"string","description":"Marketing source (e.g., “google”, “facebook”)."}],"medium":[{"type":"string","description":"Marketing medium (e.g., “cpc”, “email”, “social”)."}],"campaign":[{"type":"string","description":"Campaign name."}],"term":[{"type":"string","description":"Search term or keyword."}],"content":[{"type":"string","description":"Ad or link variant, such as the value of `utm_content` ."}],"clickIds":[{"type":"object","properties":{},"description":"Click identifiers from the landing URL, keyed by parameter name (e.g., `fbclid` , `gclid` ). Layers derives the originating network from them as `marketing.clickSource` and discards the raw tokens. See Context data structure ."}]},"description":"UTM parameters and marketing campaign information for attribution tracking."}],"experiments":[{"type":"object","properties":{},"description":"A/B test assignments for the shopper, keyed by experiment ID with the assigned group ID as the value (e.g., `{\"exp_123\": \"group_b\"}` ). Used by the Experiment Group contextual condition. The Layers app embed fills this from Intelligems automatically; values your storefront sends for the same experiment take precedence. Entries whose value isn’t a string are dropped."}],"customer":[{"type":"object","properties":{"signedIn":[{"type":"boolean","description":"Whether the customer is currently authenticated."}],"returning":[{"type":"boolean","description":"Whether this is a returning customer."}],"numberOfOrders":[{"type":"integer","description":"Total number of orders placed."}],"averageOrderValue":[{"type":"number","description":"Average order value in store currency."}],"daysBetweenOrders":[{"type":"integer","description":"Average days between orders."}],"daysSinceLastOrder":[{"type":"integer","description":"Days since the most recent order."}],"daysSinceOldestOrder":[{"type":"integer","description":"Days since the first order."}],"totalSpent":[{"type":"number","description":"Total amount spent in store currency."}],"tags":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Shopify customer tags on the shopper’s profile (e.g., `[\"vip\", \"wholesale\"]` ). Collected by the Storefront Pixel for signed-in customers; `null` for guests."}],"segments":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"Shopify customer segment IDs the shopper belongs to. Server-resolved: Layers populates this from the signed-in `identity.customerId` on every request and ignores any value you send. `null` for guests and customers with no segment memberships. Available as `context.customer.segments` in contextual conditions ."}]},"description":"Aggregated customer behavior and purchase patterns for personalization."}],"market":[{"type":"string","description":"Explicitly set the Shopify Market for this request. Must be provided inside `context` ; it is not a top-level request body parameter. Used for market-specific product availability filtering and contextual pricing. Accepts a two-letter country code (e.g., `\"US\"` , `\"CA\"` ), a numeric Shopify Market ID (e.g., `\"12345\"` ), or a Shopify Market GID (e.g., `\"gid://shopify/Market/12345\"` ). When not provided, the market is automatically resolved from `context.geo.country` (or the shopper’s detected country for client-side requests). If no matching market is found, the store’s primary market is used as the fallback. When you send a two-letter country code that belongs to the resolved market, Layers also prices for that country, ahead of the shopper’s detected location. See Market resolution . Behavior depends on the store’s market application mode (set under Settings > Search \u0026 Discovery > Search Behavior , in the Markets card): Restrict to market catalog — Products are filtered to only those available in the resolved market, and market-specific pricing is applied Adjust pricing only — The full catalog remains visible, but variant prices are swapped to market-specific values where available Ignore markets (default) — Market resolution is skipped entirely; base catalog and base pricing are used for all shoppers"}],"session":[{"type":"object","properties":{"returning":[{"type":"boolean","description":"Whether the current session belongs to a returning visitor. Layers derives this from the storefront’s session cookie when not provided."}]},"description":"Session-level signals about the current visit."}],"locale":[{"type":"string","description":"Storefront locale code (e.g., `\"en\"` , `\"fr\"` , `\"pt-br\"` ). Case-insensitive; Layers normalizes to lowercase."}],"currency":[{"type":"string","description":"ISO 4217 currency code (e.g., `\"USD\"` , `\"EUR\"` ). Case-insensitive; Layers normalizes to uppercase. When Layers can resolve a currency from the shopper’s market or pricing context, the server-resolved value takes precedence."}],"b2bCompany":[{"type":"string","description":"Shopify B2B company location identifier. When `identity.companyLocationId` is provided, Layers resolves the company location server-side and the server value takes precedence."}],"shoppingChannel":[{"type":"string","description":"The shopping channel the customer is browsing from. Used for channel-specific merchandising, sorting, and analytics segmentation. Automatically detected from request headers when not provided (e.g., mobile app requests via Tapcart, Fuego, or Mobiloud Canvas are detected as `\"app\"` ). Accepted values: `\"web\"` — Standard web browser (default) `\"app\"` — Mobile app (e.g., Tapcart, Fuego, Mobiloud Canvas)"}],"custom":[{"type":"object","properties":{},"description":"Custom contextual data specific to your implementation. Structure is flexible and can contain any key-value pairs relevant to your use case."}]},"description":"Contextual information about the customer’s session, behavior, and environment. Automatically collected by the Storefront Pixel; must be manually provided for headless integrations. See Contextual Information for implementation guidance."}],"responseOptions":[{"type":"object","properties":{"mediaPreloads":[{"type":"object","properties":{"enabled":[{"type":"boolean","description":"Set to `false` to skip the `Link` header for this request. Useful for server-rendered pages that do not benefit from preload hints, or when you want to reduce response header size. Cannot enable preloads if they are disabled at the store level."}],"srcsetSizes":[{"type":"array","items":[{"type":"integer"}],"description":"Custom responsive image widths (in pixels) to emit in `imagesrcset` . Each value must be an integer between `1` and `10000` . Overrides the store-level srcset configuration for this request only. When omitted, the store configuration or platform defaults are used."}],"sizes":[{"type":"string","description":"Media query string emitted as the `imagesizes` attribute in the preload `Link` header (for example `(max-width: 600px) 100vw, 50vw` ). Tells the browser which srcset width to pick per viewport. Overrides the store-level sizes value for this request only. When omitted or empty, the store configuration is used. Each comma-separated entry may carry a media condition, including the last entry. See the accepted format for details. The API rejects invalid values with a validation error."}]},"description":"Controls the `Link: rel=\\\"preload\\\"` directives generated for product images in this response. See Early hints for background."}]},"description":"Per-request overrides for response behavior. Currently controls image preload hints emitted in the `Link` response header. You can disable preloads or narrow the srcset to the breakpoints your storefront uses. You cannot enable preloads when the store has them disabled. Example:"}]}}],"examples":{"example":{"value":{"sort_order_code":"\u003cstring>","dynamicLinking":{"products":[{}],"offset":123},"defaultSelectedOptions":[{"optionCode":"\u003cstring>","value":"\u003cstring>"}],"attributes":["\u003cstring>"],"filter_group":{},"pagination":{"page":123,"limit":123},"facets":["\u003cstring>"],"retrieveFacetCount":true,"includeFacetRanges":true,"enrichFacetMetaobjects":true,"discountEntitlements":[{"entitled":{"all":true,"products":["\u003cstring>"],"variants":[{}],"collections":["\u003cstring>"],"conditions":{}},"discount":{"type":"\u003cstring>","value":123}}],"identity":{"deviceId":"\u003cstring>","sessionId":"\u003cstring>","customerId":"\u003cstring>","companyLocationId":"\u003cstring>"},"preview_id":"\u003cstring>","forceHideOutOfStock":true,"grid":{"columns":123,"device":"\u003cstring>"},"context":{"geo":{"country":"\u003cstring>","province":"\u003cstring>","city":"\u003cstring>"},"productsInCart":[{"title":"\u003cstring>","price":123,"type":"\u003cstring>","productId":"\u003cstring>","variantId":"\u003cstring>","options":{},"quantity":123}],"freeShippingThreshold":123,"productsViewed":[{"id":"\u003cstring>","at":123,"title":"\u003cstring>","type":"\u003cstring>","variantId":"\u003cstring>","options":{}}],"productsPurchased":[{"title":"\u003cstring>","price":123,"type":"\u003cstring>","productId":"\u003cstring>","variantId":"\u003cstring>","options":{}}],"priorSearches":[{"searchQuery":"\u003cstring>","hadClick":true,"hasResults":true,"fromPage":"\u003cstring>"}],"marketing":{"source":"\u003cstring>","medium":"\u003cstring>","campaign":"\u003cstring>","term":"\u003cstring>","content":"\u003cstring>","clickIds":{}},"experiments":{},"customer":{"signedIn":true,"returning":true,"numberOfOrders":123,"averageOrderValue":123,"daysBetweenOrders":123,"daysSinceLastOrder":123,"daysSinceOldestOrder":123,"totalSpent":123,"tags":[{}],"segments":[{}]},"market":"\u003cstring>","session":{"returning":true},"locale":"\u003cstring>","currency":"\u003cstring>","b2bCompany":"\u003cstring>","shoppingChannel":"\u003cstring>","custom":{}},"responseOptions":{"mediaPreloads":{"enabled":true,"srcsetSizes":[123],"sizes":"\u003cstring>"}}}}}}}},"response":{"200":{"application/json":{"schemaArray":[{"type":"object","properties":{"results":[{"type":"object","properties":{"id":[{"type":"number","description":"The unique identifier of the product."}],"title":[{"type":"string","description":"The title of the product."}],"body_html":[{"type":"string","description":"The HTML content describing the product."}],"vendor":[{"type":"string","description":"The vendor of the product."}],"product_type":[{"type":"string","description":"The type of the product."}],"created_at":[{"type":"number","description":"The timestamp when the product was created."}],"handle":[{"type":"string","description":"The handle of the product."}],"updated_at":[{"type":"number","description":"The timestamp when the product was updated."}],"published_at":[{"type":"number","description":"The timestamp when the product was published."}],"tags":[{"type":"object","properties":{},"description":"The tags associated with the product."}],"combined_listing_parent_product_id":[{"type":"number","description":"The parent product id if a child in a Combined Listing."}],"combined_listing_role":[{"type":"string","description":"The role of the product if part of a Combined Listing."}],"images":[{"type":"object","properties":{"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}],"variant_ids":[{"type":"array","items":[{"type":"object","properties":{}}],"description":"The variant IDs associated with the image."}]},"description":"The images of the product."}],"metafields":[{"type":"object","properties":{},"description":"The metafields of the product."}],"calculated":[{"type":"object","properties":{},"description":"The computed attributes of the product. Only includes attributes with non-null, non-empty values. Attributes that evaluate to null or an empty string are omitted."}],"category":[{"type":"object","properties":{"name":[{"type":"string","description":"The name of the category leaf."}],"full_name":[{"type":"string","description":"The full name of the category."}],"id":[{"type":"string","description":"The ID of the category."}],"is_leaf":[{"type":"boolean","description":"Is the category a leaf category."}],"is_root":[{"type":"boolean","description":"Is the category a root category."}]},"description":"The Shopify Product Taxonomy Category of the product."}],"first_or_matched_variant":[{"type":"object","properties":{"id":[{"type":"number","description":"The ID of the variant."}],"title":[{"type":"string","description":"The title of the variant."}],"available":[{"type":"boolean","description":"The availability of the variant."}],"sku":[{"type":"number","description":"The sku of the variant."}],"price":[{"type":"string","description":"The price of the variant."}],"compare_at_price":[{"type":"string","description":"The compare at price of the variant."}],"metafields":[{"type":"object","properties":{},"description":"The metafields of the variant."}],"selected_options":[{"type":"object","properties":{"name":[{"type":"string","description":"The name of the option."}],"value":[{"type":"string","description":"The value of the option."}],"option_value":[{"type":"object","properties":{},"description":"The linked metafield of the option."}]},"description":"The selected options of the variant."}],"position":[{"type":"number","description":"The position of the variant in the product’s variant list."}],"inventory_quantity":[{"type":"number","description":"Total inventory quantity across the locations in the store’s inventory location scope , which is all locations by default. Only included when the store has the Expose Variant Inventory setting enabled."}],"inventory_policy":[{"type":"string","description":"Inventory policy for the variant: `DENY` (stop selling when out of stock) or `CONTINUE` (allow overselling). Only included when the store has the Expose Variant Inventory setting enabled."}],"inventory_levels":[{"type":"object","properties":{},"description":"Object mapping location IDs to available inventory quantities (e.g., `{\"1001\": 5, \"1002\": 10}` ). Returns empty object `{}` when no inventory data exists. Only included when the store has the Expose Variant Inventory setting enabled."}],"featured_media":[{"type":"object","properties":{"mediaContentType":[{"type":"string","description":"The type of media."}],"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}]},"description":"The featured media of the product."}]},"description":"The first available variant (depending on OOS settings) or the variant matched with a filter or search query."}],"featured_media":[{"type":"object","properties":{"mediaContentType":[{"type":"string","description":"The type of media."}],"alt":[{"type":"string","description":"The alt text of the image."}],"src":[{"type":"string","description":"The src of the image."}],"width":[{"type":"number","description":"The width of the image."}],"height":[{"type":"number","description":"The height of the image."}]},"description":"The featured media of the product."}],"available":[{"type":"boolean","description":"The availability of the product."}],"price_range":[{"type":"object","properties":{"from":[{"type":"number","description":"The starting price of the product."}],"to":[{"type":"number","description":"The ending price of the product."}]},"description":"The price range of the product."}]}}],"totalResults":[{"type":"number","description":"The total number of results. When variant breakouts are enabled, this reflects the count of tiles (both product and variant tiles) rather than just products. The count is scoped to the visibility of the active shopping channel. When `context.shoppingChannel` is `\"web\"` (the default), only products published to the online store are counted. When it is `\"app\"` and an app sales channel is configured, only products published to that channel are counted. As a result, `totalResults` always matches the number of products a shopper can actually see for that channel."}],"page":[{"type":"number","description":"The current page number."}],"totalPages":[{"type":"number","description":"The total number of pages. Calculated based on tile count when variant breakouts are enabled."}],"facets":[{"type":"object","properties":{},"description":"If `retrieveFacetCount` is `true` then an object with keys and values of the specified attributes. When variant breakouts are enabled, facet counts reflect tile counts rather than product counts. Empty values and literal `\"null\"` strings are automatically excluded from facet results. Counts are scoped to the visibility of the active shopping channel, so they match the number of products (or tiles) a shopper can actually see. Products that are not published to the requester’s channel, are B2B-only, or are hidden by a combined-listing role are excluded from every bucket. When `context.shoppingChannel` is `\"app\"` but the store does not have an app sales channel configured, counts fall back to the web channel. When `filter_group` is present, counts follow the standard “OR within a facet, AND across facets” pattern. Facets whose condition uses a multi-select operator ( `IN` , `NOT IN` ) are counted against every other active filter except the facet’s own, so other values in the same facet stay selectable. Facets whose condition uses a single-select or predicate operator ( `EQ` , `NEQ` , `GT` , `LT` , `BETWEEN` , `NULL` , and so on) are counted against the fully filtered result set."}],"facetRanges":[{"type":"object","properties":{},"description":"If `includeFacetRanges` is `true` then an object with keys of the facet attribute code and value is an object with min/max."}],"facetDisplay":[{"type":"object","properties":{},"description":"Returned when at least one requested facet has display data to hydrate. Keys are facet attribute codes; values map each facet value to a display object. Metaobject-reference facets require `enrichFacetMetaobjects: true` and map each handle to the metaobject’s `display_name` and `fields` . Entries also carry a `swatch` object when the metaobject defines a color or image field. Handles with no matching cached metaobject are omitted here and remain as plain values in `facets` . See Metaobjects and reference metafields for the normalized field shape and the Facets API response for the `swatch` shape. For `variants.pickup_locations` , each entry maps a Shopify location id to the location’s `id` , `name` , `address` , `instructions` , `pickupTime` , and (when the filter is a `geoRadius` ) `distance` and `distanceUnit` . Pickup entries are returned whenever pickup facets are requested, regardless of `enrichFacetMetaobjects` . See Local pickup filtering ."}],"banners":[{"type":"object","properties":{"id":[{"type":"string","description":"Banner ULID."}],"rule_id":[{"type":"object","properties":{},"description":"ID of the merchandising rule that produced this banner. Send it on `banner_impression` and `banner_click` tracking events so engagement attributes back to the rule."}],"name":[{"type":"string","description":"Internal name (not shown to shoppers)."}],"mode":[{"type":"string","description":"`\"inject\"` or `\"overtake\"` . `inject` inserts the banner at `position` and shifts trailing products; `overtake` replaces the product at `position` ."}],"link":[{"type":"object","properties":{},"description":"Click-through URL. Only honored on `inject` banners, and only meaningful when `type` is `\"link\"` (the built-in type). Custom banner types put their click-through URL inside `data` instead."}],"type":[{"type":"string","description":"Banner type slug. `\"link\"` for the built-in type, otherwise the slug of a custom banner type defined for your store. Storefronts switch renderers on this value."}],"data":[{"type":"object","properties":{},"description":"Saved values for the banner type’s field schema. Keys match the schema’s `key` values. Only keys defined in the current schema are returned. Retyped or removed fields are dropped. `product_reference` , `collection_reference` , and `variant_reference` fields (and their `list.` variants) are resolved to `{ \"id\", \"handle\" }` objects; unpublished references are omitted."}],"sort_index":[{"type":"number","description":"Application order when a rule has multiple banners. Lower wins on conflicting cells."}],"web_media":[{"type":"object","properties":{},"description":"Desktop media. `{ id, src, alt, width, height, source, mediaContentType }` . `source` is `\"store_file\"` today and `mediaContentType` is `\"IMAGE\"` today."}],"mobile_media":[{"type":"object","properties":{},"description":"Mobile media. Same shape as `web_media` ."}],"web_layout":[{"type":"object","properties":{},"description":"Desktop layout. `{ placement: \"hero\" | \"inline\", width, height, position }` . For `hero` , render a horizontal banner across the full product-grid width above the first product row; ignore the cell spans and `position` . For `inline` , `position` is a row-major 0-indexed grid cell, and `width` and `height` are column and row spans, not image dimensions in pixels. Inline width is bounded by the grid columns, not limited to one or two; inline banners can span up to four rows, and the editor resizes both width and height."}],"mobile_layout":[{"type":"object","properties":{},"description":"Mobile layout. Same shape as `web_layout` ."}],"placement":[{"type":"object","properties":{"page":[{"type":"number","description":"The 1-indexed page this placement is anchored to. Always matches the requested `pagination.page` ."}],"row":[{"type":"number","description":"0-indexed row within the current page."}],"colStart":[{"type":"number","description":"0-indexed column where the banner starts. Combined with `colSpan` , gives the CSS `grid-column: colStart + 1 / span colSpan` ."}],"colSpan":[{"type":"number","description":"Number of columns the banner spans. Clamped to `[1, grid.columns]` ."}],"rowSpan":[{"type":"number","description":"Number of rows the banner spans. Clamped to `[1, 4]` and, when `pagination.limit >= grid.columns` , to the number of rows per page."}]},"description":"Only present when the request includes a `grid` block and the banner is an inline banner anchored to a cell on the current page. Hero banners never carry `placement` and are always returned. Inline banners that could not be anchored (missing device layout, no saved `position` , or no fit within the scan buffer) are still returned without this key so they do not vanish from the storefront."}]},"description":"Merchandising banners emitted by any merchandising rules that matched this request. Flat across all applied rules and pre-sorted by `sort_index` . Your storefront is responsible for rendering banners into the grid. See Rendering banners in Liquid and Rendering banners with the SDK . Each banner carries the `rule_id` of the rule that produced it. `_meta.appliedRules` still lists every applied rule ID."}],"grid":[{"type":"object","properties":{"columns":[{"type":"number","description":"Column count from the request."}],"device":[{"type":"string","description":"`\"desktop\"` or `\"mobile\"` , from the request."}],"cellsPerPage":[{"type":"number","description":"Total grid cells on this page, equal to `floor(pagination.limit / columns) * columns` ."}],"rows":[{"type":"number","description":"Number of full rows on this page."}],"bannerCells":[{"type":"number","description":"How many of `cellsPerPage` are occupied by inline banner placements. The remaining cells hold the products in `results` ."}]},"description":"Only present when the request includes a `grid` block. Echoes the resolved grid geometry so the storefront can render banners into the exact cells the planner used to page products."}],"attributionToken":[{"type":"string","description":"A unique request identifier (ULID) for this API call. Use this token to correlate browse requests with analytics events via the Beacon API , and to match requests to entries in the Search Inspector ."}],"_meta":[{"type":"object","properties":{"appliedRules":[{"type":"object","properties":{},"description":"The merchandising rule IDs applied to the request."}],"appliedSearchRules":[{"type":"object","properties":{},"description":"The IDs of request transforms whose targeting conditions matched this request. Returns an empty array when no request transforms matched. Use this to verify which request transforms are evaluating against a given browse request."}],"appliedSearchRuleActions":[{"type":"object","properties":{"ruleId":[{"type":"string","description":"The ID of the request transform that owns the action."}],"type":[{"type":"string","description":"The action type, for example `add_filter_group` or `override_sort_order` ."}],"changed":[{"type":"boolean","description":"`true` when the action modified the request. `false` when the action was a no-op, for example an `override_sort_order` action matching the already-active sort order."}],"error":[{"type":"string","description":"Only present when the action could not run. `\"unsupported_action_type\"` indicates a stored action type the engine cannot execute. The action is skipped and the rest of the request proceeds normally."}]},"description":"One entry per action executed by a matched request transform, in execution order. Use `changed` to tell whether an action actually modified the request. A matched rule can appear in `appliedSearchRules` while all of its actions report `changed: false` . See Debugging with `_meta` ."}],"variantBreakouts":[{"type":"object","properties":{"optionCode":[{"type":"string","description":"The product option code that determines which variants are broken out (e.g., “Stone”, “Color”). Each product is broken out by the first matching option code from the array."}]},"description":"Array of variant breakout configurations applied to this collection. Only present when one or more variant breakouts are active for the collection. Multiple breakouts with different option codes can work simultaneously in the same collection. Each object has the structure `{optionCode: \"Stone\"}` ."}],"mediaPreloads":[{"type":"object","properties":{"srcsetSizes":[{"type":"array","items":[{"type":"integer"}],"description":"The responsive image widths (in pixels) used in the `imagesrcset` of the `Link` header. Reflects the request override when provided, otherwise the store-level configuration or platform defaults."}]},"description":"Echoes the image preload configuration used to build the `Link` response header for this request. Only present when image preloads are emitted. See Early hints ."}],"discountEntitlements":[{"type":"object","properties":{"entitled":[{"type":"object","properties":{},"description":"The entitlement criteria that qualified products for the discount. Contains any of `all` , `products` , `variants` , `collections` , or `conditions` . See the entitlement criteria reference."}],"discount":[{"type":"object","properties":{"type":[{"type":"string","description":"`\"PERCENTAGE\"` or `\"FIXED_AMOUNT\"` ."}],"value":[{"type":"number","description":"The discount value. Percent off for `PERCENTAGE` , shop base-currency amount for `FIXED_AMOUNT` . An echoed entitlement doesn’t guarantee a price reduction on every variant; see the shared `discountEntitlements` request parameter for market-currency limits."}]},"description":"The discount Layers applied."}]},"description":"Echoes the discount entitlements applied to this request. Only present when the request included `discountEntitlements` (either directly or via a matched request transform ). Use this to render discount badges or labels on the storefront without re-deriving which entitlements matched. Each entry mirrors the entitlement shape sent in the request."}]}}],"_workflow":[{"type":"object","properties":{"type":[{"type":"string","description":"The processing step type. Possible values include: `\"rule-applied\"` — A merchandising rule was applied. The `payload` contains the rule identifier. `\"ranking-rules\"` — Ranking rules influenced result ordering. See the Text Search documentation for a full list of possible step types."}],"payload":[{"type":"object","properties":{},"description":"The data associated with this processing step. The structure varies by `type` ."}]},"description":"An ordered trace of processing steps the engine performed to produce results for this request. Each entry represents a stage in the browse pipeline, recorded in the order it was executed. Use this field to understand which merchandising rules, sort orders, and boosts were applied. This field is useful for debugging browse behavior in development and is also surfaced in the Search Inspector panel."}],"__typename":[{"type":"string","description":"Identifies the type of tile in the results: `\"Product\"` - A standard product tile `\"Variant\"` - An individual variant tile from a product with a configured breakout option"}],"product_id":[{"type":"number","description":"The parent product ID. Use this to link back to the full product or group variants from the same product."}],"variant_id":[{"type":"number","description":"The specific variant ID. For variant tiles, this matches the `id` field."}]}}],"examples":{"example":{"value":{"results":{"id":123,"title":"\u003cstring>","body_html":"\u003cstring>","vendor":"\u003cstring>","product_type":"\u003cstring>","created_at":123,"handle":"\u003cstring>","updated_at":123,"published_at":123,"tags":{},"combined_listing_parent_product_id":123,"combined_listing_role":"\u003cstring>","images":{"alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123,"variant_ids":[{}]},"metafields":{},"calculated":{},"category":{"name":"\u003cstring>","full_name":"\u003cstring>","id":"\u003cstring>","is_leaf":true,"is_root":true},"first_or_matched_variant":{"id":123,"title":"\u003cstring>","available":true,"sku":123,"price":"\u003cstring>","compare_at_price":"\u003cstring>","metafields":{},"selected_options":{"name":"\u003cstring>","value":"\u003cstring>","option_value":{}},"position":123,"inventory_quantity":123,"inventory_policy":"\u003cstring>","inventory_levels":{},"featured_media":{"mediaContentType":"\u003cstring>","alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123}},"featured_media":{"mediaContentType":"\u003cstring>","alt":"\u003cstring>","src":"\u003cstring>","width":123,"height":123},"available":true,"price_range":{"from":123,"to":123}},"totalResults":123,"page":123,"totalPages":123,"facets":{},"facetRanges":{},"facetDisplay":{},"banners":{"id":"\u003cstring>","rule_id":{},"name":"\u003cstring>","mode":"\u003cstring>","link":{},"type":"\u003cstring>","data":{},"sort_index":123,"web_media":{},"mobile_media":{},"web_layout":{},"mobile_layout":{},"placement":{"page":123,"row":123,"colStart":123,"colSpan":123,"rowSpan":123}},"grid":{"columns":123,"device":"\u003cstring>","cellsPerPage":123,"rows":123,"bannerCells":123},"attributionToken":"\u003cstring>","_meta":{"appliedRules":{},"appliedSearchRules":{},"appliedSearchRuleActions":{"ruleId":"\u003cstring>","type":"\u003cstring>","changed":true,"error":"\u003cstring>"},"variantBreakouts":{"optionCode":"\u003cstring>"},"mediaPreloads":{"srcsetSizes":[123]},"discountEntitlements":{"entitled":{},"discount":{"type":"\u003cstring>","value":123}}},"_workflow":{"type":"\u003cstring>","payload":{}},"__typename":"\u003cstring>","product_id":123,"variant_id":123}}}}}},"deprecated":false}},"jsLinks":["/_mintlify/custom/protoninc/d2da920448b9ce07/track.js"],"subdomain":"protoninc","siteName":"Layers","title":"Browse API: Browse Collection Page - Layers","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T15:39:49.797Z","originalFileLocation":"api-reference/browse.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Layers\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Browse API: Browse Collection Page - Layers\">\u003cmeta data-mint-head property=\"og:description\" content=\"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Layers\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.uselayers.com/api-reference/browse\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://protoninc.mintlify.app/_mintlify/api/og/v2?division=Browse\u0026amp;title=Browse+API%3A+Browse+Collection+Page\u0026amp;description=Browse+API+endpoint+to+fetch%2C+filter%2C+sort%2C+and+paginate+merchandised+collection+pages+in+your+catalog+with+facets%2C+pins%2C+and+personalization+applied.\u0026amp;theme=a10a6113a77cea89cec87611\u0026amp;signature=8423d4e53ea8b98659ccefee35312f108a98221bbc427b7ef947f6304d4ddfc6\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Browse API: Browse Collection Page - Layers\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://protoninc.mintlify.app/_mintlify/api/og/v2?division=Browse\u0026amp;title=Browse+API%3A+Browse+Collection+Page\u0026amp;description=Browse+API+endpoint+to+fetch%2C+filter%2C+sort%2C+and+paginate+merchandised+collection+pages+in+your+catalog+with+facets%2C+pins%2C+and+personalization+applied.\u0026amp;theme=a10a6113a77cea89cec87611\u0026amp;signature=8423d4e53ea8b98659ccefee35312f108a98221bbc427b7ef947f6304d4ddfc6\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/protoninc/-Zid9_7urMZu-aPC/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Layers\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#607FFD\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.uselayers.com/api-reference/browse\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/browse.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.uselayers.com/#organization\",\"name\":\"Layers\",\"url\":\"https://docs.uselayers.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/protoninc/PNs-gxGUVcdBDEEC/logo.svg?fit=max\u0026auto=format\u0026n=PNs-gxGUVcdBDEEC\u0026q=85\u0026s=989e3194cb32f07e7018b8b7186b9007\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.uselayers.com#website\",\"name\":\"Layers\",\"url\":\"https://docs.uselayers.com\",\"publisher\":{\"@id\":\"https://docs.uselayers.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.uselayers.com/api-reference/browse#webpage\",\"url\":\"https://docs.uselayers.com/api-reference/browse\",\"name\":\"Browse API: Browse Collection Page\",\"description\":\"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\",\"dateModified\":\"2026-10-26T15:39:49.797Z\",\"isPartOf\":{\"@id\":\"https://docs.uselayers.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.uselayers.com/api-reference/browse#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.uselayers.com/api-reference/browse#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Layers\",\"item\":\"https://docs.uselayers.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Browse API: Browse Collection Page\",\"item\":\"https://docs.uselayers.com/api-reference/browse\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.uselayers.com/api-reference/browse#apireference\",\"headline\":\"Browse API: Browse Collection Page\",\"name\":\"Browse API: Browse Collection Page\",\"description\":\"Browse API endpoint to fetch, filter, sort, and paginate merchandised collection pages in your catalog with facets, pins, and personalization applied.\",\"url\":\"https://docs.uselayers.com/api-reference/browse\",\"mainEntityOfPage\":{\"@id\":\"https://docs.uselayers.com/api-reference/browse#webpage\"},\"dateModified\":\"2026-10-26T15:39:49.797Z\",\"publisher\":{\"@id\":\"https://docs.uselayers.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.uselayers.com#website\"}}]}\u003c/script>","siteName":"Layers","nav":{"global":null,"anchors":[{"anchor":"Documentation","pages":[{"title":"Documentation","href":"/introduction"}]},{"anchor":"Help Center","icon":"map","pages":[{"title":"Help Center","href":"/help/onboarding/install"}]},{"anchor":"Developers","icon":"code","pages":[{"title":"Developers","href":"/developers/overview"}]},{"anchor":"API Reference","icon":"rectangle-terminal","tabs":[{"tab":"Storefront API","groups":[{"group":"Browse","pages":[{"api":"POST /browse/{collection_handle}","title":"Browse API: Browse Collection Page","sidebarTitle":"Collection Page","href":"/api-reference/browse"}]},{"group":"Product Search","pages":[{"group":"Text Search","pages":[{"api":"POST /search/{searchQuery}/prepare","title":"Text Search: Prepare Search","sidebarTitle":"Prepare Search","description":"Prepare Search API endpoint that starts a search asynchronously so personalization and ranking can run in the background during a redirect or page load.","href":"/api-reference/search-prepare"},{"api":"POST /search/{searchQuery}/execute","title":"Text Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search"},{"api":"POST /search/feedback","title":"Text Search: Submit Feedback","sidebarTitle":"Submit Feedback","href":"/api-reference/search-feedback"}]},{"group":"Image Search","pages":[{"api":"POST /images/upload","title":"Image Search: Upload Image","sidebarTitle":"Upload Image","href":"/api-reference/upload-image"},{"api":"POST /search/image","title":"Image Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search-image"}]},{"group":"Autocomplete","pages":[{"api":"GET /search/complete?query={query}","title":"Autocomplete: Get Suggestions","sidebarTitle":"Get Suggestions","href":"/api-reference/predict"}]},{"api":"POST /search/product/{searchProductId}","title":"Search API: Similar Products","sidebarTitle":"Similar Products","href":"/api-reference/similar-products"}]},{"group":"Content Search","pages":[{"api":"POST /search/content/{searchQuery}/execute","title":"Content Search: Execute Search","sidebarTitle":"Execute Search","href":"/api-reference/search-content"}]},{"group":"Blocks","pages":[{"api":"POST /blocks/{blockId}/products","title":"Blocks API: Get Block Products","sidebarTitle":"Block Products","href":"/api-reference/blocks"}]},{"group":"Facets","pages":[{"api":"POST /{collection_handle}/facets","title":"Facets API: Get Collection Facets","sidebarTitle":"Collection Facets","href":"/api-reference/facets"}]},{"group":"Utilities","pages":[{"api":"GET /sort-orders","title":"Sort Orders API: Get Available Sort Orders","sidebarTitle":"Sort Orders","href":"/api-reference/sort-orders"}]}]},{"tab":"Tracking API","pages":[{"title":"Tracking API","href":"/tracking-api/overview"}]}]},{"anchor":"Integrations","icon":"plug","href":"https://www.uselayers.com/integrations?utm_source=docs\u0026utm_medium=referral\u0026utm_campaign=docs-to-site"}]},"title":"Browse API: Browse Collection Page - Layers","buildId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","deploymentId":"dpl_2oYXwqkEXirXBPk8wV1FtM5USFWi","dynamics":["c2aa737661","2b790eda92","b0f84f53ff"],"chunks":["OpenApiReferenceProvider-WRhTSUDL.js","utils-ChMov4Kr.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-_REmC2bI.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Bp6nVRCu.js","snippetPresets-DZadmXoU.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-CY2WdoTl.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-DwYG-Q4l.js","shallow-BXQIGwv4.js","getApiPlaygroundDisplay-CK5nK5B9.js","CodeSnippet-TH4a2aGW.js","CodeSnippets-DwsQiOFS.js","Page-R3M_BF4L.js","getPastedJson-DD7kUzi_.js","icon-holE3QoJ.js","MethodPill-DUW0T8us.js","DuplicateIcon-CI_p4be-.js","createIcon-BdbRvavb.js","DynamicMarkdown-DN96a4Ur.js","SectionHeading-SCu36A9d.js","axios-vUo_bRtp.js"]}