@vtex/faststore 0.0.5 → 0.0.6

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 (232) hide show
  1. package/CHANGELOG.md +45 -0
  2. package/dist/actions.json +181 -0
  3. package/dist/catalog.json +1543 -495
  4. package/dist/client.d.ts +2 -1
  5. package/dist/client.js +2 -1
  6. package/dist/components.d.ts +28 -7
  7. package/dist/components.js +31 -12
  8. package/dist/docs/access-code-sign-in.md +1 -1
  9. package/dist/docs/address-summary.md +24 -3
  10. package/dist/docs/alert-dialog.md +204 -0
  11. package/dist/docs/billing-address.md +284 -0
  12. package/dist/docs/card-entry.md +250 -0
  13. package/dist/docs/cardholder-document.md +142 -0
  14. package/dist/docs/client-preferences-fieldset.md +148 -0
  15. package/dist/docs/client-preferences.md +2 -1
  16. package/dist/docs/client-profile-fieldset.md +184 -0
  17. package/dist/docs/client-profile.md +1 -1
  18. package/dist/docs/document-field.md +58 -4
  19. package/dist/docs/field.md +317 -0
  20. package/dist/docs/form.md +307 -0
  21. package/dist/docs/identity-edit.md +6 -6
  22. package/dist/docs/identity-summary.md +5 -5
  23. package/dist/docs/installments.md +248 -0
  24. package/dist/docs/my-account-profile.md +1 -0
  25. package/dist/docs/order-placed-payment-summary.md +138 -0
  26. package/dist/docs/payment-method-badges.md +232 -0
  27. package/dist/docs/payment-methods.md +1 -0
  28. package/dist/docs/payment.md +218 -0
  29. package/dist/docs/phone-field.md +58 -4
  30. package/dist/docs/place-order.md +157 -0
  31. package/dist/docs/save-card.md +186 -0
  32. package/dist/docs/saved-cards.md +218 -0
  33. package/dist/docs/select.md +465 -0
  34. package/dist/docs/shipping-address.md +110 -258
  35. package/dist/index.d.ts +4 -1
  36. package/dist/internal/client.d.ts +3 -1
  37. package/dist/internal/client.js +3 -1
  38. package/dist/matter/access-code-sign-in/access-code-sign-in.js +9 -8
  39. package/dist/matter/access-code-sign-in/access-code-sign-in.js.map +1 -1
  40. package/dist/matter/billing-address/billing-address.d.ts +165 -0
  41. package/dist/matter/billing-address/billing-address.js +408 -0
  42. package/dist/matter/billing-address/billing-address.js.map +1 -0
  43. package/dist/matter/card-entry/card-capture.d.ts +25 -0
  44. package/dist/matter/card-entry/card-capture.js +25 -0
  45. package/dist/matter/card-entry/card-capture.js.map +1 -0
  46. package/dist/matter/card-entry/card-entry.d.ts +120 -0
  47. package/dist/matter/card-entry/card-entry.js +832 -0
  48. package/dist/matter/card-entry/card-entry.js.map +1 -0
  49. package/dist/matter/cardholder-document/cardholder-document.d.ts +45 -0
  50. package/dist/matter/cardholder-document/cardholder-document.js +70 -0
  51. package/dist/matter/cardholder-document/cardholder-document.js.map +1 -0
  52. package/dist/matter/client-preferences/client-preferences-fieldset.d.ts +77 -0
  53. package/dist/matter/client-preferences/client-preferences-fieldset.js +299 -0
  54. package/dist/matter/client-preferences/client-preferences-fieldset.js.map +1 -0
  55. package/dist/matter/client-preferences/client-preferences.d.ts +3 -5
  56. package/dist/matter/client-preferences/client-preferences.js +6 -6
  57. package/dist/matter/client-preferences/client-preferences.js.map +1 -1
  58. package/dist/matter/client-profile/client-profile.d.ts +4 -6
  59. package/dist/matter/client-profile/client-profile.js +9 -6
  60. package/dist/matter/client-profile/client-profile.js.map +1 -1
  61. package/dist/matter/client-profile-form/client-profile-fieldset.d.ts +119 -0
  62. package/dist/matter/client-profile-form/client-profile-fieldset.js +488 -0
  63. package/dist/matter/client-profile-form/client-profile-fieldset.js.map +1 -0
  64. package/dist/matter/identity-edit/identity-edit.js +2 -2
  65. package/dist/matter/identity-edit/identity-edit.js.map +1 -1
  66. package/dist/matter/identity-summary/identity-summary.js +2 -2
  67. package/dist/matter/identity-summary/identity-summary.js.map +1 -1
  68. package/dist/matter/installments/installments-select.d.ts +42 -0
  69. package/dist/matter/installments/installments-select.js +167 -0
  70. package/dist/matter/installments/installments-select.js.map +1 -0
  71. package/dist/matter/installments/installments.d.ts +58 -0
  72. package/dist/matter/installments/installments.js +176 -0
  73. package/dist/matter/installments/installments.js.map +1 -0
  74. package/dist/matter/installments/use-installments-selection.d.ts +29 -0
  75. package/dist/matter/installments/use-installments-selection.js +95 -0
  76. package/dist/matter/installments/use-installments-selection.js.map +1 -0
  77. package/dist/matter/my-account-profile/my-account-profile.js +4 -4
  78. package/dist/matter/my-account-profile/my-account-profile.js.map +1 -1
  79. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.d.ts +63 -0
  80. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js +305 -0
  81. package/dist/matter/order-placed-payment-summary/order-placed-payment-summary.js.map +1 -0
  82. package/dist/matter/payment/payment-card-capture.d.ts +19 -0
  83. package/dist/matter/payment/payment-card-capture.js +129 -0
  84. package/dist/matter/payment/payment-card-capture.js.map +1 -0
  85. package/dist/matter/payment/payment-controller.d.ts +24 -0
  86. package/dist/matter/payment/payment-controller.js +107 -0
  87. package/dist/matter/payment/payment-controller.js.map +1 -0
  88. package/dist/matter/payment/payment-method-badges.d.ts +57 -0
  89. package/dist/matter/payment/payment-method-badges.js +192 -0
  90. package/dist/matter/payment/payment-method-badges.js.map +1 -0
  91. package/dist/matter/payment/payment.d.ts +89 -0
  92. package/dist/matter/payment/payment.js +263 -0
  93. package/dist/matter/payment/payment.js.map +1 -0
  94. package/dist/matter/payment/use-payment-method-selection.d.ts +302 -0
  95. package/dist/matter/payment/use-payment-method-selection.js +458 -0
  96. package/dist/matter/payment/use-payment-method-selection.js.map +1 -0
  97. package/dist/matter/payment/use-payment-submit-gate.d.ts +111 -0
  98. package/dist/matter/payment/use-payment-submit-gate.js +144 -0
  99. package/dist/matter/payment/use-payment-submit-gate.js.map +1 -0
  100. package/dist/matter/place-order/place-order.d.ts +74 -0
  101. package/dist/matter/place-order/place-order.js +379 -0
  102. package/dist/matter/place-order/place-order.js.map +1 -0
  103. package/dist/matter/product-list/product-list.d.ts +1 -0
  104. package/dist/matter/product-list/product-list.js.map +1 -1
  105. package/dist/matter/product-shelf/product-shelf.d.ts +1 -0
  106. package/dist/matter/product-shelf/product-shelf.js +2 -0
  107. package/dist/matter/product-shelf/product-shelf.js.map +1 -1
  108. package/dist/matter/region/region.js +1 -1
  109. package/dist/matter/region/region.js.map +1 -1
  110. package/dist/matter/save-card/save-card.d.ts +49 -0
  111. package/dist/matter/save-card/save-card.js +188 -0
  112. package/dist/matter/save-card/save-card.js.map +1 -0
  113. package/dist/matter/saved-cards/saved-cards.d.ts +79 -0
  114. package/dist/matter/saved-cards/saved-cards.js +387 -0
  115. package/dist/matter/saved-cards/saved-cards.js.map +1 -0
  116. package/dist/matter/shipping-address/country-descriptors.js +20 -10
  117. package/dist/matter/shipping-address/country-descriptors.js.map +1 -1
  118. package/dist/matter/shipping-address/shipping-address.d.ts +113 -174
  119. package/dist/matter/shipping-address/shipping-address.js +480 -791
  120. package/dist/matter/shipping-address/shipping-address.js.map +1 -1
  121. package/dist/matter/variant-selector/variant-selector.js +1 -1
  122. package/dist/particles/address-summary/address-summary.d.ts +24 -0
  123. package/dist/particles/address-summary/address-summary.js +83 -2
  124. package/dist/particles/address-summary/address-summary.js.map +1 -1
  125. package/dist/particles/alert-dialog/alert-dialog.d.ts +68 -0
  126. package/dist/particles/alert-dialog/alert-dialog.js +187 -0
  127. package/dist/particles/alert-dialog/alert-dialog.js.map +1 -0
  128. package/dist/particles/checkbox/checkbox.d.ts +7 -3
  129. package/dist/particles/checkbox/checkbox.js +4 -1
  130. package/dist/particles/checkbox/checkbox.js.map +1 -1
  131. package/dist/particles/document-field/document-field.d.ts +48 -5
  132. package/dist/particles/document-field/document-field.js +189 -32
  133. package/dist/particles/document-field/document-field.js.map +1 -1
  134. package/dist/particles/field/bound-field-registry.js +52 -0
  135. package/dist/particles/field/bound-field-registry.js.map +1 -0
  136. package/dist/particles/field/field.d.ts +116 -0
  137. package/dist/particles/field/field.js +497 -6
  138. package/dist/particles/field/field.js.map +1 -1
  139. package/dist/particles/fieldset/fieldset.js +2 -2
  140. package/dist/particles/fieldset/fieldset.js.map +1 -1
  141. package/dist/particles/form/form.d.ts +104 -0
  142. package/dist/particles/form/form.js +485 -0
  143. package/dist/particles/form/form.js.map +1 -0
  144. package/dist/particles/phone-field/phone-field.d.ts +38 -10
  145. package/dist/particles/phone-field/phone-field.js +183 -39
  146. package/dist/particles/phone-field/phone-field.js.map +1 -1
  147. package/dist/particles/postal-code-field/postal-code-field.js +2 -2
  148. package/dist/particles/postal-code-field/postal-code-field.js.map +1 -1
  149. package/dist/particles/select/field-select.d.ts +43 -0
  150. package/dist/particles/select/field-select.js +150 -0
  151. package/dist/particles/select/field-select.js.map +1 -0
  152. package/dist/particles/select/select.d.ts +2 -0
  153. package/dist/particles/select/select.js.map +1 -1
  154. package/dist/particles/shared/compose-refs.js +21 -0
  155. package/dist/particles/shared/compose-refs.js.map +1 -0
  156. package/dist/schema.graphql +701 -2
  157. package/dist/sdk/actions/analytics-action-provider.d.ts +15 -0
  158. package/dist/sdk/actions/analytics-action-provider.js +19 -0
  159. package/dist/sdk/actions/analytics-action-provider.js.map +1 -0
  160. package/dist/sdk/actions/index.d.ts +3 -1
  161. package/dist/sdk/actions/index.js +3 -1
  162. package/dist/sdk/actions/payment-action-provider.d.ts +22 -0
  163. package/dist/sdk/actions/payment-action-provider.js +26 -0
  164. package/dist/sdk/actions/payment-action-provider.js.map +1 -0
  165. package/dist/sdk/actions/types.d.ts +6 -2
  166. package/dist/sdk/analytics/analytics-destination.d.ts +43 -0
  167. package/dist/sdk/analytics/analytics-destination.js +90 -0
  168. package/dist/sdk/analytics/analytics-destination.js.map +1 -0
  169. package/dist/sdk/analytics/use-analytics-actions.d.ts +57 -0
  170. package/dist/sdk/analytics/use-analytics-actions.js +108 -0
  171. package/dist/sdk/analytics/use-analytics-actions.js.map +1 -0
  172. package/dist/sdk/cart/use-cart-actions.js +1 -1
  173. package/dist/sdk/data/entity-resolution-context.js +31 -0
  174. package/dist/sdk/data/entity-resolution-context.js.map +1 -0
  175. package/dist/sdk/data/entity-subscriber.js +18 -8
  176. package/dist/sdk/data/entity-subscriber.js.map +1 -1
  177. package/dist/sdk/data/index.js +1 -0
  178. package/dist/sdk/data/page-reactive-data-root.d.ts +36 -0
  179. package/dist/sdk/data/page-reactive-data-root.js +4 -2
  180. package/dist/sdk/data/page-reactive-data-root.js.map +1 -1
  181. package/dist/sdk/data/reactive-data-provider.js +7 -3
  182. package/dist/sdk/data/reactive-data-provider.js.map +1 -1
  183. package/dist/sdk/data/reactive-list-item-data-provider.js +12 -4
  184. package/dist/sdk/data/reactive-list-item-data-provider.js.map +1 -1
  185. package/dist/sdk/data/use-reactive-data-settled.js +39 -0
  186. package/dist/sdk/data/use-reactive-data-settled.js.map +1 -0
  187. package/dist/sdk/data/use-reactive-entity.js +5 -1
  188. package/dist/sdk/data/use-reactive-entity.js.map +1 -1
  189. package/dist/sdk/generated/fragment-types.js +2 -0
  190. package/dist/sdk/generated/fragment-types.js.map +1 -1
  191. package/dist/sdk/generated/graphql.js.map +1 -1
  192. package/dist/sdk/i18n/messages/en-US.js +3 -0
  193. package/dist/sdk/i18n/messages/en-US.json +3 -0
  194. package/dist/sdk/i18n/messages/en-US.json.d.ts +3 -0
  195. package/dist/sdk/i18n/messages/es-ES.js +3 -0
  196. package/dist/sdk/i18n/messages/es-ES.json +3 -0
  197. package/dist/sdk/i18n/messages/pt-BR.js +3 -0
  198. package/dist/sdk/i18n/messages/pt-BR.json +3 -0
  199. package/dist/sdk/identity/use-identity-actions.js +3 -2
  200. package/dist/sdk/identity/use-identity-actions.js.map +1 -1
  201. package/dist/sdk/payment/gateway-origin.js +35 -0
  202. package/dist/sdk/payment/gateway-origin.js.map +1 -0
  203. package/dist/sdk/payment/gateway.d.ts +85 -0
  204. package/dist/sdk/payment/gateway.js +183 -0
  205. package/dist/sdk/payment/gateway.js.map +1 -0
  206. package/dist/sdk/payment/operations.d.ts +52 -0
  207. package/dist/sdk/payment/operations.js +223 -0
  208. package/dist/sdk/payment/operations.js.map +1 -0
  209. package/dist/sdk/payment/security-code-mask.js +71 -0
  210. package/dist/sdk/payment/security-code-mask.js.map +1 -0
  211. package/dist/sdk/payment/submission-registry.d.ts +33 -0
  212. package/dist/sdk/payment/submission-registry.js +58 -0
  213. package/dist/sdk/payment/submission-registry.js.map +1 -0
  214. package/dist/sdk/payment/use-payment-actions.d.ts +78 -0
  215. package/dist/sdk/payment/use-payment-actions.js +276 -0
  216. package/dist/sdk/payment/use-payment-actions.js.map +1 -0
  217. package/dist/sdk/payment/use-place-order.d.ts +65 -0
  218. package/dist/sdk/payment/use-place-order.js +640 -0
  219. package/dist/sdk/payment/use-place-order.js.map +1 -0
  220. package/dist/sdk/shipping/use-shipping-actions.js +1 -1
  221. package/dist/utils/loggable-error-name.js +49 -0
  222. package/dist/utils/loggable-error-name.js.map +1 -0
  223. package/dist/utils/resolve-authored-copy.js +18 -0
  224. package/dist/utils/resolve-authored-copy.js.map +1 -0
  225. package/dist/utils/substitute-template.js +33 -0
  226. package/dist/utils/substitute-template.js.map +1 -0
  227. package/package.json +2 -1
  228. package/src/styles/tailwind.css +34 -0
  229. package/dist/docs/client-profile-form.md +0 -192
  230. package/dist/matter/client-profile-form/client-profile-form.d.ts +0 -126
  231. package/dist/matter/client-profile-form/client-profile-form.js +0 -662
  232. package/dist/matter/client-profile-form/client-profile-form.js.map +0 -1
