@vtex/faststore 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (538) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/LICENSE +21 -0
  3. package/README.md +95 -0
  4. package/dist/actions.json +334 -0
  5. package/dist/catalog.json +6615 -0
  6. package/dist/client.d.ts +17 -0
  7. package/dist/client.js +8 -0
  8. package/dist/components.d.ts +87 -0
  9. package/dist/components.js +87 -0
  10. package/dist/content-types.json +684 -0
  11. package/dist/core/dist/actions/mock-action.d.ts +24 -0
  12. package/dist/core/dist/actions/mock-action.js +28 -0
  13. package/dist/core/dist/actions/mock-action.js.map +1 -0
  14. package/dist/core/dist/actions/registry.d.ts +24 -0
  15. package/dist/core/dist/actions/registry.js +28 -0
  16. package/dist/core/dist/actions/registry.js.map +1 -0
  17. package/dist/core/dist/define-component.d.ts +100 -0
  18. package/dist/core/dist/define-component.js +8 -0
  19. package/dist/core/dist/define-component.js.map +1 -0
  20. package/dist/core/dist/define-content-type.d.ts +95 -0
  21. package/dist/core/dist/define-content-type.js +283 -0
  22. package/dist/core/dist/define-content-type.js.map +1 -0
  23. package/dist/core/dist/index.d.ts +7 -0
  24. package/dist/core/dist/index.js +5 -0
  25. package/dist/core/dist/schema/generated/schema.d.ts +28 -0
  26. package/dist/core/dist/types.d.ts +1 -0
  27. package/dist/docs/access-code-field.md +100 -0
  28. package/dist/docs/access-code-sign-in.md +174 -0
  29. package/dist/docs/account-entry-point.md +155 -0
  30. package/dist/docs/address-summary.md +50 -0
  31. package/dist/docs/buy-button.md +162 -0
  32. package/dist/docs/carousel.md +105 -0
  33. package/dist/docs/cart-item.md +162 -0
  34. package/dist/docs/cart-totalizer.md +197 -0
  35. package/dist/docs/cart.md +495 -0
  36. package/dist/docs/client-preferences.md +184 -0
  37. package/dist/docs/client-profile-form.md +192 -0
  38. package/dist/docs/client-profile.md +117 -0
  39. package/dist/docs/container.md +97 -0
  40. package/dist/docs/document-field.md +97 -0
  41. package/dist/docs/email-field.md +93 -0
  42. package/dist/docs/email-identification.md +102 -0
  43. package/dist/docs/footer-copyright.md +112 -0
  44. package/dist/docs/footer-link-group.md +162 -0
  45. package/dist/docs/footer-root.md +145 -0
  46. package/dist/docs/footer-social.md +151 -0
  47. package/dist/docs/free-shipping-progress.md +87 -0
  48. package/dist/docs/gallery.md +84 -0
  49. package/dist/docs/header-root.md +150 -0
  50. package/dist/docs/identity-edit.md +88 -0
  51. package/dist/docs/identity-summary.md +106 -0
  52. package/dist/docs/incentives.md +151 -0
  53. package/dist/docs/logo.md +135 -0
  54. package/dist/docs/meter.md +67 -0
  55. package/dist/docs/navigation-link-list.md +171 -0
  56. package/dist/docs/navigation-link.md +163 -0
  57. package/dist/docs/navigation-menu.md +264 -0
  58. package/dist/docs/payment-methods.md +139 -0
  59. package/dist/docs/phone-field.md +106 -0
  60. package/dist/docs/postal-code-field.md +126 -0
  61. package/dist/docs/pricing.md +499 -0
  62. package/dist/docs/product-gallery.md +409 -0
  63. package/dist/docs/product-information.md +295 -0
  64. package/dist/docs/product-list.md +170 -0
  65. package/dist/docs/product-quantity.md +88 -0
  66. package/dist/docs/product-shelf.md +141 -0
  67. package/dist/docs/promotion.md +109 -0
  68. package/dist/docs/region.md +225 -0
  69. package/dist/docs/session.md +123 -0
  70. package/dist/docs/shipping-address.md +390 -0
  71. package/dist/docs/shipping-simulator.md +147 -0
  72. package/dist/docs/sign-in-form.md +117 -0
  73. package/dist/docs/tabs.md +176 -0
  74. package/dist/docs/toast.md +124 -0
  75. package/dist/docs/variant-selector.md +450 -0
  76. package/dist/graphql/define-subgraph.d.ts +12 -0
  77. package/dist/graphql/define-subgraph.js +15 -0
  78. package/dist/graphql/define-subgraph.js.map +1 -0
  79. package/dist/graphql/gql.d.ts +10 -0
  80. package/dist/graphql/gql.js +16 -0
  81. package/dist/graphql/gql.js.map +1 -0
  82. package/dist/graphql/types.d.ts +88 -0
  83. package/dist/graphql.d.ts +4 -0
  84. package/dist/graphql.js +3 -0
  85. package/dist/index.d.ts +19 -0
  86. package/dist/index.js +5 -0
  87. package/dist/internal/client.d.ts +24 -0
  88. package/dist/internal/client.js +23 -0
  89. package/dist/internal/content.d.ts +2 -0
  90. package/dist/internal/content.js +2 -0
  91. package/dist/internal/server.d.ts +7 -0
  92. package/dist/internal/server.js +6 -0
  93. package/dist/matter/access-code-sign-in/access-code-sign-in.d.ts +111 -0
  94. package/dist/matter/access-code-sign-in/access-code-sign-in.js +387 -0
  95. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -0
  96. package/dist/matter/account-entry-point/account-entry-point.d.ts +64 -0
  97. package/dist/matter/account-entry-point/account-entry-point.js +151 -0
  98. package/dist/matter/account-entry-point/account-entry-point.js.map +1 -0
  99. package/dist/matter/breadcrumb/breadcrumb.d.ts +40 -0
  100. package/dist/matter/breadcrumb/breadcrumb.js +155 -0
  101. package/dist/matter/breadcrumb/breadcrumb.js.map +1 -0
  102. package/dist/matter/buy-button/buy-button.d.ts +95 -0
  103. package/dist/matter/buy-button/buy-button.js +259 -0
  104. package/dist/matter/buy-button/buy-button.js.map +1 -0
  105. package/dist/matter/cart/cart-namespace.d.ts +48 -0
  106. package/dist/matter/cart/cart-namespace.js +50 -0
  107. package/dist/matter/cart/cart-namespace.js.map +1 -0
  108. package/dist/matter/cart/cart.d.ts +312 -0
  109. package/dist/matter/cart/cart.js +1034 -0
  110. package/dist/matter/cart/cart.js.map +1 -0
  111. package/dist/matter/cart-item/cart-item.d.ts +103 -0
  112. package/dist/matter/cart-item/cart-item.js +672 -0
  113. package/dist/matter/cart-item/cart-item.js.map +1 -0
  114. package/dist/matter/cart-item-compositions/cart-item-compositions.d.ts +49 -0
  115. package/dist/matter/cart-item-compositions/cart-item-compositions.js +165 -0
  116. package/dist/matter/cart-item-compositions/cart-item-compositions.js.map +1 -0
  117. package/dist/matter/cart-item-customizations/cart-item-customizations.d.ts +28 -0
  118. package/dist/matter/cart-item-customizations/cart-item-customizations.js +73 -0
  119. package/dist/matter/cart-item-customizations/cart-item-customizations.js.map +1 -0
  120. package/dist/matter/cart-item-discounts/cart-item-discounts.d.ts +33 -0
  121. package/dist/matter/cart-item-discounts/cart-item-discounts.js +70 -0
  122. package/dist/matter/cart-item-discounts/cart-item-discounts.js.map +1 -0
  123. package/dist/matter/cart-item-seller-info/cart-item-seller-info.d.ts +24 -0
  124. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js +54 -0
  125. package/dist/matter/cart-item-seller-info/cart-item-seller-info.js.map +1 -0
  126. package/dist/matter/cart-item-variations/cart-item-variations.d.ts +27 -0
  127. package/dist/matter/cart-item-variations/cart-item-variations.js +69 -0
  128. package/dist/matter/cart-item-variations/cart-item-variations.js.map +1 -0
  129. package/dist/matter/cart-totalizer/cart-totalizer.d.ts +78 -0
  130. package/dist/matter/cart-totalizer/cart-totalizer.js +220 -0
  131. package/dist/matter/cart-totalizer/cart-totalizer.js.map +1 -0
  132. package/dist/matter/client-preferences/client-preferences.d.ts +50 -0
  133. package/dist/matter/client-preferences/client-preferences.js +206 -0
  134. package/dist/matter/client-preferences/client-preferences.js.map +1 -0
  135. package/dist/matter/client-profile/client-profile.d.ts +59 -0
  136. package/dist/matter/client-profile/client-profile.js +185 -0
  137. package/dist/matter/client-profile/client-profile.js.map +1 -0
  138. package/dist/matter/client-profile-form/client-profile-form.d.ts +126 -0
  139. package/dist/matter/client-profile-form/client-profile-form.js +660 -0
  140. package/dist/matter/client-profile-form/client-profile-form.js.map +1 -0
  141. package/dist/matter/delivery-options/delivery-options-accordion.d.ts +30 -0
  142. package/dist/matter/delivery-options/delivery-options-accordion.js +189 -0
  143. package/dist/matter/delivery-options/delivery-options-accordion.js.map +1 -0
  144. package/dist/matter/delivery-options/delivery-options-controller.d.ts +49 -0
  145. package/dist/matter/delivery-options/delivery-options-controller.js +203 -0
  146. package/dist/matter/delivery-options/delivery-options-controller.js.map +1 -0
  147. package/dist/matter/delivery-options/delivery-options.d.ts +31 -0
  148. package/dist/matter/delivery-options/delivery-options.js +103 -0
  149. package/dist/matter/delivery-options/delivery-options.js.map +1 -0
  150. package/dist/matter/delivery-options/use-delivery-option-selection.d.ts +9 -0
  151. package/dist/matter/delivery-options/use-delivery-option-selection.js +76 -0
  152. package/dist/matter/delivery-options/use-delivery-option-selection.js.map +1 -0
  153. package/dist/matter/email-identification/email-identification.d.ts +37 -0
  154. package/dist/matter/email-identification/email-identification.js +111 -0
  155. package/dist/matter/email-identification/email-identification.js.map +1 -0
  156. package/dist/matter/free-shipping-progress/free-shipping-progress.d.ts +44 -0
  157. package/dist/matter/free-shipping-progress/free-shipping-progress.js +170 -0
  158. package/dist/matter/free-shipping-progress/free-shipping-progress.js.map +1 -0
  159. package/dist/matter/identity-edit/identity-edit.d.ts +52 -0
  160. package/dist/matter/identity-edit/identity-edit.js +148 -0
  161. package/dist/matter/identity-edit/identity-edit.js.map +1 -0
  162. package/dist/matter/identity-summary/identity-summary.d.ts +128 -0
  163. package/dist/matter/identity-summary/identity-summary.js +344 -0
  164. package/dist/matter/identity-summary/identity-summary.js.map +1 -0
  165. package/dist/matter/pricing/pricing.d.ts +162 -0
  166. package/dist/matter/pricing/pricing.js +793 -0
  167. package/dist/matter/pricing/pricing.js.map +1 -0
  168. package/dist/matter/product-gallery/product-gallery.d.ts +23 -0
  169. package/dist/matter/product-gallery/product-gallery.js +188 -0
  170. package/dist/matter/product-gallery/product-gallery.js.map +1 -0
  171. package/dist/matter/product-information/product-information.d.ts +61 -0
  172. package/dist/matter/product-information/product-information.js +355 -0
  173. package/dist/matter/product-information/product-information.js.map +1 -0
  174. package/dist/matter/product-list/product-list.d.ts +86 -0
  175. package/dist/matter/product-list/product-list.js +342 -0
  176. package/dist/matter/product-list/product-list.js.map +1 -0
  177. package/dist/matter/product-quantity/product-quantity.d.ts +50 -0
  178. package/dist/matter/product-quantity/product-quantity.js +111 -0
  179. package/dist/matter/product-quantity/product-quantity.js.map +1 -0
  180. package/dist/matter/product-shelf/product-shelf.d.ts +125 -0
  181. package/dist/matter/product-shelf/product-shelf.js +376 -0
  182. package/dist/matter/product-shelf/product-shelf.js.map +1 -0
  183. package/dist/matter/region/region.d.ts +211 -0
  184. package/dist/matter/region/region.js +579 -0
  185. package/dist/matter/region/region.js.map +1 -0
  186. package/dist/matter/session/session.d.ts +58 -0
  187. package/dist/matter/session/session.js +112 -0
  188. package/dist/matter/session/session.js.map +1 -0
  189. package/dist/matter/shipping-address/country-descriptors.js +101 -0
  190. package/dist/matter/shipping-address/country-descriptors.js.map +1 -0
  191. package/dist/matter/shipping-address/shipping-address.d.ts +284 -0
  192. package/dist/matter/shipping-address/shipping-address.js +1036 -0
  193. package/dist/matter/shipping-address/shipping-address.js.map +1 -0
  194. package/dist/matter/shipping-simulator/shipping-simulator.d.ts +143 -0
  195. package/dist/matter/shipping-simulator/shipping-simulator.js +644 -0
  196. package/dist/matter/shipping-simulator/shipping-simulator.js.map +1 -0
  197. package/dist/matter/sign-in-form/sign-in-form.d.ts +79 -0
  198. package/dist/matter/sign-in-form/sign-in-form.js +226 -0
  199. package/dist/matter/sign-in-form/sign-in-form.js.map +1 -0
  200. package/dist/matter/variant-selector/variant-selector.d.ts +183 -0
  201. package/dist/matter/variant-selector/variant-selector.js +840 -0
  202. package/dist/matter/variant-selector/variant-selector.js.map +1 -0
  203. package/dist/message-locales.json +7 -0
  204. package/dist/particles/access-code-field/access-code-field.d.ts +33 -0
  205. package/dist/particles/access-code-field/access-code-field.js +95 -0
  206. package/dist/particles/access-code-field/access-code-field.js.map +1 -0
  207. package/dist/particles/accordion/accordion.d.ts +45 -0
  208. package/dist/particles/accordion/accordion.js +156 -0
  209. package/dist/particles/accordion/accordion.js.map +1 -0
  210. package/dist/particles/address-summary/address-summary.d.ts +50 -0
  211. package/dist/particles/address-summary/address-summary.js +129 -0
  212. package/dist/particles/address-summary/address-summary.js.map +1 -0
  213. package/dist/particles/badge/badge.d.ts +10 -0
  214. package/dist/particles/badge/badge.js +27 -0
  215. package/dist/particles/badge/badge.js.map +1 -0
  216. package/dist/particles/button/button.d.ts +18 -0
  217. package/dist/particles/button/button.js +37 -0
  218. package/dist/particles/button/button.js.map +1 -0
  219. package/dist/particles/carousel/carousel.d.ts +60 -0
  220. package/dist/particles/carousel/carousel.js +335 -0
  221. package/dist/particles/carousel/carousel.js.map +1 -0
  222. package/dist/particles/checkbox/checkbox.d.ts +40 -0
  223. package/dist/particles/checkbox/checkbox.js +82 -0
  224. package/dist/particles/checkbox/checkbox.js.map +1 -0
  225. package/dist/particles/container/container.d.ts +20 -0
  226. package/dist/particles/container/container.js +36 -0
  227. package/dist/particles/container/container.js.map +1 -0
  228. package/dist/particles/dialog/dialog.d.ts +54 -0
  229. package/dist/particles/dialog/dialog.js +192 -0
  230. package/dist/particles/dialog/dialog.js.map +1 -0
  231. package/dist/particles/document-field/document-field.d.ts +61 -0
  232. package/dist/particles/document-field/document-field.js +146 -0
  233. package/dist/particles/document-field/document-field.js.map +1 -0
  234. package/dist/particles/drawer/drawer.d.ts +52 -0
  235. package/dist/particles/drawer/drawer.js +183 -0
  236. package/dist/particles/drawer/drawer.js.map +1 -0
  237. package/dist/particles/email-field/email-field.d.ts +37 -0
  238. package/dist/particles/email-field/email-field.js +106 -0
  239. package/dist/particles/email-field/email-field.js.map +1 -0
  240. package/dist/particles/field/field.d.ts +50 -0
  241. package/dist/particles/field/field.js +133 -0
  242. package/dist/particles/field/field.js.map +1 -0
  243. package/dist/particles/fieldset/fieldset.d.ts +16 -0
  244. package/dist/particles/fieldset/fieldset.js +52 -0
  245. package/dist/particles/fieldset/fieldset.js.map +1 -0
  246. package/dist/particles/footer-copyright/footer-copyright.d.ts +32 -0
  247. package/dist/particles/footer-copyright/footer-copyright.js +50 -0
  248. package/dist/particles/footer-copyright/footer-copyright.js.map +1 -0
  249. package/dist/particles/footer-link-group/footer-link-group.d.ts +66 -0
  250. package/dist/particles/footer-link-group/footer-link-group.js +154 -0
  251. package/dist/particles/footer-link-group/footer-link-group.js.map +1 -0
  252. package/dist/particles/footer-root/footer-root.d.ts +21 -0
  253. package/dist/particles/footer-root/footer-root.js +38 -0
  254. package/dist/particles/footer-root/footer-root.js.map +1 -0
  255. package/dist/particles/footer-social/footer-social.d.ts +79 -0
  256. package/dist/particles/footer-social/footer-social.js +176 -0
  257. package/dist/particles/footer-social/footer-social.js.map +1 -0
  258. package/dist/particles/gallery/gallery.d.ts +181 -0
  259. package/dist/particles/gallery/gallery.js +920 -0
  260. package/dist/particles/gallery/gallery.js.map +1 -0
  261. package/dist/particles/header-root/header-root.d.ts +21 -0
  262. package/dist/particles/header-root/header-root.js +38 -0
  263. package/dist/particles/header-root/header-root.js.map +1 -0
  264. package/dist/particles/icon/icon.d.ts +22 -0
  265. package/dist/particles/icon/icon.js +48 -0
  266. package/dist/particles/icon/icon.js.map +1 -0
  267. package/dist/particles/image/image.d.ts +13 -0
  268. package/dist/particles/image/image.js +59 -0
  269. package/dist/particles/image/image.js.map +1 -0
  270. package/dist/particles/incentives/incentives.d.ts +85 -0
  271. package/dist/particles/incentives/incentives.js +200 -0
  272. package/dist/particles/incentives/incentives.js.map +1 -0
  273. package/dist/particles/input/input.d.ts +9 -0
  274. package/dist/particles/input/input.js +28 -0
  275. package/dist/particles/input/input.js.map +1 -0
  276. package/dist/particles/logo/logo.d.ts +55 -0
  277. package/dist/particles/logo/logo.js +96 -0
  278. package/dist/particles/logo/logo.js.map +1 -0
  279. package/dist/particles/menu/menu.d.ts +103 -0
  280. package/dist/particles/menu/menu.js +409 -0
  281. package/dist/particles/menu/menu.js.map +1 -0
  282. package/dist/particles/menubar/menubar.d.ts +18 -0
  283. package/dist/particles/menubar/menubar.js +42 -0
  284. package/dist/particles/menubar/menubar.js.map +1 -0
  285. package/dist/particles/meter/meter.d.ts +36 -0
  286. package/dist/particles/meter/meter.js +132 -0
  287. package/dist/particles/meter/meter.js.map +1 -0
  288. package/dist/particles/navigation-link/navigation-link.d.ts +43 -0
  289. package/dist/particles/navigation-link/navigation-link.js +82 -0
  290. package/dist/particles/navigation-link/navigation-link.js.map +1 -0
  291. package/dist/particles/navigation-link-list/navigation-link-list.d.ts +59 -0
  292. package/dist/particles/navigation-link-list/navigation-link-list.js +103 -0
  293. package/dist/particles/navigation-link-list/navigation-link-list.js.map +1 -0
  294. package/dist/particles/navigation-menu/navigation-menu.d.ts +78 -0
  295. package/dist/particles/navigation-menu/navigation-menu.js +295 -0
  296. package/dist/particles/navigation-menu/navigation-menu.js.map +1 -0
  297. package/dist/particles/number-field/number-field.d.ts +46 -0
  298. package/dist/particles/number-field/number-field.js +169 -0
  299. package/dist/particles/number-field/number-field.js.map +1 -0
  300. package/dist/particles/password-field/password-field.d.ts +31 -0
  301. package/dist/particles/password-field/password-field.js +109 -0
  302. package/dist/particles/password-field/password-field.js.map +1 -0
  303. package/dist/particles/payment-methods/payment-methods.d.ts +72 -0
  304. package/dist/particles/payment-methods/payment-methods.js +151 -0
  305. package/dist/particles/payment-methods/payment-methods.js.map +1 -0
  306. package/dist/particles/phone-field/phone-field.d.ts +67 -0
  307. package/dist/particles/phone-field/phone-field.js +250 -0
  308. package/dist/particles/phone-field/phone-field.js.map +1 -0
  309. package/dist/particles/popover/popover.d.ts +68 -0
  310. package/dist/particles/popover/popover.js +284 -0
  311. package/dist/particles/popover/popover.js.map +1 -0
  312. package/dist/particles/postal-code-field/postal-code-field.d.ts +75 -0
  313. package/dist/particles/postal-code-field/postal-code-field.js +169 -0
  314. package/dist/particles/postal-code-field/postal-code-field.js.map +1 -0
  315. package/dist/particles/promotion/promotion.d.ts +46 -0
  316. package/dist/particles/promotion/promotion.js +78 -0
  317. package/dist/particles/promotion/promotion.js.map +1 -0
  318. package/dist/particles/quantity-selector/quantity-selector.d.ts +30 -0
  319. package/dist/particles/quantity-selector/quantity-selector.js +116 -0
  320. package/dist/particles/quantity-selector/quantity-selector.js.map +1 -0
  321. package/dist/particles/radio/radio.d.ts +36 -0
  322. package/dist/particles/radio/radio.js +76 -0
  323. package/dist/particles/radio/radio.js.map +1 -0
  324. package/dist/particles/scroll-area/scroll-area.d.ts +36 -0
  325. package/dist/particles/scroll-area/scroll-area.js +145 -0
  326. package/dist/particles/scroll-area/scroll-area.js.map +1 -0
  327. package/dist/particles/select/select.d.ts +125 -0
  328. package/dist/particles/select/select.js +478 -0
  329. package/dist/particles/select/select.js.map +1 -0
  330. package/dist/particles/separator/separator.d.ts +12 -0
  331. package/dist/particles/separator/separator.js +33 -0
  332. package/dist/particles/separator/separator.js.map +1 -0
  333. package/dist/particles/shared/input-mask.d.ts +5 -0
  334. package/dist/particles/shared/input-mask.js +58 -0
  335. package/dist/particles/shared/input-mask.js.map +1 -0
  336. package/dist/particles/spinner/spinner.d.ts +13 -0
  337. package/dist/particles/spinner/spinner.js +31 -0
  338. package/dist/particles/spinner/spinner.js.map +1 -0
  339. package/dist/particles/switch/switch.d.ts +27 -0
  340. package/dist/particles/switch/switch.js +59 -0
  341. package/dist/particles/switch/switch.js.map +1 -0
  342. package/dist/particles/tabs/tabs.d.ts +45 -0
  343. package/dist/particles/tabs/tabs.js +164 -0
  344. package/dist/particles/tabs/tabs.js.map +1 -0
  345. package/dist/particles/text/text.d.ts +24 -0
  346. package/dist/particles/text/text.js +40 -0
  347. package/dist/particles/text/text.js.map +1 -0
  348. package/dist/particles/toast/toast.d.ts +83 -0
  349. package/dist/particles/toast/toast.js +194 -0
  350. package/dist/particles/toast/toast.js.map +1 -0
  351. package/dist/particles/toggle/toggle.d.ts +26 -0
  352. package/dist/particles/toggle/toggle.js +61 -0
  353. package/dist/particles/toggle/toggle.js.map +1 -0
  354. package/dist/particles/tooltip/tooltip.d.ts +61 -0
  355. package/dist/particles/tooltip/tooltip.js +240 -0
  356. package/dist/particles/tooltip/tooltip.js.map +1 -0
  357. package/dist/schema.graphql +2953 -0
  358. package/dist/sdk/actions/cart-action-provider.d.ts +19 -0
  359. package/dist/sdk/actions/cart-action-provider.js +23 -0
  360. package/dist/sdk/actions/cart-action-provider.js.map +1 -0
  361. package/dist/sdk/actions/identity-action-provider.d.ts +15 -0
  362. package/dist/sdk/actions/identity-action-provider.js +19 -0
  363. package/dist/sdk/actions/identity-action-provider.js.map +1 -0
  364. package/dist/sdk/actions/index.d.ts +7 -0
  365. package/dist/sdk/actions/index.js +6 -0
  366. package/dist/sdk/actions/inject-actions.d.ts +14 -0
  367. package/dist/sdk/actions/inject-actions.js +36 -0
  368. package/dist/sdk/actions/inject-actions.js.map +1 -0
  369. package/dist/sdk/actions/region-action-provider.d.ts +15 -0
  370. package/dist/sdk/actions/region-action-provider.js +19 -0
  371. package/dist/sdk/actions/region-action-provider.js.map +1 -0
  372. package/dist/sdk/actions/session-action-provider.d.ts +15 -0
  373. package/dist/sdk/actions/session-action-provider.js +19 -0
  374. package/dist/sdk/actions/session-action-provider.js.map +1 -0
  375. package/dist/sdk/actions/shipping-action-provider.d.ts +15 -0
  376. package/dist/sdk/actions/shipping-action-provider.js +19 -0
  377. package/dist/sdk/actions/shipping-action-provider.js.map +1 -0
  378. package/dist/sdk/actions/types.d.ts +21 -0
  379. package/dist/sdk/cache/storefront-cache.js +35 -0
  380. package/dist/sdk/cache/storefront-cache.js.map +1 -0
  381. package/dist/sdk/cart/operations.d.ts +31 -0
  382. package/dist/sdk/cart/operations.js +215 -0
  383. package/dist/sdk/cart/operations.js.map +1 -0
  384. package/dist/sdk/cart/optimistic.d.ts +24 -0
  385. package/dist/sdk/cart/optimistic.js +164 -0
  386. package/dist/sdk/cart/optimistic.js.map +1 -0
  387. package/dist/sdk/cart/use-cart-actions.d.ts +56 -0
  388. package/dist/sdk/cart/use-cart-actions.js +348 -0
  389. package/dist/sdk/cart/use-cart-actions.js.map +1 -0
  390. package/dist/sdk/cart/use-cart-validate-on-open.js +50 -0
  391. package/dist/sdk/cart/use-cart-validate-on-open.js.map +1 -0
  392. package/dist/sdk/cart/write-gate.js +54 -0
  393. package/dist/sdk/cart/write-gate.js.map +1 -0
  394. package/dist/sdk/client/assert-api-url.js +20 -0
  395. package/dist/sdk/client/assert-api-url.js.map +1 -0
  396. package/dist/sdk/client/create-client.d.ts +23 -0
  397. package/dist/sdk/client/create-client.js +46 -0
  398. package/dist/sdk/client/create-client.js.map +1 -0
  399. package/dist/sdk/client/fetch-page-data.d.ts +39 -0
  400. package/dist/sdk/client/fetch-page-data.js +33 -0
  401. package/dist/sdk/client/fetch-page-data.js.map +1 -0
  402. package/dist/sdk/client/register-preload-query.d.ts +24 -0
  403. package/dist/sdk/client/register-preload-query.js +33 -0
  404. package/dist/sdk/client/register-preload-query.js.map +1 -0
  405. package/dist/sdk/content/create-content-runtime.d.ts +68 -0
  406. package/dist/sdk/content/create-content-runtime.js +503 -0
  407. package/dist/sdk/content/create-content-runtime.js.map +1 -0
  408. package/dist/sdk/context/headers.d.ts +15 -0
  409. package/dist/sdk/context/headers.js +21 -0
  410. package/dist/sdk/context/headers.js.map +1 -0
  411. package/dist/sdk/context/storefront-context.d.ts +11 -0
  412. package/dist/sdk/context/storefront-context.js +29 -0
  413. package/dist/sdk/context/storefront-context.js.map +1 -0
  414. package/dist/sdk/data/data-override-context.d.ts +12 -0
  415. package/dist/sdk/data/data-override-context.js +19 -0
  416. package/dist/sdk/data/data-override-context.js.map +1 -0
  417. package/dist/sdk/data/entity-subscriber.js +28 -0
  418. package/dist/sdk/data/entity-subscriber.js.map +1 -0
  419. package/dist/sdk/data/hot-data-provider.d.ts +19 -0
  420. package/dist/sdk/data/hot-data-provider.js +33 -0
  421. package/dist/sdk/data/hot-data-provider.js.map +1 -0
  422. package/dist/sdk/data/index.d.ts +8 -0
  423. package/dist/sdk/data/index.js +8 -0
  424. package/dist/sdk/data/list-item-ref-context.d.ts +20 -0
  425. package/dist/sdk/data/list-item-ref-context.js +11 -0
  426. package/dist/sdk/data/list-item-ref-context.js.map +1 -0
  427. package/dist/sdk/data/multiple-reactive-data-provider.d.ts +32 -0
  428. package/dist/sdk/data/multiple-reactive-data-provider.js +20 -0
  429. package/dist/sdk/data/multiple-reactive-data-provider.js.map +1 -0
  430. package/dist/sdk/data/page-reactive-data-root.d.ts +53 -0
  431. package/dist/sdk/data/page-reactive-data-root.js +153 -0
  432. package/dist/sdk/data/page-reactive-data-root.js.map +1 -0
  433. package/dist/sdk/data/reactive-data-provider.d.ts +25 -0
  434. package/dist/sdk/data/reactive-data-provider.js +24 -0
  435. package/dist/sdk/data/reactive-data-provider.js.map +1 -0
  436. package/dist/sdk/data/reactive-list-item-data-provider.d.ts +26 -0
  437. package/dist/sdk/data/reactive-list-item-data-provider.js +42 -0
  438. package/dist/sdk/data/reactive-list-item-data-provider.js.map +1 -0
  439. package/dist/sdk/data/use-reactive-entity.js +40 -0
  440. package/dist/sdk/data/use-reactive-entity.js.map +1 -0
  441. package/dist/sdk/format/client.d.ts +12 -0
  442. package/dist/sdk/format/client.js +20 -0
  443. package/dist/sdk/format/client.js.map +1 -0
  444. package/dist/sdk/format/formatters.d.ts +32 -0
  445. package/dist/sdk/format/formatters.js +45 -0
  446. package/dist/sdk/format/formatters.js.map +1 -0
  447. package/dist/sdk/generated/fragment-types.js +23 -0
  448. package/dist/sdk/generated/fragment-types.js.map +1 -0
  449. package/dist/sdk/generated/gql.js +51 -0
  450. package/dist/sdk/generated/gql.js.map +1 -0
  451. package/dist/sdk/generated/graphql.d.ts +622 -0
  452. package/dist/sdk/generated/graphql.js +11917 -0
  453. package/dist/sdk/generated/graphql.js.map +1 -0
  454. package/dist/sdk/graphql-tag.d.ts +10 -0
  455. package/dist/sdk/graphql-tag.js +21 -0
  456. package/dist/sdk/graphql-tag.js.map +1 -0
  457. package/dist/sdk/i18n/client.d.ts +4 -0
  458. package/dist/sdk/i18n/client.js +4 -0
  459. package/dist/sdk/i18n/locales.d.ts +8 -0
  460. package/dist/sdk/i18n/locales.js +57 -0
  461. package/dist/sdk/i18n/locales.js.map +1 -0
  462. package/dist/sdk/i18n/messages/en-US.js +24 -0
  463. package/dist/sdk/i18n/messages/en-US.js.map +1 -0
  464. package/dist/sdk/i18n/messages/en-US.json +19 -0
  465. package/dist/sdk/i18n/messages/en-US.json.d.ts +23 -0
  466. package/dist/sdk/i18n/messages/es-ES.js +24 -0
  467. package/dist/sdk/i18n/messages/es-ES.js.map +1 -0
  468. package/dist/sdk/i18n/messages/es-ES.json +19 -0
  469. package/dist/sdk/i18n/messages/pt-BR.js +24 -0
  470. package/dist/sdk/i18n/messages/pt-BR.js.map +1 -0
  471. package/dist/sdk/i18n/messages/pt-BR.json +19 -0
  472. package/dist/sdk/i18n/provider.d.ts +1 -0
  473. package/dist/sdk/i18n/provider.js +30 -0
  474. package/dist/sdk/i18n/provider.js.map +1 -0
  475. package/dist/sdk/i18n/server.d.ts +28 -0
  476. package/dist/sdk/i18n/server.js +59 -0
  477. package/dist/sdk/i18n/server.js.map +1 -0
  478. package/dist/sdk/identity/operations.d.ts +34 -0
  479. package/dist/sdk/identity/operations.js +78 -0
  480. package/dist/sdk/identity/operations.js.map +1 -0
  481. package/dist/sdk/identity/use-identity-actions.d.ts +62 -0
  482. package/dist/sdk/identity/use-identity-actions.js +180 -0
  483. package/dist/sdk/identity/use-identity-actions.js.map +1 -0
  484. package/dist/sdk/provider/index.d.ts +2 -0
  485. package/dist/sdk/provider/index.js +2 -0
  486. package/dist/sdk/provider/storefront-provider.d.ts +32 -0
  487. package/dist/sdk/provider/storefront-provider.js +111 -0
  488. package/dist/sdk/provider/storefront-provider.js.map +1 -0
  489. package/dist/sdk/region/operations.d.ts +6 -0
  490. package/dist/sdk/region/region-operations.d.ts +30 -0
  491. package/dist/sdk/region/region-operations.js +23 -0
  492. package/dist/sdk/region/region-operations.js.map +1 -0
  493. package/dist/sdk/region/use-region-actions.d.ts +23 -0
  494. package/dist/sdk/region/use-region-actions.js +66 -0
  495. package/dist/sdk/region/use-region-actions.js.map +1 -0
  496. package/dist/sdk/seller.js +11 -0
  497. package/dist/sdk/seller.js.map +1 -0
  498. package/dist/sdk/session/auth-operations.d.ts +47 -0
  499. package/dist/sdk/session/auth-operations.js +79 -0
  500. package/dist/sdk/session/auth-operations.js.map +1 -0
  501. package/dist/sdk/session/operations.d.ts +6 -0
  502. package/dist/sdk/session/use-session-actions.d.ts +27 -0
  503. package/dist/sdk/session/use-session-actions.js +126 -0
  504. package/dist/sdk/session/use-session-actions.js.map +1 -0
  505. package/dist/sdk/shipping/cart-operations.d.ts +3 -0
  506. package/dist/sdk/shipping/cart-operations.js +33 -0
  507. package/dist/sdk/shipping/cart-operations.js.map +1 -0
  508. package/dist/sdk/shipping/operations.d.ts +3 -0
  509. package/dist/sdk/shipping/operations.js +33 -0
  510. package/dist/sdk/shipping/operations.js.map +1 -0
  511. package/dist/sdk/shipping/option-select-operations.d.ts +24 -0
  512. package/dist/sdk/shipping/option-select-operations.js +45 -0
  513. package/dist/sdk/shipping/option-select-operations.js.map +1 -0
  514. package/dist/sdk/shipping/request-timeout.js +41 -0
  515. package/dist/sdk/shipping/request-timeout.js.map +1 -0
  516. package/dist/sdk/shipping/shipping-operations.d.ts +38 -0
  517. package/dist/sdk/shipping/shipping-operations.js +77 -0
  518. package/dist/sdk/shipping/shipping-operations.js.map +1 -0
  519. package/dist/sdk/shipping/use-cart-shipping-simulation.d.ts +7 -0
  520. package/dist/sdk/shipping/use-cart-shipping-simulation.js +72 -0
  521. package/dist/sdk/shipping/use-cart-shipping-simulation.js.map +1 -0
  522. package/dist/sdk/shipping/use-shipping-actions.d.ts +27 -0
  523. package/dist/sdk/shipping/use-shipping-actions.js +113 -0
  524. package/dist/sdk/shipping/use-shipping-actions.js.map +1 -0
  525. package/dist/sdk/shipping/use-shipping-simulation.d.ts +7 -0
  526. package/dist/sdk/shipping/use-shipping-simulation.js +72 -0
  527. package/dist/sdk/shipping/use-shipping-simulation.js.map +1 -0
  528. package/dist/sdk/state/cart.d.ts +42 -0
  529. package/dist/sdk/state/cart.js +64 -0
  530. package/dist/sdk/state/cart.js.map +1 -0
  531. package/dist/sdk/state/index.js +3 -0
  532. package/dist/sdk/state/variant-selector.d.ts +17 -0
  533. package/dist/sdk/state/variant-selector.js +14 -0
  534. package/dist/sdk/state/variant-selector.js.map +1 -0
  535. package/dist/utils/safe-href.js +63 -0
  536. package/dist/utils/safe-href.js.map +1 -0
  537. package/package.json +84 -0
  538. package/src/styles/tailwind.css +32 -0
