@doswiftly/storefront-operations 17.0.0 → 18.0.0
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.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +544 -0
- package/README.md +7 -7
- package/fragments.graphql +43 -25
- package/llms-full.txt +66 -30
- package/mutations.graphql +1 -1
- package/operations.json +45 -29
- package/package.json +4 -2
- package/schema.graphql +777 -275
package/schema.graphql
CHANGED
|
@@ -77,7 +77,7 @@ type AttributeDefinition {
|
|
|
77
77
|
name: String!
|
|
78
78
|
|
|
79
79
|
"""
|
|
80
|
-
|
|
80
|
+
Optional grouping namespace (e.g. "inventory", "marketing", "content"). NULL = ungrouped. Helps distinguish custom ERP-data attributes from filterable catalog facets.
|
|
81
81
|
"""
|
|
82
82
|
namespace: String
|
|
83
83
|
|
|
@@ -109,7 +109,7 @@ input AttributeFilterInput {
|
|
|
109
109
|
minValue: Float
|
|
110
110
|
|
|
111
111
|
"""
|
|
112
|
-
|
|
112
|
+
Optional attribute-group discriminator (e.g. "inventory", "marketing"). Lets you filter a grouped attribute (e.g. "Brand in group XYZ") when the same attribute name exists under different groups.
|
|
113
113
|
"""
|
|
114
114
|
namespace: String
|
|
115
115
|
|
|
@@ -146,7 +146,7 @@ type AttributeFilterValue {
|
|
|
146
146
|
|
|
147
147
|
"""Paginated + searchable attribute options (Relay Connection)"""
|
|
148
148
|
type AttributeFilterValueConnection {
|
|
149
|
-
"""Paginated edges
|
|
149
|
+
"""Paginated edges with cursors"""
|
|
150
150
|
edges: [AttributeFilterValueEdge!]!
|
|
151
151
|
|
|
152
152
|
"""Shortcut: edges.map(e => e.node)"""
|
|
@@ -156,12 +156,12 @@ type AttributeFilterValueConnection {
|
|
|
156
156
|
pageInfo: PageInfo!
|
|
157
157
|
|
|
158
158
|
"""
|
|
159
|
-
Total number of attribute options matching the filter (
|
|
159
|
+
Total number of attribute options matching the filter (after applying search + context). Stable across pagination — shows the full count for a counter UI.
|
|
160
160
|
"""
|
|
161
161
|
totalCount: Int!
|
|
162
162
|
}
|
|
163
163
|
|
|
164
|
-
"""Edge
|
|
164
|
+
"""Edge in AttributeFilterValueConnection (Relay spec)"""
|
|
165
165
|
type AttributeFilterValueEdge {
|
|
166
166
|
"""
|
|
167
167
|
Opaque pagination cursor (base64-encoded). Echo as `after` for next page.
|
|
@@ -189,27 +189,27 @@ enum AttributeOptionSurchargeType {
|
|
|
189
189
|
PERCENT
|
|
190
190
|
}
|
|
191
191
|
|
|
192
|
-
"""Input
|
|
192
|
+
"""Input for the attributeOptionsSearch query"""
|
|
193
193
|
input AttributeOptionsSearchInput {
|
|
194
|
-
"""Opaque cursor
|
|
194
|
+
"""Opaque cursor from the previous page (pageInfo.endCursor)"""
|
|
195
195
|
after: String
|
|
196
196
|
|
|
197
197
|
"""
|
|
198
|
-
|
|
198
|
+
Product context (categoryId/collectionId/searchQuery/currentFilters) for accurate productCount. Exclude-self: when currentFilters contains the same attribute, it is skipped.
|
|
199
199
|
"""
|
|
200
200
|
contextInput: AvailableFiltersInput
|
|
201
201
|
|
|
202
|
-
"""
|
|
202
|
+
"""Number of options returned (default 50, max 100)"""
|
|
203
203
|
first: Int
|
|
204
204
|
|
|
205
|
-
"""Attribute handle (URL-friendly identifier,
|
|
205
|
+
"""Attribute handle (URL-friendly identifier, e.g. "license")"""
|
|
206
206
|
handle: String!
|
|
207
207
|
|
|
208
|
-
"""
|
|
208
|
+
"""Search by value/label (case-insensitive, max 100 characters)"""
|
|
209
209
|
search: String
|
|
210
210
|
|
|
211
211
|
"""
|
|
212
|
-
Sort — COUNT_DESC default (most popular first), LABEL_ASC
|
|
212
|
+
Sort — COUNT_DESC default (most popular first), LABEL_ASC for alphabetical
|
|
213
213
|
"""
|
|
214
214
|
sort: AttributeOptionsSearchSort
|
|
215
215
|
}
|
|
@@ -322,8 +322,10 @@ type AttributeSwatch {
|
|
|
322
322
|
"""Hex color code (e.g., #FF5733)"""
|
|
323
323
|
colorHex: String
|
|
324
324
|
|
|
325
|
-
"""
|
|
326
|
-
|
|
325
|
+
"""
|
|
326
|
+
Image swatch for pattern/material attributes (e.g. fabric texture, wood grain). Use `image { url(transform: { maxWidth: 80 }) altText }` for small swatch tiles. Mutually meaningful with `colorHex` only when storefront chooses to render texture-over-color preview.
|
|
327
|
+
"""
|
|
328
|
+
image: Image
|
|
327
329
|
}
|
|
328
330
|
|
|
329
331
|
"""Type of product attribute"""
|
|
@@ -345,7 +347,7 @@ enum AttributeType {
|
|
|
345
347
|
"""Available filters for product listing"""
|
|
346
348
|
type AvailableFilters {
|
|
347
349
|
"""
|
|
348
|
-
|
|
350
|
+
Number of currently applied filters in `currentFilters` (render as "Filters (3)" in a sidebar header).
|
|
349
351
|
"""
|
|
350
352
|
activeCount: Int!
|
|
351
353
|
|
|
@@ -353,12 +355,12 @@ type AvailableFilters {
|
|
|
353
355
|
attributes: [AttributeDefinition!]!
|
|
354
356
|
|
|
355
357
|
"""
|
|
356
|
-
Boolean facet count:
|
|
358
|
+
Boolean facet count: number of products in the current context that satisfy `Product.isAvailable` (at least one active variant with untracked inventory OR available>0). Exclude-self: if `available: true` is in `currentFilters`, the count IGNORES that filter and shows "how many products are available in the base context" (not "how many are visible right now"). Semantically consistent with `attributes[].filterValues[].productCount` (per-enum-value facet) and `brands[].productCount` (per-brand facet) — all use exclude-self per dimension. Untracked inventory (gift cards, digital, made-to-order) always counts as available.
|
|
357
359
|
"""
|
|
358
360
|
availableCount: Int!
|
|
359
361
|
|
|
360
362
|
"""
|
|
361
|
-
|
|
363
|
+
Canonical Brand entities with product counts in the current context. Render a checkbox list / dropdown with a logo per brand; clicking maps to `filters: [{brand: {handle}}]`. Only brands with >0 products in the current product set and isActive=true are returned.
|
|
362
364
|
"""
|
|
363
365
|
brands: [BrandFilterValue!]
|
|
364
366
|
|
|
@@ -369,7 +371,7 @@ type AvailableFilters {
|
|
|
369
371
|
priceRange: PriceRange
|
|
370
372
|
|
|
371
373
|
"""
|
|
372
|
-
Total products
|
|
374
|
+
Total products in the current context (categoryId/collectionId/searchQuery) BEFORE applying the faceted filters in `currentFilters`. Consistent with the `ProductConnection.totalCount` Relay Connection spec — when `currentFilters` is empty, `AvailableFilters.totalCount` === `products(filters).totalCount`. Use for "All products (N)" in a sidebar header.
|
|
373
375
|
"""
|
|
374
376
|
totalCount: Int!
|
|
375
377
|
}
|
|
@@ -377,7 +379,7 @@ type AvailableFilters {
|
|
|
377
379
|
"""Context for available filters query"""
|
|
378
380
|
input AvailableFiltersInput {
|
|
379
381
|
"""
|
|
380
|
-
|
|
382
|
+
Whether the "available" filter is currently applied. Mirrors `ProductFilter.available`. Drives exclude-self semantics: when `available: true` (or `false`) here, `AvailableFilters.availableCount` IGNORES this filter (shows "how many products this facet reveals when enabled"), while the other facet counts (`attributes[].filterValues[].productCount`, `brands[].productCount`, `categories[].productCount`) APPLY it (show "how many products in the current context plus this facet"). Omit (null/undefined) when the storefront does not apply the "available" filter.
|
|
381
383
|
"""
|
|
382
384
|
available: Boolean
|
|
383
385
|
|
|
@@ -388,7 +390,7 @@ input AvailableFiltersInput {
|
|
|
388
390
|
collectionId: ID
|
|
389
391
|
|
|
390
392
|
"""
|
|
391
|
-
Currently applied attribute filters (to update facet counts).
|
|
393
|
+
Currently applied attribute filters (to update facet counts). Each facet `productCount` uses the exclude-self pattern: when attrId X is in currentFilters, facet values X.* are counted IGNORING X (showing "how many products for X=Y in the remaining context"). Other attrIds are applied.
|
|
392
394
|
"""
|
|
393
395
|
currentFilters: [AttributeFilterInput!]
|
|
394
396
|
|
|
@@ -712,7 +714,7 @@ type BotProtectionProviderInfo {
|
|
|
712
714
|
}
|
|
713
715
|
|
|
714
716
|
"""
|
|
715
|
-
Canonical product brand entity (
|
|
717
|
+
Canonical product brand entity (e.g. Funko, Nike). Distinct from ShopBrand (shop branding metadata).
|
|
716
718
|
"""
|
|
717
719
|
type Brand {
|
|
718
720
|
"""URL-friendly handle (e.g. "funko" → /brands/funko). Stable per-shop."""
|
|
@@ -721,8 +723,10 @@ type Brand {
|
|
|
721
723
|
"""Brand unique identifier"""
|
|
722
724
|
id: ID!
|
|
723
725
|
|
|
724
|
-
"""
|
|
725
|
-
logo:
|
|
726
|
+
"""
|
|
727
|
+
Brand logo image. Use `logo { url(transform: { maxWidth: 200 }) altText }` for responsive sizing on brand tiles, breadcrumbs, and brand landing pages.
|
|
728
|
+
"""
|
|
729
|
+
logo: Image
|
|
726
730
|
|
|
727
731
|
"""Brand display name (e.g. "Funko", "Nintendo")"""
|
|
728
732
|
name: String!
|
|
@@ -743,10 +747,10 @@ type BrandColors {
|
|
|
743
747
|
secondary: BrandColorGroup
|
|
744
748
|
}
|
|
745
749
|
|
|
746
|
-
"""Filter products
|
|
750
|
+
"""Filter products by brand (canonical entity)"""
|
|
747
751
|
input BrandFilter {
|
|
748
752
|
"""
|
|
749
|
-
Brand handle — URL-friendly identifier.
|
|
753
|
+
Brand handle — URL-friendly identifier. Preferred over `id` for storefront refetch (stable across URL shares).
|
|
750
754
|
"""
|
|
751
755
|
handle: String
|
|
752
756
|
|
|
@@ -754,21 +758,23 @@ input BrandFilter {
|
|
|
754
758
|
id: ID
|
|
755
759
|
}
|
|
756
760
|
|
|
757
|
-
"""Brand filter value
|
|
761
|
+
"""Brand filter value with product count"""
|
|
758
762
|
type BrandFilterValue {
|
|
759
|
-
"""Brand handle (refetch payload — paste
|
|
763
|
+
"""Brand handle (refetch payload — paste into ProductFilter.brand.handle)"""
|
|
760
764
|
handle: String!
|
|
761
765
|
|
|
762
766
|
"""Brand ID"""
|
|
763
767
|
id: ID!
|
|
764
768
|
|
|
765
|
-
"""
|
|
766
|
-
logo:
|
|
769
|
+
"""
|
|
770
|
+
Brand logo image (UI rendering — facet sidebars / dropdowns). Use `logo { url(transform: { maxWidth: 80 }) altText }` for small thumbs.
|
|
771
|
+
"""
|
|
772
|
+
logo: Image
|
|
767
773
|
|
|
768
774
|
"""Brand name"""
|
|
769
775
|
name: String!
|
|
770
776
|
|
|
771
|
-
"""
|
|
777
|
+
"""Number of products with this brand in the current product set"""
|
|
772
778
|
productCount: Int!
|
|
773
779
|
}
|
|
774
780
|
|
|
@@ -881,14 +887,19 @@ type Cart implements Node {
|
|
|
881
887
|
attributes: [CartAttribute!]!
|
|
882
888
|
|
|
883
889
|
"""
|
|
884
|
-
Available payment methods
|
|
890
|
+
Available payment methods for this cart — deduplicated per type, sorted by merchant priority.
|
|
885
891
|
"""
|
|
886
892
|
availablePaymentMethods: [PaymentMethod!]!
|
|
887
893
|
|
|
888
894
|
"""
|
|
889
895
|
Shipping methods available for this cart at the given destination. Reads the cart subtotal and weight directly — for pre-cart preview (e.g. a product detail page calculator) use the top-level `availableShippingMethods(address, cart)` query instead. Returns an empty `methods` list plus a `DIGITAL_ONLY_NO_SHIPPING` user error when the cart has no shippable items; the storefront can use this to skip the shipping step entirely.
|
|
890
896
|
"""
|
|
891
|
-
availableShippingMethods(
|
|
897
|
+
availableShippingMethods(
|
|
898
|
+
"""
|
|
899
|
+
Destination address — country (ISO 3166-1 alpha-2), region, postal code and city
|
|
900
|
+
"""
|
|
901
|
+
address: ShippingAddressInput!
|
|
902
|
+
): AvailableShippingMethodsPayload!
|
|
892
903
|
|
|
893
904
|
"""
|
|
894
905
|
Billing address attached to the cart via `cartSetBillingAddress`. Null when the buyer reuses the shipping address as billing (the order will then mirror the shipping address).
|
|
@@ -937,7 +948,23 @@ type Cart implements Node {
|
|
|
937
948
|
id: ID!
|
|
938
949
|
|
|
939
950
|
"""Lines in the cart (paginated, Relay Connection)."""
|
|
940
|
-
lines(
|
|
951
|
+
lines(
|
|
952
|
+
"""
|
|
953
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
954
|
+
"""
|
|
955
|
+
after: String
|
|
956
|
+
|
|
957
|
+
"""
|
|
958
|
+
Cursor for backward pagination (cursor of the first edge from the next page)
|
|
959
|
+
"""
|
|
960
|
+
before: String
|
|
961
|
+
|
|
962
|
+
"""Number of lines to return from the start (forward pagination, max 100)"""
|
|
963
|
+
first: Float
|
|
964
|
+
|
|
965
|
+
"""Number of lines to return from the end (backward pagination, max 100)"""
|
|
966
|
+
last: Float
|
|
967
|
+
): CartLineConnection!
|
|
941
968
|
|
|
942
969
|
"""
|
|
943
970
|
Buyer-supplied note (e.g. delivery instructions). Free-form, surfaced to the merchant on the order.
|
|
@@ -950,7 +977,10 @@ type Cart implements Node {
|
|
|
950
977
|
phone: String
|
|
951
978
|
|
|
952
979
|
"""Product recommendations based on cart contents"""
|
|
953
|
-
recommendations(
|
|
980
|
+
recommendations(
|
|
981
|
+
"""Number of cart-based recommendations per bucket (default 4, max 100)"""
|
|
982
|
+
first: Int = 4
|
|
983
|
+
): CartRecommendations
|
|
954
984
|
|
|
955
985
|
"""
|
|
956
986
|
True when at least one line in the cart requires physical shipping. False when every line is non-physical (digital, gift card, service, subscription). Use as the single signal to render or skip the shipping step in checkout.
|
|
@@ -958,9 +988,9 @@ type Cart implements Node {
|
|
|
958
988
|
requiresShipping: Boolean!
|
|
959
989
|
|
|
960
990
|
"""
|
|
961
|
-
Optional concrete instrument code selected within `selectedPaymentMethod` (e.g. `"blik"`, `"mb"`, `"154"`). Set
|
|
991
|
+
Optional concrete instrument code selected within `selectedPaymentMethod` (e.g. `"blik"`, `"mb"`, `"154"`). Set when the buyer clicks a specific instrument tile on the storefront (per `PaymentMethod.instruments`). Pre-payment intent: copied to `Order.paymentInstrument` on `cartComplete`. Cross-reference with `availablePaymentMethods.methods[].instruments[]` to resolve `displayName` / `brandImage { url }`.
|
|
962
992
|
"""
|
|
963
|
-
|
|
993
|
+
selectedPaymentInstrument: String
|
|
964
994
|
|
|
965
995
|
"""
|
|
966
996
|
The payment method currently selected on the cart. Null until the buyer picks a method via `cartSelectPaymentMethod`.
|
|
@@ -991,7 +1021,7 @@ type Cart implements Node {
|
|
|
991
1021
|
updatedAt: DateTime!
|
|
992
1022
|
|
|
993
1023
|
"""
|
|
994
|
-
Non-fatal advisories computed at query time. Currently emitted: `PAYMENT_SELECTION_STALE` when `selectedPaymentMethod` / `
|
|
1024
|
+
Non-fatal advisories computed at query time. Currently emitted: `PAYMENT_SELECTION_STALE` when `selectedPaymentMethod` / `selectedPaymentInstrument` are no longer in live gateway capabilities (storefront re-prompts the buyer). Read-only — backend state is not mutated.
|
|
995
1025
|
"""
|
|
996
1026
|
warnings: [CartWarning!]!
|
|
997
1027
|
}
|
|
@@ -1184,7 +1214,7 @@ input CartBuyerIdentityInput {
|
|
|
1184
1214
|
}
|
|
1185
1215
|
|
|
1186
1216
|
"""
|
|
1187
|
-
Input for `cartClearPaymentSelection` — explicit deselect mutation. Use when the buyer goes back to the payment method picker
|
|
1217
|
+
Input for `cartClearPaymentSelection` — explicit deselect mutation. Use when the buyer goes back to the payment method picker in an accordion UI instead of re-selecting a method as a workaround. Atomically nulls all payment selection fields (method type + provider code + instrument code + legacy method ID). Idempotent — repeated calls yield the same final state.
|
|
1188
1218
|
"""
|
|
1189
1219
|
input CartClearPaymentSelectionInput {
|
|
1190
1220
|
"""ID of the cart to clear payment selection on."""
|
|
@@ -1192,10 +1222,10 @@ input CartClearPaymentSelectionInput {
|
|
|
1192
1222
|
}
|
|
1193
1223
|
|
|
1194
1224
|
"""
|
|
1195
|
-
Result of `cartClearPaymentSelection`. `cart` populated on success
|
|
1225
|
+
Result of `cartClearPaymentSelection`. `cart` is populated on success with cleared selection fields (`selectedPaymentMethod === null`, `selectedPaymentInstrument === null`). `userErrors` is populated when the cart is locked (CONVERTED status → `ALREADY_COMPLETED` code).
|
|
1196
1226
|
"""
|
|
1197
1227
|
type CartClearPaymentSelectionPayload {
|
|
1198
|
-
"""The updated cart
|
|
1228
|
+
"""The updated cart with cleared payment selection."""
|
|
1199
1229
|
cart: Cart
|
|
1200
1230
|
|
|
1201
1231
|
"""
|
|
@@ -1588,7 +1618,7 @@ type CartRemoveLinesPayload {
|
|
|
1588
1618
|
}
|
|
1589
1619
|
|
|
1590
1620
|
"""
|
|
1591
|
-
Input for `cartSelectPaymentMethod` (Intelligent Payment Methods). Method-centric: the buyer picks a category (BLIK, CARD, BANK_TRANSFER, ...) and the backend resolves the preferred provider from `MerchantPaymentConfig` (priority-sorted, merchant-configurable per shop). Optional `
|
|
1621
|
+
Input for `cartSelectPaymentMethod` (Intelligent Payment Methods). Method-centric: the buyer picks a category (BLIK, CARD, BANK_TRANSFER, ...) and the backend resolves the preferred provider from `MerchantPaymentConfig` (priority-sorted, merchant-configurable per shop). Optional `preferredProvider` + `preferredInstrument` enable instrument-level deep-link to the gateway hosted page (skips the default landing).
|
|
1592
1622
|
"""
|
|
1593
1623
|
input CartSelectPaymentMethodInput {
|
|
1594
1624
|
"""ID of the cart to update."""
|
|
@@ -1600,14 +1630,14 @@ input CartSelectPaymentMethodInput {
|
|
|
1600
1630
|
methodType: PaymentMethodType!
|
|
1601
1631
|
|
|
1602
1632
|
"""
|
|
1603
|
-
Optional gateway-specific instrument code (`blik`, `mb`, `c`, `154`, ...)
|
|
1633
|
+
Optional gateway-specific instrument code (`blik`, `mb`, `c`, `154`, ...) from `PaymentMethod.instruments[].code`. Requires `preferredProvider` to be set — instrument codes are provider-specific. No restrictive format is enforced, since different gateways may use `.` / `:` / `/` in future codes.
|
|
1604
1634
|
"""
|
|
1605
|
-
|
|
1635
|
+
preferredInstrument: String
|
|
1606
1636
|
|
|
1607
1637
|
"""
|
|
1608
|
-
Optional override of `PaymentMethod.preferredProvider`. Pass a
|
|
1638
|
+
Optional override of `PaymentMethod.preferredProvider`. Pass a `PaymentProvider` enum value (`PAYU`, `PRZELEWY24`, ...) read off `providersAvailable` / `PaymentInstrument.provider` when the buyer explicitly picks a gateway. Symmetric with the output — forward `instrument.provider` straight back, no case conversion.
|
|
1609
1639
|
"""
|
|
1610
|
-
|
|
1640
|
+
preferredProvider: PaymentProvider
|
|
1611
1641
|
}
|
|
1612
1642
|
|
|
1613
1643
|
"""Result of `cartSelectPaymentMethod`."""
|
|
@@ -1894,7 +1924,17 @@ type Category {
|
|
|
1894
1924
|
productCount: Int!
|
|
1895
1925
|
|
|
1896
1926
|
"""Products in category"""
|
|
1897
|
-
products(
|
|
1927
|
+
products(
|
|
1928
|
+
"""
|
|
1929
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
1930
|
+
"""
|
|
1931
|
+
after: String
|
|
1932
|
+
|
|
1933
|
+
"""
|
|
1934
|
+
Number of products to return from the start (forward pagination, max 100)
|
|
1935
|
+
"""
|
|
1936
|
+
first: Float! = 20
|
|
1937
|
+
): CategoryConnection!
|
|
1898
1938
|
|
|
1899
1939
|
"""SEO metadata"""
|
|
1900
1940
|
seo: SEO
|
|
@@ -1975,7 +2015,38 @@ type Collection implements Node {
|
|
|
1975
2015
|
image: Image
|
|
1976
2016
|
|
|
1977
2017
|
"""Products in collection"""
|
|
1978
|
-
products(
|
|
2018
|
+
products(
|
|
2019
|
+
"""
|
|
2020
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
2021
|
+
"""
|
|
2022
|
+
after: String
|
|
2023
|
+
|
|
2024
|
+
"""
|
|
2025
|
+
Cursor for backward pagination (cursor of the first edge from the next page)
|
|
2026
|
+
"""
|
|
2027
|
+
before: String
|
|
2028
|
+
|
|
2029
|
+
"""
|
|
2030
|
+
Faceted filters to narrow the result set (collection scope always wins)
|
|
2031
|
+
"""
|
|
2032
|
+
filters: [ProductFilter!]
|
|
2033
|
+
|
|
2034
|
+
"""
|
|
2035
|
+
Number of products to return from the start (forward pagination, max 100)
|
|
2036
|
+
"""
|
|
2037
|
+
first: Int
|
|
2038
|
+
|
|
2039
|
+
"""
|
|
2040
|
+
Number of products to return from the end (backward pagination, max 100)
|
|
2041
|
+
"""
|
|
2042
|
+
last: Int
|
|
2043
|
+
|
|
2044
|
+
"""Reverse the sort order when true (descending by sortKey)"""
|
|
2045
|
+
reverse: Boolean = false
|
|
2046
|
+
|
|
2047
|
+
"""Sort key for ordering products within the collection"""
|
|
2048
|
+
sortKey: ProductSortKeys = BEST_SELLING
|
|
2049
|
+
): ProductConnection!
|
|
1979
2050
|
|
|
1980
2051
|
"""SEO metadata"""
|
|
1981
2052
|
seo: SEO
|
|
@@ -2037,24 +2108,24 @@ type ConvertedPriceRange {
|
|
|
2037
2108
|
minVariantPrice: PriceMoney!
|
|
2038
2109
|
}
|
|
2039
2110
|
|
|
2040
|
-
"""
|
|
2111
|
+
"""A country supported by the shop (ISO 3166-1 alpha-2)"""
|
|
2041
2112
|
type Country implements Node {
|
|
2042
|
-
"""
|
|
2113
|
+
"""Shop languages available in this country"""
|
|
2043
2114
|
availableLanguages: [Language!]!
|
|
2044
2115
|
|
|
2045
|
-
"""Primary currency
|
|
2116
|
+
"""Primary currency in this country"""
|
|
2046
2117
|
currency: Currency!
|
|
2047
2118
|
|
|
2048
|
-
"""Globally-unique identifier (
|
|
2119
|
+
"""Globally-unique identifier (e.g. "country:PL")"""
|
|
2049
2120
|
id: ID!
|
|
2050
2121
|
|
|
2051
2122
|
"""ISO 3166-1 alpha-2 country code"""
|
|
2052
2123
|
isoCode: CountryCode!
|
|
2053
2124
|
|
|
2054
|
-
"""English name
|
|
2125
|
+
"""English country name (e.g. "Poland", "Germany")"""
|
|
2055
2126
|
name: String!
|
|
2056
2127
|
|
|
2057
|
-
"""
|
|
2128
|
+
"""Measurement system (metric/imperial)"""
|
|
2058
2129
|
unitSystem: UnitSystem!
|
|
2059
2130
|
}
|
|
2060
2131
|
|
|
@@ -2347,10 +2418,35 @@ type Customer implements Node {
|
|
|
2347
2418
|
"""
|
|
2348
2419
|
Saved address book of the customer (Relay Connection). Use to render an address picker on checkout.
|
|
2349
2420
|
"""
|
|
2350
|
-
addresses(
|
|
2421
|
+
addresses(
|
|
2422
|
+
"""
|
|
2423
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
2424
|
+
"""
|
|
2425
|
+
after: String
|
|
2426
|
+
|
|
2427
|
+
"""
|
|
2428
|
+
Cursor for backward pagination (cursor of the first edge from the next page)
|
|
2429
|
+
"""
|
|
2430
|
+
before: String
|
|
2431
|
+
|
|
2432
|
+
"""
|
|
2433
|
+
Number of addresses to return from the start (forward pagination, default 10, max 100)
|
|
2434
|
+
"""
|
|
2435
|
+
first: Int
|
|
2436
|
+
|
|
2437
|
+
"""
|
|
2438
|
+
Number of addresses to return from the end (backward pagination, max 100)
|
|
2439
|
+
"""
|
|
2440
|
+
last: Int
|
|
2441
|
+
): MailingAddressConnection!
|
|
2351
2442
|
|
|
2352
2443
|
"""Customer custom field values (post-Opcja A unified custom fields)."""
|
|
2353
|
-
attributes(
|
|
2444
|
+
attributes(
|
|
2445
|
+
"""
|
|
2446
|
+
Optional attribute group filter (e.g. `loyalty`, `b2b`); omit to return all groups
|
|
2447
|
+
"""
|
|
2448
|
+
namespace: String
|
|
2449
|
+
): [EntityAttributeField!]!
|
|
2354
2450
|
|
|
2355
2451
|
"""
|
|
2356
2452
|
Company name. Populated when `customerType` is COMPANY; null for INDIVIDUAL profiles.
|
|
@@ -2403,7 +2499,15 @@ type Customer implements Node {
|
|
|
2403
2499
|
"""
|
|
2404
2500
|
Orders placed by this customer (Relay Connection). Use for the order history page.
|
|
2405
2501
|
"""
|
|
2406
|
-
orders(
|
|
2502
|
+
orders(
|
|
2503
|
+
"""
|
|
2504
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
2505
|
+
"""
|
|
2506
|
+
after: String
|
|
2507
|
+
|
|
2508
|
+
"""Number of orders to return per page (default 10, max 100)"""
|
|
2509
|
+
first: Int = 10
|
|
2510
|
+
): OrderConnection!
|
|
2407
2511
|
|
|
2408
2512
|
"""Customer phone number (free-form)."""
|
|
2409
2513
|
phone: String
|
|
@@ -2413,6 +2517,11 @@ type Customer implements Node {
|
|
|
2413
2517
|
"""
|
|
2414
2518
|
regon: String
|
|
2415
2519
|
|
|
2520
|
+
"""
|
|
2521
|
+
Expiry of the access token authenticating the current request (ISO 8601). Present only on the authenticated current customer (the `customer` query); null otherwise. Schedule a proactive `customerRefreshToken` before this to keep the session alive.
|
|
2522
|
+
"""
|
|
2523
|
+
sessionExpiresAt: DateTime
|
|
2524
|
+
|
|
2416
2525
|
"""
|
|
2417
2526
|
Merchant-assigned segmentation tags (e.g. "vip", "wholesale", "b2b"). Use to customise UI / pricing rules on the storefront.
|
|
2418
2527
|
"""
|
|
@@ -2853,7 +2962,7 @@ type Domain {
|
|
|
2853
2962
|
"""Whether HTTPS is enforced"""
|
|
2854
2963
|
isSslEnabled: Boolean!
|
|
2855
2964
|
|
|
2856
|
-
"""Full URL
|
|
2965
|
+
"""Full URL including protocol"""
|
|
2857
2966
|
url: URL!
|
|
2858
2967
|
}
|
|
2859
2968
|
|
|
@@ -3152,7 +3261,12 @@ type Image {
|
|
|
3152
3261
|
"""
|
|
3153
3262
|
Public image URL. Pass an optional `transform` argument (max width / height, crop region, scale, preferred format) to obtain a resized / reformatted CDN variant — useful for responsive images and modern formats like WebP / AVIF.
|
|
3154
3263
|
"""
|
|
3155
|
-
url(
|
|
3264
|
+
url(
|
|
3265
|
+
"""
|
|
3266
|
+
Optional CDN transform (maxWidth/maxHeight/crop/scale/preferredContentType WEBP/AVIF)
|
|
3267
|
+
"""
|
|
3268
|
+
transform: ImageTransformInput
|
|
3269
|
+
): String!
|
|
3156
3270
|
|
|
3157
3271
|
"""Native width of the source image in pixels."""
|
|
3158
3272
|
width: Int
|
|
@@ -3266,28 +3380,28 @@ enum LanguageDirection {
|
|
|
3266
3380
|
}
|
|
3267
3381
|
|
|
3268
3382
|
"""
|
|
3269
|
-
Summary of a ProductVariant linked to an AttributeOption (
|
|
3383
|
+
Summary of a ProductVariant linked to an AttributeOption (product configurator).
|
|
3270
3384
|
"""
|
|
3271
3385
|
type LinkedVariantSummary {
|
|
3272
|
-
"""Available stock (stock − active reservations,
|
|
3386
|
+
"""Available stock (stock − active reservations, always ≥ 0)."""
|
|
3273
3387
|
availableStock: Int!
|
|
3274
3388
|
|
|
3275
|
-
"""Variant ID
|
|
3389
|
+
"""Variant ID."""
|
|
3276
3390
|
id: ID!
|
|
3277
3391
|
|
|
3278
|
-
"""
|
|
3392
|
+
"""Whether currently purchasable (accounts for allowBackorder)."""
|
|
3279
3393
|
isAvailable: Boolean!
|
|
3280
3394
|
|
|
3281
3395
|
"""Parent product ID."""
|
|
3282
3396
|
productId: ID!
|
|
3283
3397
|
|
|
3284
|
-
"""SKU
|
|
3398
|
+
"""SKU when defined."""
|
|
3285
3399
|
sku: String
|
|
3286
3400
|
|
|
3287
|
-
"""Variant name (e.g., "
|
|
3401
|
+
"""Variant name (e.g., "Large / Graphite")."""
|
|
3288
3402
|
title: String!
|
|
3289
3403
|
|
|
3290
|
-
"""
|
|
3404
|
+
"""Whether inventory is tracked for this variant."""
|
|
3291
3405
|
trackQuantity: Boolean!
|
|
3292
3406
|
}
|
|
3293
3407
|
|
|
@@ -3300,18 +3414,18 @@ type LocaleCurrencyMapping {
|
|
|
3300
3414
|
locale: String!
|
|
3301
3415
|
}
|
|
3302
3416
|
|
|
3303
|
-
"""Localization context
|
|
3417
|
+
"""Localization context for the storefront"""
|
|
3304
3418
|
type Localization {
|
|
3305
|
-
"""
|
|
3419
|
+
"""All supported countries (from active shipping zones)"""
|
|
3306
3420
|
availableCountries: [Country!]!
|
|
3307
3421
|
|
|
3308
|
-
"""
|
|
3422
|
+
"""All supported shop languages"""
|
|
3309
3423
|
availableLanguages: [Language!]!
|
|
3310
3424
|
|
|
3311
|
-
"""
|
|
3425
|
+
"""The customer current country (from `@inContext` or geo-detection)"""
|
|
3312
3426
|
country: Country!
|
|
3313
3427
|
|
|
3314
|
-
"""
|
|
3428
|
+
"""The customer current language (from `Accept-Language` or `@inContext`)"""
|
|
3315
3429
|
language: Language!
|
|
3316
3430
|
}
|
|
3317
3431
|
|
|
@@ -3885,92 +3999,191 @@ type Mutation {
|
|
|
3885
3999
|
"""
|
|
3886
4000
|
Add one or more lines to the cart. Adding the same variant a second time merges into the existing line (sums the quantity). Returns the full updated cart plus any non-fatal warnings (e.g. stock dropped below requested quantity).
|
|
3887
4001
|
"""
|
|
3888
|
-
cartAddLines(
|
|
4002
|
+
cartAddLines(
|
|
4003
|
+
"""Cart UUID to add lines to"""
|
|
4004
|
+
id: ID!
|
|
4005
|
+
|
|
4006
|
+
"""
|
|
4007
|
+
Lines to add — each one variant + quantity (+ optional attributes / selections)
|
|
4008
|
+
"""
|
|
4009
|
+
lines: [CartLineInput!]!
|
|
4010
|
+
): CartAddLinesPayload!
|
|
3889
4011
|
|
|
3890
4012
|
"""
|
|
3891
4013
|
Apply a gift card to the cart by full code. The card is debited at `cartComplete`. Rate-limited to 5 requests per minute per IP+shop (gift card codes form a finite enumerable space).
|
|
3892
4014
|
"""
|
|
3893
|
-
cartApplyGiftCard(
|
|
4015
|
+
cartApplyGiftCard(
|
|
4016
|
+
"""Cart UUID + full gift card code to redeem against the cart"""
|
|
4017
|
+
input: CartApplyGiftCardInput!
|
|
4018
|
+
): CartApplyGiftCardPayload!
|
|
3894
4019
|
|
|
3895
4020
|
"""
|
|
3896
|
-
Clear all payment selection state on the cart in a single atomic operation. Use for accordion "back to method picker" flows
|
|
4021
|
+
Clear all payment selection state on the cart in a single atomic operation. Use for accordion "back to method picker" flows in the storefront UI. Idempotent — calling twice yields the same end state. The cart must be `ACTIVE` (CONVERTED carts reject with `ALREADY_COMPLETED`).
|
|
3897
4022
|
"""
|
|
3898
|
-
cartClearPaymentSelection(
|
|
4023
|
+
cartClearPaymentSelection(
|
|
4024
|
+
"""
|
|
4025
|
+
Cart UUID to clear all payment selection state (method, provider, instrument)
|
|
4026
|
+
"""
|
|
4027
|
+
input: CartClearPaymentSelectionInput!
|
|
4028
|
+
): CartClearPaymentSelectionPayload!
|
|
3899
4029
|
|
|
3900
4030
|
"""
|
|
3901
4031
|
Finalise the cart into an `Order`. The cart is locked and no longer accepts mutations. Payment is initiated separately via `paymentCreate` — check `order.canCreatePayment` to decide whether to render a "Pay now" button or send the buyer directly to the confirmation page (for offline methods such as cash on delivery). Rate-limited to 5 requests per minute per IP+shop; pass an `idempotencyKey` to guard against duplicate orders on retry.
|
|
3902
4032
|
"""
|
|
3903
|
-
cartComplete(
|
|
4033
|
+
cartComplete(
|
|
4034
|
+
"""
|
|
4035
|
+
Cart UUID + optional idempotency key to guard against duplicate orders on retry
|
|
4036
|
+
"""
|
|
4037
|
+
input: CartCompleteInput!
|
|
4038
|
+
): CartCompletePayload!
|
|
3904
4039
|
|
|
3905
4040
|
"""
|
|
3906
4041
|
Create a new cart. All fields on `input` are optional — call with no input to create an empty cart, or pass initial lines, buyer identity, attributes, discount codes, email and a shipping address to skip the corresponding follow-up calls.
|
|
3907
4042
|
"""
|
|
3908
|
-
cartCreate(
|
|
4043
|
+
cartCreate(
|
|
4044
|
+
"""
|
|
4045
|
+
Optional initial cart contents — lines, buyer identity, email, address, attributes, discount codes
|
|
4046
|
+
"""
|
|
4047
|
+
input: CartCreateInput
|
|
4048
|
+
): CartCreatePayload!
|
|
3909
4049
|
|
|
3910
4050
|
"""
|
|
3911
4051
|
Replace (not merge) the list of discount codes on the cart. Pass an empty array to clear all codes. Rate-limited to 10 requests per minute per IP+shop.
|
|
3912
4052
|
"""
|
|
3913
|
-
cartDiscountCodesUpdate(
|
|
4053
|
+
cartDiscountCodesUpdate(
|
|
4054
|
+
"""
|
|
4055
|
+
Full replacement list of discount codes (case-insensitive); empty array clears all
|
|
4056
|
+
"""
|
|
4057
|
+
discountCodes: [String!]!
|
|
4058
|
+
|
|
4059
|
+
"""Cart UUID to apply discount codes to"""
|
|
4060
|
+
id: ID!
|
|
4061
|
+
): CartDiscountCodesUpdatePayload!
|
|
3914
4062
|
|
|
3915
4063
|
"""
|
|
3916
4064
|
Remove a previously applied gift card from the cart by its `CartAppliedGiftCard.id`. The storefront never has to handle the full gift card code on the client.
|
|
3917
4065
|
"""
|
|
3918
|
-
cartRemoveGiftCard(
|
|
4066
|
+
cartRemoveGiftCard(
|
|
4067
|
+
"""Cart UUID + applied gift card UUID to remove from the cart"""
|
|
4068
|
+
input: CartRemoveGiftCardInput!
|
|
4069
|
+
): CartRemoveGiftCardPayload!
|
|
3919
4070
|
|
|
3920
4071
|
"""
|
|
3921
4072
|
Remove one or more lines from the cart by `CartLine.id`. Equivalent to `cartUpdateLines` with `quantity: 0` but lets the storefront express the intent explicitly.
|
|
3922
4073
|
"""
|
|
3923
|
-
cartRemoveLines(
|
|
4074
|
+
cartRemoveLines(
|
|
4075
|
+
"""Cart UUID to remove lines from"""
|
|
4076
|
+
id: ID!
|
|
4077
|
+
|
|
4078
|
+
"""UUIDs of cart lines to remove (`CartLine.id`)"""
|
|
4079
|
+
lineIds: [ID!]!
|
|
4080
|
+
): CartRemoveLinesPayload!
|
|
3924
4081
|
|
|
3925
4082
|
"""
|
|
3926
|
-
Select a payment method on the cart by category (BLIK, CARD, BANK_TRANSFER, ...). Backend resolves the preferred provider from `MerchantPaymentConfig` at `paymentCreate` time. Optional `
|
|
4083
|
+
Select a payment method on the cart by category (BLIK, CARD, BANK_TRANSFER, ...). Backend resolves the preferred provider from `MerchantPaymentConfig` at `paymentCreate` time. Optional `preferredProvider` overrides the merchant priority when the buyer explicitly picks a gateway from `PaymentMethod.providersAvailable`. Optional `preferredInstrument` enables instrument-level deep-link na gateway hosted page (BLIK ekran, mBank flow, etc.) — wymaga `preferredProvider`.
|
|
3927
4084
|
"""
|
|
3928
|
-
cartSelectPaymentMethod(
|
|
4085
|
+
cartSelectPaymentMethod(
|
|
4086
|
+
"""
|
|
4087
|
+
Cart UUID + payment method category, with optional provider and instrument overrides
|
|
4088
|
+
"""
|
|
4089
|
+
input: CartSelectPaymentMethodInput!
|
|
4090
|
+
): CartSelectPaymentMethodPayload!
|
|
3929
4091
|
|
|
3930
4092
|
"""
|
|
3931
4093
|
Select a shipping method on the cart. Validates the method against the cart contents and the shipping address (must be eligible for the destination, and a pickup point must be set when the method delivers to a locker / collection point). Updates `cost.totalShipping` and the grand total.
|
|
3932
4094
|
"""
|
|
3933
|
-
cartSelectShippingMethod(
|
|
4095
|
+
cartSelectShippingMethod(
|
|
4096
|
+
"""Cart UUID + shipping method UUID to select for the cart"""
|
|
4097
|
+
input: CartSelectShippingMethodInput!
|
|
4098
|
+
): CartSelectShippingMethodPayload!
|
|
3934
4099
|
|
|
3935
4100
|
"""
|
|
3936
4101
|
Set the billing address on a cart. The shipping address is left unchanged — pass billing only when it differs from shipping (otherwise the order mirrors the shipping address as the billing address).
|
|
3937
4102
|
"""
|
|
3938
|
-
cartSetBillingAddress(
|
|
4103
|
+
cartSetBillingAddress(
|
|
4104
|
+
"""
|
|
4105
|
+
Cart UUID + billing address (pass only when billing differs from shipping)
|
|
4106
|
+
"""
|
|
4107
|
+
input: CartSetBillingAddressInput!
|
|
4108
|
+
): CartSetBillingAddressPayload!
|
|
3939
4109
|
|
|
3940
4110
|
"""
|
|
3941
4111
|
Set the shipping address on a cart. Pass `address.pickupPoint` when the buyer is delivering to a parcel locker / collection point — required for non-HOME shipping methods. Replaces any previous shipping address; the billing address is left untouched.
|
|
3942
4112
|
"""
|
|
3943
|
-
cartSetShippingAddress(
|
|
4113
|
+
cartSetShippingAddress(
|
|
4114
|
+
"""
|
|
4115
|
+
Cart UUID + shipping address (with optional pickup point for parcel locker delivery)
|
|
4116
|
+
"""
|
|
4117
|
+
input: CartSetShippingAddressInput!
|
|
4118
|
+
): CartSetShippingAddressPayload!
|
|
3944
4119
|
|
|
3945
4120
|
"""
|
|
3946
4121
|
Replace (not merge) the cart-level custom attributes — free-form key/value pairs surfaced to the merchant on the order. Use for cart-wide metadata such as a B2B PO number or marketing source. Max 250 pairs / 255-char keys; over the limit returns `CART_ATTRIBUTES_LIMIT_EXCEEDED`.
|
|
3947
4122
|
"""
|
|
3948
|
-
cartUpdateAttributes(
|
|
4123
|
+
cartUpdateAttributes(
|
|
4124
|
+
"""
|
|
4125
|
+
Full replacement list of cart-level key/value attributes (max 250 pairs, 255-char keys)
|
|
4126
|
+
"""
|
|
4127
|
+
attributes: [CartAttributeInput!]!
|
|
4128
|
+
|
|
4129
|
+
"""Cart UUID whose attributes are replaced"""
|
|
4130
|
+
id: ID!
|
|
4131
|
+
): CartUpdateAttributesPayload!
|
|
3949
4132
|
|
|
3950
4133
|
"""
|
|
3951
4134
|
Update buyer identity on the cart — email, phone, customer ID, country and language hints. Only supplied fields are touched; omit a field to leave it unchanged.
|
|
3952
4135
|
"""
|
|
3953
|
-
cartUpdateBuyerIdentity(
|
|
4136
|
+
cartUpdateBuyerIdentity(
|
|
4137
|
+
"""
|
|
4138
|
+
Buyer identity fields — email / phone / customer ID / country / language; only supplied fields touched
|
|
4139
|
+
"""
|
|
4140
|
+
buyerIdentity: CartBuyerIdentityInput!
|
|
4141
|
+
|
|
4142
|
+
"""Cart UUID whose buyer identity is updated"""
|
|
4143
|
+
id: ID!
|
|
4144
|
+
): CartUpdateBuyerIdentityPayload!
|
|
3954
4145
|
|
|
3955
4146
|
"""
|
|
3956
4147
|
Set recipient details (email, display name, personalised message) on a gift card line item — the gift card will be delivered to this recipient on order completion.
|
|
3957
4148
|
"""
|
|
3958
|
-
cartUpdateGiftCardRecipient(
|
|
4149
|
+
cartUpdateGiftCardRecipient(
|
|
4150
|
+
"""
|
|
4151
|
+
Cart UUID + gift card line item UUID + recipient details (email, name, message)
|
|
4152
|
+
"""
|
|
4153
|
+
input: CartUpdateGiftCardRecipientInput!
|
|
4154
|
+
): CartUpdateGiftCardRecipientPayload!
|
|
3959
4155
|
|
|
3960
4156
|
"""
|
|
3961
4157
|
Update existing cart lines — quantity, custom attributes and / or configurator selections. Set `quantity` to 0 to remove a line. Address lines by `CartLine.id`.
|
|
3962
4158
|
"""
|
|
3963
|
-
cartUpdateLines(
|
|
4159
|
+
cartUpdateLines(
|
|
4160
|
+
"""Cart UUID to update lines on"""
|
|
4161
|
+
id: ID!
|
|
4162
|
+
|
|
4163
|
+
"""
|
|
4164
|
+
Line updates — addressed by `CartLine.id`; `quantity: 0` removes the line
|
|
4165
|
+
"""
|
|
4166
|
+
lines: [CartLineUpdateInput!]!
|
|
4167
|
+
): CartUpdateLinesPayload!
|
|
3964
4168
|
|
|
3965
4169
|
"""
|
|
3966
4170
|
Set or replace the buyer note on the cart (free-form, up to 1000 chars). Surfaced to the merchant on the resulting order.
|
|
3967
4171
|
"""
|
|
3968
|
-
cartUpdateNote(
|
|
4172
|
+
cartUpdateNote(
|
|
4173
|
+
"""Cart UUID whose note is updated"""
|
|
4174
|
+
id: ID!
|
|
4175
|
+
|
|
4176
|
+
"""
|
|
4177
|
+
Free-form buyer note (max 1000 chars), surfaced to the merchant on the order
|
|
4178
|
+
"""
|
|
4179
|
+
note: String!
|
|
4180
|
+
): CartUpdateNotePayload!
|
|
3969
4181
|
|
|
3970
4182
|
"""
|
|
3971
4183
|
Activate customer account using raw activation token (admin-created flow)
|
|
3972
4184
|
"""
|
|
3973
4185
|
customerActivate(
|
|
4186
|
+
"""New password (must satisfy the shop password policy)"""
|
|
3974
4187
|
password: String!
|
|
3975
4188
|
|
|
3976
4189
|
"""Raw activation token from the activation email"""
|
|
@@ -3978,12 +4191,20 @@ type Mutation {
|
|
|
3978
4191
|
): CustomerActivatePayload!
|
|
3979
4192
|
|
|
3980
4193
|
"""Add customer address"""
|
|
3981
|
-
customerAddAddress(
|
|
4194
|
+
customerAddAddress(
|
|
4195
|
+
"""
|
|
4196
|
+
Address to add to the customer address book (incl. optional B2B `taxId` / `vatNumber`)
|
|
4197
|
+
"""
|
|
4198
|
+
address: MailingAddressInput!
|
|
4199
|
+
): CustomerAddAddressPayload!
|
|
3982
4200
|
|
|
3983
4201
|
"""
|
|
3984
4202
|
Sign a customer in with email and password. Returns an access token to use on subsequent requests (as a Bearer header or via the SDK auth cookie).
|
|
3985
4203
|
"""
|
|
3986
|
-
customerLogin(
|
|
4204
|
+
customerLogin(
|
|
4205
|
+
"""Login credentials — email + password"""
|
|
4206
|
+
input: CustomerAccessTokenCreateInput!
|
|
4207
|
+
): CustomerLoginPayload!
|
|
3987
4208
|
|
|
3988
4209
|
"""
|
|
3989
4210
|
Sign the current customer out. Invalidates the access token on the server; the SDK BFF auth helpers additionally clear the HTTP-only cookie.
|
|
@@ -3996,13 +4217,22 @@ type Mutation {
|
|
|
3996
4217
|
customerRefreshToken: CustomerRefreshTokenPayload!
|
|
3997
4218
|
|
|
3998
4219
|
"""Remove customer address"""
|
|
3999
|
-
customerRemoveAddress(
|
|
4220
|
+
customerRemoveAddress(
|
|
4221
|
+
"""UUID of the address to remove"""
|
|
4222
|
+
id: ID!
|
|
4223
|
+
): CustomerRemoveAddressPayload!
|
|
4000
4224
|
|
|
4001
4225
|
"""Request password reset email"""
|
|
4002
|
-
customerRequestPasswordReset(
|
|
4226
|
+
customerRequestPasswordReset(
|
|
4227
|
+
"""
|
|
4228
|
+
Customer email (RFC 5322); always returns success to prevent account enumeration
|
|
4229
|
+
"""
|
|
4230
|
+
email: String!
|
|
4231
|
+
): CustomerRequestPasswordResetPayload!
|
|
4003
4232
|
|
|
4004
4233
|
"""Reset customer password via signed URL from email"""
|
|
4005
4234
|
customerResetPassword(
|
|
4235
|
+
"""New password (must satisfy the shop password policy)"""
|
|
4006
4236
|
newPassword: String!
|
|
4007
4237
|
|
|
4008
4238
|
"""Raw password-reset token from the password-reset email"""
|
|
@@ -4010,66 +4240,142 @@ type Mutation {
|
|
|
4010
4240
|
): CustomerResetPasswordPayload!
|
|
4011
4241
|
|
|
4012
4242
|
"""Set default address"""
|
|
4013
|
-
customerSetDefaultAddress(
|
|
4243
|
+
customerSetDefaultAddress(
|
|
4244
|
+
"""
|
|
4245
|
+
UUID of the address to mark as default for shipping and billing pickers
|
|
4246
|
+
"""
|
|
4247
|
+
addressId: ID!
|
|
4248
|
+
): CustomerSetDefaultAddressPayload!
|
|
4014
4249
|
|
|
4015
4250
|
"""
|
|
4016
4251
|
Register a new customer with email and password. Returns the created customer plus an access token so the storefront can sign the buyer in immediately, no follow-up login call needed.
|
|
4017
4252
|
"""
|
|
4018
|
-
customerSignup(
|
|
4253
|
+
customerSignup(
|
|
4254
|
+
"""
|
|
4255
|
+
New customer registration data — email, password, optional profile and marketing consent
|
|
4256
|
+
"""
|
|
4257
|
+
input: CustomerCreateInput!
|
|
4258
|
+
): CustomerSignupPayload!
|
|
4019
4259
|
|
|
4020
4260
|
"""Subscribe an email to the newsletter (guest-friendly, double opt-in)."""
|
|
4021
|
-
customerSubscribeToMarketing(
|
|
4261
|
+
customerSubscribeToMarketing(
|
|
4262
|
+
"""
|
|
4263
|
+
Newsletter subscribe — email to opt in (double opt-in flow, anti-enumeration)
|
|
4264
|
+
"""
|
|
4265
|
+
input: CustomerSubscribeToMarketingInput!
|
|
4266
|
+
): SubscribeToMarketingPayload!
|
|
4022
4267
|
|
|
4023
4268
|
"""Unsubscribe an email from the newsletter (guest-friendly, idempotent)."""
|
|
4024
|
-
customerUnsubscribeFromMarketing(
|
|
4269
|
+
customerUnsubscribeFromMarketing(
|
|
4270
|
+
"""
|
|
4271
|
+
Newsletter unsubscribe — email to opt out (idempotent, anti-enumeration)
|
|
4272
|
+
"""
|
|
4273
|
+
input: CustomerUnsubscribeFromMarketingInput!
|
|
4274
|
+
): UnsubscribeFromMarketingPayload!
|
|
4025
4275
|
|
|
4026
4276
|
"""Update customer profile"""
|
|
4027
|
-
customerUpdate(
|
|
4277
|
+
customerUpdate(
|
|
4278
|
+
"""
|
|
4279
|
+
Customer profile changes — only supplied fields are touched (strict-hybrid)
|
|
4280
|
+
"""
|
|
4281
|
+
customer: CustomerUpdateInput!
|
|
4282
|
+
): CustomerUpdatePayload!
|
|
4028
4283
|
|
|
4029
4284
|
"""Update customer address"""
|
|
4030
|
-
customerUpdateAddress(
|
|
4285
|
+
customerUpdateAddress(
|
|
4286
|
+
"""New values — supplied fields replace existing ones"""
|
|
4287
|
+
address: MailingAddressInput!
|
|
4288
|
+
|
|
4289
|
+
"""UUID of the address to update"""
|
|
4290
|
+
id: ID!
|
|
4291
|
+
): CustomerUpdateAddressPayload!
|
|
4031
4292
|
|
|
4032
4293
|
"""Generate or retrieve referral code"""
|
|
4033
4294
|
loyaltyGenerateReferralCode: GenerateReferralCodePayload!
|
|
4034
4295
|
|
|
4035
4296
|
"""Redeem a loyalty reward"""
|
|
4036
|
-
loyaltyRedeemReward(
|
|
4297
|
+
loyaltyRedeemReward(
|
|
4298
|
+
"""Reward redemption payload (rewardId UUID)"""
|
|
4299
|
+
input: RedeemRewardInput!
|
|
4300
|
+
): RedeemRewardPayload!
|
|
4037
4301
|
|
|
4038
4302
|
"""
|
|
4039
4303
|
Initiate a payment session for an order created by `cartComplete`. Call after checking `order.canCreatePayment`. Idempotent on the order — a second call returns the existing still-valid session. Branch on the returned `payment.flow` to launch the payment (redirect / embedded / instant). Rate-limited to 5 requests per minute per IP+shop.
|
|
4040
4304
|
"""
|
|
4041
|
-
paymentCreate(
|
|
4305
|
+
paymentCreate(
|
|
4306
|
+
"""
|
|
4307
|
+
Payment session payload (orderId UUID, optional returnUrl/cancelUrl — open-redirect validated server-side)
|
|
4308
|
+
"""
|
|
4309
|
+
input: PaymentCreateInput!
|
|
4310
|
+
): PaymentCreatePayload!
|
|
4042
4311
|
|
|
4043
4312
|
"""Cancel a return request"""
|
|
4044
|
-
returnCancel(
|
|
4313
|
+
returnCancel(
|
|
4314
|
+
"""Return UUID to cancel (only REQUESTED/APPROVED/DRAFT statuses)"""
|
|
4315
|
+
id: ID!
|
|
4316
|
+
): ReturnCancelPayload!
|
|
4045
4317
|
|
|
4046
4318
|
"""Create a return request"""
|
|
4047
|
-
returnCreate(
|
|
4319
|
+
returnCreate(
|
|
4320
|
+
"""
|
|
4321
|
+
Return request payload (orderId, reason, items[], optional customerNote/compensationType/idempotencyKey)
|
|
4322
|
+
"""
|
|
4323
|
+
input: ReturnCreateInput!
|
|
4324
|
+
): ReturnCreatePayload!
|
|
4048
4325
|
|
|
4049
4326
|
"""Create a product review"""
|
|
4050
|
-
reviewCreate(
|
|
4327
|
+
reviewCreate(
|
|
4328
|
+
"""
|
|
4329
|
+
Review payload (productId, rating 1-5, content min 10 chars, optional title/pros/cons/images)
|
|
4330
|
+
"""
|
|
4331
|
+
input: ReviewCreateInput!
|
|
4332
|
+
): ReviewPayload!
|
|
4051
4333
|
|
|
4052
4334
|
"""
|
|
4053
4335
|
Mark review as not helpful (downvote). Replaces any prior vote by same customer.
|
|
4054
4336
|
"""
|
|
4055
|
-
reviewDownvote(
|
|
4337
|
+
reviewDownvote(
|
|
4338
|
+
"""Review UUID to downvote"""
|
|
4339
|
+
reviewId: ID!
|
|
4340
|
+
): ReviewPayload!
|
|
4056
4341
|
|
|
4057
4342
|
"""
|
|
4058
4343
|
Mark review as helpful (upvote). Replaces any prior vote by same customer.
|
|
4059
4344
|
"""
|
|
4060
|
-
reviewUpvote(
|
|
4345
|
+
reviewUpvote(
|
|
4346
|
+
"""Review UUID to upvote"""
|
|
4347
|
+
reviewId: ID!
|
|
4348
|
+
): ReviewPayload!
|
|
4061
4349
|
|
|
4062
4350
|
"""Add item to wishlist"""
|
|
4063
|
-
wishlistAddItem(
|
|
4351
|
+
wishlistAddItem(
|
|
4352
|
+
"""Wishlist UUID to add the item to"""
|
|
4353
|
+
id: ID!
|
|
4354
|
+
|
|
4355
|
+
"""Product UUID (and optional variant UUID) + notification preferences"""
|
|
4356
|
+
input: WishlistItemInput!
|
|
4357
|
+
): WishlistPayload!
|
|
4064
4358
|
|
|
4065
4359
|
"""Create a new wishlist"""
|
|
4066
|
-
wishlistCreate(
|
|
4360
|
+
wishlistCreate(
|
|
4361
|
+
"""Wishlist details (name + isPublic flag for share-by-link visibility)"""
|
|
4362
|
+
input: WishlistCreateInput!
|
|
4363
|
+
): WishlistPayload!
|
|
4067
4364
|
|
|
4068
4365
|
"""Delete a wishlist"""
|
|
4069
|
-
wishlistDelete(
|
|
4366
|
+
wishlistDelete(
|
|
4367
|
+
"""Wishlist UUID to delete (must be owned by the authenticated customer)"""
|
|
4368
|
+
id: ID!
|
|
4369
|
+
): WishlistPayload!
|
|
4070
4370
|
|
|
4071
4371
|
"""Remove item from wishlist"""
|
|
4072
|
-
wishlistRemoveItem(
|
|
4372
|
+
wishlistRemoveItem(
|
|
4373
|
+
"""Wishlist UUID containing the item"""
|
|
4374
|
+
id: ID!
|
|
4375
|
+
|
|
4376
|
+
"""Wishlist item UUID to remove"""
|
|
4377
|
+
itemId: ID!
|
|
4378
|
+
): WishlistPayload!
|
|
4073
4379
|
}
|
|
4074
4380
|
|
|
4075
4381
|
"""GraphQL Node interface — universal ID-based lookup"""
|
|
@@ -4079,7 +4385,7 @@ interface Node {
|
|
|
4079
4385
|
}
|
|
4080
4386
|
|
|
4081
4387
|
"""
|
|
4082
|
-
Type discriminator
|
|
4388
|
+
Type discriminator for node()/nodes() queries (the UUID does not contain a type prefix)
|
|
4083
4389
|
"""
|
|
4084
4390
|
enum NodeType {
|
|
4085
4391
|
ARTICLE
|
|
@@ -4104,7 +4410,12 @@ type Order implements Node {
|
|
|
4104
4410
|
accessToken: String!
|
|
4105
4411
|
|
|
4106
4412
|
"""Order custom field values (post-Opcja A unified custom fields)."""
|
|
4107
|
-
attributes(
|
|
4413
|
+
attributes(
|
|
4414
|
+
"""
|
|
4415
|
+
Optional namespace prefix to filter attributes (e.g. "erp", "b2b", "fulfillment")
|
|
4416
|
+
"""
|
|
4417
|
+
namespace: String
|
|
4418
|
+
): [EntityAttributeField!]!
|
|
4108
4419
|
|
|
4109
4420
|
"""
|
|
4110
4421
|
True when the storefront should initiate an online payment for this order — render a "Pay now" button. False when the order is cancelled, already paid, or uses an offline payment method (cash on delivery, manual bank transfer) where no online flow applies. Retry-friendly: returns true for UNPAID / PENDING / FAILED payment statuses when the method supports online init.
|
|
@@ -4140,7 +4451,17 @@ type Order implements Node {
|
|
|
4140
4451
|
"""
|
|
4141
4452
|
Line items on the order (paginated, Relay Connection). Use to render the order summary on the confirmation or order detail page.
|
|
4142
4453
|
"""
|
|
4143
|
-
lineItems(
|
|
4454
|
+
lineItems(
|
|
4455
|
+
"""
|
|
4456
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
4457
|
+
"""
|
|
4458
|
+
after: String
|
|
4459
|
+
|
|
4460
|
+
"""
|
|
4461
|
+
Number of line items to return from the start (forward pagination, default 10)
|
|
4462
|
+
"""
|
|
4463
|
+
first: Int = 10
|
|
4464
|
+
): OrderLineItemConnection!
|
|
4144
4465
|
|
|
4145
4466
|
"""
|
|
4146
4467
|
Human-readable order number shown to the buyer and the merchant (e.g. "1042"). Distinct from `id`.
|
|
@@ -4148,7 +4469,7 @@ type Order implements Node {
|
|
|
4148
4469
|
orderNumber: String!
|
|
4149
4470
|
|
|
4150
4471
|
"""
|
|
4151
|
-
Category of the payment method on the order (CARD, BLIK, BANK_TRANSFER, CASH_ON_DELIVERY, OTHER). Use to drive iconography and copy on the confirmation page (e.g. show the card icon for CARD, the BLIK logo for BLIK).
|
|
4472
|
+
Category of the payment method on the order (CARD, BLIK, BANK_TRANSFER, INSTALLMENT, WALLET, CASH_ON_DELIVERY, OTHER). Use to drive iconography and copy on the confirmation page (e.g. show the card icon for CARD, the BLIK logo for BLIK, the wallet icon for WALLET — Apple Pay / Google Pay).
|
|
4152
4473
|
"""
|
|
4153
4474
|
paymentMethodType: PaymentMethodType!
|
|
4154
4475
|
|
|
@@ -4217,39 +4538,39 @@ enum OrderFulfillmentStatus {
|
|
|
4217
4538
|
UNFULFILLED
|
|
4218
4539
|
}
|
|
4219
4540
|
|
|
4220
|
-
"""
|
|
4541
|
+
"""Order line item with variant snapshot and live enrichment"""
|
|
4221
4542
|
type OrderLineItem {
|
|
4222
4543
|
"""Unique identifier"""
|
|
4223
4544
|
id: ID!
|
|
4224
4545
|
|
|
4225
4546
|
"""
|
|
4226
|
-
|
|
4547
|
+
Line total captured at purchase time (unitPrice × quantity, minor units)
|
|
4227
4548
|
"""
|
|
4228
4549
|
originalTotalPrice: Money!
|
|
4229
4550
|
|
|
4230
4551
|
"""
|
|
4231
|
-
|
|
4552
|
+
Unit price captured at purchase time (minor units, includes BUNDLED surcharges)
|
|
4232
4553
|
"""
|
|
4233
4554
|
originalUnitPrice: Money!
|
|
4234
4555
|
|
|
4235
|
-
"""
|
|
4556
|
+
"""Quantity ordered (snapshot from checkout)"""
|
|
4236
4557
|
quantity: Int!
|
|
4237
4558
|
|
|
4238
|
-
"""
|
|
4559
|
+
"""Quantity already fulfilled (shipped — per-item fulfillment tracking)"""
|
|
4239
4560
|
quantityFulfilled: Int!
|
|
4240
4561
|
|
|
4241
4562
|
"""
|
|
4242
|
-
|
|
4563
|
+
Quantity still eligible for return/refund (quantity − returnedQuantity, clamped ≥ 0). Industry-standard semantics for refund tracking.
|
|
4243
4564
|
"""
|
|
4244
4565
|
refundableQuantity: Int!
|
|
4245
4566
|
|
|
4246
4567
|
"""
|
|
4247
|
-
|
|
4568
|
+
Product name captured at purchase time (snapshot). Not the live `Product.name` — preserved even after the product is edited (invoice compliance).
|
|
4248
4569
|
"""
|
|
4249
4570
|
title: String!
|
|
4250
4571
|
|
|
4251
4572
|
"""
|
|
4252
|
-
Live
|
|
4573
|
+
Live product variant (fresh image/price). Null when the variant was deleted after purchase — consumers should fall back to `title`.
|
|
4253
4574
|
"""
|
|
4254
4575
|
variant: ProductVariant
|
|
4255
4576
|
}
|
|
@@ -4266,7 +4587,7 @@ type OrderLineItemConnection {
|
|
|
4266
4587
|
pageInfo: PageInfo!
|
|
4267
4588
|
|
|
4268
4589
|
"""
|
|
4269
|
-
Total count of line items in the order (convention parity
|
|
4590
|
+
Total count of line items in the order (convention parity with OrderConnection/MailingAddressConnection)
|
|
4270
4591
|
"""
|
|
4271
4592
|
totalCount: Int!
|
|
4272
4593
|
}
|
|
@@ -4396,7 +4717,7 @@ type PaymentCreatePayload {
|
|
|
4396
4717
|
userErrors: [UserError!]!
|
|
4397
4718
|
|
|
4398
4719
|
"""
|
|
4399
|
-
Non-blocking signals — backend state change context (e.g. instrument auto-cleared, server-side adjustment). Default empty array. Storefront branches per `code` for UI retry hints / analytics events.
|
|
4720
|
+
Non-blocking signals — backend state change context (e.g. instrument auto-cleared, server-side adjustment). Default empty array. Storefront branches per `code` for UI retry hints / analytics events.
|
|
4400
4721
|
"""
|
|
4401
4722
|
warnings: [PaymentWarning!]!
|
|
4402
4723
|
}
|
|
@@ -4412,150 +4733,152 @@ enum PaymentInitiationFlow {
|
|
|
4412
4733
|
}
|
|
4413
4734
|
|
|
4414
4735
|
"""
|
|
4415
|
-
A
|
|
4736
|
+
A single concrete instrument exposed by a gateway provider (e.g. BLIK code, mBank Pay-By-Link, Apple Pay) within a broader PaymentMethod. Pass `code` as `preferredInstrument` in `cartSelectPaymentMethod` to deep-link the gateway straight to this screen.
|
|
4416
4737
|
"""
|
|
4417
|
-
type
|
|
4738
|
+
type PaymentInstrument {
|
|
4418
4739
|
"""
|
|
4419
|
-
|
|
4740
|
+
Optional brand image (bank logo, wallet icon). Use as tile artwork via `brandImage { url(transform: { maxWidth: 64 }) altText }`. Null when the gateway does not expose one or the instrument has no brand visual (BLIK code).
|
|
4420
4741
|
"""
|
|
4421
|
-
|
|
4742
|
+
brandImage: Image
|
|
4422
4743
|
|
|
4423
4744
|
"""
|
|
4424
|
-
|
|
4745
|
+
Gateway-specific instrument identifier (PayU: `"blik"`/`"mb"`/`"c"`, P24: numeric ID string `"154"`). Pass as `preferredInstrument` in `cartSelectPaymentMethod`. Stable per provider — the gateway does not renumber.
|
|
4425
4746
|
"""
|
|
4426
|
-
|
|
4747
|
+
code: String!
|
|
4427
4748
|
|
|
4428
4749
|
"""
|
|
4429
|
-
|
|
4750
|
+
UX rendering hint — how the storefront should render this instrument (prominent button vs branded tile vs dropdown vs radio). Backend-agnostic mapping to visual treatment.
|
|
4430
4751
|
"""
|
|
4431
|
-
|
|
4752
|
+
displayHint: PaymentInstrumentDisplayHint!
|
|
4432
4753
|
|
|
4433
4754
|
"""
|
|
4434
|
-
|
|
4755
|
+
Buyer-facing display name (e.g. "BLIK", "mBank", "ING Bank Śląski", "Apple Pay").
|
|
4435
4756
|
"""
|
|
4436
|
-
|
|
4757
|
+
displayName: String!
|
|
4437
4758
|
|
|
4438
4759
|
"""
|
|
4439
|
-
|
|
4760
|
+
True when the instrument is currently enabled in the gateway live capabilities. The storefront can gray-out the tile when false instead of hiding it (observability for the merchant).
|
|
4440
4761
|
"""
|
|
4441
|
-
|
|
4762
|
+
enabled: Boolean!
|
|
4442
4763
|
|
|
4443
4764
|
"""
|
|
4444
|
-
|
|
4765
|
+
Provider that handles this instrument (UPPERCASE enum). Required for cross-provider dedupe (e.g. a BLIK code offered by both PayU and P24 — distinct instruments despite the same method type).
|
|
4445
4766
|
"""
|
|
4446
|
-
|
|
4767
|
+
provider: PaymentProvider!
|
|
4447
4768
|
|
|
4448
4769
|
"""
|
|
4449
|
-
|
|
4770
|
+
Semantic type classifying the instrument within the method (BLIK code vs bank vs wallet vs card brand). Storefront-facing dispatch for per-instrument UI components.
|
|
4450
4771
|
"""
|
|
4451
|
-
|
|
4772
|
+
type: PaymentInstrumentType!
|
|
4773
|
+
}
|
|
4452
4774
|
|
|
4775
|
+
"""
|
|
4776
|
+
UX rendering hint for a payment instrument — the storefront can switch between prominent button / branded tile / dropdown / radio per hint. Backend-agnostic mapping to visual treatment.
|
|
4777
|
+
"""
|
|
4778
|
+
enum PaymentInstrumentDisplayHint {
|
|
4779
|
+
BRANDED_TILE
|
|
4780
|
+
DROPDOWN_OPTION
|
|
4781
|
+
PROMINENT_BUTTON
|
|
4782
|
+
RADIO_OPTION
|
|
4783
|
+
}
|
|
4784
|
+
|
|
4785
|
+
"""
|
|
4786
|
+
Classifies a concrete instrument within a PaymentMethod (BLIK code vs bank vs wallet vs card brand). Storefront-facing typing for per-instrument UI dispatch.
|
|
4787
|
+
"""
|
|
4788
|
+
enum PaymentInstrumentType {
|
|
4789
|
+
BANK
|
|
4790
|
+
BLIK_CODE
|
|
4791
|
+
CARD_BRAND
|
|
4792
|
+
OTHER
|
|
4793
|
+
WALLET
|
|
4794
|
+
}
|
|
4795
|
+
|
|
4796
|
+
"""
|
|
4797
|
+
A payment method offered to the buyer at checkout — what to render in the payment picker and pass to `cartSelectPaymentMethod`.
|
|
4798
|
+
"""
|
|
4799
|
+
type PaymentMethod {
|
|
4453
4800
|
"""
|
|
4454
|
-
|
|
4801
|
+
True when the buyer can actually pick this method right now. False when the resolving gateway is temporarily unavailable (incident/maintenance) or reported the method as disabled. Storefront UI should gray-out the tile when false instead of hiding it — gives merchants observability into routing failures.
|
|
4455
4802
|
"""
|
|
4456
|
-
|
|
4803
|
+
available: Boolean!
|
|
4457
4804
|
|
|
4458
4805
|
"""
|
|
4459
|
-
|
|
4806
|
+
Optional buyer-facing description shown under the name (e.g. "Pay with your bank app").
|
|
4460
4807
|
"""
|
|
4461
|
-
|
|
4808
|
+
description: String
|
|
4462
4809
|
|
|
4463
4810
|
"""
|
|
4464
|
-
|
|
4811
|
+
Optional icon image configured by the merchant. Use `icon { url(transform: { maxWidth: 64 }) altText }` as the method tile artwork in the payment picker.
|
|
4465
4812
|
"""
|
|
4466
|
-
|
|
4813
|
+
icon: Image
|
|
4467
4814
|
|
|
4468
4815
|
"""
|
|
4469
|
-
|
|
4816
|
+
Stable ID of the payment method. Pass to `cartSelectPaymentMethod` to select it.
|
|
4470
4817
|
"""
|
|
4471
|
-
|
|
4818
|
+
id: ID!
|
|
4472
4819
|
|
|
4473
4820
|
"""
|
|
4474
|
-
|
|
4821
|
+
Concrete instruments exposed by gateway providers within this method (BLIK code, branded banks, wallets, card brands). Null when no provider exposes granular data for this method. Empty array when a gateway exposes them but all instruments are disabled or removed by post-filtering (cross-provider leak prevention). Render the list and pass `code` as `preferredInstrument` in `cartSelectPaymentMethod` to deep-link the gateway to this screen.
|
|
4475
4822
|
"""
|
|
4476
|
-
|
|
4823
|
+
instruments: [PaymentInstrument!]
|
|
4477
4824
|
|
|
4478
4825
|
"""
|
|
4479
|
-
|
|
4826
|
+
True when the merchant has marked this method as the default. Pre-select it in the picker.
|
|
4480
4827
|
"""
|
|
4481
|
-
|
|
4828
|
+
isDefault: Boolean!
|
|
4482
4829
|
|
|
4483
4830
|
"""
|
|
4484
|
-
|
|
4831
|
+
Display name configured by the merchant (e.g. "BLIK", "Credit card", "Cash on delivery").
|
|
4485
4832
|
"""
|
|
4486
|
-
|
|
4487
|
-
}
|
|
4833
|
+
name: String!
|
|
4488
4834
|
|
|
4489
|
-
"""
|
|
4490
|
-
A single concrete instrument exposed by a gateway provider (e.g. BLIK code, mBank Pay-By-Link, Apple Pay) within a broader PaymentMethod. Pass `instrumentCode` jako `preferredInstrumentCode` w `cartSelectPaymentMethod` żeby gateway deep-link prosto na ten ekran.
|
|
4491
|
-
"""
|
|
4492
|
-
type PaymentMethodInstrument {
|
|
4493
4835
|
"""
|
|
4494
|
-
|
|
4836
|
+
Merchant-configured display position — lower values come first in the picker.
|
|
4495
4837
|
"""
|
|
4496
|
-
|
|
4838
|
+
position: Float!
|
|
4497
4839
|
|
|
4498
4840
|
"""
|
|
4499
|
-
|
|
4841
|
+
Preferred provider (UPPERCASE enum) that the backend will route to when the buyer picks this method type and does not specify `preferredProvider`. Populated only when at least one provider supports the type.
|
|
4500
4842
|
"""
|
|
4501
|
-
|
|
4843
|
+
preferredProvider: PaymentProvider
|
|
4502
4844
|
|
|
4503
4845
|
"""
|
|
4504
|
-
|
|
4846
|
+
Provider (e.g. `PAYU`, `STRIPE`, `PRZELEWY24`, `CASH_ON_DELIVERY`). Identifies the integration behind the method; do not branch UI on it — use `type` instead.
|
|
4505
4847
|
"""
|
|
4506
|
-
|
|
4848
|
+
provider: PaymentProvider!
|
|
4507
4849
|
|
|
4508
4850
|
"""
|
|
4509
|
-
|
|
4851
|
+
Providers (UPPERCASE enum: `PAYU`, `PRZELEWY24`, ...) that can fulfil this method type for the current shop, ordered by merchant priority. Pre-select `preferredProvider`; expose the rest only when the buyer wants to choose explicitly. Single-element array when only one provider supports the type.
|
|
4510
4852
|
"""
|
|
4511
|
-
|
|
4853
|
+
providersAvailable: [PaymentProvider!]
|
|
4512
4854
|
|
|
4513
4855
|
"""
|
|
4514
|
-
|
|
4856
|
+
ISO 4217 currency codes the method accepts. Null when the method accepts the shop currency without restriction.
|
|
4515
4857
|
"""
|
|
4516
|
-
|
|
4858
|
+
supportedCurrencies: [String!]
|
|
4517
4859
|
|
|
4518
4860
|
"""
|
|
4519
|
-
|
|
4861
|
+
Category of the method (CARD, BLIK, BANK_TRANSFER, INSTALLMENT, WALLET, CASH_ON_DELIVERY, OTHER). Drives iconography and copy.
|
|
4520
4862
|
"""
|
|
4521
|
-
|
|
4863
|
+
type: PaymentMethodType!
|
|
4522
4864
|
|
|
4523
4865
|
"""
|
|
4524
|
-
|
|
4866
|
+
When `available` is false, this enum carries the diagnostic reason (GATEWAY_DOWN, GATEWAY_DISABLED, NO_INSTRUMENTS, CREDENTIALS_INVALID). Null when `available` is true. UI can render context-aware copy ("PayU is temporarily down" vs "Method not configured").
|
|
4525
4867
|
"""
|
|
4526
|
-
|
|
4527
|
-
}
|
|
4528
|
-
|
|
4529
|
-
"""
|
|
4530
|
-
UX rendering hint dla payment instrument — storefront może przełączać między prominent button / branded tile / dropdown / radio per hint. Backend-agnostic mapping na visual treatment.
|
|
4531
|
-
"""
|
|
4532
|
-
enum PaymentMethodInstrumentDisplayHint {
|
|
4533
|
-
BRANDED_TILE
|
|
4534
|
-
DROPDOWN_OPTION
|
|
4535
|
-
PROMINENT_BUTTON
|
|
4536
|
-
RADIO_OPTION
|
|
4537
|
-
}
|
|
4538
|
-
|
|
4539
|
-
"""
|
|
4540
|
-
Klasyfikacja konkretnego instrumentu w obrębie PaymentMethod (BLIK kod vs bank vs wallet vs card brand). Storefront-facing typing dla per-instrument UI dispatch.
|
|
4541
|
-
"""
|
|
4542
|
-
enum PaymentMethodInstrumentType {
|
|
4543
|
-
BANK
|
|
4544
|
-
BLIK_CODE
|
|
4545
|
-
CARD_BRAND
|
|
4546
|
-
OTHER
|
|
4547
|
-
WALLET
|
|
4868
|
+
unavailableReason: PaymentMethodUnavailableReason
|
|
4548
4869
|
}
|
|
4549
4870
|
|
|
4550
4871
|
"""
|
|
4551
|
-
Category of a payment method
|
|
4872
|
+
Category of a payment method (CARD / BLIK / BANK_TRANSFER / INSTALLMENT / WALLET / CASH_ON_DELIVERY / OTHER). Drives iconography and copy in the payment picker; do not branch on `provider` directly — use this `type` instead.
|
|
4552
4873
|
"""
|
|
4553
4874
|
enum PaymentMethodType {
|
|
4554
4875
|
BANK_TRANSFER
|
|
4555
4876
|
BLIK
|
|
4556
4877
|
CARD
|
|
4557
4878
|
CASH_ON_DELIVERY
|
|
4879
|
+
INSTALLMENT
|
|
4558
4880
|
OTHER
|
|
4881
|
+
WALLET
|
|
4559
4882
|
}
|
|
4560
4883
|
|
|
4561
4884
|
"""
|
|
@@ -4568,6 +4891,20 @@ enum PaymentMethodUnavailableReason {
|
|
|
4568
4891
|
NO_INSTRUMENTS
|
|
4569
4892
|
}
|
|
4570
4893
|
|
|
4894
|
+
"""
|
|
4895
|
+
Canonical payment provider identifier (UPPERCASE per GraphQL convention). Used for `Order.paymentProvider`, `Payment.provider`, `PaymentMethod.provider`, `PaymentMethod.providersAvailable`, `PaymentMethod.preferredProvider` and `CartSelectPaymentMethodInput.preferredProvider`. The set of gateways a shop can use is configurable — the values listed here are the providers the platform currently supports.
|
|
4896
|
+
"""
|
|
4897
|
+
enum PaymentProvider {
|
|
4898
|
+
BANK_TRANSFER
|
|
4899
|
+
CASH_ON_DELIVERY
|
|
4900
|
+
GIFT_CARD
|
|
4901
|
+
MANUAL_PAYMENT
|
|
4902
|
+
PAYU
|
|
4903
|
+
PRZELEWY24
|
|
4904
|
+
STRIPE
|
|
4905
|
+
TEST_GATEWAY
|
|
4906
|
+
}
|
|
4907
|
+
|
|
4571
4908
|
"""
|
|
4572
4909
|
Payment session created for an order. Branch on `flow` to launch payment: ONLINE_REDIRECT → redirect to `redirectUrl`; ONLINE_EMBEDDED → render an in-page widget using `clientSecret`; INSTANT_DIRECT → the payment is already settled, check `status`.
|
|
4573
4910
|
"""
|
|
@@ -4611,17 +4948,19 @@ type PaymentSession {
|
|
|
4611
4948
|
|
|
4612
4949
|
"""Shop payment configuration (currency, country, providers)"""
|
|
4613
4950
|
type PaymentSettings {
|
|
4614
|
-
"""
|
|
4951
|
+
"""Shop country code — drives payment method availability"""
|
|
4615
4952
|
countryCode: CountryCode!
|
|
4616
4953
|
|
|
4617
|
-
"""Primary currency
|
|
4954
|
+
"""Primary currency used to process payments"""
|
|
4618
4955
|
currencyCode: CurrencyCode!
|
|
4619
4956
|
|
|
4620
|
-
"""
|
|
4957
|
+
"""
|
|
4958
|
+
Currencies displayable on the storefront (Money.currencyCode allowlist)
|
|
4959
|
+
"""
|
|
4621
4960
|
enabledPresentmentCurrencies: [CurrencyCode!]!
|
|
4622
4961
|
|
|
4623
4962
|
"""
|
|
4624
|
-
|
|
4963
|
+
Codes of the payment providers active for this shop. E.g. ["payu", "cash_on_delivery"]. Use to conditionally render the checkout UI.
|
|
4625
4964
|
"""
|
|
4626
4965
|
paymentProviders: [String!]!
|
|
4627
4966
|
}
|
|
@@ -4785,23 +5124,28 @@ type Product implements Node {
|
|
|
4785
5124
|
"""
|
|
4786
5125
|
Customer-facing product attributes (configurator) — set definitions + per-product scoped
|
|
4787
5126
|
"""
|
|
4788
|
-
attributes(
|
|
5127
|
+
attributes(
|
|
5128
|
+
"""
|
|
5129
|
+
Optional filter — pass `{ fillingMode: CUSTOMER }` to return only buyer-fillable configurator fields
|
|
5130
|
+
"""
|
|
5131
|
+
filter: ProductAttributeFilterInput
|
|
5132
|
+
): [ProductAttributeDefinition!]!
|
|
4789
5133
|
|
|
4790
5134
|
"""Average rating (1-5)"""
|
|
4791
5135
|
averageRating: Float
|
|
4792
5136
|
|
|
4793
5137
|
"""
|
|
4794
|
-
Canonical brand entity
|
|
5138
|
+
Canonical brand entity. Resolved via DataLoader (N+1 safe for list queries). Null when the product has no assigned brand.
|
|
4795
5139
|
"""
|
|
4796
5140
|
brand: Brand
|
|
4797
5141
|
|
|
4798
5142
|
"""
|
|
4799
|
-
|
|
5143
|
+
All categories the product belongs to (M2M via the ProductCategory junction). Sorted by junction.sortOrder ASC. Empty list when the product is in no category.
|
|
4800
5144
|
"""
|
|
4801
5145
|
categories: [Category!]!
|
|
4802
5146
|
|
|
4803
5147
|
"""
|
|
4804
|
-
Compare-at price range (Money pair). Null
|
|
5148
|
+
Compare-at price range (Money pair). Null when no variant has a compareAtPrice.
|
|
4805
5149
|
"""
|
|
4806
5150
|
compareAtPriceRange: ProductPriceRange
|
|
4807
5151
|
|
|
@@ -4827,7 +5171,25 @@ type Product implements Node {
|
|
|
4827
5171
|
id: ID!
|
|
4828
5172
|
|
|
4829
5173
|
"""Product images (Relay Connection)"""
|
|
4830
|
-
images(
|
|
5174
|
+
images(
|
|
5175
|
+
"""
|
|
5176
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
5177
|
+
"""
|
|
5178
|
+
after: String
|
|
5179
|
+
|
|
5180
|
+
"""
|
|
5181
|
+
Cursor for backward pagination (cursor of the first edge from the next page)
|
|
5182
|
+
"""
|
|
5183
|
+
before: String
|
|
5184
|
+
|
|
5185
|
+
"""
|
|
5186
|
+
Number of images to return from the start (forward pagination, default 10, max 100)
|
|
5187
|
+
"""
|
|
5188
|
+
first: Float
|
|
5189
|
+
|
|
5190
|
+
"""Number of images to return from the end (backward pagination, max 100)"""
|
|
5191
|
+
last: Float
|
|
5192
|
+
): ImageConnection!
|
|
4831
5193
|
|
|
4832
5194
|
"""Whether product is available for sale (any variant in stock)"""
|
|
4833
5195
|
isAvailable: Boolean!
|
|
@@ -4846,17 +5208,20 @@ type Product implements Node {
|
|
|
4846
5208
|
priceRange: ProductPriceRange!
|
|
4847
5209
|
|
|
4848
5210
|
"""
|
|
4849
|
-
Opt-in: price range with full conversion transparency (exchangeRate, baseCurrency, isConverted). Use
|
|
5211
|
+
Opt-in: price range with full conversion transparency (exchangeRate, baseCurrency, isConverted). Use for a currency-converter UI when the customer has a preferred currency different from the shop base.
|
|
4850
5212
|
"""
|
|
4851
5213
|
priceRangeWithConversion: ConvertedPriceRange
|
|
4852
5214
|
|
|
4853
5215
|
"""
|
|
4854
|
-
|
|
5216
|
+
Default category for breadcrumb/nav (= categories[0] by sortOrder). Null when the product is in no category.
|
|
4855
5217
|
"""
|
|
4856
5218
|
primaryCategory: Category
|
|
4857
5219
|
|
|
4858
5220
|
"""Similar products recommendations"""
|
|
4859
|
-
recommendations(
|
|
5221
|
+
recommendations(
|
|
5222
|
+
"""Number of similar products to return (default 4, max 100)"""
|
|
5223
|
+
first: Int = 4
|
|
5224
|
+
): ProductRecommendations
|
|
4860
5225
|
|
|
4861
5226
|
"""Number of reviews"""
|
|
4862
5227
|
reviewCount: Int
|
|
@@ -4882,14 +5247,34 @@ type Product implements Node {
|
|
|
4882
5247
|
updatedAt: DateTime!
|
|
4883
5248
|
|
|
4884
5249
|
"""Product variants (Relay Connection)"""
|
|
4885
|
-
variants(
|
|
5250
|
+
variants(
|
|
5251
|
+
"""
|
|
5252
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
5253
|
+
"""
|
|
5254
|
+
after: String
|
|
5255
|
+
|
|
5256
|
+
"""
|
|
5257
|
+
Cursor for backward pagination (cursor of the first edge from the next page)
|
|
5258
|
+
"""
|
|
5259
|
+
before: String
|
|
5260
|
+
|
|
5261
|
+
"""
|
|
5262
|
+
Number of variants to return from the start (forward pagination, max 100)
|
|
5263
|
+
"""
|
|
5264
|
+
first: Float
|
|
5265
|
+
|
|
5266
|
+
"""
|
|
5267
|
+
Number of variants to return from the end (backward pagination, max 100)
|
|
5268
|
+
"""
|
|
5269
|
+
last: Float
|
|
5270
|
+
): ProductVariantConnection!
|
|
4886
5271
|
|
|
4887
5272
|
"""
|
|
4888
|
-
Legacy vendor/brand name (free-text). Preferred: `brand` field (canonical Brand entity
|
|
5273
|
+
Legacy vendor/brand name (free-text). Preferred: `brand` field (canonical Brand entity).
|
|
4889
5274
|
"""
|
|
4890
5275
|
vendor: String
|
|
4891
5276
|
|
|
4892
|
-
"""Catalog visibility
|
|
5277
|
+
"""Catalog visibility — PUBLIC | HIDDEN | BUNDLE_ONLY"""
|
|
4893
5278
|
visibility: ProductVisibility!
|
|
4894
5279
|
}
|
|
4895
5280
|
|
|
@@ -4966,12 +5351,12 @@ type ProductAttributeOption {
|
|
|
4966
5351
|
label: String!
|
|
4967
5352
|
|
|
4968
5353
|
"""
|
|
4969
|
-
Summary
|
|
5354
|
+
Summary of the linked ProductVariant. Null when the option has no linkedVariantId or the variant was deleted.
|
|
4970
5355
|
"""
|
|
4971
5356
|
linkedVariant: LinkedVariantSummary
|
|
4972
5357
|
|
|
4973
5358
|
"""
|
|
4974
|
-
Linked ProductVariant ID for component stock decrement (
|
|
5359
|
+
Linked ProductVariant ID for component stock decrement (hidden-products pattern).
|
|
4975
5360
|
"""
|
|
4976
5361
|
linkedVariantId: ID
|
|
4977
5362
|
|
|
@@ -4979,11 +5364,11 @@ type ProductAttributeOption {
|
|
|
4979
5364
|
sortOrder: Int!
|
|
4980
5365
|
|
|
4981
5366
|
"""
|
|
4982
|
-
Surcharge amount when selected (FIXED =
|
|
5367
|
+
Surcharge amount when selected (FIXED = minor currency units; PERCENT = thousandths of percent).
|
|
4983
5368
|
"""
|
|
4984
5369
|
surchargeAmount: Int
|
|
4985
5370
|
|
|
4986
|
-
"""Surcharge type — FIXED | PERCENT
|
|
5371
|
+
"""Surcharge type — FIXED | PERCENT."""
|
|
4987
5372
|
surchargeType: AttributeOptionSurchargeType
|
|
4988
5373
|
|
|
4989
5374
|
"""Internal value (slug-style)"""
|
|
@@ -5022,7 +5407,7 @@ type ProductEdge {
|
|
|
5022
5407
|
"""Single product filter"""
|
|
5023
5408
|
input ProductFilter {
|
|
5024
5409
|
"""
|
|
5025
|
-
DoSwiftly: dynamic attribute filters (configurator + custom fields system). Optional `namespace`
|
|
5410
|
+
DoSwiftly: dynamic attribute filters (configurator + custom fields system). Optional `namespace` in AttributeFilterInput discriminates per attribute group.
|
|
5026
5411
|
"""
|
|
5027
5412
|
attributes: [AttributeFilterInput!]
|
|
5028
5413
|
|
|
@@ -5030,7 +5415,7 @@ input ProductFilter {
|
|
|
5030
5415
|
available: Boolean
|
|
5031
5416
|
|
|
5032
5417
|
"""
|
|
5033
|
-
|
|
5418
|
+
Filter by canonical Brand entity. Choose by `slug` (URL-stable) or `id` (raw UUID). Multiple `brand` entries in the `filters[]` array = OR semantics. Vendor (legacy free-text) is still supported via `productVendor`.
|
|
5034
5419
|
"""
|
|
5035
5420
|
brand: BrandFilter
|
|
5036
5421
|
|
|
@@ -5156,8 +5541,10 @@ type ProductReview {
|
|
|
5156
5541
|
helpfulCount: Int!
|
|
5157
5542
|
id: ID!
|
|
5158
5543
|
|
|
5159
|
-
"""
|
|
5160
|
-
images:
|
|
5544
|
+
"""
|
|
5545
|
+
Review image attachments uploaded by the reviewer. Use `images { url(transform: { maxWidth: 600 }) altText }` for responsive gallery rendering in the review card.
|
|
5546
|
+
"""
|
|
5547
|
+
images: [Image!]!
|
|
5161
5548
|
|
|
5162
5549
|
"""Is verified purchase"""
|
|
5163
5550
|
isVerifiedPurchase: Boolean!
|
|
@@ -5224,7 +5611,12 @@ A purchasable unit of a product — one variant out of the product variants list
|
|
|
5224
5611
|
"""
|
|
5225
5612
|
type ProductVariant {
|
|
5226
5613
|
"""Variant custom field values (post-Opcja A unified custom fields)."""
|
|
5227
|
-
attributes(
|
|
5614
|
+
attributes(
|
|
5615
|
+
"""
|
|
5616
|
+
Optional namespace filter (e.g. "erp", "b2b") to return only attributes with matching prefix
|
|
5617
|
+
"""
|
|
5618
|
+
namespace: String
|
|
5619
|
+
): [EntityAttributeField!]!
|
|
5228
5620
|
|
|
5229
5621
|
"""
|
|
5230
5622
|
Available stock — what the buyer can buy now (on-hand minus active reservations, never below 0). Null when the merchant has disabled stock tracking for this variant (e.g. digital, made-to-order).
|
|
@@ -5285,7 +5677,7 @@ type ProductVariant {
|
|
|
5285
5677
|
sortOrder: Int
|
|
5286
5678
|
|
|
5287
5679
|
"""
|
|
5288
|
-
Per-location stock availability. Null for single-location shops. Resolved
|
|
5680
|
+
Per-location stock availability. Null for single-location shops. Resolved per-location with `near`, `locationType`, and `@inContext(preferredLocationId)` support.
|
|
5289
5681
|
"""
|
|
5290
5682
|
storeAvailability(
|
|
5291
5683
|
"""Cursor for pagination"""
|
|
@@ -5336,35 +5728,26 @@ type ProductVariantEdge {
|
|
|
5336
5728
|
node: ProductVariant!
|
|
5337
5729
|
}
|
|
5338
5730
|
|
|
5339
|
-
"""Catalog placement — PUBLIC | HIDDEN | BUNDLE_ONLY
|
|
5731
|
+
"""Catalog placement — PUBLIC | HIDDEN | BUNDLE_ONLY"""
|
|
5340
5732
|
enum ProductVisibility {
|
|
5341
5733
|
BUNDLE_ONLY
|
|
5342
5734
|
HIDDEN
|
|
5343
5735
|
PUBLIC
|
|
5344
5736
|
}
|
|
5345
5737
|
|
|
5346
|
-
"""
|
|
5347
|
-
Canonical payment provider identifier (UPPERCASE per GraphQL convention). Use for `Order.paymentMethod`, `Payment.provider`, `PaymentMethod.providersAvailable`, `PaymentMethod.preferredProvider`. Add new providers in `@doswiftly/commerce-policy/provider-codes.ts` SSOT registry.
|
|
5348
|
-
"""
|
|
5349
|
-
enum ProviderCode {
|
|
5350
|
-
BANK_TRANSFER
|
|
5351
|
-
CASH_ON_DELIVERY
|
|
5352
|
-
GIFT_CARD
|
|
5353
|
-
MANUAL_PAYMENT
|
|
5354
|
-
PAYU
|
|
5355
|
-
PRZELEWY24
|
|
5356
|
-
STRIPE
|
|
5357
|
-
TEST_GATEWAY
|
|
5358
|
-
}
|
|
5359
|
-
|
|
5360
5738
|
type Query {
|
|
5361
5739
|
"""List of all currencies supported by the system (ECB rates)"""
|
|
5362
5740
|
allSupportedCurrencies: [Currency!]!
|
|
5363
5741
|
|
|
5364
5742
|
"""
|
|
5365
|
-
Paginated + searchable attribute options
|
|
5743
|
+
Paginated + searchable attribute options for a drill-into filter UI (e.g. a dropdown of 800 licenses + search input). Honors product context with exclude-self per attribute. Sort: COUNT_DESC default (most popular first), LABEL_ASC for alphabetical (Polish collation).
|
|
5366
5744
|
"""
|
|
5367
|
-
attributeOptionsSearch(
|
|
5745
|
+
attributeOptionsSearch(
|
|
5746
|
+
"""
|
|
5747
|
+
Search payload (handle, search query, pagination, sort COUNT_DESC/LABEL_ASC, optional product context)
|
|
5748
|
+
"""
|
|
5749
|
+
input: AttributeOptionsSearchInput!
|
|
5750
|
+
): AttributeFilterValueConnection!
|
|
5368
5751
|
|
|
5369
5752
|
"""
|
|
5370
5753
|
Payment methods active for the current shop, plus the merchant default. Returns one row per `PaymentMethodType` (BLIK, CARD, BANK_TRANSFER, ...) with `providersAvailable` (provider codes sorted by merchant priority) and `preferredProvider` (the head of the list). Shop-level — independent of cart contents.
|
|
@@ -5374,13 +5757,41 @@ type Query {
|
|
|
5374
5757
|
"""
|
|
5375
5758
|
Standalone shipping-method preview for an address — does not require a cart. Pass an optional `cart` summary (subtotal, weight, currency) to evaluate price-based / weight-based rules and free-shipping thresholds. For an already-created cart, prefer `cart.availableShippingMethods(address)` — it reads the cart contents directly.
|
|
5376
5759
|
"""
|
|
5377
|
-
availableShippingMethods(
|
|
5760
|
+
availableShippingMethods(
|
|
5761
|
+
"""Delivery address used to match shipping zones"""
|
|
5762
|
+
address: ShippingAddressInput!
|
|
5763
|
+
|
|
5764
|
+
"""
|
|
5765
|
+
Optional cart summary (subtotal, weight, currency) for price/weight rules
|
|
5766
|
+
"""
|
|
5767
|
+
cart: CartShippingInput
|
|
5768
|
+
): AvailableShippingMethodsPayload!
|
|
5378
5769
|
|
|
5379
5770
|
"""Get live shipping rates from configured carriers"""
|
|
5380
|
-
availableShippingRates(
|
|
5771
|
+
availableShippingRates(
|
|
5772
|
+
"""Recipient address sent to carrier APIs for rate quotes"""
|
|
5773
|
+
address: ShippingAddressInput!
|
|
5774
|
+
|
|
5775
|
+
"""
|
|
5776
|
+
Package dimensions (weight + length/width/height) for accurate rate calculation
|
|
5777
|
+
"""
|
|
5778
|
+
packages: [PackageDimensionsInput!]
|
|
5779
|
+
|
|
5780
|
+
"""Total cart weight in kilograms (fallback when packages omitted)"""
|
|
5781
|
+
totalWeight: Float
|
|
5782
|
+
): AvailableShippingRatesPayload!
|
|
5381
5783
|
|
|
5382
5784
|
"""Get B2B pricing for a product variant"""
|
|
5383
|
-
b2bPricing(
|
|
5785
|
+
b2bPricing(
|
|
5786
|
+
"""Quantity for volume tier evaluation (default 1)"""
|
|
5787
|
+
quantity: Float = 1
|
|
5788
|
+
|
|
5789
|
+
"""Retail price in minor units (e.g. 9999 = 99.99 PLN)"""
|
|
5790
|
+
retailPrice: Float!
|
|
5791
|
+
|
|
5792
|
+
"""Product variant UUID to price"""
|
|
5793
|
+
variantId: ID!
|
|
5794
|
+
): B2BPriceDisplay
|
|
5384
5795
|
|
|
5385
5796
|
"""List blog categories"""
|
|
5386
5797
|
blogCategories: [BlogCategory!]!
|
|
@@ -5422,20 +5833,32 @@ type Query {
|
|
|
5422
5833
|
): BlogPostConnection!
|
|
5423
5834
|
|
|
5424
5835
|
"""List blog tags"""
|
|
5425
|
-
blogTags(
|
|
5836
|
+
blogTags(
|
|
5837
|
+
"""Maximum number of tags to return (default 50, max 200)"""
|
|
5838
|
+
limit: Int = 50
|
|
5839
|
+
): [BlogTag!]!
|
|
5426
5840
|
|
|
5427
5841
|
"""
|
|
5428
5842
|
Fetch a cart by ID — returns null when the cart does not exist or has already been completed (converted to an order). Use to hydrate the cart state on page load or after a recovery flow.
|
|
5429
5843
|
"""
|
|
5430
|
-
cart(
|
|
5844
|
+
cart(
|
|
5845
|
+
"""Cart UUID to fetch"""
|
|
5846
|
+
id: ID!
|
|
5847
|
+
): Cart
|
|
5431
5848
|
|
|
5432
5849
|
"""
|
|
5433
5850
|
Preview whether a discount code is currently applicable to a cart — read-only, no cart side effects. Use for inline feedback while the buyer types a code, before calling `cartDiscountCodesUpdate`. Result depends on the cart subtotal (minimum-order rules) so do not cache aggressively: prefer `fetchPolicy: "network-only"` or include `cart.subtotal` in the cache key.
|
|
5434
5851
|
"""
|
|
5435
|
-
cartValidateDiscountCode(
|
|
5852
|
+
cartValidateDiscountCode(
|
|
5853
|
+
"""Cart UUID to validate the discount code against"""
|
|
5854
|
+
cartId: ID!
|
|
5855
|
+
|
|
5856
|
+
"""Discount code to preview (case-insensitive)"""
|
|
5857
|
+
discountCode: String!
|
|
5858
|
+
): DiscountValidationResult!
|
|
5436
5859
|
|
|
5437
5860
|
"""
|
|
5438
|
-
|
|
5861
|
+
List of categories (Relay Connection) with optional rootsOnly/parentId filtering
|
|
5439
5862
|
"""
|
|
5440
5863
|
categories(
|
|
5441
5864
|
"""Forward pagination cursor (after this element)"""
|
|
@@ -5451,7 +5874,7 @@ type Query {
|
|
|
5451
5874
|
last: Int
|
|
5452
5875
|
|
|
5453
5876
|
"""
|
|
5454
|
-
Filter by parent category ID —
|
|
5877
|
+
Filter by parent category ID — use `null` semantically for "roots" via the `rootsOnly` flag
|
|
5455
5878
|
"""
|
|
5456
5879
|
parentId: ID
|
|
5457
5880
|
|
|
@@ -5527,11 +5950,16 @@ type Query {
|
|
|
5527
5950
|
"""
|
|
5528
5951
|
Fetch a single order owned by the authenticated customer. Returns null silently when there is no authenticated customer or the order does not belong to them. For guest order access use `orderByToken` instead.
|
|
5529
5952
|
"""
|
|
5530
|
-
customerOrder(
|
|
5953
|
+
customerOrder(
|
|
5954
|
+
"""Order UUID owned by the authenticated customer"""
|
|
5955
|
+
orderId: ID!
|
|
5956
|
+
): Order
|
|
5531
5957
|
|
|
5532
5958
|
"""Estimate points for an order amount"""
|
|
5533
5959
|
estimatePoints(
|
|
5534
|
-
"""
|
|
5960
|
+
"""
|
|
5961
|
+
Order total in major currency units (e.g. 99.99 PLN) to estimate earned points for
|
|
5962
|
+
"""
|
|
5535
5963
|
orderTotal: Float!
|
|
5536
5964
|
): PointsEstimate!
|
|
5537
5965
|
|
|
@@ -5545,19 +5973,30 @@ type Query {
|
|
|
5545
5973
|
): ExchangeRate
|
|
5546
5974
|
|
|
5547
5975
|
"""Get gift card by code (null if not found)"""
|
|
5548
|
-
giftCard(
|
|
5976
|
+
giftCard(
|
|
5977
|
+
"""Gift card code to look up (case-sensitive)"""
|
|
5978
|
+
code: String!
|
|
5979
|
+
): GiftCard
|
|
5549
5980
|
|
|
5550
5981
|
"""Validate gift card for use"""
|
|
5551
|
-
giftCardValidate(
|
|
5982
|
+
giftCardValidate(
|
|
5983
|
+
"""Optional amount in major units to check balance sufficiency"""
|
|
5984
|
+
amount: Float
|
|
5985
|
+
|
|
5986
|
+
"""Gift card code to validate"""
|
|
5987
|
+
code: String!
|
|
5988
|
+
): GiftCardValidatePayload!
|
|
5552
5989
|
|
|
5553
5990
|
"""Get available languages for this shop"""
|
|
5554
5991
|
languages: [Language!]!
|
|
5555
5992
|
|
|
5556
|
-
"""
|
|
5993
|
+
"""
|
|
5994
|
+
Localization context (countries, languages, the customer current country/language)
|
|
5995
|
+
"""
|
|
5557
5996
|
localization: Localization!
|
|
5558
5997
|
|
|
5559
5998
|
"""
|
|
5560
|
-
Fetch a single active location by ID. Returns null when missing, inactive, or owned by another shop (tenant isolation
|
|
5999
|
+
Fetch a single active location by ID. Returns null when missing, inactive, or owned by another shop (tenant isolation enforced server-side).
|
|
5561
6000
|
"""
|
|
5562
6001
|
location(
|
|
5563
6002
|
"""Location UUID"""
|
|
@@ -5597,18 +6036,47 @@ type Query {
|
|
|
5597
6036
|
loyaltyTiers: [LoyaltyTier!]!
|
|
5598
6037
|
|
|
5599
6038
|
"""Get loyalty transaction history"""
|
|
5600
|
-
loyaltyTransactions(
|
|
6039
|
+
loyaltyTransactions(
|
|
6040
|
+
"""
|
|
6041
|
+
Cursor for forward pagination (cursor of the last edge from the previous page)
|
|
6042
|
+
"""
|
|
6043
|
+
after: String
|
|
6044
|
+
|
|
6045
|
+
"""
|
|
6046
|
+
Number of transactions to return from the start (forward pagination, max 100)
|
|
6047
|
+
"""
|
|
6048
|
+
first: Int = 20
|
|
6049
|
+
): LoyaltyTransactionConnection!
|
|
5601
6050
|
|
|
5602
6051
|
"""Get a navigation menu by handle"""
|
|
5603
|
-
menu(
|
|
6052
|
+
menu(
|
|
6053
|
+
"""
|
|
6054
|
+
Navigation menu handle (e.g. "main-menu", "footer") configured in admin
|
|
6055
|
+
"""
|
|
6056
|
+
handle: String!
|
|
6057
|
+
): Menu
|
|
5604
6058
|
|
|
5605
6059
|
"""Universal ID-based lookup (Relay Node spec)"""
|
|
5606
|
-
node(
|
|
6060
|
+
node(
|
|
6061
|
+
"""Global object UUID to fetch"""
|
|
6062
|
+
id: ID!
|
|
6063
|
+
|
|
6064
|
+
"""
|
|
6065
|
+
NodeType discriminator (PRODUCT / COLLECTION / CART / CUSTOMER / ORDER)
|
|
6066
|
+
"""
|
|
6067
|
+
type: NodeType!
|
|
6068
|
+
): Node
|
|
5607
6069
|
|
|
5608
6070
|
"""
|
|
5609
|
-
Batch ID-based lookup; same NodeType
|
|
6071
|
+
Batch ID-based lookup; same NodeType for all IDs. Missing/wrong IDs → null entries (preserved length).
|
|
5610
6072
|
"""
|
|
5611
|
-
nodes(
|
|
6073
|
+
nodes(
|
|
6074
|
+
"""List of UUIDs to fetch (all must be the same NodeType)"""
|
|
6075
|
+
ids: [ID!]!
|
|
6076
|
+
|
|
6077
|
+
"""NodeType discriminator applied to every id in the batch"""
|
|
6078
|
+
type: NodeType!
|
|
6079
|
+
): [Node]!
|
|
5612
6080
|
|
|
5613
6081
|
"""
|
|
5614
6082
|
Fetch a single order by its opaque access token (guest order access without a session). Optional `email` argument enables defense-in-depth: if provided, must match the order buyer email (case-insensitive); on mismatch the query returns null exactly like an invalid token. Rate-limited to 5 requests per minute per IP+shop. Response carries Cache-Control: no-store.
|
|
@@ -5651,7 +6119,10 @@ type Query {
|
|
|
5651
6119
|
): ShopPageConnection!
|
|
5652
6120
|
|
|
5653
6121
|
"""Get personalized product recommendations for the current customer"""
|
|
5654
|
-
personalizedRecommendations(
|
|
6122
|
+
personalizedRecommendations(
|
|
6123
|
+
"""Number of recommendations to return (default 10, max 100)"""
|
|
6124
|
+
first: Int = 10
|
|
6125
|
+
): ProductRecommendations!
|
|
5655
6126
|
|
|
5656
6127
|
"""Get single product by ID or handle"""
|
|
5657
6128
|
product(
|
|
@@ -5665,7 +6136,12 @@ type Query {
|
|
|
5665
6136
|
"""
|
|
5666
6137
|
Get available filters for product listing (renamed from availableFilters in Storefront 5.0)
|
|
5667
6138
|
"""
|
|
5668
|
-
productFilters(
|
|
6139
|
+
productFilters(
|
|
6140
|
+
"""
|
|
6141
|
+
Product context (collectionId/categoryId/searchQuery) + currently applied filters for exclude-self facet counts
|
|
6142
|
+
"""
|
|
6143
|
+
input: AvailableFiltersInput
|
|
6144
|
+
): AvailableFilters!
|
|
5669
6145
|
|
|
5670
6146
|
"""Get recommended products similar to the given product"""
|
|
5671
6147
|
productRecommendations(
|
|
@@ -5715,16 +6191,25 @@ type Query {
|
|
|
5715
6191
|
referralStats: ReferralStats
|
|
5716
6192
|
|
|
5717
6193
|
"""Get return by ID"""
|
|
5718
|
-
return(
|
|
6194
|
+
return(
|
|
6195
|
+
"""Return UUID to fetch (customer-owned, ownership verified)"""
|
|
6196
|
+
id: ID!
|
|
6197
|
+
): ReturnPayload!
|
|
5719
6198
|
|
|
5720
6199
|
"""Get available return reasons"""
|
|
5721
6200
|
returnReasons: [ReturnReasonOption!]!
|
|
5722
6201
|
|
|
5723
6202
|
"""Get returns for an order"""
|
|
5724
|
-
returnsByOrder(
|
|
6203
|
+
returnsByOrder(
|
|
6204
|
+
"""Order UUID to list returns for (ownership verified)"""
|
|
6205
|
+
orderId: ID!
|
|
6206
|
+
): ReturnConnection!
|
|
5725
6207
|
|
|
5726
6208
|
"""Get product review statistics"""
|
|
5727
|
-
reviewStats(
|
|
6209
|
+
reviewStats(
|
|
6210
|
+
"""Product UUID to fetch review statistics for"""
|
|
6211
|
+
productId: ID!
|
|
6212
|
+
): ReviewStats!
|
|
5728
6213
|
|
|
5729
6214
|
"""Search products (DoSwiftly alias for products() with required query)"""
|
|
5730
6215
|
searchProducts(
|
|
@@ -5759,10 +6244,16 @@ type Query {
|
|
|
5759
6244
|
): PredictiveSearchResult!
|
|
5760
6245
|
|
|
5761
6246
|
"""Get shipment by ID"""
|
|
5762
|
-
shipment(
|
|
6247
|
+
shipment(
|
|
6248
|
+
"""Shipment UUID (customer must own parent order)"""
|
|
6249
|
+
id: ID!
|
|
6250
|
+
): ShipmentPayload!
|
|
5763
6251
|
|
|
5764
6252
|
"""Get shipment by tracking number"""
|
|
5765
|
-
shipmentByTrackingNumber(
|
|
6253
|
+
shipmentByTrackingNumber(
|
|
6254
|
+
"""Carrier tracking number (public lookup, no auth required)"""
|
|
6255
|
+
trackingNumber: String!
|
|
6256
|
+
): ShipmentPayload!
|
|
5766
6257
|
|
|
5767
6258
|
"""Get current shop information"""
|
|
5768
6259
|
shop: Shop!
|
|
@@ -5771,7 +6262,12 @@ type Query {
|
|
|
5771
6262
|
shopCurrencyConfig: ShopCurrencyConfig!
|
|
5772
6263
|
|
|
5773
6264
|
"""Get translations for a language"""
|
|
5774
|
-
translations(
|
|
6265
|
+
translations(
|
|
6266
|
+
"""
|
|
6267
|
+
Translation request (language code, optional namespaces filter) — falls back to shop default language
|
|
6268
|
+
"""
|
|
6269
|
+
input: TranslationsInput!
|
|
6270
|
+
): Translations!
|
|
5775
6271
|
|
|
5776
6272
|
"""List URL redirects"""
|
|
5777
6273
|
urlRedirects(
|
|
@@ -5991,8 +6487,10 @@ type ReturnItem {
|
|
|
5991
6487
|
"""Item ID"""
|
|
5992
6488
|
id: ID!
|
|
5993
6489
|
|
|
5994
|
-
"""
|
|
5995
|
-
|
|
6490
|
+
"""
|
|
6491
|
+
Product image at time of return submission. Use `image { url(transform: { maxWidth: ... }) altText }` for responsive thumbnails in the merchant return dashboard.
|
|
6492
|
+
"""
|
|
6493
|
+
image: Image
|
|
5996
6494
|
|
|
5997
6495
|
"""Evidence photos"""
|
|
5998
6496
|
photos: [ReturnItemPhoto!]
|
|
@@ -6299,8 +6797,10 @@ type ShipmentItem {
|
|
|
6299
6797
|
"""Item ID"""
|
|
6300
6798
|
id: ID!
|
|
6301
6799
|
|
|
6302
|
-
"""
|
|
6303
|
-
|
|
6800
|
+
"""
|
|
6801
|
+
Live variant image with snapshot fallback. Use `image { url(transform: { maxWidth: 200, preferredContentType: WEBP }) altText }` for responsive thumbnails. Returns `null` when the variant has been deleted since fulfillment — render a placeholder client-side.
|
|
6802
|
+
"""
|
|
6803
|
+
image: Image
|
|
6304
6804
|
|
|
6305
6805
|
"""Quantity shipped"""
|
|
6306
6806
|
quantity: Int!
|
|
@@ -6398,9 +6898,9 @@ type ShippingCarrier {
|
|
|
6398
6898
|
id: ID
|
|
6399
6899
|
|
|
6400
6900
|
"""
|
|
6401
|
-
|
|
6901
|
+
Carrier logo image. Use `logo { url(transform: { maxWidth: 64 }) altText }` for the method tile in the shipping picker.
|
|
6402
6902
|
"""
|
|
6403
|
-
|
|
6903
|
+
logo: Image
|
|
6404
6904
|
|
|
6405
6905
|
"""Carrier display name (e.g. "InPost", "DPD", "DHL")."""
|
|
6406
6906
|
name: String!
|
|
@@ -6442,7 +6942,7 @@ type Shop {
|
|
|
6442
6942
|
"""Default currency code (ISO 4217)"""
|
|
6443
6943
|
currencyCode: CurrencyCode!
|
|
6444
6944
|
|
|
6445
|
-
"""Customer account URL (login/orders) —
|
|
6945
|
+
"""Customer account URL (login/orders) — derived from primaryDomain"""
|
|
6446
6946
|
customerAccountUrl: URL
|
|
6447
6947
|
|
|
6448
6948
|
"""Default language code (ISO 639-1)"""
|
|
@@ -6464,7 +6964,7 @@ type Shop {
|
|
|
6464
6964
|
logo: Image
|
|
6465
6965
|
|
|
6466
6966
|
"""
|
|
6467
|
-
Money display format
|
|
6967
|
+
Money display format with the `{{amount}}` placeholder, e.g. "{{amount}} zł"
|
|
6468
6968
|
"""
|
|
6469
6969
|
moneyFormat: String!
|
|
6470
6970
|
|
|
@@ -6770,8 +7270,10 @@ type TierBenefit {
|
|
|
6770
7270
|
"""Benefit description"""
|
|
6771
7271
|
description: String
|
|
6772
7272
|
|
|
6773
|
-
"""
|
|
6774
|
-
icon:
|
|
7273
|
+
"""
|
|
7274
|
+
Benefit icon image. Use `icon { url(transform: { maxWidth: 48 }) altText }` for small visual markers on the tier benefits list.
|
|
7275
|
+
"""
|
|
7276
|
+
icon: Image
|
|
6775
7277
|
|
|
6776
7278
|
"""Benefit name"""
|
|
6777
7279
|
name: String!
|
|
@@ -6836,7 +7338,7 @@ URL string per RFC 3986 (e.g. "https://shop.example.com/products/foo").
|
|
|
6836
7338
|
"""
|
|
6837
7339
|
scalar URL
|
|
6838
7340
|
|
|
6839
|
-
"""Measurement system (metric vs imperial) —
|
|
7341
|
+
"""Measurement system (metric vs imperial) — affects display formats"""
|
|
6840
7342
|
enum UnitSystem {
|
|
6841
7343
|
IMPERIAL_SYSTEM
|
|
6842
7344
|
METRIC_SYSTEM
|