{"openapi":"3.1.0","info":{"title":"Product Catalog Storefront API","version":"2026-10-27","description":"The public storefront routes of the Product Catalog extension. Every route but this document takes a publishable key in `X-Catalog-Key` (a GET may send it as `key` in the query instead). Errors answer `StorefrontErrorEnvelope`; `x-storefront-errors` lists every code with its statuses."},"servers":[{"url":"https://catalog.usethrottle.dev"}],"tags":[{"name":"Meta","description":"The store configuration and this document."},{"name":"Browse","description":"Product lists, filters and products."},{"name":"Taxonomy","description":"Categories, tags and collections."},{"name":"Search","description":"Search-as-you-type suggestions."},{"name":"Carts","description":"Cart checks and hosted carts in Throttle."},{"name":"Reviews","description":"Product reviews."},{"name":"Legacy","description":"Routes kept for stores built before the storefront API."}],"paths":{"/v1/storefront/openapi.json":{"get":{"operationId":"getOpenApi","summary":"This OpenAPI document.","tags":["Meta"],"security":[],"parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OpenApiDocument"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}}}}},"/v1/storefront/config":{"get":{"operationId":"getConfig","summary":"The store: name, currencies, locales, sorts, reviews and the catalog generation.","tags":["Meta"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontConfigAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"config"}},"/v1/storefront/products":{"get":{"operationId":"listProducts","summary":"A page of products with filters, facets and sorting.","tags":["Browse"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"q","in":"query","description":"Full-text search.","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","description":"A category handle; products of its children are included.","required":false,"schema":{"type":"string"}},{"name":"collection","in":"query","description":"A collection handle.","required":false,"schema":{"type":"string"}},{"name":"tag","in":"query","description":"A tag; repeat the parameter for several.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"featured","in":"query","description":"Only featured (`true`) or only other (`false`) products.","required":false,"schema":{"type":"boolean"}},{"name":"handles","in":"query","description":"Product handles; repeat the parameter (commas are literal).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"skus","in":"query","description":"SKUs; repeat the parameter (commas are literal).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"year","in":"query","description":"Vehicle year; the vehicle filter applies when `make` and `model` are set.","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"make","in":"query","description":"Vehicle make (with `model`).","required":false,"schema":{"type":"string"}},{"name":"model","in":"query","description":"Vehicle model (with `make`).","required":false,"schema":{"type":"string"}},{"name":"submodel","in":"query","description":"Vehicle submodel (with `make` and `model`).","required":false,"schema":{"type":"string"}},{"name":"engine","in":"query","description":"Vehicle engine (with `make` and `model`).","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","description":"The order; absent, the store default. `best_rated` only while ratings show on lists.","required":false,"schema":{"type":"string","enum":["relevance","featured","manual","title_asc","title_desc","price_asc","price_desc","newest","updated","best_rated"]}},{"name":"limit","in":"query","description":"Products per page.","required":false,"schema":{"default":24,"type":"integer","minimum":1,"maximum":100}},{"name":"page","in":"query","description":"A page number (not with `cursor`).","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"cursor","in":"query","description":"`page.nextCursor` of the previous page (not with `page`).","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"facets","in":"query","description":"`true` for every filter, or filter keys (comma-separated or repeated).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"fields","in":"query","description":"`lite` (default), `full`, or a comma list of top-level product keys.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"include","in":"query","description":"Opt-in parts, comma-separated or repeated: fitment, oemNumbers, supersessions, jsonLd, descriptionHtml.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"currency","in":"query","description":"An ISO 4217 currency the store has enabled; prices are answered in it.","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$"}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"name":"filter.{key}","in":"query","description":"A selected value of the filter `key` (`filter.color=Red`); repeat for several values. A range filter takes one `min..max` value. The parameter name is a pattern: `filter.` followed by a filter key.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"x-name-pattern":"^filter\\..+$"},{"$ref":"#/components/parameters/CustomerToken"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontListAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"products.list"}},"/v1/storefront/filters/{key}/values":{"get":{"operationId":"listFilterValues","summary":"Every value of one filter for the current selection (the list's parameters).","tags":["Browse"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"key","in":"path","description":"The filter key.","required":true,"schema":{"type":"string","minLength":1}},{"name":"q","in":"query","description":"Full-text search.","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","description":"A category handle; products of its children are included.","required":false,"schema":{"type":"string"}},{"name":"collection","in":"query","description":"A collection handle.","required":false,"schema":{"type":"string"}},{"name":"tag","in":"query","description":"A tag; repeat the parameter for several.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"featured","in":"query","description":"Only featured (`true`) or only other (`false`) products.","required":false,"schema":{"type":"boolean"}},{"name":"handles","in":"query","description":"Product handles; repeat the parameter (commas are literal).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"skus","in":"query","description":"SKUs; repeat the parameter (commas are literal).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"year","in":"query","description":"Vehicle year; the vehicle filter applies when `make` and `model` are set.","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"make","in":"query","description":"Vehicle make (with `model`).","required":false,"schema":{"type":"string"}},{"name":"model","in":"query","description":"Vehicle model (with `make`).","required":false,"schema":{"type":"string"}},{"name":"submodel","in":"query","description":"Vehicle submodel (with `make` and `model`).","required":false,"schema":{"type":"string"}},{"name":"engine","in":"query","description":"Vehicle engine (with `make` and `model`).","required":false,"schema":{"type":"string"}},{"name":"sort","in":"query","description":"The order; absent, the store default. `best_rated` only while ratings show on lists.","required":false,"schema":{"type":"string","enum":["relevance","featured","manual","title_asc","title_desc","price_asc","price_desc","newest","updated","best_rated"]}},{"name":"limit","in":"query","description":"Products per page.","required":false,"schema":{"default":24,"type":"integer","minimum":1,"maximum":100}},{"name":"page","in":"query","description":"A page number (not with `cursor`).","required":false,"schema":{"type":"integer","minimum":1,"maximum":9007199254740991}},{"name":"cursor","in":"query","description":"`page.nextCursor` of the previous page (not with `page`).","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"facets","in":"query","description":"`true` for every filter, or filter keys (comma-separated or repeated).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"fields","in":"query","description":"`lite` (default), `full`, or a comma list of top-level product keys.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"include","in":"query","description":"Opt-in parts, comma-separated or repeated: fitment, oemNumbers, supersessions, jsonLd, descriptionHtml.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"currency","in":"query","description":"An ISO 4217 currency the store has enabled; prices are answered in it.","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$"}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"name":"filter.{key}","in":"query","description":"A selected value of the filter `key` (`filter.color=Red`); repeat for several values. A range filter takes one `min..max` value. The parameter name is a pattern: `filter.` followed by a filter key.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}},"x-name-pattern":"^filter\\..+$"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontFilterValuesAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"filters.values"}},"/v1/storefront/products/{handle}":{"get":{"operationId":"getProduct","summary":"One product. With `fields`, `include`, `currency` or `locale` the full product; without, the legacy answer. An old handle answers `{ redirectTo }`.","tags":["Browse"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The product handle.","required":true,"schema":{"type":"string","minLength":1}},{"name":"fields","in":"query","description":"Any value switches to the full product (the page is always full).","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"include","in":"query","description":"Opt-in parts, comma-separated or repeated: fitment, oemNumbers, supersessions, jsonLd, descriptionHtml.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"currency","in":"query","description":"An ISO 4217 currency the store has enabled; prices are answered in it.","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$"}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/CustomerToken"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontProductRouteAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"products.get"}},"/v1/storefront/products/{handle}/related":{"get":{"operationId":"listRelatedProducts","summary":"Products related to one product (the store's picks, then the related mode).","tags":["Browse"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The product handle.","required":true,"schema":{"type":"string","minLength":1}},{"name":"limit","in":"query","description":"Products to answer.","required":false,"schema":{"default":8,"type":"integer","minimum":1,"maximum":24}},{"name":"fields","in":"query","description":"`lite` (default), `full`, or a comma list of top-level product keys.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"currency","in":"query","description":"An ISO 4217 currency the store has enabled; prices are answered in it.","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$"}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/CustomerToken"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontRelatedAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"products.related"}},"/v1/storefront/categories":{"get":{"operationId":"getCategoryTree","summary":"The category tree.","tags":["Taxonomy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"depth","in":"query","description":"Levels of the tree to answer.","required":false,"schema":{"default":10,"type":"integer","minimum":1,"maximum":10}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontCategoriesAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"categories.tree"}},"/v1/storefront/categories/{handle}":{"get":{"operationId":"getCategory","summary":"One category with its breadcrumb and children.","tags":["Taxonomy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The category handle.","required":true,"schema":{"type":"string","minLength":1}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontCategoryAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"categories.get"}},"/v1/storefront/tags":{"get":{"operationId":"listTags","summary":"Product tags with counts.","tags":["Taxonomy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"q","in":"query","description":"Tags that start with this text.","required":false,"schema":{"type":"string","maxLength":100}},{"name":"limit","in":"query","description":"Tags to answer.","required":false,"schema":{"type":"integer","minimum":1,"maximum":200}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontTagsAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"tags.list"}},"/v1/storefront/collections":{"get":{"operationId":"listCollections","summary":"A page of published collections.","tags":["Taxonomy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"limit","in":"query","description":"Collections per page.","required":false,"schema":{"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","description":"`nextCursor` of the previous page.","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontCollectionsAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"collections.list"}},"/v1/storefront/collections/{handle}":{"get":{"operationId":"getCollection","summary":"One collection. An old handle answers `{ redirectTo }`.","tags":["Taxonomy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The collection handle.","required":true,"schema":{"type":"string","minLength":1}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontCollectionAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"collections.get"}},"/v1/storefront/suggest":{"get":{"operationId":"suggest","summary":"Search-as-you-type: products, categories, collections and queries.","tags":["Search"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"q","in":"query","description":"What the shopper typed.","required":true,"schema":{"type":"string","minLength":2,"maxLength":100}},{"name":"limit","in":"query","description":"Products to answer.","required":false,"schema":{"type":"integer","minimum":1,"maximum":8}},{"name":"currency","in":"query","description":"An ISO 4217 currency the store has enabled; prices are answered in it.","required":false,"schema":{"type":"string","pattern":"^[A-Za-z]{3}$"}},{"name":"locale","in":"query","description":"The answer language (BCP 47 style, e.g. `fr` or `fr-CA`); the answer names the locale it used.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/CustomerToken"},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontSuggestAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"suggest"}},"/v1/storefront/carts/check":{"post":{"operationId":"checkCart","summary":"Prices and checks cart lines without creating a cart.","tags":["Carts"],"security":[{"catalogKey":[]}],"parameters":[{"$ref":"#/components/parameters/CustomerToken"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartCheckRequest"}}}},"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartCheckAnswer"}}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"413":{"description":"Request body too large.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"carts.check"}},"/v1/storefront/carts":{"post":{"operationId":"createCart","summary":"Creates a Throttle cart from catalog lines and opens its hosted cart session.","tags":["Carts"],"security":[{"catalogKey":[]}],"parameters":[{"$ref":"#/components/parameters/CustomerToken"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartCreateRequest"}}}},"responses":{"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CartCreateAnswer"}}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"409":{"description":"Conflict with the store setup or an earlier request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"413":{"description":"Request body too large.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"422":{"description":"The request is well formed but cannot be done (`items` names refused lines).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"502":{"description":"Throttle refused the request (`throttleCode`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"carts.create"}},"/v1/storefront/products/{handle}/reviews":{"get":{"operationId":"listReviews","summary":"A page of a product's published reviews with its rating summary.","tags":["Reviews"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The product handle.","required":true,"schema":{"type":"string","minLength":1}},{"name":"sort","in":"query","description":"The order.","required":false,"schema":{"default":"newest","type":"string","enum":["newest","highest","lowest"]}},{"name":"rating","in":"query","description":"Only reviews with this rating.","required":false,"schema":{"type":"integer","minimum":1,"maximum":5}},{"name":"limit","in":"query","description":"Reviews per page.","required":false,"schema":{"default":10,"type":"integer","minimum":1,"maximum":50}},{"name":"cursor","in":"query","description":"`nextCursor` of the previous page.","required":false,"schema":{"type":"string","maxLength":1024}},{"name":"locale","in":"query","description":"Checked and ignored: reviews are answered as written.","required":false,"schema":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontReviewsAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"reviews.list"},"post":{"operationId":"submitReview","summary":"Submits a review as the signed-in shopper.","tags":["Reviews"],"security":[{"catalogKey":[]}],"parameters":[{"name":"handle","in":"path","description":"The product handle.","required":true,"schema":{"type":"string","minLength":1}},{"$ref":"#/components/parameters/CustomerTokenRequired"},{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewSubmitInput"}}}},"responses":{"201":{"description":"Created.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewSubmitAnswer"}}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"409":{"description":"Conflict with the store setup or an earlier request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"413":{"description":"Request body too large.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"reviews.submit"}},"/v1/storefront/products/{handle}/reviews/eligibility":{"get":{"operationId":"getReviewEligibility","summary":"Whether the signed-in shopper may review the product, and why not.","tags":["Reviews"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"handle","in":"path","description":"The product handle.","required":true,"schema":{"type":"string","minLength":1}},{"$ref":"#/components/parameters/CustomerToken"}],"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReviewEligibilityAnswer"}}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"404":{"description":"Not found.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}},"x-sdk":"reviews.eligibility"}},"/v1/storefront/search":{"get":{"operationId":"legacySearch","summary":"Legacy search (before the Part 2 list). Use `listProducts`.","tags":["Legacy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"q","in":"query","description":"Full-text search.","required":false,"schema":{"type":"string","maxLength":200}},{"name":"category","in":"query","description":"A Google product category.","required":false,"schema":{"type":"string"}},{"name":"collection","in":"query","description":"A category handle.","required":false,"schema":{"type":"string"}},{"name":"featured","in":"query","description":"Only featured or only other products.","required":false,"schema":{"type":"boolean"}},{"name":"sort","in":"query","description":"The order.","required":false,"schema":{"default":"relevance","type":"string","enum":["relevance","title","price_asc","price_desc","updated"]}},{"name":"cursor","in":"query","description":"`nextCursor` of the previous page.","required":false,"schema":{"type":"string","pattern":"^o:\\d{1,5}$"}},{"name":"brand","in":"query","description":"Brands, comma-separated or repeated.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"productType","in":"query","description":"Product types, comma-separated or repeated.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"availability","in":"query","description":"Availabilities, comma-separated or repeated.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"facets","in":"query","description":"`brand` and/or `productType`, comma-separated or repeated.","required":false,"style":"form","explode":true,"schema":{"type":"array","items":{"type":"string"}}},{"name":"priceMin","in":"query","description":"Lowest price in minor units.","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"priceMax","in":"query","description":"Highest price in minor units.","required":false,"schema":{"type":"integer","minimum":0,"maximum":9007199254740991}},{"name":"limit","in":"query","description":"Products per page.","required":false,"schema":{"default":24,"type":"integer","minimum":1,"maximum":100}},{"name":"year","in":"query","description":"Vehicle year.","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"make","in":"query","description":"Vehicle make.","required":false,"schema":{"type":"string"}},{"name":"model","in":"query","description":"Vehicle model.","required":false,"schema":{"type":"string"}},{"name":"submodel","in":"query","description":"Vehicle submodel.","required":false,"schema":{"type":"string"}},{"name":"engine","in":"query","description":"Vehicle engine.","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacySearchAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}}}},"/v1/storefront/vehicles":{"get":{"operationId":"listVehicles","summary":"The vehicle picker: years, then makes for a year, models for a make, then submodels and engines.","tags":["Legacy"],"security":[{"catalogKey":[]},{"catalogKeyQuery":[]}],"parameters":[{"name":"year","in":"query","description":"Vehicle year.","required":false,"schema":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},{"name":"make","in":"query","description":"Vehicle make.","required":false,"schema":{"type":"string"}},{"name":"model","in":"query","description":"Vehicle model.","required":false,"schema":{"type":"string"}},{"$ref":"#/components/parameters/IfNoneMatch"}],"responses":{"200":{"description":"OK.","headers":{"ETag":{"$ref":"#/components/headers/ETag"},"Server-Timing":{"$ref":"#/components/headers/ServerTiming"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyVehiclesAnswer"}}}},"304":{"description":"Not modified: the answer still matches `If-None-Match`.","headers":{"ETag":{"$ref":"#/components/headers/ETag"}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}}}},"/v1/storefront/checkout":{"post":{"operationId":"legacyCheckout","summary":"Legacy checkout: a Throttle checkout session from catalog lines. Use `createCart`.","tags":["Legacy"],"security":[{"catalogKey":[]}],"parameters":[{"$ref":"#/components/parameters/IdempotencyKey"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyCheckoutRequest"}}}},"responses":{"200":{"description":"OK.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LegacyCheckoutAnswer"}}}},"400":{"description":"Invalid request: an unknown or malformed parameter or body (`issues` names each).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"401":{"description":"Missing or unknown key (`AUTHENTICATION_FAILED`), or an invalid customer token (`CUSTOMER_TOKEN_INVALID`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"403":{"description":"Refused for this key or shopper (`ORIGIN_NOT_ALLOWED`, `SERVER_KEY_IN_BROWSER`, `KEY_NOT_ALLOWED_IN_URL`, review eligibility codes).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"409":{"description":"Conflict with the store setup or an earlier request.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"413":{"description":"Request body too large.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"422":{"description":"The request is well formed but cannot be done (`items` names refused lines).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"429":{"description":"Rate limited: retry after `Retry-After` seconds.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"500":{"description":"Internal error.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"502":{"description":"Throttle refused the request (`throttleCode`).","content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}},"503":{"description":"Temporarily unavailable: retry after `Retry-After` seconds when present.","headers":{"Retry-After":{"$ref":"#/components/headers/RetryAfter"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/StorefrontErrorEnvelope"}}}}}}}},"components":{"schemas":{"CartCheckAnswer":{"type":"object","properties":{"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]},"items":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string"},"ok":{"type":"boolean"},"code":{"type":"string","enum":["NOT_FOUND","NOT_PURCHASABLE","OUT_OF_STOCK","QUANTITY_UNAVAILABLE","BELOW_MIN","ABOVE_MAX","NO_PRICE_IN_CURRENCY","PRICE_SOURCE_MISMATCH"]},"unitPriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"maxQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sku","ok","unitPriceMinor","currency"],"additionalProperties":false}}},"required":["items"],"additionalProperties":false},"CartCheckRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"quantity":{"type":"integer","minimum":1,"maximum":10000}},"required":["sku","quantity"],"additionalProperties":false}},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"}},"required":["items"],"additionalProperties":false},"CartCreateAnswer":{"type":"object","properties":{"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]},"sessionId":{"type":"string"},"cartUrl":{"type":"string"},"expiresAt":{"type":"string"},"cart":{"type":"object","properties":{"lines":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string"},"name":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"imageUrl":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["sku","name","quantity","unitPriceMinor","imageUrl"],"additionalProperties":false}},"currency":{"type":"string"},"subtotalMinor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["lines","currency","subtotalMinor"],"additionalProperties":false},"returnUrlApplied":{"type":"boolean"}},"required":["sessionId","cartUrl","expiresAt","cart"],"additionalProperties":false},"CartCreateRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"quantity":{"type":"integer","minimum":1,"maximum":10000}},"required":["sku","quantity"],"additionalProperties":false}},"currency":{"type":"string","pattern":"^[A-Za-z]{3}$"},"locale":{"type":"string","maxLength":35,"pattern":"^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$"},"returnUrl":{"type":"string","maxLength":2048,"pattern":"^[^\\u0000-\\u0020\\u007F]*$","description":"Where the hosted checkout sends the shopper after paying. An absolute https URL on one of the store's allowed return websites (Checkout settings).","format":"uri"},"cancelUrl":{"type":"string","maxLength":2048,"pattern":"^[^\\u0000-\\u0020\\u007F]*$","description":"Where the hosted cart's cancel link goes. An absolute https URL on one of the store's allowed return websites (Checkout settings).","format":"uri"},"storefrontUrl":{"type":"string","maxLength":2048,"pattern":"^[^\\u0000-\\u0020\\u007F]*$","description":"The hosted cart's \"Continue shopping\" link. An absolute https URL on one of the store's allowed return websites (Checkout settings).","format":"uri"}},"required":["items"],"additionalProperties":false},"LegacyCheckoutAnswer":{"type":"object","properties":{"checkoutUrl":{"type":"string"},"sessionId":{"type":"string"},"expiresAt":{"anyOf":[{"type":"string"},{"type":"null"}]},"cartId":{"type":"string"},"currency":{"type":"string"},"lines":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string"},"quantity":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"unitPriceMinor":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}},"required":["sku","quantity","unitPriceMinor"],"additionalProperties":false}},"replayed":{"type":"boolean","const":true}},"required":["checkoutUrl","sessionId","expiresAt","cartId","currency","lines"],"additionalProperties":false},"LegacyCheckoutRequest":{"type":"object","properties":{"items":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1,"maxLength":255},"quantity":{"type":"integer","minimum":1,"maximum":10000}},"required":["sku","quantity"],"additionalProperties":false}},"returnUrl":{"type":"string","maxLength":2048},"cancelUrl":{"type":"string","maxLength":2048},"customerEmail":{"type":"string","maxLength":320,"format":"email","pattern":"^(?!\\.)(?!.*\\.\\.)([A-Za-z0-9_'+\\-\\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}},"required":["items","returnUrl","cancelUrl"],"additionalProperties":false},"LegacySearchAnswer":{"type":"object","properties":{"products":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"brand":{"anyOf":[{"type":"string"},{"type":"null"}]},"productType":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleCategory":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"priceRange":{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"}},"required":["minMinor","maxMinor","currency"],"additionalProperties":false},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"priceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"salePriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string"},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"number"},{"type":"boolean"}]}},"compareAtPriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trackInventory":{"type":"boolean"},"backorders":{"type":"string","enum":["deny","allow"]},"minOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"fitment":{"type":"array","items":{"type":"object","properties":{"yearFrom":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearTo":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"make":{"type":"string"},"model":{"type":"string"},"submodel":{"anyOf":[{"type":"string"},{"type":"null"}]},"engine":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["yearFrom","yearTo","make","model","submodel","engine","position","notes"],"additionalProperties":false}},"oemNumbers":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"partNumber":{"type":"string"}},"required":["brand","partNumber"],"additionalProperties":false}},"supersededBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"supersedes":{"type":"array","items":{"type":"string"}},"attributeLabels":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"condition":{"anyOf":[{"type":"string","enum":["new","refurbished","used"]},{"type":"null"}]}},"required":["sku","title","options","priceMinor","salePriceMinor","currency","availability","gtin","mpn","images","attributes"],"additionalProperties":false}},"shortDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"path":{"type":"array","items":{"type":"string"}}},"required":["id","name","handle","path"],"additionalProperties":false}},"featured":{"type":"boolean"},"draft":{"type":"boolean"},"descriptionHtml":{"anyOf":[{"type":"string"},{"type":"null"}]},"seo":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description"],"additionalProperties":false},"jsonLd":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["handle","title","description","brand","productType","googleCategory","link","images","priceRange","availability","variants"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"facets":{"type":"object","properties":{"brand":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["value","count"],"additionalProperties":false}},"productType":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["value","count"],"additionalProperties":false}}},"additionalProperties":false}},"required":["products","nextCursor","facets"],"additionalProperties":false},"LegacyVehiclesAnswer":{"anyOf":[{"type":"object","properties":{"years":{"type":"array","items":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991}}},"required":["years"],"additionalProperties":false},{"type":"object","properties":{"makes":{"type":"array","items":{"type":"string"}}},"required":["makes"],"additionalProperties":false},{"type":"object","properties":{"models":{"type":"array","items":{"type":"string"}}},"required":["models"],"additionalProperties":false},{"type":"object","properties":{"submodels":{"type":"array","items":{"type":"string"}},"engines":{"type":"array","items":{"type":"string"}}},"required":["submodels","engines"],"additionalProperties":false}]},"OpenApiDocument":{"type":"object","properties":{"openapi":{"type":"string"}},"required":["openapi"],"additionalProperties":{}},"ReviewEligibilityAnswer":{"type":"object","properties":{"canReview":{"type":"boolean"},"reason":{"type":"string","enum":["reviews_disabled","not_signed_in","email_not_verified","already_reviewed","not_verified_buyer"]}},"required":["canReview"],"additionalProperties":false},"ReviewSubmitAnswer":{"type":"object","properties":{"review":{"type":"object","properties":{"id":{"type":"string","minLength":1},"status":{"type":"string","enum":["pending","approved"]}},"required":["id","status"],"additionalProperties":false}},"required":["review"],"additionalProperties":false},"ReviewSubmitInput":{"type":"object","properties":{"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"type":"string"},"displayName":{"type":"string","minLength":1,"maxLength":120,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"}},"required":["rating","body","displayName"],"additionalProperties":false},"StorefrontCategoriesAnswer":{"type":"object","properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCategoryNode"}},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["categories"],"additionalProperties":false},"StorefrontCategoryAnswer":{"type":"object","properties":{"category":{"type":"object","properties":{"id":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","handle","name","description","seoTitle","productCount"],"additionalProperties":false},"breadcrumbs":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1}},"required":["handle","name"],"additionalProperties":false}},"children":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCategoryNode"}},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["category","breadcrumbs","children"],"additionalProperties":false},"StorefrontCategoryNode":{"type":"object","properties":{"id":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"children":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontCategoryNode"}}},"required":["id","handle","name","description","seoTitle","productCount","children"],"additionalProperties":false},"StorefrontCollectionAnswer":{"anyOf":[{"type":"object","properties":{"collection":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"descriptionHtml":{"anyOf":[{"type":"string"},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"seo":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description"],"additionalProperties":false},"kind":{"type":"string","enum":["manual","rule"]},"defaultSort":{"type":"string","enum":["featured","manual","title_asc","title_desc","price_asc","price_desc","newest","updated"]}},"required":["handle","title","description","descriptionHtml","image","seo","kind","defaultSort"],"additionalProperties":false},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["collection"],"additionalProperties":false},{"type":"object","properties":{"redirectTo":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"}},"required":["redirectTo"],"additionalProperties":false}]},"StorefrontCollectionsAnswer":{"type":"object","properties":{"collections":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"type":"string"},"kind":{"type":"string","enum":["manual","rule"]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["handle","title","kind","image","productCount"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["collections","nextCursor"],"additionalProperties":false},"StorefrontConfigAnswer":{"type":"object","properties":{"storeName":{"anyOf":[{"type":"string"},{"type":"null"}]},"currencies":{"type":"array","items":{"type":"string"}},"defaultCurrency":{"anyOf":[{"type":"string"},{"type":"null"}]},"defaultLocale":{"anyOf":[{"type":"string"},{"type":"null"}]},"locales":{"type":"array","items":{"type":"string"}},"sorts":{"type":"array","items":{"type":"string","enum":["relevance","featured","manual","title_asc","title_desc","price_asc","price_desc","newest","updated","best_rated"]}},"reviews":{"type":"object","properties":{"enabled":{"type":"boolean"},"onLists":{"type":"boolean"}},"required":["enabled","onLists"],"additionalProperties":false},"relatedMode":{"type":"string","enum":["automatic_with_picks","picks_only","automatic_only"]},"lineResolver":{"type":"object","properties":{"extensionId":{"type":"string"}},"required":["extensionId"],"additionalProperties":false},"generation":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["storeName","currencies","defaultCurrency","defaultLocale","locales","sorts","reviews","relatedMode","lineResolver","generation"],"additionalProperties":false},"StorefrontErrorEnvelope":{"type":"object","properties":{"error":{"type":"object","properties":{"code":{"type":"string","minLength":1},"message":{"type":"string"},"requestId":{"type":"string"},"issues":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string"},"message":{"type":"string"}},"required":["path","message"],"additionalProperties":false}},"throttleCode":{"type":"string"}},"required":["code","message","requestId"],"additionalProperties":false},"items":{"anyOf":[{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string"},"code":{"type":"string","enum":["NOT_FOUND","NOT_PURCHASABLE","OUT_OF_STOCK","QUANTITY_UNAVAILABLE","BELOW_MIN","ABOVE_MAX","NO_PRICE_IN_CURRENCY","PRICE_SOURCE_MISMATCH"]},"maxQuantity":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["sku","code"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string"},"reason":{"type":"string","enum":["NOT_FOUND","DRAFT","ARCHIVED","OUT_OF_STOCK","BELOW_MIN","ABOVE_MAX","NO_PRICE","NO_CURRENCY","PRICE_SOURCE_MISMATCH","AMOUNT_TOO_LARGE","CURRENCY_MISMATCH"]}},"required":["sku","reason"],"additionalProperties":false}}]},"runId":{"type":"string"}},"required":["error"],"additionalProperties":false},"StorefrontFilterValuesAnswer":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string"},"display":{"type":"string","enum":["checkbox","swatch","range","boolean","dropdown"]},"values":{"maxItems":1000,"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"selected":{"type":"boolean"},"swatch":{"anyOf":[{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["color"],"additionalProperties":false},{"type":"object","properties":{"mediaId":{"type":"string","minLength":1},"url":{"type":"string"}},"required":["mediaId","url"],"additionalProperties":false}]}},"required":["value","label","count","selected"],"additionalProperties":false}},"range":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"selectedMin":{"type":"number"},"selectedMax":{"type":"number"}},"required":["min","max"],"additionalProperties":false},"more":{"type":"boolean"}},"required":["key","label","display","values","more"],"additionalProperties":false},"StorefrontListAnswer":{"type":"object","properties":{"products":{"type":"array","items":{"$ref":"#/components/schemas/StorefrontListProduct"}},"page":{"type":"object","properties":{"number":{"type":"integer","minimum":1,"maximum":9007199254740991},"limit":{"type":"integer","minimum":1,"maximum":100},"total":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"pageCount":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"capped":{"type":"boolean","const":true}},"required":["number","limit","total","pageCount","nextCursor"],"additionalProperties":false},"filters":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"label":{"type":"string"},"display":{"type":"string","enum":["checkbox","swatch","range","boolean","dropdown"]},"values":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"selected":{"type":"boolean"},"swatch":{"anyOf":[{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["color"],"additionalProperties":false},{"type":"object","properties":{"mediaId":{"type":"string","minLength":1},"url":{"type":"string"}},"required":["mediaId","url"],"additionalProperties":false}]}},"required":["value","label","count","selected"],"additionalProperties":false}},"range":{"type":"object","properties":{"min":{"type":"number"},"max":{"type":"number"},"selectedMin":{"type":"number"},"selectedMax":{"type":"number"}},"required":["min","max"],"additionalProperties":false},"more":{"type":"boolean"}},"required":["key","label","display","values","more"],"additionalProperties":false}},"applied":{"type":"object","properties":{"q":{"type":"string"},"category":{"type":"string"},"collection":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}},"featured":{"type":"boolean"},"filters":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"array","items":{"type":"string"}}},"ignored":{"type":"array","items":{"type":"string"}}},"required":["filters"],"additionalProperties":false},"sort":{"type":"string","enum":["relevance","featured","manual","title_asc","title_desc","price_asc","price_desc","newest","updated","best_rated"]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]},"indexing":{"type":"boolean","const":true}},"required":["products","page","applied","sort","currency","locale"],"additionalProperties":false},"StorefrontListProduct":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"anyOf":[{"type":"string"},{"type":"null"}]}]},"brand":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"anyOf":[{"type":"string"},{"type":"null"}]}]},"productType":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"null"}]},{"anyOf":[{"type":"string"},{"type":"null"}]}]},"images":{"anyOf":[{"maxItems":2,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}}]},"priceRange":{"anyOf":[{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"},"compareAtMinMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["minMinor","maxMinor","currency","compareAtMinMinor"],"additionalProperties":false},{"type":"null"}]},{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"}},"required":["minMinor","maxMinor","currency"],"additionalProperties":false},{"type":"null"}]}]},"availability":{"anyOf":[{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]}]},"lowStock":{"anyOf":[{"type":"boolean"},{"type":"boolean"}]},"featured":{"anyOf":[{"type":"boolean"},{"type":"boolean"}]},"badges":{"type":"object","properties":{"sale":{"type":"boolean"},"new":{"type":"boolean"}},"required":["sale","new"],"additionalProperties":false},"variantCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"optionSwatches":{"maxItems":12,"type":"array","items":{"type":"object","properties":{"key":{"type":"string","minLength":1},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"label":{"type":"string"},"swatch":{"anyOf":[{"anyOf":[{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["color"],"additionalProperties":false},{"type":"object","properties":{"mediaId":{"type":"string","minLength":1},"url":{"type":"string"}},"required":["mediaId","url"],"additionalProperties":false}]},{"type":"null"}]}},"required":["value","label","swatch"],"additionalProperties":false}}},"required":["key","values"],"additionalProperties":false}},"seo":{"anyOf":[{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title"],"additionalProperties":false},{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description"],"additionalProperties":false}]},"rating":{"anyOf":[{"type":"object","properties":{"average":{"anyOf":[{"type":"number"},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["average","count"],"additionalProperties":false},{"type":"object","properties":{"average":{"anyOf":[{"type":"number"},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["average","count"],"additionalProperties":false}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleCategory":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"priceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"salePriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string"},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"number"},{"type":"boolean"}]}},"compareAtPriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trackInventory":{"type":"boolean"},"backorders":{"type":"string","enum":["deny","allow"]},"minOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"fitment":{"type":"array","items":{"type":"object","properties":{"yearFrom":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearTo":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"make":{"type":"string"},"model":{"type":"string"},"submodel":{"anyOf":[{"type":"string"},{"type":"null"}]},"engine":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["yearFrom","yearTo","make","model","submodel","engine","position","notes"],"additionalProperties":false}},"oemNumbers":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"partNumber":{"type":"string"}},"required":["brand","partNumber"],"additionalProperties":false}},"supersededBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"supersedes":{"type":"array","items":{"type":"string"}},"attributeLabels":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"condition":{"anyOf":[{"type":"string","enum":["new","refurbished","used"]},{"type":"null"}]},"optionValues":{"type":"array","items":{"type":"string"}},"lowStock":{"type":"boolean"},"purchasable":{"type":"boolean"}},"required":["sku","title","options","priceMinor","salePriceMinor","currency","availability","gtin","mpn","images","attributes","optionValues","lowStock","purchasable"],"additionalProperties":false}},"shortDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"path":{"type":"array","items":{"type":"string"}}},"required":["id","name","handle","path"],"additionalProperties":false}},"descriptionHtml":{"anyOf":[{"type":"string"},{"type":"null"}]},"jsonLd":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"options":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"swatch":{"anyOf":[{"anyOf":[{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["color"],"additionalProperties":false},{"type":"object","properties":{"mediaId":{"type":"string","minLength":1},"url":{"type":"string"}},"required":["mediaId","url"],"additionalProperties":false}]},{"type":"null"}]}},"required":["value","swatch"],"additionalProperties":false}}},"required":["name","values"],"additionalProperties":false}},"breadcrumbs":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1}},"required":["handle","name"],"additionalProperties":false}},"purchasable":{"type":"boolean"},"fitment":{"type":"array","items":{"type":"object","properties":{"yearFrom":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearTo":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"make":{"type":"string"},"model":{"type":"string"},"submodel":{"anyOf":[{"type":"string"},{"type":"null"}]},"engine":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["yearFrom","yearTo","make","model","submodel","engine","position","notes"],"additionalProperties":false}},"oemNumbers":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"partNumber":{"type":"string"}},"required":["brand","partNumber"],"additionalProperties":false}},"supersededBy":{"type":"array","items":{"type":"string"}},"supersedes":{"type":"array","items":{"type":"string"}}},"required":["handle"],"additionalProperties":false},"StorefrontProductAnswer":{"type":"object","properties":{"product":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"brand":{"anyOf":[{"type":"string"},{"type":"null"}]},"productType":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleCategory":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"priceRange":{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"}},"required":["minMinor","maxMinor","currency"],"additionalProperties":false},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"priceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"salePriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string"},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"number"},{"type":"boolean"}]}},"compareAtPriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trackInventory":{"type":"boolean"},"backorders":{"type":"string","enum":["deny","allow"]},"minOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"fitment":{"type":"array","items":{"type":"object","properties":{"yearFrom":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearTo":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"make":{"type":"string"},"model":{"type":"string"},"submodel":{"anyOf":[{"type":"string"},{"type":"null"}]},"engine":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["yearFrom","yearTo","make","model","submodel","engine","position","notes"],"additionalProperties":false}},"oemNumbers":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"partNumber":{"type":"string"}},"required":["brand","partNumber"],"additionalProperties":false}},"supersededBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"supersedes":{"type":"array","items":{"type":"string"}},"attributeLabels":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"condition":{"anyOf":[{"type":"string","enum":["new","refurbished","used"]},{"type":"null"}]},"optionValues":{"type":"array","items":{"type":"string"}},"lowStock":{"type":"boolean"},"purchasable":{"type":"boolean"}},"required":["sku","title","options","priceMinor","salePriceMinor","currency","availability","gtin","mpn","images","attributes","optionValues","lowStock","purchasable"],"additionalProperties":false}},"shortDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"path":{"type":"array","items":{"type":"string"}}},"required":["id","name","handle","path"],"additionalProperties":false}},"featured":{"type":"boolean"},"draft":{"type":"boolean"},"descriptionHtml":{"anyOf":[{"type":"string"},{"type":"null"}]},"seo":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description"],"additionalProperties":false},"jsonLd":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"options":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"values":{"type":"array","items":{"type":"object","properties":{"value":{"type":"string"},"swatch":{"anyOf":[{"anyOf":[{"type":"object","properties":{"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{6}$"}},"required":["color"],"additionalProperties":false},{"type":"object","properties":{"mediaId":{"type":"string","minLength":1},"url":{"type":"string"}},"required":["mediaId","url"],"additionalProperties":false}]},{"type":"null"}]}},"required":["value","swatch"],"additionalProperties":false}}},"required":["name","values"],"additionalProperties":false}},"breadcrumbs":{"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1}},"required":["handle","name"],"additionalProperties":false}},"lowStock":{"type":"boolean"},"purchasable":{"type":"boolean"},"availableInCurrency":{"type":"boolean"},"rating":{"type":"object","properties":{"average":{"anyOf":[{"type":"number"},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["average","count"],"additionalProperties":false}},"required":["handle","title","description","brand","productType","googleCategory","link","images","priceRange","availability","variants","options","breadcrumbs","lowStock","purchasable"],"additionalProperties":false},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]}},"required":["product"],"additionalProperties":false},"StorefrontProductRouteAnswer":{"anyOf":[{"$ref":"#/components/schemas/StorefrontProductAnswer"},{"anyOf":[{"type":"object","properties":{"product":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"brand":{"anyOf":[{"type":"string"},{"type":"null"}]},"productType":{"anyOf":[{"type":"string"},{"type":"null"}]},"googleCategory":{"anyOf":[{"type":"string"},{"type":"null"}]},"link":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"priceRange":{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"}},"required":["minMinor","maxMinor","currency"],"additionalProperties":false},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"variants":{"type":"array","items":{"type":"object","properties":{"sku":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"options":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},{"type":"null"}]},"priceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"salePriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"currency":{"anyOf":[{"type":"string"},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]},"gtin":{"anyOf":[{"type":"string"},{"type":"null"}]},"mpn":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"attributes":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","minLength":1,"maxLength":5000,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},{"type":"number"},{"type":"boolean"}]}},"compareAtPriceMinor":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"trackInventory":{"type":"boolean"},"backorders":{"type":"string","enum":["deny","allow"]},"minOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"maxOrderQuantity":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"image":{"anyOf":[{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false},{"type":"null"}]},"fitment":{"type":"array","items":{"type":"object","properties":{"yearFrom":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"yearTo":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"make":{"type":"string"},"model":{"type":"string"},"submodel":{"anyOf":[{"type":"string"},{"type":"null"}]},"engine":{"anyOf":[{"type":"string"},{"type":"null"}]},"position":{"anyOf":[{"type":"string"},{"type":"null"}]},"notes":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["yearFrom","yearTo","make","model","submodel","engine","position","notes"],"additionalProperties":false}},"oemNumbers":{"type":"array","items":{"type":"object","properties":{"brand":{"type":"string"},"partNumber":{"type":"string"}},"required":["brand","partNumber"],"additionalProperties":false}},"supersededBy":{"anyOf":[{"type":"string"},{"type":"null"}]},"supersedes":{"type":"array","items":{"type":"string"}},"attributeLabels":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"type":"string"}},"condition":{"anyOf":[{"type":"string","enum":["new","refurbished","used"]},{"type":"null"}]}},"required":["sku","title","options","priceMinor","salePriceMinor","currency","availability","gtin","mpn","images","attributes"],"additionalProperties":false}},"shortDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoTitle":{"anyOf":[{"type":"string"},{"type":"null"}]},"seoDescription":{"anyOf":[{"type":"string"},{"type":"null"}]},"tags":{"type":"array","items":{"type":"string"}},"categories":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"handle":{"type":"string","minLength":1},"path":{"type":"array","items":{"type":"string"}}},"required":["id","name","handle","path"],"additionalProperties":false}},"featured":{"type":"boolean"},"draft":{"type":"boolean"},"descriptionHtml":{"anyOf":[{"type":"string"},{"type":"null"}]},"seo":{"type":"object","properties":{"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"description":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["title","description"],"additionalProperties":false},"jsonLd":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["handle","title","description","brand","productType","googleCategory","link","images","priceRange","availability","variants"],"additionalProperties":false}},"required":["product"],"additionalProperties":false},{"type":"object","properties":{"redirectTo":{"type":"string","minLength":1,"maxLength":255,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"}},"required":["redirectTo"],"additionalProperties":false}]}]},"StorefrontRelatedAnswer":{"type":"object","properties":{"products":{"maxItems":24,"type":"array","items":{"$ref":"#/components/schemas/StorefrontListProduct"}},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]}},"required":["products"],"additionalProperties":false},"StorefrontReviewsAnswer":{"anyOf":[{"type":"object","properties":{"summary":{"type":"object","properties":{"average":{"anyOf":[{"type":"number"},{"type":"null"}]},"count":{"type":"integer","minimum":0,"maximum":9007199254740991},"histogram":{"type":"object","properties":{"1":{"type":"integer","minimum":0,"maximum":9007199254740991},"2":{"type":"integer","minimum":0,"maximum":9007199254740991},"3":{"type":"integer","minimum":0,"maximum":9007199254740991},"4":{"type":"integer","minimum":0,"maximum":9007199254740991},"5":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["1","2","3","4","5"],"additionalProperties":false}},"required":["average","count","histogram"],"additionalProperties":false},"reviews":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","minLength":1},"rating":{"type":"integer","minimum":1,"maximum":5},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"body":{"type":"string"},"displayName":{"type":"string"},"verified":{"type":"boolean"},"imported":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},"reply":{"anyOf":[{"type":"object","properties":{"body":{"type":"string"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"}},"required":["body","updatedAt"],"additionalProperties":false},{"type":"null"}]}},"required":["id","rating","title","body","displayName","verified","imported","createdAt","reply"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["summary","reviews","nextCursor"],"additionalProperties":false},{"type":"object","properties":{"redirectTo":{"type":"string","minLength":1}},"required":["redirectTo"],"additionalProperties":false}]},"StorefrontSuggestAnswer":{"type":"object","properties":{"products":{"maxItems":8,"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"anyOf":[{"type":"string"},{"type":"null"}]},"images":{"maxItems":2,"type":"array","items":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"pattern":"^https?:\\/\\/[^\\s\\u0000-\\u001F\\u007F]+$"},"altText":{"type":"string","minLength":1,"maxLength":500,"pattern":"^[^\\u0000-\\u001F\\u007F]+$"},"mediaId":{"type":"string","pattern":"^[a-f0-9]{32}$"},"width":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"height":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"sizes":{"type":"object","propertyNames":{"type":"string","enum":["400","640","800","2048"]},"additionalProperties":{"type":"string"}}},"required":["url"],"additionalProperties":false}},"priceRange":{"anyOf":[{"type":"object","properties":{"minMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"maxMinor":{"type":"integer","minimum":0,"maximum":9007199254740991},"currency":{"type":"string"},"compareAtMinMinor":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]}},"required":["minMinor","maxMinor","currency","compareAtMinMinor"],"additionalProperties":false},{"type":"null"}]},"availability":{"anyOf":[{"type":"string","enum":["in_stock","out_of_stock","preorder","backorder"]},{"type":"null"}]}},"required":["handle","title","images","priceRange","availability"],"additionalProperties":false}},"categories":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"name":{"type":"string","minLength":1},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["handle","name","productCount"],"additionalProperties":false}},"brands":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["name","productCount"],"additionalProperties":false}},"tags":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","minLength":1},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tag","productCount"],"additionalProperties":false}},"collections":{"maxItems":5,"type":"array","items":{"type":"object","properties":{"handle":{"type":"string","minLength":1},"title":{"type":"string"},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["handle","title","productCount"],"additionalProperties":false}},"locale":{"anyOf":[{"type":"string"},{"type":"null"}]},"priceContext":{"type":"string","enum":["anonymous","customer","email_unverified","anonymous_fallback"]}},"required":["products","categories","brands","tags","collections"],"additionalProperties":false},"StorefrontTagsAnswer":{"type":"object","properties":{"tags":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","minLength":1},"productCount":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["tag","productCount"],"additionalProperties":false}}},"required":["tags"],"additionalProperties":false}},"parameters":{"CustomerToken":{"name":"X-Customer-Token","in":"header","description":"The signed-in shopper's Throttle access token: customer prices and identity. Without it the answer is anonymous.","required":false,"schema":{"type":"string","minLength":1,"maxLength":4096}},"CustomerTokenRequired":{"name":"X-Customer-Token","in":"header","description":"The signed-in shopper's Throttle access token.","required":true,"schema":{"type":"string","minLength":1,"maxLength":4096}},"IdempotencyKey":{"name":"Idempotency-Key","in":"header","description":"A retry with the same key answers the first request again instead of repeating it.","required":false,"schema":{"type":"string","minLength":1,"maxLength":200}},"IfNoneMatch":{"name":"If-None-Match","in":"header","description":"An `ETag` of an earlier answer: `304` when it still matches.","required":false,"schema":{"type":"string"}}},"headers":{"ETag":{"description":"The answer version, for `If-None-Match`.","schema":{"type":"string"}},"ServerTiming":{"description":"Timings: `total`, `do` (the catalog), and `cache;desc=hit|miss`.","schema":{"type":"string"}},"RetryAfter":{"description":"Seconds to wait before retrying.","schema":{"type":"integer","minimum":0}}},"securitySchemes":{"catalogKey":{"type":"apiKey","in":"header","name":"X-Catalog-Key","description":"A publishable catalog key (`pc_pk_…`)."},"catalogKeyQuery":{"type":"apiKey","in":"query","name":"key","description":"A publishable catalog key (`pc_pk_…`) on a GET, so a browser `fetch` needs no CORS preflight. The key's origin rule still applies: a browser key needs an allowed `Origin`, so for a browser key an image URL or a link (which send none) is refused; app and legacy keys are accepted without an `Origin`. Never together with `X-Catalog-Key`. Server keys are refused here (`KEY_NOT_ALLOWED_IN_URL`)."}}},"x-storefront-errors":{"INVALID_REQUEST":{"statuses":[400],"retryable":false,"source":"generic"},"AUTHENTICATION_FAILED":{"statuses":[401],"retryable":false,"source":"generic"},"INFRASTRUCTURE_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"generic"},"PROVIDER_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"generic"},"INTERNAL_ERROR":{"statuses":[500],"retryable":false,"source":"generic"},"CUSTOMER_TOKEN_INVALID":{"statuses":[401],"retryable":false,"source":"route"},"ORIGIN_NOT_ALLOWED":{"statuses":[403],"retryable":false,"source":"route"},"SERVER_KEY_IN_BROWSER":{"statuses":[403],"retryable":false,"source":"route"},"KEY_NOT_ALLOWED_IN_URL":{"statuses":[403],"retryable":false,"source":"route"},"NOT_FOUND":{"statuses":[404],"retryable":false,"source":"route"},"RATE_LIMITED":{"statuses":[429],"retryable":true,"source":"route"},"STOREFRONT_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"route"},"REQUEST_BODY_TOO_LARGE":{"statuses":[413],"retryable":false,"source":"route"},"CART_CURRENCY_REQUIRED":{"statuses":[422],"retryable":false,"source":"route"},"CART_CURRENCY_NOT_ENABLED":{"statuses":[422],"retryable":false,"source":"route"},"CHECKOUT_NOT_CONFIGURED":{"statuses":[409],"retryable":false,"source":"route"},"EXTENSION_UPGRADE_REQUIRED":{"statuses":[409],"retryable":false,"source":"route"},"CART_ITEMS_INVALID":{"statuses":[422],"retryable":false,"source":"route"},"CART_REJECTED":{"statuses":[502],"retryable":false,"source":"route"},"CART_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"route"},"CHECKOUT_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"route"},"RETURN_URL_NOT_ALLOWED":{"statuses":[422],"retryable":false,"source":"route"},"CHECKOUT_TOTAL_TOO_LARGE":{"statuses":[422],"retryable":false,"source":"route"},"CHECKOUT_CART_MISMATCH":{"statuses":[409],"retryable":false,"source":"route"},"CHECKOUT_ITEMS_INVALID":{"statuses":[422],"retryable":false,"source":"route"},"CHECKOUT_REJECTED":{"statuses":[502],"retryable":false,"source":"route"},"CURRENCY_NOT_ENABLED":{"statuses":[400],"retryable":false,"source":"object"},"STOREFRONT_INDEXING":{"statuses":[503],"retryable":true,"source":"object"},"EMAIL_NOT_VERIFIED":{"statuses":[403],"retryable":false,"source":"object"},"NOT_VERIFIED_BUYER":{"statuses":[403],"retryable":false,"source":"object"},"PURCHASE_REFUNDED":{"statuses":[403],"retryable":false,"source":"object"},"ALREADY_REVIEWED":{"statuses":[409],"retryable":false,"source":"object"},"REVIEW_QUEUE_FULL":{"statuses":[429],"retryable":true,"source":"object"},"REVIEW_VERIFICATION_UNAVAILABLE":{"statuses":[503],"retryable":true,"source":"object"}}}