@@ -0,0 +1,2953 @@
1
+ # GENERATED by src/schema/emit.ts (pnpm run schema:emit) — do not edit by hand.
2
+ # core version: 0.0.1
3
+ schema {
4
+ query: Query
5
+ mutation: Mutation
6
+ }
7
+
8
+ """
9
+ Declares an HTTP cache policy for a type, field, or interface. Apollo Server
10
+ aggregates every hint resolved by a query and emits a single `Cache-Control`
11
+ header whose `max-age` is the minimum across hints and whose scope is the most
12
+ restrictive (PRIVATE wins over PUBLIC). Mutations and error responses ignore
13
+ these hints and always carry `Cache-Control: no-store`.
14
+ """
15
+ directive @cacheControl(
16
+ """Longest time (in seconds) this data may live in a cache."""
17
+ maxAge: Int
18
+ """
19
+ Whether shared caches (CDN, proxy) may store the response. Defaults to
20
+ PUBLIC when another field or type sets a scope and nothing overrides it.
21
+ """
22
+ scope: CacheControlScope
23
+ """
24
+ When true, this field inherits its `maxAge` from the parent field rather
25
+ than contributing its own hint. Useful for wrapper/connection types.
26
+ """
27
+ inheritMaxAge: Boolean
28
+ ) on OBJECT | FIELD_DEFINITION | INTERFACE
29
+
30
+ """Visibility scope for an HTTP cache entry."""
31
+ enum CacheControlScope {
32
+ """
33
+ The response may be stored by shared caches (CDN, proxy) and reused
34
+ across users.
35
+ """
36
+ PUBLIC
37
+ """
38
+ The response may only be stored by single-user caches (browser, service
39
+ worker). Shared caches must not store it.
40
+ """
41
+ PRIVATE
42
+ }
43
+
44
+ """
45
+ An [RFC 3339](https://datatracker.ietf.org/doc/html/rfc3339) encoded UTC datetime.
46
+ """
47
+ scalar DateTime
48
+
49
+ """
50
+ An [RFC 3986](https://datatracker.ietf.org/doc/html/rfc3986) encoded URI.
51
+ """
52
+ scalar URI
53
+
54
+ """A string containing raw HTML markup."""
55
+ scalar HTML
56
+
57
+ """
58
+ An ISO 4217 currency amount represented as a decimal string (e.g. "29.99").
59
+ """
60
+ scalar Decimal
61
+
62
+ """
63
+ A [BCP 47](https://tools.ietf.org/html/bcp47) language tag (e.g. "en-US").
64
+ """
65
+ scalar Locale
66
+
67
+ """An opaque cursor used for Relay-style pagination."""
68
+ scalar Cursor
69
+
70
+ """
71
+ The Relay `Node` interface. Every entity in the graph implements this so
72
+ the client can refetch any object with a single `node(id: ID!)` query.
73
+ """
74
+ interface Node {
75
+ """Globally unique identifier. Base64 of `entityType:rawId`."""
76
+ id: ID!
77
+ }
78
+
79
+ """Metadata about the current page in a Relay connection."""
80
+ type PageInfo {
81
+ """Whether more pages exist after the current page."""
82
+ hasNextPage: Boolean!
83
+ """Whether more pages exist before the current page."""
84
+ hasPreviousPage: Boolean!
85
+ """Cursor of the first edge in the current page."""
86
+ startCursor: Cursor
87
+ """Cursor of the last edge in the current page."""
88
+ endCursor: Cursor
89
+ }
90
+
91
+ """Sort direction for orderBy arguments."""
92
+ enum SortDirection {
93
+ """Ascending order."""
94
+ ASC
95
+ """Descending order."""
96
+ DESC
97
+ }
98
+
99
+ """Represents a monetary amount with its currency."""
100
+ type Money {
101
+ """Decimal amount (e.g. "49.99")."""
102
+ amount: Decimal!
103
+ """ISO 4217 currency code (e.g. "USD", "BRL")."""
104
+ currencyCode: CurrencyCode!
105
+ }
106
+
107
+ """A price range, useful for showing "from – to" on product cards."""
108
+ type PriceRange {
109
+ """Lowest price across all variants."""
110
+ min: Money!
111
+ """Highest price across all variants."""
112
+ max: Money!
113
+ }
114
+
115
+ """ISO 4217 currency codes. Extend as needed."""
116
+ enum CurrencyCode {
117
+ """United States Dollar."""
118
+ USD
119
+ """Euro."""
120
+ EUR
121
+ """British Pound Sterling."""
122
+ GBP
123
+ """Brazilian Real."""
124
+ BRL
125
+ """Argentine Peso."""
126
+ ARS
127
+ """Chilean Peso."""
128
+ CLP
129
+ """Colombian Peso."""
130
+ COP
131
+ """Mexican Peso."""
132
+ MXN
133
+ """Peruvian Sol."""
134
+ PEN
135
+ """Japanese Yen."""
136
+ JPY
137
+ }
138
+
139
+ """An image resource associated with a product variant or other entity."""
140
+ type Image {
141
+ """Source URL of the image."""
142
+ url: URI!
143
+ """Alt text for accessibility."""
144
+ altText: String
145
+ }
146
+
147
+ """A video resource associated with a product."""
148
+ type Video {
149
+ """Playback URL."""
150
+ url: URI!
151
+ """Alt text for accessibility."""
152
+ altText: String
153
+ """Preview / poster image."""
154
+ previewImage: Image
155
+ }
156
+
157
+ """Any media attached to a product — image or video."""
158
+ union Media = Image | Video
159
+
160
+ """Search engine optimization metadata for any displayable entity."""
161
+ type SEO {
162
+ """Page title (`<title>` tag)."""
163
+ title: String
164
+ """Meta description."""
165
+ description: String
166
+ }
167
+
168
+ """Root query type for the storefront API."""
169
+ type Query {
170
+ """
171
+ Fetch any entity by its global ID.
172
+ Clients use this for refetching or cache normalization.
173
+ """
174
+ node(
175
+ """The globally unique ID."""
176
+ id: ID!
177
+ ): Node
178
+ """Fetch multiple entities by their global IDs."""
179
+ nodes(
180
+ """A list of globally unique IDs."""
181
+ ids: [ID!]!
182
+ ): [Node]!
183
+ }
184
+
185
+ extend type Query {
186
+ """Look up a single product by global ID."""
187
+ product(
188
+ """Global product ID."""
189
+ id: ID!
190
+ ): Product
191
+ """Look up a single product by its URL slug."""
192
+ productBySlug(
193
+ """URL-friendly handle (e.g. \"nike-zoom-janoski-red\")."""
194
+ slug: String!
195
+ ): Product
196
+ """Paginated, filterable list of products."""
197
+ products(
198
+ """Returns the first N elements."""
199
+ first: Int
200
+ """Returns elements after this cursor."""
201
+ after: Cursor
202
+ """Returns the last N elements."""
203
+ last: Int
204
+ """Returns elements before this cursor."""
205
+ before: Cursor
206
+ """Sorting criteria."""
207
+ orderBy: ProductSortingInput
208
+ """Filter criteria."""
209
+ filter: ProductsFilterInput
210
+ ): ProductsConnection!
211
+ """
212
+ Full-text product search with facets and filters.
213
+ Returns the same connection shape but is backed by the search engine
214
+ rather than the catalog database.
215
+ """
216
+ productSearch(
217
+ """Search query string."""
218
+ query: String!
219
+ """Returns the first N elements."""
220
+ first: Int
221
+ """Returns elements after this cursor."""
222
+ after: Cursor
223
+ """Returns the last N elements."""
224
+ last: Int
225
+ """Returns elements before this cursor."""
226
+ before: Cursor
227
+ """Sorting criteria."""
228
+ orderBy: ProductSortingInput
229
+ """Filter criteria."""
230
+ filter: ProductsFilterInput
231
+ ): ProductSearchResult!
232
+ """
233
+ Product recommendations based on a seed product (frequently bought
234
+ together, similar items, etc.).
235
+ """
236
+ productRecommendations(
237
+ """URL slug of the product to base recommendations on."""
238
+ slug: String!
239
+ """The recommendation strategy to use."""
240
+ intent: RecommendationIntent
241
+ """Maximum number of recommendations."""
242
+ first: Int = 10
243
+ ): [Product!]!
244
+ """Look up a single category by global ID."""
245
+ category(
246
+ """Global category ID."""
247
+ id: ID!
248
+ ): Category
249
+ """Look up a category by its URL slug."""
250
+ categoryBySlug(
251
+ """URL-friendly slug."""
252
+ slug: String!
253
+ ): Category
254
+ """
255
+ The full category tree starting from root departments.
256
+ Accepts a `maxDepth` to limit tree traversal (default: all levels).
257
+ """
258
+ categoryTree(
259
+ """Maximum depth of the tree to return. Maps to VTEX `categoryLevels`."""
260
+ maxDepth: Int
261
+ ): [Category!]!
262
+ """Paginated flat list of categories."""
263
+ categories(
264
+ """Returns the first N elements."""
265
+ first: Int
266
+ """Returns elements after this cursor."""
267
+ after: Cursor
268
+ """Returns the last N elements."""
269
+ last: Int
270
+ """Returns elements before this cursor."""
271
+ before: Cursor
272
+ """Sorting criteria."""
273
+ orderBy: CategorySortingInput
274
+ ): CategoriesConnection!
275
+ """Look up a single brand by global ID."""
276
+ brand(
277
+ """Global brand ID."""
278
+ id: ID!
279
+ ): Brand
280
+ """
281
+ All brands available in the store, derived from the search index.
282
+ Returns brands with their product counts.
283
+ """
284
+ brands(
285
+ """Returns the first N elements."""
286
+ first: Int
287
+ """Returns elements after this cursor."""
288
+ after: Cursor
289
+ """Returns the last N elements."""
290
+ last: Int
291
+ """Returns elements before this cursor."""
292
+ before: Cursor
293
+ ): BrandsConnection!
294
+ """Look up a single sales channel by global ID."""
295
+ salesChannel(
296
+ """Global sales channel ID."""
297
+ id: ID!
298
+ ): SalesChannel
299
+ """
300
+ Autocomplete suggestions for a partial search query.
301
+ Returns suggested terms with estimated result counts and facet attributes.
302
+ """
303
+ autocompleteSuggestions(
304
+ """Partial search query (e.g. \"choc\")."""
305
+ query: String!
306
+ ): [AutocompleteSuggestion!]!
307
+ """The most popular search terms in the last 14 days."""
308
+ topSearches: [TrendingSearch!]!
309
+ """
310
+ Spelling correction for a potentially misspelled search query.
311
+ Returns null if no correction is available.
312
+ """
313
+ searchCorrection(
314
+ """The potentially misspelled query."""
315
+ query: String!
316
+ ): SearchCorrection
317
+ }
318
+
319
+ extend type Query {
320
+ """
321
+ Resolve the active cart from the request context (x-order-form-id header,
322
+ then cookie). When no cart context is present, a new cart is created and
323
+ the x-order-form-id cookie is set on the response.
324
+ """
325
+ cart: Cart!
326
+ }
327
+
328
+ extend type Query {
329
+ """
330
+ Simulate available shipping options for a variant on a product detail page.
331
+ Returns delivery options with estimated times and prices for the given
332
+ postal code and item.
333
+ """
334
+ shippingSimulation(
335
+ """Simulation input: destination, SKU, quantity, and seller."""
336
+ input: ShippingSimulateInput!
337
+ ): ShippingSimulationPayload!
338
+ """
339
+ Simulate shipping options for the entire active cart. Reads the cart from the
340
+ x-order-form-id context and simulates all of its items against the
341
+ destination, returning the options common to every item with prices summed
342
+ across items. Never mints a cart: absent context returns a MISSING_CART_CONTEXT
343
+ userError.
344
+ """
345
+ cartShippingSimulation(
346
+ """Simulation input: destination only. Items come from the active cart."""
347
+ input: CartShippingSimulateInput!
348
+ ): CartShippingSimulationPayload!
349
+ }
350
+
351
+ extend type Query {
352
+ """
353
+ The shopper's profile for the active cart, resolved from the same order form
354
+ as `cart`. The entity always resolves; its fields are null when unset.
355
+ """
356
+ clientProfile: ClientProfile!
357
+ """
358
+ The shopper's preferences for the active cart, resolved from the same order
359
+ form as `cart`. The entity always resolves; its fields are null when unset.
360
+ """
361
+ clientPreferences: ClientPreferences!
362
+ }
363
+
364
+ extend type Query {
365
+ """
366
+ The cart's shipping state. Projected from the same order form as Query.cart.
367
+ """
368
+ shipping: Shipping!
369
+ """
370
+ Resolve the shopper's session state from the active order form (x-order-form-id
371
+ header, then cookie). Projects from the same order form fetch as `cart`.
372
+ """
373
+ session: Session!
374
+ }
375
+
376
+ extend type Query {
377
+ """Which authentication methods this account enables."""
378
+ sessionAuthProviders: SessionAuthProviders!
379
+ }
380
+
381
+ extend type Query {
382
+ """
383
+ The shopper's active region, or null when none has been set. Takes no
384
+ arguments by design: the postal code travels on the transport.
385
+ """
386
+ region: Region
387
+ }
388
+
389
+ extend type Query {
390
+ """
391
+ The signed-in shopper's own persistent profile. Takes no id — the identity
392
+ comes from the session. Non-null like `cart`/`session`: it always resolves to
393
+ the shopper's entity (a shell with null fields when the record is empty) or
394
+ throws UNAUTHORIZED / UPSTREAM_ERROR (ADR-00007), never returning null.
395
+ """
396
+ customerProfile: CustomerProfile!
397
+ }
398
+
399
+ """
400
+ Root mutation type. Cart and checkout operations are declared via
401
+ `extend type Mutation` in the checkout module.
402
+ """
403
+ type Mutation {
404
+ """
405
+ Exists only so `extend type Mutation` in feature modules is valid for schema
406
+ linters and subgraph composition; not intended for client use.
407
+ """
408
+ inertMutationPlaceholder: Boolean
409
+ """Placeholder field — removed once a real mutation is added via extend."""
410
+ empty: String @deprecated(reason: "Placeholder — will be dropped when the first real mutation is added.")
411
+ }
412
+
413
+ extend type Mutation {
414
+ """
415
+ Add an item to the cart. If the variant already exists in the cart, its
416
+ quantity is increased by the given amount.
417
+ """
418
+ cartItemAdd(
419
+ """Item details to add."""
420
+ input: CartItemAddInput!
421
+ ): CartItemAddPayload!
422
+ """Remove an item from the cart entirely (sets quantity to 0)."""
423
+ cartItemRemove(
424
+ """Item to remove."""
425
+ input: CartItemRemoveInput!
426
+ ): CartItemRemovePayload!
427
+ """
428
+ Remove multiple items from the cart in a single upstream write (each line's
429
+ quantity is set to 0). Tolerant: variants absent from the cart are skipped.
430
+ """
431
+ cartItemsRemove(
432
+ """Items to remove."""
433
+ input: CartItemsRemoveInput!
434
+ ): CartItemsRemovePayload!
435
+ """Increase the quantity of an existing cart item."""
436
+ cartItemQuantityIncrease(
437
+ """Item and quantity details."""
438
+ input: CartItemQuantityIncreaseInput!
439
+ ): CartItemQuantityIncreasePayload!
440
+ """
441
+ Decrease the quantity of an existing cart item.
442
+ If the resulting quantity would be zero or less, the item is removed.
443
+ """
444
+ cartItemQuantityDecrease(
445
+ """Item and quantity details."""
446
+ input: CartItemQuantityDecreaseInput!
447
+ ): CartItemQuantityDecreasePayload!
448
+ """
449
+ Apply a coupon code to the active cart. Appends to the existing set and returns
450
+ the recomputed cart, or typed errors when the code is rejected.
451
+ """
452
+ cartCouponApply(
453
+ """Coupon code to apply."""
454
+ input: CartCouponApplyInput!
455
+ ): CartCouponApplyPayload!
456
+ """
457
+ Remove a coupon code from the active cart. Idempotent when the code is not applied.
458
+ """
459
+ cartCouponRemove(
460
+ """Coupon code to remove."""
461
+ input: CartCouponRemoveInput!
462
+ ): CartCouponRemovePayload!
463
+ """
464
+ Re-check the active cart against the platform and return it with each line's
465
+ availability refreshed. Writes nothing: the cart is re-simulated and only
466
+ `items.variant.availability` is corrected, so a line the platform can no longer
467
+ fulfil comes back flagged for the shopper to remove. Quantities are never
468
+ altered, and totals stay as the cart reported them until that removal
469
+ recomputes them. Takes no arguments: the cart is resolved from the request
470
+ context and is never created.
471
+ """
472
+ cartValidate: CartValidatePayload!
473
+ }
474
+
475
+ extend type Mutation {
476
+ """
477
+ Write the provided profile fields to the active cart's clientProfileData
478
+ attachment. Partial: omitted fields are untouched. Never mints a cart.
479
+ """
480
+ clientProfileUpdate(
481
+ """Profile fields to write."""
482
+ input: ClientProfileUpdateInput!
483
+ ): ClientProfileUpdatePayload!
484
+ """
485
+ Write the provided preference flags to the active cart's clientPreferencesData
486
+ attachment. Partial: omitted flags are untouched. Never mints a cart.
487
+ """
488
+ clientPreferencesUpdate(
489
+ """Preference flags to write."""
490
+ input: ClientPreferencesUpdateInput!
491
+ ): ClientPreferencesUpdatePayload!
492
+ """
493
+ Set the full delivery address (delivery step). Auto-selects the cheapest SLA
494
+ when available. Never mints a cart.
495
+ """
496
+ shippingAddressUpdate(
497
+ """Address details to write."""
498
+ input: ShippingAddressUpdateInput!
499
+ ): ShippingAddressUpdatePayload!
500
+ """
501
+ Select one shipping option for the whole cart. Fans the selection out to
502
+ every item. Never mints a cart.
503
+ """
504
+ shippingOptionSelect(
505
+ """The option to select."""
506
+ input: ShippingOptionSelectInput!
507
+ ): ShippingOptionSelectPayload!
508
+ }
509
+
510
+ extend type Mutation {
511
+ """
512
+ Sign in with email and password. Returns the refreshed session, or typed
513
+ userErrors.
514
+ """
515
+ sessionLoginWithPassword(
516
+ """The email and password to authenticate with."""
517
+ input: SessionPasswordLoginInput!
518
+ ): SessionLoginPayload!
519
+ """
520
+ Request an email access code. Returns an opaque authenticationToken to
521
+ round-trip into validate.
522
+ """
523
+ sessionRequestAccessCode(
524
+ """The email to send the access code to."""
525
+ input: SessionRequestAccessCodeInput!
526
+ ): SessionRequestAccessCodePayload!
527
+ """
528
+ Validate an email access code with its authenticationToken. Returns the
529
+ refreshed session.
530
+ """
531
+ sessionValidateAccessCode(
532
+ """The email, access code, and authenticationToken to validate."""
533
+ input: SessionValidateAccessCodeInput!
534
+ ): SessionLoginPayload!
535
+ """
536
+ Sign out. Clears auth cookies and refreshes the order form to a guest session.
537
+ Idempotent.
538
+ """
539
+ sessionLogout: SessionLoginPayload!
540
+ }
541
+
542
+ extend type Mutation {
543
+ """
544
+ Set the shopper's active region from a postal code. Accepts the value as the
545
+ shopper typed it, including any mask; the server normalizes it and derives the
546
+ city.
547
+ """
548
+ regionUpdate(
549
+ """The postal code to activate, masked or bare."""
550
+ postalCode: String!
551
+ ): RegionUpdatePayload!
552
+ }
553
+
554
+ extend type Mutation {
555
+ """
556
+ Partially update the signed-in shopper's own profile. Upserts: succeeds whether or not a record exists.
557
+ """
558
+ customerProfileUpdate(
559
+ """The fields to write. Provide only what the shopper edited."""
560
+ input: CustomerProfileUpdateInput!
561
+ ): CustomerProfileUpdatePayload!
562
+ }
563
+
564
+ """
565
+ A manufacturer or designer brand.
566
+ Maps to VTEX Brand entity.
567
+ """
568
+ type Brand implements Node @cacheControl(maxAge: 300, scope: PUBLIC) {
569
+ """Globally unique identifier."""
570
+ id: ID!
571
+ """Human-readable brand name."""
572
+ name: String!
573
+ """URL-friendly slug."""
574
+ slug: String!
575
+ """Whether the brand is currently active in the storefront."""
576
+ isActive: Boolean!
577
+ """Brand logo image."""
578
+ logo: Image
579
+ """SEO metadata."""
580
+ seo: SEO
581
+ """Paginated list of products belonging to this brand."""
582
+ products(
583
+ """Returns the first N elements."""
584
+ first: Int
585
+ """Returns elements after this cursor."""
586
+ after: Cursor
587
+ """Returns the last N elements."""
588
+ last: Int
589
+ """Returns elements before this cursor."""
590
+ before: Cursor
591
+ """Sorting criteria."""
592
+ orderBy: ProductSortingInput
593
+ """Filter criteria."""
594
+ filter: ProductsFilterInput
595
+ ): ProductsConnection!
596
+ }
597
+
598
+ """Paginated list of brands."""
599
+ type BrandsConnection {
600
+ """A list of edges."""
601
+ edges: [BrandEdge!]!
602
+ """Information to aid in pagination."""
603
+ pageInfo: PageInfo!
604
+ """Total number of brands matching the query."""
605
+ totalCount: Int!
606
+ }
607
+
608
+ """An edge in a connection."""
609
+ type BrandEdge {
610
+ """A cursor for pagination."""
611
+ cursor: Cursor!
612
+ """The item at the end of the edge."""
613
+ node: Brand!
614
+ }
615
+
616
+ """
617
+ A hierarchical product classification level (department → category → subcategory).
618
+ Maps to VTEX Category entity. The tree structure is modeled via parent/children
619
+ references, allowing arbitrary depth.
620
+ """
621
+ type Category implements Node @cacheControl(maxAge: 300, scope: PUBLIC) {
622
+ """Globally unique identifier."""
623
+ id: ID!
624
+ """Display name of the category."""
625
+ name: String!
626
+ """URL-friendly slug."""
627
+ slug: String!
628
+ """Full materialized path, e.g. \"/clothing/shirts/casual\"."""
629
+ path: String!
630
+ """Zero-indexed depth in the tree (0 = department)."""
631
+ level: Int!
632
+ """Whether this category is currently active."""
633
+ isActive: Boolean!
634
+ """Parent category. Null for top-level departments."""
635
+ parent: Category
636
+ """Direct children of this category."""
637
+ children: [Category!]!
638
+ """SEO metadata."""
639
+ seo: SEO
640
+ """Paginated products within this category."""
641
+ products(
642
+ """Returns the first N elements."""
643
+ first: Int
644
+ """Returns elements after this cursor."""
645
+ after: Cursor
646
+ """Returns the last N elements."""
647
+ last: Int
648
+ """Returns elements before this cursor."""
649
+ before: Cursor
650
+ """Sorting criteria."""
651
+ orderBy: ProductSortingInput
652
+ """Filter criteria."""
653
+ filter: ProductsFilterInput
654
+ ): ProductsConnection!
655
+ """Specification groups relevant to this category."""
656
+ specificationGroups: [SpecificationGroup!]!
657
+ }
658
+
659
+ """Paginated list of categories."""
660
+ type CategoriesConnection {
661
+ """A list of edges."""
662
+ edges: [CategoryEdge!]!
663
+ """Information to aid in pagination."""
664
+ pageInfo: PageInfo!
665
+ """Total number of categories matching the query."""
666
+ totalCount: Int!
667
+ }
668
+
669
+ """An edge in a connection."""
670
+ type CategoryEdge {
671
+ """A cursor for pagination."""
672
+ cursor: Cursor!
673
+ """The item at the end of the edge."""
674
+ node: Category!
675
+ }
676
+
677
+ """
678
+ A group of related specifications that apply to products in a category.
679
+ Maps to VTEX Specification Group.
680
+ """
681
+ type SpecificationGroup {
682
+ """Display name (e.g. \"Physical Attributes\", \"Technical Details\")."""
683
+ name: String!
684
+ """Specifications in this group."""
685
+ specifications: [Specification!]!
686
+ }
687
+
688
+ """
689
+ A product-level or variant-level specification field.
690
+ Maps to VTEX Specification / Specification Field.
691
+ Examples: "Material", "Warranty Period" (product-level);
692
+ "Color", "Size" (variant-level / option axis).
693
+ """
694
+ type Specification {
695
+ """Display label (e.g. \"Material\")."""
696
+ name: String!
697
+ """The assigned values for this specification."""
698
+ values: [String!]!
699
+ """How this spec was captured."""
700
+ fieldType: SpecificationFieldType!
701
+ }
702
+
703
+ """A single breadcrumb entry in the product's navigation trail."""
704
+ type BreadcrumbItem {
705
+ """Human-readable label (e.g. "Electronics", "Smartphones")."""
706
+ name: String!
707
+ """URL path for this breadcrumb level (e.g. "/electronics/smartphones")."""
708
+ url: String!
709
+ """1-based position in the breadcrumb trail."""
710
+ position: Int!
711
+ }
712
+
713
+ """
714
+ Discriminates how a specification value was captured.
715
+ Maps to VTEX FieldType numeric codes.
716
+ """
717
+ enum SpecificationFieldType {
718
+ """Free text."""
719
+ TEXT
720
+ """Multi-line free text."""
721
+ MULTI_LINE_TEXT
722
+ """Single-select dropdown."""
723
+ COMBO
724
+ """Single-select radio."""
725
+ RADIO
726
+ """Multi-select checkbox."""
727
+ CHECKBOX
728
+ """Rich text / HTML."""
729
+ RICH_TEXT
730
+ }
731
+
732
+ """
733
+ A named option axis on a product that differentiates variants.
734
+ Think "Color" or "Size". Each option has a set of possible values.
735
+ Similar to Shopify's ProductOption.
736
+ """
737
+ type ProductOption {
738
+ """Option name (e.g. \"Color\")."""
739
+ name: String!
740
+ """
741
+ All values available across variants (e.g. [\"Red\", \"Blue\", \"Green\"]).
742
+ """
743
+ values: [String!]!
744
+ }
745
+
746
+ """
747
+ A concrete option/value pair selected on a specific variant.
748
+ Example: { name: "Color", value: "Red" }.
749
+ """
750
+ type SelectedOption {
751
+ """Option axis name."""
752
+ name: String!
753
+ """Selected value."""
754
+ value: String!
755
+ }
756
+
757
+ """
758
+ A purchasable unit of a product.
759
+ Maps to VTEX SKU. In commerce, this is the concrete item a customer adds to cart —
760
+ a specific size/color/voltage combination of a product.
761
+ """
762
+ type Variant implements Node {
763
+ """Globally unique identifier."""
764
+ id: ID!
765
+ """Variant display name (e.g. \"Varsity Red — Size 10\")."""
766
+ name: String!
767
+ """Stock Keeping Unit code. Unique merchant-side identifier."""
768
+ sku: String!
769
+ """International Article Number (barcode). Maps to VTEX SKU EAN."""
770
+ ean: String
771
+ """Merchant reference code."""
772
+ referenceId: String
773
+ """Whether this variant is currently available for purchase."""
774
+ availableForSale: Boolean!
775
+ """Current selling price."""
776
+ price: Money!
777
+ """Original list price before promotions. Null when there is no discount."""
778
+ compareAtPrice: Money
779
+ """All option selections that define this variant."""
780
+ selectedOptions: [SelectedOption!]!
781
+ """Variant images. First image is the primary."""
782
+ images(
783
+ """Returns the first N elements."""
784
+ first: Int = 10
785
+ """Returns elements after this cursor."""
786
+ after: Cursor
787
+ """Returns the last N elements."""
788
+ last: Int
789
+ """Returns elements before this cursor."""
790
+ before: Cursor
791
+ ): ImagesConnection!
792
+ """Variant videos."""
793
+ videos: [Video!]!
794
+ """Quantity currently in stock. Null when inventory tracking is disabled."""
795
+ quantityAvailable: Int
796
+ """Unit of sale (e.g. \"un\", \"kg\", \"l\")."""
797
+ measurementUnit: String!
798
+ """
799
+ Multiplier for the measurement unit (e.g. 1.5 means each unit is 1.5 kg).
800
+ """
801
+ unitMultiplier: Float!
802
+ """The parent product."""
803
+ product: Product!
804
+ """Variant-level specifications (e.g. voltage, plug type)."""
805
+ specifications: [Specification!]!
806
+ """Add-on customizations available for this variant."""
807
+ customizations: [Customization!]!
808
+ """Sellers that fulfill this variant. Relevant in marketplace scenarios."""
809
+ sellers: [Seller!]!
810
+ }
811
+
812
+ """Paginated list of variants."""
813
+ type VariantsConnection {
814
+ """A list of edges."""
815
+ edges: [VariantEdge!]!
816
+ """Information to aid in pagination."""
817
+ pageInfo: PageInfo!
818
+ """Total number of variants matching the query."""
819
+ totalCount: Int!
820
+ }
821
+
822
+ """An edge in a connection."""
823
+ type VariantEdge {
824
+ """A cursor for pagination."""
825
+ cursor: Cursor!
826
+ """The item at the end of the edge."""
827
+ node: Variant!
828
+ }
829
+
830
+ """
831
+ A product is a generic item in the catalog (e.g. "Nike Zoom Janoski").
832
+ Each product has one or more variants (SKUs) that are the purchasable units.
833
+ Maps to the VTEX Product entity.
834
+ """
835
+ type Product implements Node @cacheControl(maxAge: 60, scope: PUBLIC) {
836
+ """Globally unique identifier."""
837
+ id: ID!
838
+ """Product title as displayed in the storefront."""
839
+ title: String!
840
+ """URL-friendly handle / slug. Maps to VTEX `LinkId`."""
841
+ slug: String!
842
+ """Full marketing description."""
843
+ description: String
844
+ """Description rendered as HTML."""
845
+ descriptionHtml: HTML
846
+ """Vendor / manufacturer name. Shortcut for brand.name."""
847
+ vendor: String
848
+ """Whether this product is currently active on the storefront."""
849
+ isActive: Boolean!
850
+ """Whether to show the product even when out of stock."""
851
+ showWhenOutOfStock: Boolean!
852
+ """Date the product was first published."""
853
+ publishedAt: DateTime
854
+ """Release or launch date."""
855
+ releaseDate: DateTime
856
+ """Date the product was created in the system."""
857
+ createdAt: DateTime!
858
+ """Date the product was last updated."""
859
+ updatedAt: DateTime!
860
+ """Merchant reference ID. Maps to VTEX `RefId`."""
861
+ referenceId: String
862
+ """The brand this product belongs to."""
863
+ brand: Brand
864
+ """The primary (most specific) category."""
865
+ category: Category
866
+ """All ancestor categories up to the root department."""
867
+ categories: [Category!]!
868
+ """The price range across all variants."""
869
+ priceRange: PriceRange!
870
+ """The compare-at (original) price range across all variants."""
871
+ compareAtPriceRange: PriceRange
872
+ """Named option axes available on this product (e.g. Color, Size)."""
873
+ options: [ProductOption!]!
874
+ """Product-level specifications (e.g. material, care instructions)."""
875
+ specifications: [Specification!]!
876
+ """Specification groups with full detail."""
877
+ specificationGroups: [SpecificationGroup!]!
878
+ """All purchasable variants."""
879
+ variants(
880
+ """Returns the first N elements."""
881
+ first: Int
882
+ """Returns elements after this cursor."""
883
+ after: Cursor
884
+ """Returns the last N elements."""
885
+ last: Int
886
+ """Returns elements before this cursor."""
887
+ before: Cursor
888
+ ): VariantsConnection!
889
+ """Total number of variants."""
890
+ totalVariants: Int!
891
+ """Product images aggregated from all variants."""
892
+ images(
893
+ """Returns the first N elements."""
894
+ first: Int = 10
895
+ """Returns elements after this cursor."""
896
+ after: Cursor
897
+ """Returns the last N elements."""
898
+ last: Int
899
+ """Returns elements before this cursor."""
900
+ before: Cursor
901
+ ): ImagesConnection!
902
+ """All media (images + videos) for this product."""
903
+ media(
904
+ """Returns the first N elements."""
905
+ first: Int = 12
906
+ """Returns elements after this cursor."""
907
+ after: Cursor
908
+ """Returns the last N elements."""
909
+ last: Int
910
+ """Returns elements before this cursor."""
911
+ before: Cursor
912
+ ): MediaConnection!
913
+ """SEO metadata."""
914
+ seo: SEO
915
+ """Navigation breadcrumb trail from root category to this product."""
916
+ breadcrumbs: [BreadcrumbItem!]!
917
+ """User-generated review / rating summary."""
918
+ rating: Rating
919
+ """
920
+ Products related to this one (accessories, suggestions). Maps to VTEX SKU Complement.
921
+ """
922
+ relatedProducts(
923
+ """Returns the first N elements."""
924
+ first: Int = 10
925
+ """Returns elements after this cursor."""
926
+ after: Cursor
927
+ """Returns the last N elements."""
928
+ last: Int
929
+ """Returns elements before this cursor."""
930
+ before: Cursor
931
+ ): ProductsConnection!
932
+ """Collections this product belongs to."""
933
+ collections: [Collection!]!
934
+ """
935
+ Sales channels where this product is available. Maps to VTEX Trade Policy.
936
+ """
937
+ salesChannels: [SalesChannel!]!
938
+ """Bundle components if this product is a kit. Maps to VTEX SKU Kit."""
939
+ bundleItems: [BundleItem!]!
940
+ }
941
+
942
+ """Paginated list of products."""
943
+ type ProductsConnection {
944
+ """A list of edges."""
945
+ edges: [ProductEdge!]!
946
+ """Information to aid in pagination."""
947
+ pageInfo: PageInfo!
948
+ """Total number of products matching the query."""
949
+ totalCount: Int!
950
+ }
951
+
952
+ """An edge in a connection."""
953
+ type ProductEdge {
954
+ """A cursor for pagination."""
955
+ cursor: Cursor!
956
+ """The item at the end of the edge."""
957
+ node: Product!
958
+ }
959
+
960
+ """Paginated list of images."""
961
+ type ImagesConnection {
962
+ """A list of edges."""
963
+ edges: [ImageEdge!]!
964
+ """Information to aid in pagination."""
965
+ pageInfo: PageInfo!
966
+ }
967
+
968
+ """An edge in a connection."""
969
+ type ImageEdge {
970
+ """A cursor for pagination."""
971
+ cursor: Cursor!
972
+ """The item at the end of the edge."""
973
+ node: Image!
974
+ }
975
+
976
+ """Paginated list of media."""
977
+ type MediaConnection {
978
+ """A list of edges."""
979
+ edges: [MediaEdge!]!
980
+ """Information to aid in pagination."""
981
+ pageInfo: PageInfo!
982
+ }
983
+
984
+ """An edge in a connection."""
985
+ type MediaEdge {
986
+ """A cursor for pagination."""
987
+ cursor: Cursor!
988
+ """The item at the end of the edge."""
989
+ node: Media!
990
+ }
991
+
992
+ """
993
+ Aggregate review/rating summary for a product.
994
+ Maps to VTEX Product Review Rate.
995
+ """
996
+ type Rating {
997
+ """Average score (e.g. 4.3)."""
998
+ average: Float!
999
+ """Total number of reviews."""
1000
+ count: Int!
1001
+ }
1002
+
1003
+ """
1004
+ A curated group of products. Maps to VTEX Collection (Beta) entity.
1005
+ Collections can be used for seasonal promotions, editorial picks, etc.
1006
+ """
1007
+ type Collection implements Node {
1008
+ """Globally unique identifier."""
1009
+ id: ID!
1010
+ """Collection title."""
1011
+ title: String!
1012
+ """URL-friendly slug."""
1013
+ slug: String!
1014
+ """Editorial description."""
1015
+ description: String
1016
+ """Whether the collection is currently active."""
1017
+ isActive: Boolean!
1018
+ """Hero / banner image."""
1019
+ image: Image
1020
+ """SEO metadata."""
1021
+ seo: SEO
1022
+ """Paginated products in this collection."""
1023
+ products(
1024
+ """Returns the first N elements."""
1025
+ first: Int
1026
+ """Returns elements after this cursor."""
1027
+ after: Cursor
1028
+ """Returns the last N elements."""
1029
+ last: Int
1030
+ """Returns elements before this cursor."""
1031
+ before: Cursor
1032
+ """Sorting criteria."""
1033
+ orderBy: ProductSortingInput
1034
+ """Filter criteria."""
1035
+ filter: ProductsFilterInput
1036
+ ): ProductsConnection!
1037
+ }
1038
+
1039
+ """Paginated list of collections."""
1040
+ type CollectionsConnection {
1041
+ """A list of edges."""
1042
+ edges: [CollectionEdge!]!
1043
+ """Information to aid in pagination."""
1044
+ pageInfo: PageInfo!
1045
+ """Total number of collections matching the query."""
1046
+ totalCount: Int!
1047
+ }
1048
+
1049
+ """An edge in a connection."""
1050
+ type CollectionEdge {
1051
+ """A cursor for pagination."""
1052
+ cursor: Cursor!
1053
+ """The item at the end of the edge."""
1054
+ node: Collection!
1055
+ }
1056
+
1057
+ """
1058
+ A seller / merchant that fulfills orders for one or more variants.
1059
+ Maps to VTEX Seller entity.
1060
+ """
1061
+ type Seller implements Node {
1062
+ """Globally unique identifier."""
1063
+ id: ID!
1064
+ """Seller display name."""
1065
+ name: String!
1066
+ """Whether this is the default (1P) seller."""
1067
+ isDefault: Boolean!
1068
+ """Seller logo."""
1069
+ logo: Image
1070
+ """
1071
+ The seller's commercial offer for this variant (price, availability, installments).
1072
+ """
1073
+ offer: Offer
1074
+ }
1075
+
1076
+ """
1077
+ A seller's commercial offer for a specific variant — includes pricing,
1078
+ availability, and available payment/installment options.
1079
+ """
1080
+ type Offer {
1081
+ """Current selling price."""
1082
+ price: Money!
1083
+ """Original list price before promotions."""
1084
+ listPrice: Money!
1085
+ """
1086
+ Best cash/immediate-payment price (e.g. Pix discount). Equals price when there is no spot discount.
1087
+ """
1088
+ spotPrice: Money!
1089
+ """Price before any cart-level or coupon discounts."""
1090
+ priceWithoutDiscount: Money!
1091
+ """Available quantity from this seller."""
1092
+ availableQuantity: Int!
1093
+ """Tax amount."""
1094
+ tax: Money!
1095
+ """
1096
+ Tax as a percentage of the price (e.g. 0.18 for 18%). Null when not applicable.
1097
+ """
1098
+ taxPercentage: Float
1099
+ """Loyalty / reward points value earned on this purchase."""
1100
+ rewardValue: Float!
1101
+ """
1102
+ ISO 8601 timestamp after which this price is no longer guaranteed. Null when open-ended.
1103
+ """
1104
+ priceValidUntil: DateTime
1105
+ """SKU IDs of free gifts included with this offer."""
1106
+ giftSkuIds: [String!]!
1107
+ """
1108
+ Named discount labels applied to this offer (e.g. \"10% off\", \"Black Friday\").
1109
+ """
1110
+ discountHighlights: [String!]!
1111
+ """Available installment plans grouped by payment method."""
1112
+ installmentPlans: [InstallmentPlan!]!
1113
+ """
1114
+ Active promotions applicable to this offer (e.g. bundle discounts, buy-X-get-Y).
1115
+ """
1116
+ promotions: [Promotion!]!
1117
+ }
1118
+
1119
+ """
1120
+ A group of installment options for a single payment method (e.g. "Visa", "Pix").
1121
+ """
1122
+ type InstallmentPlan {
1123
+ """Payment method name (e.g. \"Visa\", \"Mastercard\", \"Pix\")."""
1124
+ paymentMethod: String!
1125
+ """Payment method category."""
1126
+ paymentType: PaymentType!
1127
+ """
1128
+ Available installment tiers, sorted by number of installments ascending.
1129
+ """
1130
+ installments: [Installment!]!
1131
+ }
1132
+
1133
+ """
1134
+ A single installment tier within a payment method.
1135
+ Example: 6 × R$ 61.65 at 0% interest.
1136
+ """
1137
+ type Installment {
1138
+ """Number of installments (1 = single payment)."""
1139
+ count: Int!
1140
+ """Amount per installment."""
1141
+ value: Money!
1142
+ """Total amount including any interest."""
1143
+ totalAmount: Money!
1144
+ """Annual interest rate as a percentage (0 = interest-free)."""
1145
+ interestRate: Float!
1146
+ """Whether this tier is interest-free."""
1147
+ interestFree: Boolean!
1148
+ }
1149
+
1150
+ """Broad category of a payment method."""
1151
+ enum PaymentType {
1152
+ """Credit card (Visa, Mastercard, Amex, etc.)."""
1153
+ CREDIT_CARD
1154
+ """Debit card."""
1155
+ DEBIT_CARD
1156
+ """Instant / real-time payment (Pix, etc.)."""
1157
+ INSTANT
1158
+ """Bank slip / boleto."""
1159
+ BANK_SLIP
1160
+ """Digital wallet or store-specific payment."""
1161
+ DIGITAL_WALLET
1162
+ """Other / unknown payment type."""
1163
+ OTHER
1164
+ }
1165
+
1166
+ """
1167
+ An active promotion or incentive applicable to an offer.
1168
+ Examples: "Buy 3 for R$14.99", "9% Pix discount".
1169
+ """
1170
+ type Promotion {
1171
+ """Human-readable promotion name / headline."""
1172
+ name: String!
1173
+ """Conditions that must be met for the promotion to apply."""
1174
+ conditions: PromotionConditions!
1175
+ """Effects applied when conditions are met."""
1176
+ effects: PromotionEffects!
1177
+ }
1178
+
1179
+ """Conditions required for a promotion to activate."""
1180
+ type PromotionConditions {
1181
+ """Minimum quantity of items required (0 = no minimum)."""
1182
+ minimumQuantity: Int!
1183
+ """
1184
+ Additional condition parameters (e.g. required payment method, collection membership).
1185
+ """
1186
+ parameters: [PromotionParameter!]!
1187
+ }
1188
+
1189
+ """Effects granted when a promotion's conditions are satisfied."""
1190
+ type PromotionEffects {
1191
+ """Effect parameters describing the discount or benefit."""
1192
+ parameters: [PromotionParameter!]!
1193
+ }
1194
+
1195
+ """
1196
+ A key-value parameter describing a promotion condition or effect.
1197
+ Common keys: \"PercentualDiscount\", \"MaximumUnitPriceDiscount\",
1198
+ \"PaymentMethodId\", \"CollectionsIdsList\".
1199
+ """
1200
+ type PromotionParameter {
1201
+ """Parameter key."""
1202
+ name: String!
1203
+ """Parameter value."""
1204
+ value: String!
1205
+ }
1206
+
1207
+ """
1208
+ A trade policy / sales channel through which products are sold.
1209
+ Maps to VTEX Trade Policy / Sales Channel.
1210
+ """
1211
+ type SalesChannel implements Node @cacheControl(maxAge: 3600, scope: PUBLIC) {
1212
+ """Globally unique identifier."""
1213
+ id: ID!
1214
+ """Channel name."""
1215
+ name: String!
1216
+ """ISO 4217 default currency for this channel."""
1217
+ currencyCode: CurrencyCode!
1218
+ """BCP 47 locale for this channel."""
1219
+ locale: Locale
1220
+ """Whether the channel is active."""
1221
+ isActive: Boolean!
1222
+ }
1223
+
1224
+ """
1225
+ An optional, free-form customization that can be attached to a variant.
1226
+ Maps to VTEX Attachment. Examples: gift wrapping, engraving, custom message.
1227
+ """
1228
+ type Customization implements Node {
1229
+ """Globally unique identifier."""
1230
+ id: ID!
1231
+ """Display name (e.g. \"Gift Message\")."""
1232
+ name: String!
1233
+ """Whether this customization is required."""
1234
+ isRequired: Boolean!
1235
+ """Allowed keys and their constraints."""
1236
+ fields: [CustomizationField!]!
1237
+ }
1238
+
1239
+ """A single input field within a customization."""
1240
+ type CustomizationField {
1241
+ """Field key (e.g. \"message\")."""
1242
+ key: String!
1243
+ """Maximum allowed characters."""
1244
+ maxLength: Int
1245
+ """Regex or enum-based validation domain."""
1246
+ allowedValues: [String!]
1247
+ }
1248
+
1249
+ """
1250
+ A component of a product bundle / kit.
1251
+ Maps to VTEX SKU Kit.
1252
+ """
1253
+ type BundleItem {
1254
+ """The variant included in the bundle."""
1255
+ variant: Variant!
1256
+ """Quantity of this variant in the bundle."""
1257
+ quantity: Int!
1258
+ }
1259
+
1260
+ """Filter criteria for product queries."""
1261
+ input ProductsFilterInput {
1262
+ """Full-text search term."""
1263
+ searchTerm: String
1264
+ """Include only products in these category IDs."""
1265
+ categoryIds: [ID!]
1266
+ """Include only products from these brand IDs."""
1267
+ brandIds: [ID!]
1268
+ """Minimum price filter."""
1269
+ priceMin: Decimal
1270
+ """Maximum price filter."""
1271
+ priceMax: Decimal
1272
+ """Include only available (in-stock) products."""
1273
+ availableOnly: Boolean
1274
+ """Filter by product type / taxonomy label."""
1275
+ productType: String
1276
+ """
1277
+ Filter by specification values, e.g. {name: \"Color\", values: [\"Red\", \"Blue\"]}.
1278
+ """
1279
+ specifications: [SpecificationFilterInput!]
1280
+ """Filter by sales channel ID."""
1281
+ salesChannelId: ID
1282
+ """Filter by collection ID."""
1283
+ collectionId: ID
1284
+ """Include only products published after this date."""
1285
+ publishedAfter: DateTime
1286
+ """Include only products published before this date."""
1287
+ publishedBefore: DateTime
1288
+ """Filter by tags / keywords."""
1289
+ tags: [String!]
1290
+ }
1291
+
1292
+ """Allows filtering products by specification name and values."""
1293
+ input SpecificationFilterInput {
1294
+ """Specification name (e.g. \"Color\")."""
1295
+ name: String!
1296
+ """Accepted values (OR semantics within, AND across different specs)."""
1297
+ values: [String!]!
1298
+ }
1299
+
1300
+ """Sorting input for product queries."""
1301
+ input ProductSortingInput {
1302
+ """Field to sort on."""
1303
+ field: ProductSortField!
1304
+ """Sort direction."""
1305
+ direction: SortDirection!
1306
+ }
1307
+
1308
+ """Fields available for sorting products."""
1309
+ enum ProductSortField {
1310
+ """Alphabetical by title."""
1311
+ TITLE
1312
+ """By price (uses min variant price)."""
1313
+ PRICE
1314
+ """By creation date."""
1315
+ CREATED_AT
1316
+ """By last update date."""
1317
+ UPDATED_AT
1318
+ """By release date."""
1319
+ RELEASE_DATE
1320
+ """By relevance / scoring."""
1321
+ RELEVANCE
1322
+ """By number of sales."""
1323
+ BEST_SELLING
1324
+ }
1325
+
1326
+ """Filter criteria for collection queries."""
1327
+ input CollectionsFilterInput {
1328
+ """Full-text search term."""
1329
+ searchTerm: String
1330
+ """Include only active collections."""
1331
+ activeOnly: Boolean
1332
+ }
1333
+
1334
+ """Sorting input for collection queries."""
1335
+ input CollectionSortingInput {
1336
+ """Field to sort on."""
1337
+ field: CollectionSortField!
1338
+ """Sort direction."""
1339
+ direction: SortDirection!
1340
+ }
1341
+
1342
+ """Fields available for sorting collections."""
1343
+ enum CollectionSortField {
1344
+ """Alphabetical by title."""
1345
+ TITLE
1346
+ """By creation date."""
1347
+ CREATED_AT
1348
+ """By last update date."""
1349
+ UPDATED_AT
1350
+ }
1351
+
1352
+ """Sorting input for brand queries."""
1353
+ input BrandSortingInput {
1354
+ """Field to sort on."""
1355
+ field: BrandSortField!
1356
+ """Sort direction."""
1357
+ direction: SortDirection!
1358
+ }
1359
+
1360
+ """Fields available for sorting brands."""
1361
+ enum BrandSortField {
1362
+ """Alphabetical by name."""
1363
+ NAME
1364
+ """By creation date."""
1365
+ CREATED_AT
1366
+ }
1367
+
1368
+ """Sorting input for category queries."""
1369
+ input CategorySortingInput {
1370
+ """Field to sort on."""
1371
+ field: CategorySortField!
1372
+ """Sort direction."""
1373
+ direction: SortDirection!
1374
+ }
1375
+
1376
+ """Fields available for sorting categories."""
1377
+ enum CategorySortField {
1378
+ """Alphabetical by name."""
1379
+ NAME
1380
+ """By depth level in the tree."""
1381
+ LEVEL
1382
+ }
1383
+
1384
+ """
1385
+ The result of a full-text product search, including facets for building
1386
+ filter UI.
1387
+ """
1388
+ type ProductSearchResult {
1389
+ """Paginated product results."""
1390
+ products(
1391
+ """Returns the first N elements."""
1392
+ first: Int
1393
+ """Returns elements after this cursor."""
1394
+ after: Cursor
1395
+ """Returns the last N elements."""
1396
+ last: Int
1397
+ """Returns elements before this cursor."""
1398
+ before: Cursor
1399
+ ): ProductsConnection!
1400
+ """Available facets/filters derived from the result set."""
1401
+ facets: [SearchFacet!]!
1402
+ """Corrected or suggested query if the original had a typo."""
1403
+ suggestedQuery: String
1404
+ """Spelling correction details for the query."""
1405
+ correction: SearchCorrection
1406
+ }
1407
+
1408
+ """Spelling correction information returned by the search engine."""
1409
+ type SearchCorrection {
1410
+ """Whether the original query was corrected."""
1411
+ corrected: Boolean!
1412
+ """Whether the original query was misspelled."""
1413
+ misspelled: Boolean!
1414
+ """The corrected query text."""
1415
+ text: String
1416
+ """The corrected text with `<em>` tags highlighting the changed parts."""
1417
+ highlighted: String
1418
+ }
1419
+
1420
+ """A facet returned from search, representing a filterable dimension."""
1421
+ type SearchFacet {
1422
+ """Facet name (e.g. \"Brand\", \"Color\", \"Price Range\")."""
1423
+ name: String!
1424
+ """
1425
+ Facet key used in filter parameters (e.g. \"brand\", \"category-1\", \"price\").
1426
+ """
1427
+ key: String!
1428
+ """Type discriminator for rendering the correct UI control."""
1429
+ type: SearchFacetType!
1430
+ """Whether this facet should be hidden from the UI."""
1431
+ hidden: Boolean!
1432
+ """Total number of values in this facet."""
1433
+ quantity: Int!
1434
+ """Individual values within this facet."""
1435
+ values: [SearchFacetValue!]!
1436
+ }
1437
+
1438
+ """Discriminates the facet UI control type."""
1439
+ enum SearchFacetType {
1440
+ """A list of discrete values (brand, color, size)."""
1441
+ LIST
1442
+ """A numeric range (price)."""
1443
+ RANGE
1444
+ }
1445
+
1446
+ """A single value within a search facet."""
1447
+ type SearchFacetValue {
1448
+ """Display label."""
1449
+ label: String!
1450
+ """Value to send back in the filter."""
1451
+ value: String!
1452
+ """Number of products matching this facet value."""
1453
+ count: Int!
1454
+ """Whether the user has currently selected this value."""
1455
+ isSelected: Boolean!
1456
+ """For RANGE facets: the lower bound."""
1457
+ rangeFrom: Float
1458
+ """For RANGE facets: the upper bound."""
1459
+ rangeTo: Float
1460
+ """Navigable href for this facet selection."""
1461
+ href: String
1462
+ }
1463
+
1464
+ """Recommendation strategy hint."""
1465
+ enum RecommendationIntent {
1466
+ """Products related by purchase history."""
1467
+ RELATED
1468
+ """Products frequently bought together."""
1469
+ COMPLEMENTARY
1470
+ """Similar products (same category / specs)."""
1471
+ SIMILAR
1472
+ }
1473
+
1474
+ """An autocomplete suggestion returned for a partial search query."""
1475
+ type AutocompleteSuggestion {
1476
+ """The suggested search term."""
1477
+ term: String!
1478
+ """Estimated number of results for this term."""
1479
+ count: Int!
1480
+ """
1481
+ Suggested facet filters associated with this term (e.g. department, category).
1482
+ """
1483
+ attributes: [AutocompleteAttribute!]!
1484
+ }
1485
+
1486
+ """A facet attribute suggested alongside an autocomplete term."""
1487
+ type AutocompleteAttribute {
1488
+ """Attribute key (e.g. \"category-1\")."""
1489
+ key: String!
1490
+ """Attribute value (e.g. \"alimentos-e-bebidas\")."""
1491
+ value: String!
1492
+ """Human-readable label for the key (e.g. \"Departamento\")."""
1493
+ labelKey: String!
1494
+ """Human-readable label for the value (e.g. \"Alimentos e bebidas\")."""
1495
+ labelValue: String!
1496
+ }
1497
+
1498
+ """A trending search term."""
1499
+ type TrendingSearch {
1500
+ """The search term."""
1501
+ term: String!
1502
+ """Number of searches in the recent period."""
1503
+ count: Int!
1504
+ }
1505
+
1506
+ """
1507
+ A shopping cart representing items a customer intends to purchase.
1508
+ Maps to the VTEX orderForm entity.
1509
+ """
1510
+ type Cart implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
1511
+ """Globally unique identifier (Relay Node ID)."""
1512
+ id: ID!
1513
+ """Line items currently in the cart."""
1514
+ items: [CartItem!]!
1515
+ """Aggregated totals (items, shipping, discounts, etc.)."""
1516
+ totalizers: [CartTotalizer!]!
1517
+ """Total cart value."""
1518
+ total: Money!
1519
+ """
1520
+ Server messages from cart processing (e.g. promotions applied, stock warnings).
1521
+ """
1522
+ messages: [CartMessage!]!
1523
+ """
1524
+ The coupon codes currently applied to the cart. Empty when none are applied.
1525
+ """
1526
+ appliedCoupons: [AppliedCoupon!]!
1527
+ """
1528
+ Cart-level discounts as labeled lines: one per promotion or coupon, plus a
1529
+ residual for whatever they do not account for. Always a list (possibly empty),
1530
+ never null.
1531
+
1532
+ The itemized companion to the aggregated "Discounts" totalizer, which stays on
1533
+ `totalizers` unchanged: these entries sum to it, so a summary built on them
1534
+ cannot under-report. Distinct from the per-line `CartItem.discounts`, which is
1535
+ featured-only and itemized per price tag rather than per promotion.
1536
+ """
1537
+ discounts: [CartDiscount!]!
1538
+ """
1539
+ Aggregate item-level catalog markdown: the sum of `(listPrice - price) * quantity`
1540
+ across non-gift lines, clamped at zero (in cents from VTEX, exposed as Money). This
1541
+ is the reduction from each line's list price down to the price the "Items" subtotal
1542
+ is built on — the catalog "de/por" savings baked into the price before any
1543
+ cart-level promotion runs.
1544
+
1545
+ Distinct money from the cart-level promotions and coupons on the "Discounts"
1546
+ totalizer and `discounts` (those are `price - sellingPrice`, the reduction below the
1547
+ subtotal): item markdown sits *above* the subtotal, so it is never part of
1548
+ `totalizers` and never summed into `total`. It is an informational savings figure and
1549
+ is zero when no line is marked down. Gift lines are excluded — a gift's value is
1550
+ already a promotion entry in `discounts`.
1551
+ """
1552
+ itemMarkdownTotal: Money!
1553
+ """
1554
+ Progress toward the cart's nearest free-shipping promotion. Null when no
1555
+ eligible free-shipping promotion is identified for this cart.
1556
+ """
1557
+ freeShippingProgress: FreeShippingProgress
1558
+ """
1559
+ Non-null when the cart belongs to a different sales channel than the request's active context. The
1560
+ cart is left exactly as it was: nothing here reprices it or removes an item. Converging it is a
1561
+ write, and the first write that carries the active channel makes Checkout reprocess the same
1562
+ orderForm — prices, promotions, coupons and logistics are recomputed and items not sellable in the
1563
+ destination channel are removed by Checkout, while orderFormId, attachments and addresses survive.
1564
+ """
1565
+ salesChannelMismatch: CartSalesChannelMismatch
1566
+ }
1567
+
1568
+ """
1569
+ The two sales channels that disagree. Both are trade-policy identifiers.
1570
+ """
1571
+ type CartSalesChannelMismatch {
1572
+ """The channel the cart is currently on."""
1573
+ cartSalesChannel: String!
1574
+ """The channel the request's active context resolves to."""
1575
+ activeSalesChannel: String!
1576
+ }
1577
+
1578
+ """
1579
+ Progress toward the cart's nearest free-shipping promotion, derived from the
1580
+ promotion teasers on a checkout simulation run with the cart's destination.
1581
+ Null until the cart has a destination, and when no eligible free-shipping
1582
+ promotion is identified for this cart (none configured, none teaser-emitting,
1583
+ empty cart, or unreadable promotion data) — absence is a normal state, never
1584
+ an error.
1585
+ """
1586
+ type FreeShippingProgress {
1587
+ """
1588
+ Minimum qualifying cart total for the promotion. Null when the cart already
1589
+ qualifies: the promotion teaser disappears once met, so the threshold is no
1590
+ longer reported upstream.
1591
+ """
1592
+ threshold: Money
1593
+ """Amount still to add to qualify. Zero when the cart qualifies."""
1594
+ remaining: Money!
1595
+ """Whether the cart currently qualifies for free shipping."""
1596
+ qualified: Boolean!
1597
+ }
1598
+
1599
+ """
1600
+ One labeled cart-level discount line, attributed to the promotion or coupon that
1601
+ granted it. Amounts are summed from the cart's price tags and reconciled against
1602
+ the aggregated "Discounts" totalizer.
1603
+ """
1604
+ type CartDiscount {
1605
+ """
1606
+ The promotion's name, or the coupon code exactly as the shopper entered it.
1607
+ Null when nothing upstream names this amount: always for OTHER, and for a
1608
+ promotion the platform left unnamed. The consumer supplies the label in that
1609
+ case; an internal promotion identifier is never exposed here.
1610
+ """
1611
+ name: String
1612
+ """
1613
+ Amount taken off by this line, as a positive monetary value. The minus sign is
1614
+ presentational and applied by the UI. Never zero: a promotion that took nothing
1615
+ off this cart is omitted rather than reported as an empty line.
1616
+ """
1617
+ value: Money!
1618
+ """
1619
+ Where this line came from: an automatic promotion, a coupon, or the residual.
1620
+ """
1621
+ kind: CartDiscountKind!
1622
+ }
1623
+
1624
+ """Origin of a cart-level discount line."""
1625
+ enum CartDiscountKind {
1626
+ """An automatically applied promotion."""
1627
+ PROMOTION
1628
+ """A promotion matched by a coupon code the shopper entered."""
1629
+ COUPON
1630
+ """
1631
+ The part of the aggregate discount that no named promotion or coupon accounts
1632
+ for — a promotion the merchant did not feature, a discount the platform never
1633
+ itemized, or rounding. At most one entry, always last.
1634
+ """
1635
+ OTHER
1636
+ }
1637
+
1638
+ """
1639
+ A coupon code applied to the cart, with whether its promotion conditions matched.
1640
+ """
1641
+ type AppliedCoupon {
1642
+ """The coupon code, stored verbatim as the shopper entered it."""
1643
+ code: String!
1644
+ """
1645
+ True when the code is on the cart but its promotion conditions did not match
1646
+ (no discount granted).
1647
+ """
1648
+ isUnmatchedCondition: Boolean!
1649
+ }
1650
+
1651
+ """
1652
+ A single line item in the cart. Carries a historical snapshot of the variant
1653
+ and product at the time it was added: cart-line value objects describe what
1654
+ the customer actually has, not what the catalog says about it today.
1655
+ """
1656
+ type CartItem {
1657
+ """
1658
+ Cart-scoped line identifier (opaque, stable across mutations for the same line).
1659
+ Encoded as Base64("CartItem:<orderFormId>:<uniqueId>"). Not a Relay Node; this id
1660
+ exists only to serve as a stable cache key for clients doing optimistic UI.
1661
+ """
1662
+ id: ID!
1663
+ """
1664
+ Variant snapshot for this line. Built from the order line itself, not from
1665
+ a live catalog read.
1666
+ """
1667
+ variant: CartVariant!
1668
+ """
1669
+ Product snapshot for this line. Built from the order line itself, not from
1670
+ a live catalog read.
1671
+ """
1672
+ product: CartProduct!
1673
+ """Quantity of this variant in the cart."""
1674
+ quantity: Int!
1675
+ """Unit price (in cents from VTEX, exposed as Money)."""
1676
+ price: Money!
1677
+ """Original list price before discounts."""
1678
+ listPrice: Money!
1679
+ """Final selling price after discounts."""
1680
+ sellingPrice: Money!
1681
+ """Whether this line is a gift item."""
1682
+ gift: Boolean!
1683
+ """
1684
+ Discounts applied to this line, one entry per featured promotion price tag that
1685
+ carries a currency amount. Always a list (possibly empty), never null. The
1686
+ per-line, itemized companion to the aggregated "Discounts" totalizer on Cart —
1687
+ not a replacement for it.
1688
+
1689
+ Percentage-configured promotions are absent: their price tag carries a rate
1690
+ rather than an amount, so there is no monetary value to report per line. Use
1691
+ `Cart.discounts` for a breakdown that accounts for every discount, naming what
1692
+ it can and reporting the rest as a residual.
1693
+ """
1694
+ discounts: [CartItemDiscount!]!
1695
+ """
1696
+ Upstream line identifier (order-form uniqueId). The stable per-line address:
1697
+ with customizations, the same variant can appear as several distinct lines,
1698
+ so variantId is not unique per line. Stable across cart mutations.
1699
+ """
1700
+ lineId: String!
1701
+ """
1702
+ This line's own total (own unit selling price × quantity, rounding-exact),
1703
+ excluding composition children.
1704
+ """
1705
+ ownTotal: Money!
1706
+ """
1707
+ This line's total including all nested composition children, recursively.
1708
+ Equals ownTotal when the line has no compositions.
1709
+ """
1710
+ total: Money!
1711
+ """
1712
+ Form-based customizations applied to this line (personalization text,
1713
+ selections, uploaded-file URLs). Empty when the line has none.
1714
+ """
1715
+ customizations: [CartItemCustomization!]!
1716
+ """
1717
+ Child products added to this line by bundle/assembly choices. Children are
1718
+ not top-level cart lines; they ship, and are removed, with their parent.
1719
+ """
1720
+ compositions: [CartItemComposition!]!
1721
+ """
1722
+ This item's own available delivery options (not intersected across the cart).
1723
+ Excludes pickup options; delivery channel only.
1724
+ """
1725
+ shippingOptions: [ItemShippingOption!]!
1726
+ """
1727
+ This item's own currently selected delivery option, or null when no selection
1728
+ is persisted or the persisted selection is a pickup option.
1729
+ """
1730
+ selectedShippingOption: ItemShippingOption
1731
+ }
1732
+
1733
+ """
1734
+ One customization group applied to a cart line, keyed by the upstream
1735
+ assembly id. Entries are the shopper's submitted key/value pairs.
1736
+ """
1737
+ type CartItemCustomization {
1738
+ """Upstream assembly identifier (e.g. "Engraving", "Optional features")."""
1739
+ id: String!
1740
+ """
1741
+ Submitted values, one entry per input field. File uploads carry the file URL
1742
+ as the value.
1743
+ """
1744
+ entries: [CartItemCustomizationEntry!]!
1745
+ }
1746
+
1747
+ """A single submitted customization field."""
1748
+ type CartItemCustomizationEntry {
1749
+ """Field name as defined by the assembly (e.g. "Text")."""
1750
+ name: String!
1751
+ """Submitted value, stringified. File uploads carry the file URL."""
1752
+ value: String!
1753
+ }
1754
+
1755
+ """
1756
+ A child product nested under a cart line by a bundle/assembly choice. Slim by
1757
+ design: children are not independently addressable cart lines. May carry its
1758
+ own children (nested assemblies).
1759
+ """
1760
+ type CartItemComposition {
1761
+ """
1762
+ Cart-scoped identifier for this child line (same opaque encoding as
1763
+ CartItem.id). Cache key only; not independently mutable.
1764
+ """
1765
+ id: ID!
1766
+ """Display name as recorded on the order line."""
1767
+ name: String!
1768
+ """Quantity of this child in the composition."""
1769
+ quantity: Int!
1770
+ """Unit selling price of the child."""
1771
+ price: Money!
1772
+ """
1773
+ The child's own availability. The parent's variant.availability already
1774
+ reflects the worst state across the whole composition.
1775
+ """
1776
+ availability: CartItemAvailability!
1777
+ """
1778
+ The assembly group that added this child (upstream parentAssemblyBinding,
1779
+ e.g. "Material Product_Material").
1780
+ """
1781
+ assemblyId: String!
1782
+ """This child's own total, excluding its nested children."""
1783
+ ownTotal: Money!
1784
+ """This child's total including its nested children, recursively."""
1785
+ total: Money!
1786
+ """
1787
+ Form-based customizations applied to this child. A composition child is
1788
+ itself an order-form line and can carry its own input assemblies. Empty
1789
+ when it has none.
1790
+ """
1791
+ customizations: [CartItemCustomization!]!
1792
+ """Nested composition children of this child. Empty when it has none."""
1793
+ compositions: [CartItemComposition!]!
1794
+ }
1795
+
1796
+ """
1797
+ A single discount applied to a cart line, broken out from that line's price tags.
1798
+ Sourced from items[].priceTags filtered to featured promotions carrying a currency
1799
+ amount; the aggregate discount total stays on the Cart "Discounts" totalizer.
1800
+ """
1801
+ type CartItemDiscount {
1802
+ """
1803
+ Human-readable label resolved from the matched promotion (e.g. "Black Friday").
1804
+ Falls back to the price tag identifier when the promotion has no name.
1805
+ """
1806
+ name: String!
1807
+ """
1808
+ Amount taken off by this discount, as a positive monetary value. The minus
1809
+ sign is presentational and applied by the UI.
1810
+ """
1811
+ value: Money!
1812
+ """
1813
+ Always false. A price tag expressing a percentage carries a rate rather than a
1814
+ currency amount, so it has no value this type can report and is excluded from
1815
+ the list. Retained for compatibility; branching on it gains nothing.
1816
+ """
1817
+ isPercentual: Boolean!
1818
+ }
1819
+
1820
+ """
1821
+ Stock availability status for a cart line. Mapped from the upstream
1822
+ order-form availability strings; UNKNOWN absorbs values we haven't classified.
1823
+ """
1824
+ enum CartItemAvailability {
1825
+ """In stock and shippable."""
1826
+ AVAILABLE
1827
+ """Known to be out of stock."""
1828
+ OUT_OF_STOCK
1829
+ """
1830
+ Other known-bad states (cannot deliver, fulfillment unavailable, etc.).
1831
+ """
1832
+ UNAVAILABLE
1833
+ """Upstream returned a state we don't recognize yet."""
1834
+ UNKNOWN
1835
+ }
1836
+
1837
+ """
1838
+ Cart-line snapshot of a Variant. Value object: holds the line-level facts
1839
+ recorded at add-to-cart time. Does not implement Node; refetch the live
1840
+ catalog Variant via Query.node(variantId) when needed.
1841
+ """
1842
+ type CartVariant {
1843
+ """
1844
+ Relay Node ID of the catalog Variant this line refers to. Use it with
1845
+ Query.node to refetch the live Variant.
1846
+ """
1847
+ variantId: ID!
1848
+ """Stock-keeping unit code as recorded on the order line."""
1849
+ sku: String!
1850
+ """
1851
+ Display name as recorded on the order line (e.g. "Classic T-Shirt - Red / M").
1852
+ """
1853
+ name: String!
1854
+ """
1855
+ Single image captured at add-to-cart time. Null when no image URL was recorded.
1856
+ """
1857
+ image: Image
1858
+ """
1859
+ International Article Number (barcode). May be empty for items without one.
1860
+ """
1861
+ ean: String
1862
+ """Merchant SKU reference code."""
1863
+ referenceId: String
1864
+ """Availability classification of this line."""
1865
+ availability: CartItemAvailability!
1866
+ """Unit of sale (e.g. "un", "kg")."""
1867
+ measurementUnit: String!
1868
+ """Multiplier for the measurement unit."""
1869
+ unitMultiplier: Float!
1870
+ """Seller fulfilling this line."""
1871
+ seller: CartSellerRef!
1872
+ """
1873
+ Variations selected on this cart line (e.g. Cor: Vermelho, Tamanho: M). [] when the SKU has
1874
+ no variations, never null. Resolved server-side from catalog data (ADR-00012); use this field
1875
+ instead of a Query.node(variantId) refetch to read a line's selected options.
1876
+ """
1877
+ selectedOptions: [SelectedOption!]!
1878
+ }
1879
+
1880
+ """
1881
+ Cart-line snapshot of a Product. Value object: holds the line-level facts
1882
+ recorded at add-to-cart time. Does not implement Node; refetch the live
1883
+ catalog Product via Query.node(productId) when needed.
1884
+ """
1885
+ type CartProduct {
1886
+ """
1887
+ Relay Node ID of the catalog Product. Use it with Query.node to refetch
1888
+ the live Product.
1889
+ """
1890
+ productId: ID!
1891
+ """Product title as recorded on the order line."""
1892
+ title: String!
1893
+ """Product detail URL as recorded on the order line."""
1894
+ detailUrl: String!
1895
+ """Categories root-to-leaf as recorded on the order line."""
1896
+ categories: [CartCategoryRef!]!
1897
+ """
1898
+ Brand reference as recorded on the order line. Null when the product has no brand.
1899
+ """
1900
+ brand: CartBrandRef
1901
+ }
1902
+
1903
+ """
1904
+ Lightweight reference to a Category captured on a cart line. Carries enough
1905
+ identity to deep-link back to the live Category via Query.node.
1906
+ """
1907
+ type CartCategoryRef {
1908
+ """Relay Node ID of the catalog Category."""
1909
+ categoryId: ID!
1910
+ """Category name as recorded on the order line."""
1911
+ name: String!
1912
+ }
1913
+
1914
+ """Lightweight reference to a Brand captured on a cart line."""
1915
+ type CartBrandRef {
1916
+ """Relay Node ID of the catalog Brand."""
1917
+ brandId: ID!
1918
+ """Brand name as recorded on the order line."""
1919
+ name: String!
1920
+ }
1921
+
1922
+ """Lightweight reference to a Seller captured on a cart line."""
1923
+ type CartSellerRef {
1924
+ """Relay Node ID of the catalog Seller."""
1925
+ sellerId: ID!
1926
+ """Seller display name as recorded on the order line."""
1927
+ name: String!
1928
+ }
1929
+
1930
+ """
1931
+ An aggregated total section in the cart (e.g. Items, Shipping, Discounts).
1932
+ """
1933
+ type CartTotalizer {
1934
+ """Totalizer key (e.g. "Items", "Shipping", "Discounts")."""
1935
+ id: String!
1936
+ """Human-readable label."""
1937
+ name: String!
1938
+ """Totalizer value."""
1939
+ value: Money!
1940
+ }
1941
+
1942
+ """
1943
+ A server message attached to the cart (promotions applied, warnings, etc.).
1944
+ """
1945
+ type CartMessage {
1946
+ """Message code identifier."""
1947
+ code: String
1948
+ """Human-readable message text."""
1949
+ text: String!
1950
+ """Message severity (e.g. "info", "warning", "error")."""
1951
+ status: String!
1952
+ }
1953
+
1954
+ """Input for adding an item to a cart."""
1955
+ input CartItemAddInput {
1956
+ """The variant's global Node ID to add."""
1957
+ variantId: ID!
1958
+ """Quantity to add. Defaults to 1."""
1959
+ quantity: Int = 1
1960
+ """
1961
+ The seller's global Node ID. Defaults to the first-party seller (Seller:1).
1962
+ """
1963
+ seller: ID = "U2VsbGVyOjE="
1964
+ }
1965
+
1966
+ """Input for removing an item from a cart."""
1967
+ input CartItemRemoveInput {
1968
+ """The variant's global Node ID to remove."""
1969
+ variantId: ID!
1970
+ }
1971
+
1972
+ """Input for removing multiple items from a cart in one call."""
1973
+ input CartItemsRemoveInput {
1974
+ """The variants' global Node IDs to remove. Duplicates are collapsed."""
1975
+ variantIds: [ID!]!
1976
+ }
1977
+
1978
+ """Input for increasing the quantity of a cart item."""
1979
+ input CartItemQuantityIncreaseInput {
1980
+ """The variant's global Node ID whose quantity to increase."""
1981
+ variantId: ID!
1982
+ """Amount to add to the current quantity. Defaults to 1."""
1983
+ quantityToAdd: Int = 1
1984
+ }
1985
+
1986
+ """Input for decreasing the quantity of a cart item."""
1987
+ input CartItemQuantityDecreaseInput {
1988
+ """The variant's global Node ID whose quantity to decrease."""
1989
+ variantId: ID!
1990
+ """Amount to subtract from the current quantity. Defaults to 1."""
1991
+ quantityToRemove: Int = 1
1992
+ }
1993
+
1994
+ """Input for applying a coupon code to the cart."""
1995
+ input CartCouponApplyInput {
1996
+ """The coupon code to apply, sent verbatim."""
1997
+ code: String!
1998
+ }
1999
+
2000
+ """Input for removing a coupon code from the cart."""
2001
+ input CartCouponRemoveInput {
2002
+ """The coupon code to remove from the applied set."""
2003
+ code: String!
2004
+ }
2005
+
2006
+ """Error codes for cart item add operations."""
2007
+ enum CartItemAddErrorCode {
2008
+ """No cart context was provided (x-order-form-id header/cookie)."""
2009
+ MISSING_CART_CONTEXT
2010
+ """The quantity must be a positive integer."""
2011
+ INVALID_QUANTITY
2012
+ """The cart was not found."""
2013
+ CART_NOT_FOUND
2014
+ """The provided variant ID is not a valid Variant Node ID."""
2015
+ INVALID_VARIANT_ID
2016
+ """The provided seller ID is not a valid Seller Node ID."""
2017
+ INVALID_SELLER_ID
2018
+ }
2019
+
2020
+ """Error codes for cart item remove operations."""
2021
+ enum CartItemRemoveErrorCode {
2022
+ """No cart context was provided (x-order-form-id header/cookie)."""
2023
+ MISSING_CART_CONTEXT
2024
+ """The specified variant was not found in the cart."""
2025
+ ITEM_NOT_FOUND
2026
+ """The cart was not found."""
2027
+ CART_NOT_FOUND
2028
+ """The provided variant ID is not a valid Variant Node ID."""
2029
+ INVALID_VARIANT_ID
2030
+ }
2031
+
2032
+ """Error codes for cart items batch remove operations."""
2033
+ enum CartItemsRemoveErrorCode {
2034
+ """No cart context was provided (x-order-form-id header/cookie)."""
2035
+ MISSING_CART_CONTEXT
2036
+ """None of the specified variants were found in the cart."""
2037
+ ITEM_NOT_FOUND
2038
+ """The cart was not found."""
2039
+ CART_NOT_FOUND
2040
+ """A provided variant ID is not a valid Variant Node ID."""
2041
+ INVALID_VARIANT_ID
2042
+ """The input contained no variant IDs."""
2043
+ NO_VARIANT_IDS_PROVIDED
2044
+ """The upstream checkout API returned an unusable response."""
2045
+ UPSTREAM_ERROR
2046
+ }
2047
+
2048
+ """Error codes for cart item quantity increase operations."""
2049
+ enum CartItemQuantityIncreaseErrorCode {
2050
+ """No cart context was provided (x-order-form-id header/cookie)."""
2051
+ MISSING_CART_CONTEXT
2052
+ """The quantity must be a positive integer."""
2053
+ INVALID_QUANTITY
2054
+ """The specified variant was not found in the cart."""
2055
+ ITEM_NOT_FOUND
2056
+ """The cart was not found."""
2057
+ CART_NOT_FOUND
2058
+ """The provided variant ID is not a valid Variant Node ID."""
2059
+ INVALID_VARIANT_ID
2060
+ }
2061
+
2062
+ """Error codes for cart item quantity decrease operations."""
2063
+ enum CartItemQuantityDecreaseErrorCode {
2064
+ """No cart context was provided (x-order-form-id header/cookie)."""
2065
+ MISSING_CART_CONTEXT
2066
+ """The quantity must be a positive integer."""
2067
+ INVALID_QUANTITY
2068
+ """The specified variant was not found in the cart."""
2069
+ ITEM_NOT_FOUND
2070
+ """The cart was not found."""
2071
+ CART_NOT_FOUND
2072
+ """The provided variant ID is not a valid Variant Node ID."""
2073
+ INVALID_VARIANT_ID
2074
+ }
2075
+
2076
+ """A domain error returned from a cart item add mutation."""
2077
+ type CartItemAddError {
2078
+ """Machine-readable error code."""
2079
+ code: CartItemAddErrorCode!
2080
+ """Human-readable error message."""
2081
+ message: String!
2082
+ }
2083
+
2084
+ """A domain error returned from a cart item remove mutation."""
2085
+ type CartItemRemoveError {
2086
+ """Machine-readable error code."""
2087
+ code: CartItemRemoveErrorCode!
2088
+ """Human-readable error message."""
2089
+ message: String!
2090
+ }
2091
+
2092
+ """A domain error returned from a cart items batch remove mutation."""
2093
+ type CartItemsRemoveError {
2094
+ """Machine-readable error code."""
2095
+ code: CartItemsRemoveErrorCode!
2096
+ """Human-readable error message."""
2097
+ message: String!
2098
+ }
2099
+
2100
+ """A domain error returned from a cart item quantity increase mutation."""
2101
+ type CartItemQuantityIncreaseError {
2102
+ """Machine-readable error code."""
2103
+ code: CartItemQuantityIncreaseErrorCode!
2104
+ """Human-readable error message."""
2105
+ message: String!
2106
+ }
2107
+
2108
+ """A domain error returned from a cart item quantity decrease mutation."""
2109
+ type CartItemQuantityDecreaseError {
2110
+ """Machine-readable error code."""
2111
+ code: CartItemQuantityDecreaseErrorCode!
2112
+ """Human-readable error message."""
2113
+ message: String!
2114
+ }
2115
+
2116
+ """Payload returned by the cartItemAdd mutation."""
2117
+ type CartItemAddPayload {
2118
+ """The updated cart, or null if errors occurred."""
2119
+ cart: Cart
2120
+ """Domain errors that occurred during the operation."""
2121
+ userErrors: [CartItemAddError!]!
2122
+ }
2123
+
2124
+ """Payload returned by the cartItemRemove mutation."""
2125
+ type CartItemRemovePayload {
2126
+ """The updated cart, or null if errors occurred."""
2127
+ cart: Cart
2128
+ """Domain errors that occurred during the operation."""
2129
+ userErrors: [CartItemRemoveError!]!
2130
+ }
2131
+
2132
+ """Payload returned by the cartItemsRemove mutation."""
2133
+ type CartItemsRemovePayload {
2134
+ """The updated cart, or null if errors occurred."""
2135
+ cart: Cart
2136
+ """Domain errors that occurred during the operation."""
2137
+ userErrors: [CartItemsRemoveError!]!
2138
+ }
2139
+
2140
+ """Payload returned by the cartItemQuantityIncrease mutation."""
2141
+ type CartItemQuantityIncreasePayload {
2142
+ """The updated cart, or null if errors occurred."""
2143
+ cart: Cart
2144
+ """Domain errors that occurred during the operation."""
2145
+ userErrors: [CartItemQuantityIncreaseError!]!
2146
+ }
2147
+
2148
+ """Payload returned by the cartItemQuantityDecrease mutation."""
2149
+ type CartItemQuantityDecreasePayload {
2150
+ """The updated cart, or null if errors occurred."""
2151
+ cart: Cart
2152
+ """Domain errors that occurred during the operation."""
2153
+ userErrors: [CartItemQuantityDecreaseError!]!
2154
+ }
2155
+
2156
+ """Error codes for cart coupon apply operations."""
2157
+ enum CartCouponApplyErrorCode {
2158
+ """No cart context was provided (x-order-form-id header/cookie)."""
2159
+ MISSING_CART_CONTEXT
2160
+ """The cart was not found."""
2161
+ CART_NOT_FOUND
2162
+ """The coupon code is empty, unknown, or not accepted by this cart."""
2163
+ COUPON_NOT_FOUND
2164
+ """The coupon code has expired."""
2165
+ COUPON_EXPIRED
2166
+ }
2167
+
2168
+ """Error codes for cart coupon remove operations."""
2169
+ enum CartCouponRemoveErrorCode {
2170
+ """No cart context was provided (x-order-form-id header/cookie)."""
2171
+ MISSING_CART_CONTEXT
2172
+ """The cart was not found."""
2173
+ CART_NOT_FOUND
2174
+ """
2175
+ A surviving coupon was rejected by the cart after the removal (unknown or not accepted).
2176
+ """
2177
+ COUPON_NOT_FOUND
2178
+ """A surviving coupon has expired."""
2179
+ COUPON_EXPIRED
2180
+ }
2181
+
2182
+ """A domain error returned from a cart coupon apply mutation."""
2183
+ type CartCouponApplyError {
2184
+ """Machine-readable error code."""
2185
+ code: CartCouponApplyErrorCode!
2186
+ """Human-readable error message."""
2187
+ message: String!
2188
+ }
2189
+
2190
+ """A domain error returned from a cart coupon remove mutation."""
2191
+ type CartCouponRemoveError {
2192
+ """Machine-readable error code."""
2193
+ code: CartCouponRemoveErrorCode!
2194
+ """Human-readable error message."""
2195
+ message: String!
2196
+ }
2197
+
2198
+ """Payload returned by the cartCouponApply mutation."""
2199
+ type CartCouponApplyPayload {
2200
+ """The updated cart, or null if errors occurred."""
2201
+ cart: Cart
2202
+ """Domain errors that occurred during the operation."""
2203
+ userErrors: [CartCouponApplyError!]!
2204
+ }
2205
+
2206
+ """Payload returned by the cartCouponRemove mutation."""
2207
+ type CartCouponRemovePayload {
2208
+ """The updated cart, or null if errors occurred."""
2209
+ cart: Cart
2210
+ """Domain errors that occurred during the operation."""
2211
+ userErrors: [CartCouponRemoveError!]!
2212
+ }
2213
+
2214
+ """Error codes for cart validation operations."""
2215
+ enum CartValidateErrorCode {
2216
+ """No cart context was provided (x-order-form-id header/cookie)."""
2217
+ MISSING_CART_CONTEXT
2218
+ """The cart was not found."""
2219
+ CART_NOT_FOUND
2220
+ """
2221
+ The upstream checkout API could not be reached or returned an unusable response.
2222
+ """
2223
+ UPSTREAM_ERROR
2224
+ }
2225
+
2226
+ """A domain error returned from a cart validate mutation."""
2227
+ type CartValidateError {
2228
+ """Machine-readable error code."""
2229
+ code: CartValidateErrorCode!
2230
+ """Human-readable error message."""
2231
+ message: String!
2232
+ }
2233
+
2234
+ """Payload returned by the cartValidate mutation."""
2235
+ type CartValidatePayload {
2236
+ """The re-checked cart, or null if errors occurred."""
2237
+ cart: Cart
2238
+ """Domain errors that occurred during the operation."""
2239
+ userErrors: [CartValidateError!]!
2240
+ }
2241
+
2242
+ """The delivery channel for a shipping option."""
2243
+ enum DeliveryChannel {
2244
+ """Home delivery."""
2245
+ DELIVERY
2246
+ """Pickup in store or pickup point."""
2247
+ PICKUP
2248
+ """Unrecognised delivery channel returned by the fulfillment provider."""
2249
+ UNKNOWN
2250
+ }
2251
+
2252
+ """The unit of a shipping time estimate."""
2253
+ enum ShippingEstimateUnit {
2254
+ """Calendar days (e.g. "7d")."""
2255
+ DAYS
2256
+ """Business days, excluding weekends and holidays (e.g. "5bd")."""
2257
+ BUSINESS_DAYS
2258
+ """Hours (e.g. "7h")."""
2259
+ HOURS
2260
+ """Minutes (e.g. "119m")."""
2261
+ MINUTES
2262
+ }
2263
+
2264
+ """
2265
+ Parsed shipping time estimate (e.g. "5bd" → { value: 5, unit: BUSINESS_DAYS }).
2266
+ """
2267
+ type ShippingEstimate {
2268
+ """Numeric quantity of the estimate."""
2269
+ value: Int!
2270
+ """Time unit for the estimate."""
2271
+ unit: ShippingEstimateUnit!
2272
+ }
2273
+
2274
+ """
2275
+ A shipping option as it applies to one specific cart item — carries that
2276
+ item's own price for the option, distinct from the cart-wide ShippingOption.
2277
+ """
2278
+ type ItemShippingOption {
2279
+ """
2280
+ Opaque delivery option identifier, encoded to distinguish per-item options
2281
+ from cart-wide options so the Apollo cache never conflates them.
2282
+ """
2283
+ id: ID!
2284
+ """
2285
+ Human-readable option name (e.g. "Standard Delivery"). Derived from a Checkout simulation, which
2286
+ sends no `Accept-Language` and keys its SKU cache without a locale, so this text is NOT localized:
2287
+ it may read in the account's default culture on a non-default binding.
2288
+ """
2289
+ name: String!
2290
+ """Delivery channel: home delivery or pickup."""
2291
+ channel: DeliveryChannel!
2292
+ """Estimated shipping time."""
2293
+ shippingEstimate: ShippingEstimate!
2294
+ """Shipping cost for this item. Zero when free shipping applies."""
2295
+ price: Money!
2296
+ """Shipping list price for this item before any promotions."""
2297
+ listPrice: Money!
2298
+ }
2299
+
2300
+ """A shipping option available for a given item and destination."""
2301
+ type ShippingOption {
2302
+ """Opaque delivery option identifier."""
2303
+ id: ID!
2304
+ """
2305
+ Human-readable option name (e.g. "Standard Delivery"). Derived from a Checkout simulation, which
2306
+ sends no `Accept-Language` and keys its SKU cache without a locale, so this text is NOT localized:
2307
+ it may read in the account's default culture on a non-default binding.
2308
+ """
2309
+ name: String!
2310
+ """Delivery channel: home delivery or pickup."""
2311
+ channel: DeliveryChannel!
2312
+ """Estimated shipping time."""
2313
+ shippingEstimate: ShippingEstimate!
2314
+ """Shipping cost. Zero when free shipping applies."""
2315
+ price: Money!
2316
+ """Shipping list price before any promotions."""
2317
+ listPrice: Money!
2318
+ """Cart items for which this option is currently available."""
2319
+ items: [CartItem!]!
2320
+ }
2321
+
2322
+ """Error codes for shipping simulation operations."""
2323
+ enum ShippingSimulateErrorCode {
2324
+ """The postal code was not found or rejected by the fulfillment provider."""
2325
+ INVALID_POSTAL_CODE
2326
+ """The provided variant ID is not a valid Variant Node ID."""
2327
+ INVALID_VARIANT_ID
2328
+ """The provided seller ID is not a valid Seller Node ID."""
2329
+ INVALID_SELLER_ID
2330
+ """
2331
+ No active cart in context: the cartShippingSimulation query requires an x-order-form-id and never mints a cart.
2332
+ """
2333
+ MISSING_CART_CONTEXT
2334
+ }
2335
+
2336
+ """A domain error returned from the shippingSimulation query."""
2337
+ type ShippingSimulateError {
2338
+ """Machine-readable error code."""
2339
+ code: ShippingSimulateErrorCode!
2340
+ """Human-readable error message."""
2341
+ message: String!
2342
+ }
2343
+
2344
+ """Payload returned by the shippingSimulation query."""
2345
+ type ShippingSimulationPayload {
2346
+ """
2347
+ Available shipping options for the given item and destination.
2348
+ Null when userErrors is non-empty.
2349
+ """
2350
+ shippingOptions: [ShippingOption!]
2351
+ """Domain errors that occurred during the operation."""
2352
+ userErrors: [ShippingSimulateError!]!
2353
+ }
2354
+
2355
+ """Input for simulating shipping options for a single variant on a PDP."""
2356
+ input ShippingSimulateInput {
2357
+ """Postal code of the delivery destination."""
2358
+ postalCode: String!
2359
+ """ISO 3166-1 alpha-3 country code (e.g. "BRA")."""
2360
+ country: String!
2361
+ """The variant's global Node ID to simulate shipping for."""
2362
+ variantId: ID!
2363
+ """Quantity of the variant. Must be at least 1."""
2364
+ quantity: Int!
2365
+ """The seller's global Node ID responsible for the variant."""
2366
+ seller: ID!
2367
+ }
2368
+
2369
+ """
2370
+ Input for simulating shipping for the whole active cart. Carries the
2371
+ destination only; items are sourced from the cart in the x-order-form-id
2372
+ context, so there is no variant, quantity, or seller.
2373
+ """
2374
+ input CartShippingSimulateInput {
2375
+ """Postal code of the delivery destination."""
2376
+ postalCode: String!
2377
+ """ISO 3166-1 alpha-3 country code (e.g. "BRA")."""
2378
+ country: String!
2379
+ }
2380
+
2381
+ """Payload returned by the cartShippingSimulation query."""
2382
+ type CartShippingSimulationPayload {
2383
+ """
2384
+ Shipping options available for every item in the cart, prices summed across
2385
+ items. Empty when the cart is empty or no option is common to all items.
2386
+ Null when userErrors is non-empty.
2387
+ """
2388
+ shippingOptions: [ShippingOption!]
2389
+ """Domain errors that occurred during the operation."""
2390
+ userErrors: [ShippingSimulateError!]!
2391
+ }
2392
+
2393
+ """
2394
+ The shopper's profile, projected from the order form's clientProfileData.
2395
+ A sibling of Cart, not nested under it. Individual (B2C) only.
2396
+ """
2397
+ type ClientProfile implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2398
+ """
2399
+ Globally unique identifier (Relay Node ID), encoded from the order form ID.
2400
+ """
2401
+ id: ID!
2402
+ """
2403
+ Contact email as recorded on the order form. Null when no profile is set.
2404
+ """
2405
+ email: String
2406
+ """Given name. Null when unset."""
2407
+ firstName: String
2408
+ """Family name. Null when unset."""
2409
+ lastName: String
2410
+ """Contact phone in the order form's stored format. Null when unset."""
2411
+ phone: String
2412
+ """Tax document (CPF for Individual shoppers). Null when unset."""
2413
+ document: String
2414
+ }
2415
+
2416
+ """
2417
+ The shopper's preference opt-ins, projected from the order form's
2418
+ clientPreferencesData. A sibling of Cart, not nested under it.
2419
+ """
2420
+ type ClientPreferences implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2421
+ """
2422
+ Globally unique identifier (Relay Node ID), encoded from the order form ID.
2423
+ """
2424
+ id: ID!
2425
+ """Newsletter opt-in. Null when the shopper has not chosen."""
2426
+ optinNewsLetter: Boolean
2427
+ """Save-personal-data opt-in. Null when the shopper has not chosen."""
2428
+ savePersonalData: Boolean
2429
+ }
2430
+
2431
+ """
2432
+ Partial profile update. Provide only the fields to write; omitted fields are
2433
+ left unchanged.
2434
+ """
2435
+ input ClientProfileUpdateInput {
2436
+ """Contact email to write. Omit to leave unchanged."""
2437
+ email: String
2438
+ """Given name to write. Omit to leave unchanged."""
2439
+ firstName: String
2440
+ """Family name to write. Omit to leave unchanged."""
2441
+ lastName: String
2442
+ """Contact phone to write. Omit to leave unchanged."""
2443
+ phone: String
2444
+ """Tax document to write. Omit to leave unchanged."""
2445
+ document: String
2446
+ }
2447
+
2448
+ """
2449
+ Partial preferences update. Provide only the flags to write; omitted flags are
2450
+ left unchanged.
2451
+ """
2452
+ input ClientPreferencesUpdateInput {
2453
+ """Newsletter opt-in to write. Omit to leave unchanged."""
2454
+ optinNewsLetter: Boolean
2455
+ """Save-personal-data opt-in to write. Omit to leave unchanged."""
2456
+ savePersonalData: Boolean
2457
+ }
2458
+
2459
+ """Error codes for client profile update operations."""
2460
+ enum ClientProfileUpdateErrorCode {
2461
+ """No cart context was provided (x-order-form-id header/cookie)."""
2462
+ MISSING_CART_CONTEXT
2463
+ """The cart was not found."""
2464
+ CART_NOT_FOUND
2465
+ """The input contained no profile fields to write."""
2466
+ NO_PROFILE_FIELD_PROVIDED
2467
+ }
2468
+
2469
+ """Error codes for client preferences update operations."""
2470
+ enum ClientPreferencesUpdateErrorCode {
2471
+ """No cart context was provided (x-order-form-id header/cookie)."""
2472
+ MISSING_CART_CONTEXT
2473
+ """The cart was not found."""
2474
+ CART_NOT_FOUND
2475
+ """The input contained no preferences to write."""
2476
+ NO_PREFERENCE_PROVIDED
2477
+ }
2478
+
2479
+ """A domain error returned from a client profile update mutation."""
2480
+ type ClientProfileUpdateError {
2481
+ """Machine-readable error code."""
2482
+ code: ClientProfileUpdateErrorCode!
2483
+ """Human-readable error message."""
2484
+ message: String!
2485
+ }
2486
+
2487
+ """A domain error returned from a client preferences update mutation."""
2488
+ type ClientPreferencesUpdateError {
2489
+ """Machine-readable error code."""
2490
+ code: ClientPreferencesUpdateErrorCode!
2491
+ """Human-readable error message."""
2492
+ message: String!
2493
+ }
2494
+
2495
+ """Payload returned by the clientProfileUpdate mutation."""
2496
+ type ClientProfileUpdatePayload {
2497
+ """The updated profile, or null if a context/validation error occurred."""
2498
+ clientProfile: ClientProfile
2499
+ """
2500
+ The session after the write, reflecting the now-current isIdentified derived from
2501
+ clientProfileData.email. Null alongside clientProfile on a context/validation error.
2502
+ """
2503
+ session: Session
2504
+ """Domain errors that occurred during the operation."""
2505
+ userErrors: [ClientProfileUpdateError!]!
2506
+ }
2507
+
2508
+ """Payload returned by the clientPreferencesUpdate mutation."""
2509
+ type ClientPreferencesUpdatePayload {
2510
+ """
2511
+ The updated preferences, or null if a context/validation error occurred.
2512
+ """
2513
+ clientPreferences: ClientPreferences
2514
+ """Domain errors that occurred during the operation."""
2515
+ userErrors: [ClientPreferencesUpdateError!]!
2516
+ }
2517
+
2518
+ """
2519
+ The delivery address, saved addresses, and shipping options for the cart.
2520
+ A read-only sibling of Cart, projected from the same order form fetch.
2521
+ Null fields project explicitly (never undefined), allowing partial queries.
2522
+ """
2523
+ type Shipping implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2524
+ """
2525
+ Globally unique identifier (Relay Node ID), encoded from the order form ID.
2526
+ """
2527
+ id: ID!
2528
+ """The delivery address on the cart. Null until the shopper provides one."""
2529
+ address: Address
2530
+ """The logged-in shopper's saved addresses. Empty for anonymous shoppers."""
2531
+ savedAddresses: [Address!]!
2532
+ """
2533
+ Delivery-channel shipping options common to all cart items for the current address, prices summed.
2534
+ """
2535
+ options: [ShippingOption!]!
2536
+ """
2537
+ The selected option, when one selection applies to the whole cart. Null when items disagree or the persisted selection is a pickup-channel SLA.
2538
+ """
2539
+ selectedOptionId: ID
2540
+ }
2541
+
2542
+ """A delivery address or saved-address reference."""
2543
+ type Address {
2544
+ """Saved-address reference. Null for addresses entered in this session."""
2545
+ id: ID
2546
+ """Recipient name for this address."""
2547
+ recipientName: String
2548
+ """
2549
+ Postal code. Required when persisting an address via the mutation inputs, but nullable here:
2550
+ pickup/search/disposable addresses and legacy saved addresses can come back without one.
2551
+ """
2552
+ postalCode: String
2553
+ """
2554
+ ISO 3166-1 alpha-3 country code. Required when persisting an address via the mutation inputs,
2555
+ but nullable here for the same reason as postalCode.
2556
+ """
2557
+ country: String
2558
+ """Street name."""
2559
+ street: String
2560
+ """Street number."""
2561
+ number: String
2562
+ """Additional address detail (apartment, suite, etc.)."""
2563
+ complement: String
2564
+ """Neighborhood / district."""
2565
+ neighborhood: String
2566
+ """City name."""
2567
+ city: String
2568
+ """State / province code."""
2569
+ state: String
2570
+ }
2571
+
2572
+ """
2573
+ The shopper's session and authentication state for the active order form.
2574
+ A read-only sibling of Cart, projected from the same order form fetch. Carries
2575
+ no profile data — profile fields live on ClientProfile.
2576
+ """
2577
+ type Session implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2578
+ """
2579
+ Globally unique identifier (Relay Node ID), encoded from the order form ID.
2580
+ """
2581
+ id: ID!
2582
+ """
2583
+ Whether the shopper holds an authenticated VTEX session. A guest is `false` — a normal state, never an error.
2584
+ """
2585
+ loggedIn: Boolean!
2586
+ """
2587
+ Whether the shopper may edit their identity data. Lets Controls render editable vs. identified-but-masked fields.
2588
+ """
2589
+ canEditData: Boolean!
2590
+ """
2591
+ Server-computed: whether a profile is attached to the order form (clientProfileData.email is present and non-empty). Identification is distinct from authentication.
2592
+ """
2593
+ isIdentified: Boolean!
2594
+ }
2595
+
2596
+ """Input for updating the delivery address on the cart."""
2597
+ input ShippingAddressUpdateInput {
2598
+ """
2599
+ Saved address reference. Present when the shopper picked (and possibly edited) a saved address.
2600
+ """
2601
+ savedAddressId: ID
2602
+ """Recipient name for the delivery address."""
2603
+ recipientName: String!
2604
+ """Postal code for the delivery address."""
2605
+ postalCode: String!
2606
+ """ISO 3166-1 alpha-3 country code (e.g. "BRA")."""
2607
+ country: String!
2608
+ """Street name."""
2609
+ street: String
2610
+ """Street number."""
2611
+ number: String
2612
+ """Additional address detail (apartment, suite, etc.)."""
2613
+ complement: String
2614
+ """Neighborhood / district."""
2615
+ neighborhood: String
2616
+ """City name."""
2617
+ city: String
2618
+ """State / province code."""
2619
+ state: String
2620
+ }
2621
+
2622
+ """Error codes for shipping address update operations."""
2623
+ enum ShippingAddressUpdateErrorCode {
2624
+ """No cart context was provided (x-order-form-id header/cookie)."""
2625
+ MISSING_CART_CONTEXT
2626
+ """The cart was not found."""
2627
+ CART_NOT_FOUND
2628
+ """The recipient name is blank."""
2629
+ MISSING_RECIPIENT_NAME
2630
+ """The provided saved address ID does not match any available addresses."""
2631
+ INVALID_SAVED_ADDRESS_ID
2632
+ """The postal code is invalid or not found."""
2633
+ INVALID_POSTAL_CODE
2634
+ """The address is invalid."""
2635
+ INVALID_ADDRESS
2636
+ }
2637
+
2638
+ """A domain error returned from a shipping address update mutation."""
2639
+ type ShippingAddressUpdateError {
2640
+ """Machine-readable error code."""
2641
+ code: ShippingAddressUpdateErrorCode!
2642
+ """Human-readable error message."""
2643
+ message: String!
2644
+ }
2645
+
2646
+ """Payload returned by the shippingAddressUpdate mutation."""
2647
+ type ShippingAddressUpdatePayload {
2648
+ """The updated shipping state, or null if errors occurred."""
2649
+ shipping: Shipping
2650
+ """The updated cart, or null if errors occurred."""
2651
+ cart: Cart
2652
+ """Domain errors that occurred during the operation."""
2653
+ userErrors: [ShippingAddressUpdateError!]!
2654
+ }
2655
+
2656
+ """Input for selecting a shipping option for the whole cart."""
2657
+ input ShippingOptionSelectInput {
2658
+ """
2659
+ The shipping option ID to select. Must be available for all items in the cart.
2660
+ """
2661
+ optionId: ID!
2662
+ }
2663
+
2664
+ """Error codes for shipping option select operations."""
2665
+ enum ShippingOptionSelectErrorCode {
2666
+ """No cart context was provided (x-order-form-id header/cookie)."""
2667
+ MISSING_CART_CONTEXT
2668
+ """The cart was not found."""
2669
+ CART_NOT_FOUND
2670
+ """The option is not available for all items in the cart."""
2671
+ OPTION_UNAVAILABLE
2672
+ """No delivery address is persisted on the cart."""
2673
+ MISSING_SHIPPING_ADDRESS
2674
+ }
2675
+
2676
+ """A domain error returned from a shipping option select mutation."""
2677
+ type ShippingOptionSelectError {
2678
+ """Machine-readable error code."""
2679
+ code: ShippingOptionSelectErrorCode!
2680
+ """Human-readable error message."""
2681
+ message: String!
2682
+ }
2683
+
2684
+ """Payload returned by the shippingOptionSelect mutation."""
2685
+ type ShippingOptionSelectPayload {
2686
+ """The updated shipping state, or null if errors occurred."""
2687
+ shipping: Shipping
2688
+ """The updated cart, or null if errors occurred."""
2689
+ cart: Cart
2690
+ """Domain errors that occurred during the operation."""
2691
+ userErrors: [ShippingOptionSelectError!]!
2692
+ }
2693
+
2694
+ """
2695
+ The authentication methods an account enables, read before rendering a sign-in form.
2696
+ """
2697
+ type SessionAuthProviders {
2698
+ """Whether classic email and password sign-in is enabled."""
2699
+ passwordAuthentication: Boolean!
2700
+ """Whether email access-code (passwordless) sign-in is enabled."""
2701
+ accessKeyAuthentication: Boolean!
2702
+ }
2703
+
2704
+ """
2705
+ A typed, expected failure of a login attempt. Distinct from the top-level
2706
+ UNAUTHORIZED gate: this is a domain outcome (the request was understood, the
2707
+ business rejected it), never an infrastructure failure.
2708
+ """
2709
+ type SessionError {
2710
+ """Machine-readable error code for the login-attempt failure."""
2711
+ code: SessionErrorCode!
2712
+ """Human-readable message describing the failure."""
2713
+ message: String!
2714
+ }
2715
+
2716
+ """The set of login-attempt failure codes a session mutation can return."""
2717
+ enum SessionErrorCode {
2718
+ """Email or password was not accepted by VTEX ID."""
2719
+ INVALID_CREDENTIALS
2720
+ """The access code was wrong or expired."""
2721
+ INVALID_ACCESS_CODE
2722
+ """Too many access codes were requested for this email."""
2723
+ ACCESS_CODE_SEND_LIMIT
2724
+ """The user is blocked by VTEX ID."""
2725
+ BLOCKED
2726
+ """
2727
+ BFF-side guard: the request lacked the auth context it needed (e.g. a missing
2728
+ authenticationToken). Not a VTEX outcome.
2729
+ """
2730
+ MISSING_AUTH_CONTEXT
2731
+ }
2732
+
2733
+ """
2734
+ The login / logout result, projected from the one refreshed order form. session,
2735
+ cart, clientProfile and clientPreferences are normalized Relay Nodes (keyed on
2736
+ the orderFormId) so Apollo merges them into the cache and the client updates
2737
+ reactively with no refetch.
2738
+ """
2739
+ type SessionLoginPayload {
2740
+ """The session after the attempt; loggedIn is true only on success."""
2741
+ session: Session!
2742
+ """The cart projected from the refreshed order form."""
2743
+ cart: Cart!
2744
+ """
2745
+ The client profile projected from the refreshed order form; the entity always
2746
+ resolves, its fields are null when unset.
2747
+ """
2748
+ clientProfile: ClientProfile!
2749
+ """
2750
+ The client preferences projected from the refreshed order form; the entity
2751
+ always resolves, its fields are null when unset.
2752
+ """
2753
+ clientPreferences: ClientPreferences!
2754
+ """Typed login-attempt failures. Empty on success."""
2755
+ userErrors: [SessionError!]!
2756
+ }
2757
+
2758
+ """The result of requesting an email access code."""
2759
+ type SessionRequestAccessCodePayload {
2760
+ """
2761
+ Opaque token to hand back to sessionValidateAccessCode. Null when the request
2762
+ failed.
2763
+ """
2764
+ authenticationToken: String
2765
+ """Typed request failures. Empty on success."""
2766
+ userErrors: [SessionError!]!
2767
+ }
2768
+
2769
+ """Credentials for a classic email + password sign-in."""
2770
+ input SessionPasswordLoginInput {
2771
+ """The shopper's email address."""
2772
+ email: String!
2773
+ """
2774
+ The shopper's password. Proxied to VTEX ID over TLS, never logged or persisted.
2775
+ """
2776
+ password: String!
2777
+ }
2778
+
2779
+ """The email to send an access code to."""
2780
+ input SessionRequestAccessCodeInput {
2781
+ """The shopper's email address the access code is sent to."""
2782
+ email: String!
2783
+ }
2784
+
2785
+ """An access code plus the authenticationToken it was issued against."""
2786
+ input SessionValidateAccessCodeInput {
2787
+ """The shopper's email address."""
2788
+ email: String!
2789
+ """The access code the shopper received by email."""
2790
+ accessCode: String!
2791
+ """
2792
+ The opaque token returned by sessionRequestAccessCode, handed back unchanged.
2793
+ """
2794
+ authenticationToken: String!
2795
+ }
2796
+
2797
+ """
2798
+ The shopper's active region. Both fields are nullable: a shopper who has never
2799
+ submitted a postal code has no region, and a submitted postal code does not
2800
+ always resolve to a known city.
2801
+ """
2802
+ type Region @cacheControl(maxAge: 0, scope: PRIVATE) {
2803
+ """
2804
+ Stable identity for cache normalization. Not a Relay Node ID: a region is
2805
+ session-scoped shopper state, never addressable by global id.
2806
+ """
2807
+ id: ID!
2808
+ """The active postal code, formatted for display. Null when none is set."""
2809
+ postalCode: String
2810
+ """
2811
+ The city the postal code resolves to. Null when the postal code is unknown to
2812
+ the resolver, which is a normal state and not an error.
2813
+ """
2814
+ city: String
2815
+ }
2816
+
2817
+ """
2818
+ Why a region write was refused. Stable across locales, so a client can render
2819
+ each case in the shopper's language instead of echoing the server's message.
2820
+ """
2821
+ enum RegionErrorCode {
2822
+ """The value did not normalize to a complete postal code."""
2823
+ INVALID_POSTAL_CODE
2824
+ """The postal code is complete but falls outside the served ranges."""
2825
+ UNSERVED_POSTAL_CODE
2826
+ }
2827
+
2828
+ """
2829
+ A typed, expected failure of a region write: the request was understood and the
2830
+ business rejected it. Distinct from an infrastructure failure, which surfaces as
2831
+ a top-level GraphQL error.
2832
+ """
2833
+ type RegionError {
2834
+ """Which rule refused the postal code."""
2835
+ code: RegionErrorCode!
2836
+ """
2837
+ Human-readable message describing why the postal code was rejected. Written in
2838
+ English by the server; a client should key its copy on `code` instead.
2839
+ """
2840
+ message: String!
2841
+ }
2842
+
2843
+ """The result of submitting a postal code."""
2844
+ type RegionUpdatePayload {
2845
+ """
2846
+ The region after the write. Null when the postal code was rejected, leaving
2847
+ any previously active region untouched.
2848
+ """
2849
+ region: Region
2850
+ """Typed rejections. Empty on success."""
2851
+ errors: [RegionError!]!
2852
+ }
2853
+
2854
+ """
2855
+ A shopper's persistent, cart-independent profile. Distinct from checkout's
2856
+ order-form-scoped ClientProfile.
2857
+ """
2858
+ type CustomerProfile @cacheControl(maxAge: 0, scope: PRIVATE) {
2859
+ """
2860
+ Stable identity for cache normalization. Not a Relay Node ID: the profile is
2861
+ session-scoped shopper state, derived from the session and never addressable
2862
+ by a global id (no id argument, no Query.node entry — IDOR-safe).
2863
+ """
2864
+ id: ID!
2865
+ """Given name. Null when unset."""
2866
+ firstName: String
2867
+ """Family name. Null when unset."""
2868
+ lastName: String
2869
+ """
2870
+ The shopper's login identifier. Read-only — excluded from the update input by construction.
2871
+ """
2872
+ email: String
2873
+ """Primary contact phone. Null when unset."""
2874
+ homePhone: String
2875
+ """Mobile contact phone. Null when unset."""
2876
+ mobilePhone: String
2877
+ """National tax ID. Null when unset."""
2878
+ document: String
2879
+ """
2880
+ The tax ID's type, so the control can adapt to the shopper's region. Null when unset.
2881
+ """
2882
+ documentType: String
2883
+ """Date of birth. Null when unset."""
2884
+ birthDate: String
2885
+ """
2886
+ Free-form gender value; the store configures the options it offers. Null when unset.
2887
+ """
2888
+ gender: String
2889
+ }
2890
+
2891
+ """A typed, expected failure of a profile write."""
2892
+ type CustomerProfileError {
2893
+ """Machine-readable code for the write failure."""
2894
+ code: CustomerProfileErrorCode!
2895
+ """A safe message. Never echoes a submitted profile value."""
2896
+ message: String!
2897
+ }
2898
+
2899
+ """The set of expected, typed profile-write failure codes."""
2900
+ enum CustomerProfileErrorCode {
2901
+ """
2902
+ The account's profile schema refused one or more submitted values. It does not
2903
+ attribute the refusal to a cause — a required field left empty and a malformed
2904
+ value are not distinguishable until the upstream rejection body is
2905
+ characterised, at which point a narrower code joins this one.
2906
+ """
2907
+ INVALID_VALUE
2908
+ }
2909
+
2910
+ """
2911
+ Every field is optional: provide only what the shopper edited. An empty string
2912
+ is an explicit erase; an omitted field is left untouched. A `null` is neither —
2913
+ it counts as not provided, so nulling an untouched field cannot wipe it.
2914
+ """
2915
+ input CustomerProfileUpdateInput {
2916
+ """Given name to write. Omit to leave unchanged; empty string to erase."""
2917
+ firstName: String
2918
+ """Family name to write. Omit to leave unchanged; empty string to erase."""
2919
+ lastName: String
2920
+ """
2921
+ Primary contact phone to write. Omit to leave unchanged; empty string to erase.
2922
+ """
2923
+ homePhone: String
2924
+ """
2925
+ Mobile contact phone to write. Omit to leave unchanged; empty string to erase.
2926
+ """
2927
+ mobilePhone: String
2928
+ """
2929
+ National tax ID to write. Omit to leave unchanged; empty string to erase.
2930
+ """
2931
+ document: String
2932
+ """Tax ID type to write. Omit to leave unchanged; empty string to erase."""
2933
+ documentType: String
2934
+ """
2935
+ Date of birth to write. Omit to leave unchanged; empty string to erase.
2936
+ """
2937
+ birthDate: String
2938
+ """Gender value to write. Omit to leave unchanged; empty string to erase."""
2939
+ gender: String
2940
+ }
2941
+
2942
+ """
2943
+ The result of a profile write, carrying the merged profile and any typed
2944
+ failures.
2945
+ """
2946
+ type CustomerProfileUpdatePayload {
2947
+ """
2948
+ The profile after the write, so a reactive fragment re-delivers without a refetch.
2949
+ """
2950
+ customerProfile: CustomerProfile!
2951
+ """Typed, expected write failures. Empty on success."""
2952
+ userErrors: [CustomerProfileError!]!
2953
+ }