@@ -241,6 +241,14 @@ extend type Query {
241
241
  """Maximum number of recommendations."""
242
242
  first: Int = 10
243
243
  ): [Product!]!
244
+ """
245
+ Resolves a catalog route by ID or by path and returns its confirmed localized equivalents.
246
+ Null when the route does not exist or the catalog could not be reached.
247
+ """
248
+ catalogRoute(
249
+ """The route to resolve, by ID or by path."""
250
+ input: CatalogRouteInput!
251
+ ): CatalogRoute
244
252
  """Look up a single category by global ID."""
245
253
  category(
246
254
  """Global category ID."""
@@ -373,6 +381,28 @@ extend type Query {
373
381
  session: Session!
374
382
  }
375
383
 
384
+ extend type Query {
385
+ """
386
+ The cart's payment state: methods, selection, installment options, and saved cards. Projected from the same order form as Query.cart. Always resolves; lists are empty and selection fields are null when payment is unset.
387
+ """
388
+ payment: Payment!
389
+ }
390
+
391
+ extend type Query {
392
+ """
393
+ A settled order's payment recap, keyed on the order group
394
+ paymentStartTransaction / paymentGatewayCallback return. Null when the
395
+ order group does not resolve to a settled order — never a fabricated empty
396
+ projection (contrast Query.payment, which always resolves).
397
+ """
398
+ order(
399
+ """
400
+ The order group returned by paymentStartTransaction / paymentGatewayCallback.
401
+ """
402
+ orderGroup: String!
403
+ ): Order
404
+ }
405
+
376
406
  extend type Query {
377
407
  """Which authentication methods this account enables."""
378
408
  sessionAuthProviders: SessionAuthProviders!
@@ -507,6 +537,41 @@ extend type Mutation {
507
537
  ): ShippingOptionSelectPayload!
508
538
  }
509
539
 
540
+ extend type Mutation {
541
+ """
542
+ Select a payment method, optionally identifying a new card's BIN or a saved card's account.
543
+ """
544
+ paymentMethodSelect(
545
+ """Method (and optional BIN/saved-card) to select."""
546
+ input: PaymentMethodSelectInput!
547
+ ): PaymentMethodSelectPayload!
548
+ """
549
+ Select an installment count for the currently-selected method. Recomputes the cart total.
550
+ """
551
+ paymentInstallmentSelect(
552
+ """Installment count to select."""
553
+ input: PaymentInstallmentSelectInput!
554
+ ): PaymentInstallmentSelectPayload!
555
+ """Set the billing address, or fall back to the delivery address."""
556
+ paymentBillingAddressUpdate(
557
+ """
558
+ Billing address details, or sameAsDelivery: true to use the delivery address.
559
+ """
560
+ input: PaymentBillingAddressUpdateInput!
561
+ ): PaymentBillingAddressUpdatePayload!
562
+ """
563
+ Open a VTEX transaction from the currently-selected payment. No input: every field is server-derived.
564
+ """
565
+ paymentStartTransaction: PaymentStartTransactionPayload!
566
+ """
567
+ Finalize a transaction after the direct-to-gateway payment call succeeded.
568
+ """
569
+ paymentGatewayCallback(
570
+ """The order group to finalize."""
571
+ input: PaymentGatewayCallbackInput!
572
+ ): PaymentGatewayCallbackPayload!
573
+ }
574
+
510
575
  extend type Mutation {
511
576
  """
512
577
  Sign in with email and password. Returns the refreshed session, or typed
@@ -766,6 +831,10 @@ type Variant implements Node {
766
831
  name: String!
767
832
  """Stock Keeping Unit code. Unique merchant-side identifier."""
768
833
  sku: String!
834
+ """
835
+ PDP path segment in the active locale for this SKU, "{linkId}-{skuId}".
836
+ """
837
+ routeSlug: String!
769
838
  """International Article Number (barcode). Maps to VTEX SKU EAN."""
770
839
  ean: String
771
840
  """Merchant reference code."""
@@ -839,6 +908,11 @@ type Product implements Node @cacheControl(maxAge: 60, scope: PUBLIC) {
839
908
  title: String!
840
909
  """URL-friendly handle / slug. Maps to VTEX `LinkId`."""
841
910
  slug: String!
911
+ """
912
+ PDP path segment in the active locale, "{linkId}-{skuId}" with the representative SKU (in stock first, then lowest
913
+ spot price, then the first SKU). Build product URLs from this, not from `slug`.
914
+ """
915
+ routeSlug: String!
842
916
  """Full marketing description."""
843
917
  description: String
844
918
  """Description rendered as HTML."""
@@ -1503,6 +1577,62 @@ type TrendingSearch {
1503
1577
  count: Int!
1504
1578
  }
1505
1579
 
1580
+ """Identifies a catalog route. Set exactly one member."""
1581
+ input CatalogRouteInput {
1582
+ """
1583
+ Relay node ID of the entity behind the route. Only Product IDs are accepted.
1584
+ """
1585
+ id: ID
1586
+ """
1587
+ Logical store route, without the binding's origin or base path
1588
+ (e.g. "/apparel/t-shirts", "/shirt-51/p").
1589
+ """
1590
+ path: String
1591
+ }
1592
+
1593
+ """Kind of entity a catalog route resolves to."""
1594
+ enum CatalogRouteKind {
1595
+ """A product detail page."""
1596
+ PRODUCT
1597
+ """A category or subcategory page."""
1598
+ CATEGORY
1599
+ """A brand page."""
1600
+ BRAND
1601
+ """A collection page."""
1602
+ COLLECTION
1603
+ }
1604
+
1605
+ """
1606
+ A catalog route and its confirmed equivalents in every locale the catalog registers.
1607
+ """
1608
+ type CatalogRoute @cacheControl(maxAge: 300, scope: PUBLIC) {
1609
+ """
1610
+ Relay node ID of the entity. Stable across locales; the route's identity.
1611
+ """
1612
+ id: ID!
1613
+ """Kind of entity behind the route."""
1614
+ kind: CatalogRouteKind!
1615
+ """
1616
+ One entry per locale the catalog confirms for every segment of the route. Editorial fallback never adds an
1617
+ entry. May include locales the store does not publish; intersect with the store's bindings.
1618
+ """
1619
+ variants: [CatalogRouteVariant!]!
1620
+ }
1621
+
1622
+ """A route's equivalent in one locale."""
1623
+ type CatalogRouteVariant {
1624
+ """BCP 47 tag, canonicalized."""
1625
+ locale: String!
1626
+ """
1627
+ Route segment(s) in that locale, lowercased, accents kept. Not percent-encoded.
1628
+ """
1629
+ slug: String!
1630
+ """
1631
+ Relative logical path ("/{slug}" or "/{slug}/p"). No origin, no base path, not percent-encoded.
1632
+ """
1633
+ path: String!
1634
+ }
1635
+
1506
1636
  """
1507
1637
  A shopping cart representing items a customer intends to purchase.
1508
1638
  Maps to the VTEX orderForm entity.
@@ -1745,7 +1875,7 @@ type CartItemCustomization {
1745
1875
  }
1746
1876
 
1747
1877
  """A single submitted customization field."""
1748
- type CartItemCustomizationEntry {
1878
+ type CartItemCustomizationEntry @cacheControl(maxAge: 0, scope: PRIVATE) {
1749
1879
  """Field name as defined by the assembly (e.g. "Text")."""
1750
1880
  name: String!
1751
1881
  """Submitted value, stringified. File uploads carry the file URL."""
@@ -2540,7 +2670,7 @@ type Shipping implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2540
2670
  }
2541
2671
 
2542
2672
  """A delivery address or saved-address reference."""
2543
- type Address {
2673
+ type Address @cacheControl(maxAge: 0, scope: PRIVATE) {
2544
2674
  """Saved-address reference. Null for addresses entered in this session."""
2545
2675
  id: ID
2546
2676
  """Recipient name for this address."""
@@ -2691,6 +2821,575 @@ type ShippingOptionSelectPayload {
2691
2821
  userErrors: [ShippingOptionSelectError!]!
2692
2822
  }
2693
2823
 
2824
+ """
2825
+ The cart's payment state: available methods with server-driven validator config,
2826
+ the current selection, installment options, and the shopper's saved cards. A
2827
+ read-only sibling of Cart, Shipping, and Session, projected from the same order
2828
+ form fetch. Method-agnostic: projects whatever payment systems VTEX returns, not
2829
+ only credit card. Never carries a full card number or CVV.
2830
+ """
2831
+ type Payment implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
2832
+ """
2833
+ Globally unique identifier (Relay Node ID), encoded from the order form ID.
2834
+ """
2835
+ id: ID!
2836
+ """
2837
+ Payment methods available on this cart. Empty when none are configured.
2838
+ """
2839
+ methods: [PaymentMethod!]!
2840
+ """
2841
+ The currently selected method's id (PaymentMethod.id), or null when unselected.
2842
+ """
2843
+ selectedMethodId: String
2844
+ """
2845
+ Saved-card account reference for the current selection, when a saved card is selected. Null otherwise.
2846
+ """
2847
+ selectedAccountId: String
2848
+ """
2849
+ The currently selected installment tier, resolved from the selection against installmentOptions. Null when unselected or unresolved.
2850
+ """
2851
+ selectedInstallment: PaymentInstallment
2852
+ """
2853
+ Installment plans available, grouped by method (and BIN, for card methods). Serves both a new card (matched by BIN) and a saved card (matched by its stored method).
2854
+ """
2855
+ installmentOptions: [PaymentInstallmentOption!]!
2856
+ """
2857
+ The shopper's saved cards. Empty for anonymous shoppers or when none are saved.
2858
+ """
2859
+ savedCards: [SavedCard!]!
2860
+ """
2861
+ The BIN persisted on the current selection, or null when the selection carries
2862
+ none (a non-card method, or a saved card selected without one). Echoes back what
2863
+ paymentMethodSelect wrote, which is what a client needs in order to know whether
2864
+ its own locally-detected BIN has actually reached the order form: installment
2865
+ options are matched against THIS value server-side, never against a client draft.
2866
+ Not sensitive — a BIN identifies an issuer range, never a card.
2867
+ """
2868
+ selectedBin: String
2869
+ }
2870
+
2871
+ """
2872
+ A payment method available on the cart, with the server-driven validator config
2873
+ that determines which card-form fields render, their masks, and whether they
2874
+ are required. A non-normalized value object (ADR-0012); read directly off
2875
+ Payment.methods.
2876
+ """
2877
+ type PaymentMethod {
2878
+ """Payment-system identifier (VTEX paymentSystem stringId)."""
2879
+ id: String!
2880
+ """
2881
+ Display name (e.g. "Visa", "Mastercard", "Cash"). Doubles as the network name for card methods.
2882
+ """
2883
+ name: String!
2884
+ """
2885
+ Payment-system group (e.g. "creditCardPaymentGroup", "debitCardPaymentGroup"). Store-configured; kept as a string, not an enum.
2886
+ """
2887
+ groupName: String!
2888
+ """
2889
+ Whether VTEX flags this payment system as requiring cardholder authentication
2890
+ (for example 3-D Secure). Projected verbatim from the order form's payment-system
2891
+ configuration: it describes how the store configured the system, not a guarantee
2892
+ about any particular transaction. Null when the order form carries no value for
2893
+ this system — which is not the same as false. Detection only: this API implements
2894
+ no authentication challenge.
2895
+ """
2896
+ requiresAuthentication: Boolean
2897
+ """
2898
+ Validator configuration driving field presence, masks, and requiredness.
2899
+ """
2900
+ validator: PaymentMethodValidator!
2901
+ }
2902
+
2903
+ """
2904
+ Per-method validator configuration. Server-driven so no component hardcodes
2905
+ field presence, masks, or requiredness.
2906
+ """
2907
+ type PaymentMethodValidator {
2908
+ """
2909
+ Mask pattern for the card number input. Null when the method carries no mask.
2910
+ """
2911
+ numberMask: String
2912
+ """
2913
+ Regex for real-time network detection against the typed BIN. Null when unset.
2914
+ """
2915
+ numberRegex: String
2916
+ """
2917
+ Mask pattern for the security-code (CVV) input. Null when unused or unmasked.
2918
+ """
2919
+ cvvMask: String
2920
+ """Regex validating the security-code (CVV) input. Null when unused."""
2921
+ cvvRegex: String
2922
+ """Whether this method requires the security code (CVV)."""
2923
+ cvvRequired: Boolean!
2924
+ """Whether this method requires an expiration date."""
2925
+ expirationRequired: Boolean!
2926
+ """Whether this method requires the cardholder name."""
2927
+ holderNameRequired: Boolean!
2928
+ """Whether this method requires a billing address."""
2929
+ billingAddressRequired: Boolean!
2930
+ """
2931
+ Whether a cardholder document field is displayable for this method. Distinct from documentRequired.
2932
+ """
2933
+ documentDisplayable: Boolean!
2934
+ """
2935
+ Whether the displayed cardholder document is required. Distinct from documentDisplayable — a document can be shown without being mandatory.
2936
+ """
2937
+ documentRequired: Boolean!
2938
+ }
2939
+
2940
+ """
2941
+ One installment tier: a specific installment count at a given per-installment
2942
+ value and total. Keyed by count within its parent PaymentInstallmentOption — a
2943
+ non-normalized value object (ADR-0012).
2944
+ """
2945
+ type PaymentInstallment {
2946
+ """Number of installments (1 = single payment, no interest)."""
2947
+ count: Int!
2948
+ """Amount per installment."""
2949
+ value: Money!
2950
+ """Total amount across all installments, including any interest."""
2951
+ total: Money!
2952
+ """
2953
+ Interest rate in hundredths of a percent, exactly as the VTEX order form carries it (100 = 1%; 0 = interest-free).
2954
+ """
2955
+ interestRate: Float!
2956
+ }
2957
+
2958
+ """
2959
+ Installment tiers available for one payment method (and, for card methods, one
2960
+ BIN range). A non-normalized value object (ADR-0012): read straight off
2961
+ Payment.installmentOptions.
2962
+ """
2963
+ type PaymentInstallmentOption @cacheControl(maxAge: 0, scope: PRIVATE) {
2964
+ """The payment method this option applies to (PaymentMethod.id)."""
2965
+ methodId: String!
2966
+ """
2967
+ The BIN range this option applies to, when method-and-BIN-specific. Null when the option applies by method alone.
2968
+ """
2969
+ bin: String
2970
+ """Base order value this option was quoted against."""
2971
+ baseValue: Money!
2972
+ """
2973
+ Installment tiers, with a guaranteed `count: 1` entry prepended when VTEX
2974
+ omits one. A tier that upstream already supplies is passed through untouched
2975
+ (including its position and interest rate).
2976
+ """
2977
+ installments: [PaymentInstallment!]!
2978
+ }
2979
+
2980
+ """
2981
+ One of the shopper's saved cards. Never carries a full card number or CVV. A
2982
+ normalized, id-bearing value object (ADR-0012): id is a stable opaque cache
2983
+ key, not a Relay Node.
2984
+ """
2985
+ type SavedCard @cacheControl(maxAge: 0, scope: PRIVATE) {
2986
+ """
2987
+ Opaque, stable cache key. Not a Relay Node ID; SavedCard is not registered in the cross-module Node registry.
2988
+ """
2989
+ id: ID!
2990
+ """
2991
+ The saved-card account reference. Pass this back on selection; never a full card number.
2992
+ """
2993
+ accountId: String!
2994
+ """
2995
+ The saved card's payment-system id (PaymentMethod.id), for cross-referencing validator config and installment options.
2996
+ """
2997
+ methodId: String!
2998
+ """Card network / issuer display name (e.g. "Visa")."""
2999
+ network: String!
3000
+ """Last four digits of the card number."""
3001
+ lastFourDigits: String!
3002
+ """BIN of the saved card, for installment-option lookup by network."""
3003
+ bin: String!
3004
+ """Shopper-assigned custom label, when set."""
3005
+ label: String
3006
+ """
3007
+ Whether the card is expired. Expired cards are still returned; non-selectable is a UI concern downstream.
3008
+ """
3009
+ expired: Boolean!
3010
+ """
3011
+ Whether completing payment with this card requires the shopper to enter the CVV.
3012
+ """
3013
+ cvvRequired: Boolean!
3014
+ }
3015
+
3016
+ """
3017
+ Input for selecting a payment method, optionally identifying a new card (by
3018
+ BIN) or a saved card (by account reference). A non-card method (e.g. Cash)
3019
+ omits both `bin` and `accountId`. When `accountId` is given, `bin` may also
3020
+ be given to match the saved card against a BIN-specific installment option;
3021
+ a `bin` that does not match the saved card's own BIN is rejected with
3022
+ MISMATCHED_BIN_FOR_SAVED_CARD.
3023
+ """
3024
+ input PaymentMethodSelectInput {
3025
+ """The method to select (PaymentMethod.id)."""
3026
+ methodId: String!
3027
+ """
3028
+ A newly-entered card's BIN, once detected. Omit for a saved card or a non-card method.
3029
+ """
3030
+ bin: String
3031
+ """
3032
+ A saved card's account reference (SavedCard.accountId). Omit for a new card or a non-card method.
3033
+ """
3034
+ accountId: String
3035
+ }
3036
+
3037
+ """Error codes for the paymentMethodSelect mutation."""
3038
+ enum PaymentMethodSelectErrorCode {
3039
+ """No cart context was provided (x-order-form-id header/cookie)."""
3040
+ MISSING_CART_CONTEXT
3041
+ """The cart was not found."""
3042
+ CART_NOT_FOUND
3043
+ """The provided methodId does not match any entry in Payment.methods."""
3044
+ INVALID_METHOD_ID
3045
+ """The provided accountId does not match any entry in Payment.savedCards."""
3046
+ INVALID_SAVED_CARD_ACCOUNT_ID
3047
+ """The bin does not match the BIN of the saved card named by accountId."""
3048
+ MISMATCHED_BIN_FOR_SAVED_CARD
3049
+ """
3050
+ The bin is not 1 to 8 numeric digits — a BIN identifies an issuer range, never a card number.
3051
+ """
3052
+ INVALID_BIN_FORMAT
3053
+ """
3054
+ Never returned. The input once allowed at most one of bin / accountId; both are
3055
+ now accepted so a saved card can be matched to an installment option by its own
3056
+ BIN. Retained per ADR-00010 (additive-only with a deprecation window).
3057
+ """
3058
+ CONFLICTING_BIN_AND_ACCOUNT_ID @deprecated(reason: "Never returned; bin and accountId may now be sent together.")
3059
+ }
3060
+
3061
+ """A domain error returned from the paymentMethodSelect mutation."""
3062
+ type PaymentMethodSelectError {
3063
+ """Machine-readable error code."""
3064
+ code: PaymentMethodSelectErrorCode!
3065
+ """Human-readable error message."""
3066
+ message: String!
3067
+ }
3068
+
3069
+ """Payload returned by the paymentMethodSelect mutation."""
3070
+ type PaymentMethodSelectPayload {
3071
+ """The updated payment state, or null if errors occurred."""
3072
+ payment: Payment
3073
+ """
3074
+ The current billing address, echoed for convenience. Null when same-as-delivery is in effect.
3075
+ """
3076
+ billingAddress: Address
3077
+ """Domain errors that occurred during the operation."""
3078
+ userErrors: [PaymentMethodSelectError!]!
3079
+ }
3080
+
3081
+ """
3082
+ Input for selecting an installment count for the currently-selected method.
3083
+ """
3084
+ input PaymentInstallmentSelectInput {
3085
+ """Number of installments to select (1 = single payment, no interest)."""
3086
+ count: Int!
3087
+ }
3088
+
3089
+ """Error codes for the paymentInstallmentSelect mutation."""
3090
+ enum PaymentInstallmentSelectErrorCode {
3091
+ """No cart context was provided (x-order-form-id header/cookie)."""
3092
+ MISSING_CART_CONTEXT
3093
+ """The cart was not found."""
3094
+ CART_NOT_FOUND
3095
+ """
3096
+ No payment method has been selected yet (paymentMethodSelect was never called).
3097
+ """
3098
+ MISSING_PAYMENT_METHOD_SELECTION
3099
+ """
3100
+ The count does not match any tier in the resolvable installment option.
3101
+ """
3102
+ INVALID_INSTALLMENT_COUNT
3103
+ }
3104
+
3105
+ """A domain error returned from the paymentInstallmentSelect mutation."""
3106
+ type PaymentInstallmentSelectError {
3107
+ """Machine-readable error code."""
3108
+ code: PaymentInstallmentSelectErrorCode!
3109
+ """Human-readable error message."""
3110
+ message: String!
3111
+ }
3112
+
3113
+ """
3114
+ Payload returned by the paymentInstallmentSelect mutation. Includes the
3115
+ recomputed cart so the order total (with any interest) updates in the same
3116
+ round trip.
3117
+ """
3118
+ type PaymentInstallmentSelectPayload {
3119
+ """The updated payment state, or null if errors occurred."""
3120
+ payment: Payment
3121
+ """
3122
+ The recomputed cart, or null if errors occurred. Carries the order total with any installment interest applied.
3123
+ """
3124
+ cart: Cart
3125
+ """
3126
+ The current billing address, echoed for convenience. Null when same-as-delivery is in effect.
3127
+ """
3128
+ billingAddress: Address
3129
+ """Domain errors that occurred during the operation."""
3130
+ userErrors: [PaymentInstallmentSelectError!]!
3131
+ }
3132
+
3133
+ """
3134
+ Input for setting the billing address. When sameAsDelivery is true, every
3135
+ other field is ignored and no upstream write happens (VTEX's own default:
3136
+ an absent invoiceData falls back to the delivery address).
3137
+ """
3138
+ input PaymentBillingAddressUpdateInput {
3139
+ """
3140
+ When true, billing uses the delivery address; every field below is ignored.
3141
+ """
3142
+ sameAsDelivery: Boolean!
3143
+ """Address classification for the billing address."""
3144
+ addressType: String
3145
+ """
3146
+ Postal code for the billing address. Required when sameAsDelivery is false.
3147
+ """
3148
+ postalCode: String
3149
+ """
3150
+ ISO 3166-1 alpha-3 country code (e.g. "BRA"). Required when sameAsDelivery is false.
3151
+ """
3152
+ country: String
3153
+ """Street name."""
3154
+ street: String
3155
+ """Street number."""
3156
+ number: String
3157
+ """Additional address detail (apartment, suite, etc.)."""
3158
+ complement: String
3159
+ """Neighborhood / district."""
3160
+ neighborhood: String
3161
+ """City name."""
3162
+ city: String
3163
+ """State / province code."""
3164
+ state: String
3165
+ """
3166
+ A landmark reference. Sent upstream but not echoed back on billingAddress (Decision 11).
3167
+ """
3168
+ reference: String
3169
+ }
3170
+
3171
+ """Error codes for the paymentBillingAddressUpdate mutation."""
3172
+ enum PaymentBillingAddressUpdateErrorCode {
3173
+ """No cart context was provided (x-order-form-id header/cookie)."""
3174
+ MISSING_CART_CONTEXT
3175
+ """The cart was not found."""
3176
+ CART_NOT_FOUND
3177
+ """sameAsDelivery is false but postalCode or country was omitted."""
3178
+ MISSING_BILLING_ADDRESS_FIELDS
3179
+ }
3180
+
3181
+ """A domain error returned from the paymentBillingAddressUpdate mutation."""
3182
+ type PaymentBillingAddressUpdateError {
3183
+ """Machine-readable error code."""
3184
+ code: PaymentBillingAddressUpdateErrorCode!
3185
+ """Human-readable error message."""
3186
+ message: String!
3187
+ }
3188
+
3189
+ """Payload returned by the paymentBillingAddressUpdate mutation."""
3190
+ type PaymentBillingAddressUpdatePayload {
3191
+ """
3192
+ The billing address just written, or null when same-as-delivery is in effect.
3193
+ """
3194
+ billingAddress: Address
3195
+ """
3196
+ The updated payment state, or null if errors occurred, or when same-as-delivery is in effect, where no upstream write happens.
3197
+ """
3198
+ payment: Payment
3199
+ """Domain errors that occurred during the operation."""
3200
+ userErrors: [PaymentBillingAddressUpdateError!]!
3201
+ }
3202
+
3203
+ """
3204
+ Error codes for the paymentStartTransaction mutation. Login-required VTEX
3205
+ business codes (CHK0087, CHK003, ORD062) and generic infrastructure failures
3206
+ are never in this enum — per ADR-00007 they surface as top-level GraphQL
3207
+ errors (UNAUTHORIZED / UPSTREAM_ERROR), not userErrors.
3208
+ """
3209
+ enum PaymentStartTransactionErrorCode {
3210
+ """No cart context was provided (x-order-form-id header/cookie)."""
3211
+ MISSING_CART_CONTEXT
3212
+ """The cart was not found."""
3213
+ CART_NOT_FOUND
3214
+ """
3215
+ No payment method has been selected yet (paymentMethodSelect was never called).
3216
+ """
3217
+ MISSING_PAYMENT_METHOD_SELECTION
3218
+ """
3219
+ VTEX opened the transaction but named no merchant transaction on it, so
3220
+ neither the transaction id the send-payments POST addresses nor the merchant
3221
+ name its body carries exists. The transaction is open upstream but cannot be
3222
+ paid; the legacy checkout refuses the same state.
3223
+ """
3224
+ INVALID_TRANSACTION_DATA
3225
+ }
3226
+
3227
+ """A domain error returned from the paymentStartTransaction mutation."""
3228
+ type PaymentStartTransactionError {
3229
+ """Machine-readable error code."""
3230
+ code: PaymentStartTransactionErrorCode!
3231
+ """Human-readable error message."""
3232
+ message: String!
3233
+ }
3234
+
3235
+ """
3236
+ Payload returned by paymentStartTransaction: everything the browser needs to
3237
+ run the direct-to-gateway send-payments call (out of scope here) and the
3238
+ later gatewayCallback. The transaction cookies VTEX issues are set on the
3239
+ HTTP response (Set-Cookie), not exposed as a field.
3240
+ """
3241
+ type PaymentStartTransactionPayload {
3242
+ """The opened transaction's id. Null if errors occurred."""
3243
+ transactionId: String
3244
+ """
3245
+ Name of the merchant responsible for the sale, as the gateway call's payment
3246
+ `id` and `transaction.merchantName`. Projected from the same
3247
+ merchantTransactions entry transactionId comes from — VTEX returns one entry
3248
+ per seller, so a multi-seller order carries more than one and only the first
3249
+ is exposed here (see specs/payment-transaction-payload-gaps.md, Decision 1).
3250
+ Null if errors occurred.
3251
+ """
3252
+ merchantName: String
3253
+ """
3254
+ Origin of the payment gateway this transaction must be paid at, e.g.
3255
+ "https://mystore.vtexpayments.com.br" — the base the browser's
3256
+ direct-to-gateway send-payments POST appends its own path to. Origin only:
3257
+ VTEX's own receiver path is the split-payment endpoint, not the
3258
+ per-transaction one. Always an https origin inside vtexpayments.com.br: an
3259
+ upstream receiver URI that is neither is rejected in favour of the
3260
+ account-derived origin, since this field decides where card data is sent.
3261
+ Null if errors occurred.
3262
+ """
3263
+ gatewayUrl: String
3264
+ """
3265
+ The order group, needed for the gateway call's orderId parameter and for gatewayCallback's input.
3266
+ """
3267
+ orderGroup: String
3268
+ """The shopper's user profile id, needed for the gateway call."""
3269
+ userProfileId: String
3270
+ """
3271
+ The payment amount for this transaction, as a decimal (e.g. "100.00") for
3272
+ display. The gateway body wants minor units — read valueInCents for that,
3273
+ never a client-side multiplication of this amount.
3274
+ """
3275
+ value: Money
3276
+ """
3277
+ The same payment amount in the currency's minor units (e.g. 10000 for
3278
+ "100.00"), exactly as VTEX returned it and as this mutation sent it upstream.
3279
+ The unit the gateway body's `value`/`installmentValue` fields expect. Null if
3280
+ errors occurred.
3281
+ """
3282
+ valueInCents: Int
3283
+ """
3284
+ Pre-interest base amount this transaction was opened against, in the
3285
+ currency's minor units — the gateway body's `referenceValue`. Equals
3286
+ valueInCents when no interest applies. Null if errors occurred.
3287
+ """
3288
+ referenceValueInCents: Int
3289
+ """Domain errors that occurred during the operation."""
3290
+ userErrors: [PaymentStartTransactionError!]!
3291
+ }
3292
+
3293
+ """
3294
+ Input for finalizing a transaction after the direct-to-gateway call
3295
+ succeeded.
3296
+ """
3297
+ input PaymentGatewayCallbackInput {
3298
+ """The order group returned by paymentStartTransaction."""
3299
+ orderGroup: String!
3300
+ }
3301
+
3302
+ """
3303
+ Error codes for the paymentGatewayCallback mutation. Login-required VTEX
3304
+ business codes (CHK0087, CHK003, ORD062) and generic infrastructure failures
3305
+ are never in this enum — per ADR-00007 they surface as top-level GraphQL
3306
+ errors (UNAUTHORIZED / UPSTREAM_ERROR), not userErrors.
3307
+ """
3308
+ enum PaymentGatewayCallbackErrorCode {
3309
+ """
3310
+ The transaction cookies (Vtex_CHKO_Auth, CheckoutDataAccess) were not present on this request — paymentStartTransaction was not called first, or the five-minute window lapsed.
3311
+ """
3312
+ MISSING_TRANSACTION_COOKIES
3313
+ """
3314
+ VTEX requires a redirect or out-of-band flow to complete this payment. Phase 2; not supported in v1.
3315
+ """
3316
+ REDIRECT_REQUIRED
3317
+ }
3318
+
3319
+ """A domain error returned from the paymentGatewayCallback mutation."""
3320
+ type PaymentGatewayCallbackError {
3321
+ """Machine-readable error code."""
3322
+ code: PaymentGatewayCallbackErrorCode!
3323
+ """Human-readable error message."""
3324
+ message: String!
3325
+ }
3326
+
3327
+ """Payload returned by the paymentGatewayCallback mutation."""
3328
+ type PaymentGatewayCallbackPayload {
3329
+ """
3330
+ The finalized order group, echoed back on success. Null if errors occurred.
3331
+ """
3332
+ orderId: String
3333
+ """Domain errors that occurred during the operation."""
3334
+ userErrors: [PaymentGatewayCallbackError!]!
3335
+ }
3336
+
3337
+ """
3338
+ The installment plan a settled order was charged in. Projected from the
3339
+ placed-order payment record, which carries the count and the settled total
3340
+ only — never a per-installment amount and never an interest rate, unlike the
3341
+ live order form behind `Payment.selectedInstallment`. That asymmetry is
3342
+ upstream and permanent (see specs/settle-and-project-the-placed-order.md,
3343
+ Decision 2).
3344
+ """
3345
+ type OrderInstallment @cacheControl(maxAge: 0, scope: PRIVATE) {
3346
+ """Number of installments the order was charged in. 1 = single payment."""
3347
+ count: Int!
3348
+ """
3349
+ Total charged across all installments, including any interest. Null when the
3350
+ settled record carries no amount, or no currency to denominate it in.
3351
+ """
3352
+ total: Money
3353
+ }
3354
+
3355
+ """
3356
+ A settled order's payment recap. Read-only; projected from VTEX's
3357
+ settled-order source rather than the live order form, so it keeps resolving
3358
+ after the order form itself stops existing. Carries no sensitive field: no
3359
+ full card number or CVV is ever read for this projection (RFC D13).
3360
+ """
3361
+ type Order implements Node @cacheControl(maxAge: 0, scope: PRIVATE) {
3362
+ """
3363
+ Globally unique identifier (Relay Node ID), encoded from the order group.
3364
+ """
3365
+ id: ID!
3366
+ """
3367
+ Card network / payment-system display name (e.g. "Visa", or a non-card
3368
+ method's own name such as "Boleto Bancário"). Null when the settled order
3369
+ carries no payment record to project one from.
3370
+ """
3371
+ network: String
3372
+ """
3373
+ Last four digits of the card used, when the payment method was a card.
3374
+ Present for both a saved and a freshly-entered card — unlike Payment (T1),
3375
+ where last four is a saved-card-only field. Null for a non-card method or
3376
+ when no payment record exists to project one from.
3377
+ """
3378
+ lastFourDigits: String
3379
+ """
3380
+ Shopper-assigned custom label for the saved card used, when one was set.
3381
+ Null for a freshly-entered (unsaved) card, a non-card method, or when no
3382
+ payment record exists to project one from (see specs/order-read-model.md,
3383
+ Decision 5).
3384
+ """
3385
+ label: String
3386
+ """
3387
+ The installment plan this order was charged in. Null when the settled record
3388
+ reports none.
3389
+ """
3390
+ installment: OrderInstallment
3391
+ }
3392
+
2694
3393
  """
2695
3394
  The authentication methods an account enables, read before rendering a sign-in form.
2696
3395
  """