@doswiftly/storefront-operations 16.1.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 +3 -3
- package/CHANGELOG.md +880 -0
- package/README.md +10 -7
- package/fragments.graphql +65 -16
- package/llms-full.txt +135 -24
- package/mutations.graphql +24 -2
- package/operations.json +84 -26
- package/package.json +4 -2
- package/schema.graphql +885 -187
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
|
|
|
@@ -880,13 +886,20 @@ type Cart implements Node {
|
|
|
880
886
|
"""
|
|
881
887
|
attributes: [CartAttribute!]!
|
|
882
888
|
|
|
883
|
-
"""
|
|
889
|
+
"""
|
|
890
|
+
Available payment methods for this cart — deduplicated per type, sorted by merchant priority.
|
|
891
|
+
"""
|
|
884
892
|
availablePaymentMethods: [PaymentMethod!]!
|
|
885
893
|
|
|
886
894
|
"""
|
|
887
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.
|
|
888
896
|
"""
|
|
889
|
-
availableShippingMethods(
|
|
897
|
+
availableShippingMethods(
|
|
898
|
+
"""
|
|
899
|
+
Destination address — country (ISO 3166-1 alpha-2), region, postal code and city
|
|
900
|
+
"""
|
|
901
|
+
address: ShippingAddressInput!
|
|
902
|
+
): AvailableShippingMethodsPayload!
|
|
890
903
|
|
|
891
904
|
"""
|
|
892
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).
|
|
@@ -935,7 +948,23 @@ type Cart implements Node {
|
|
|
935
948
|
id: ID!
|
|
936
949
|
|
|
937
950
|
"""Lines in the cart (paginated, Relay Connection)."""
|
|
938
|
-
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!
|
|
939
968
|
|
|
940
969
|
"""
|
|
941
970
|
Buyer-supplied note (e.g. delivery instructions). Free-form, surfaced to the merchant on the order.
|
|
@@ -948,13 +977,21 @@ type Cart implements Node {
|
|
|
948
977
|
phone: String
|
|
949
978
|
|
|
950
979
|
"""Product recommendations based on cart contents"""
|
|
951
|
-
recommendations(
|
|
980
|
+
recommendations(
|
|
981
|
+
"""Number of cart-based recommendations per bucket (default 4, max 100)"""
|
|
982
|
+
first: Int = 4
|
|
983
|
+
): CartRecommendations
|
|
952
984
|
|
|
953
985
|
"""
|
|
954
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.
|
|
955
987
|
"""
|
|
956
988
|
requiresShipping: Boolean!
|
|
957
989
|
|
|
990
|
+
"""
|
|
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 }`.
|
|
992
|
+
"""
|
|
993
|
+
selectedPaymentInstrument: String
|
|
994
|
+
|
|
958
995
|
"""
|
|
959
996
|
The payment method currently selected on the cart. Null until the buyer picks a method via `cartSelectPaymentMethod`.
|
|
960
997
|
"""
|
|
@@ -982,6 +1019,11 @@ type Cart implements Node {
|
|
|
982
1019
|
|
|
983
1020
|
"""When the cart was last modified (ISO 8601)."""
|
|
984
1021
|
updatedAt: DateTime!
|
|
1022
|
+
|
|
1023
|
+
"""
|
|
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.
|
|
1025
|
+
"""
|
|
1026
|
+
warnings: [CartWarning!]!
|
|
985
1027
|
}
|
|
986
1028
|
|
|
987
1029
|
"""Result of `cartAddLines`."""
|
|
@@ -1171,6 +1213,30 @@ input CartBuyerIdentityInput {
|
|
|
1171
1213
|
phone: String
|
|
1172
1214
|
}
|
|
1173
1215
|
|
|
1216
|
+
"""
|
|
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.
|
|
1218
|
+
"""
|
|
1219
|
+
input CartClearPaymentSelectionInput {
|
|
1220
|
+
"""ID of the cart to clear payment selection on."""
|
|
1221
|
+
cartId: ID!
|
|
1222
|
+
}
|
|
1223
|
+
|
|
1224
|
+
"""
|
|
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).
|
|
1226
|
+
"""
|
|
1227
|
+
type CartClearPaymentSelectionPayload {
|
|
1228
|
+
"""The updated cart with cleared payment selection."""
|
|
1229
|
+
cart: Cart
|
|
1230
|
+
|
|
1231
|
+
"""
|
|
1232
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `ALREADY_COMPLETED`).
|
|
1233
|
+
"""
|
|
1234
|
+
userErrors: [UserError!]!
|
|
1235
|
+
|
|
1236
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1237
|
+
warnings: [CartWarning!]!
|
|
1238
|
+
}
|
|
1239
|
+
|
|
1174
1240
|
"""Input for `cartComplete` — finalises the cart into an `Order`."""
|
|
1175
1241
|
input CartCompleteInput {
|
|
1176
1242
|
"""ID of the cart to complete."""
|
|
@@ -1551,15 +1617,27 @@ type CartRemoveLinesPayload {
|
|
|
1551
1617
|
warnings: [CartWarning!]!
|
|
1552
1618
|
}
|
|
1553
1619
|
|
|
1554
|
-
"""
|
|
1620
|
+
"""
|
|
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).
|
|
1622
|
+
"""
|
|
1555
1623
|
input CartSelectPaymentMethodInput {
|
|
1556
1624
|
"""ID of the cart to update."""
|
|
1557
1625
|
cartId: ID!
|
|
1558
1626
|
|
|
1559
1627
|
"""
|
|
1560
|
-
|
|
1628
|
+
Category of the payment method the buyer picked (matches `PaymentMethod.type` from `availablePaymentMethods`).
|
|
1629
|
+
"""
|
|
1630
|
+
methodType: PaymentMethodType!
|
|
1631
|
+
|
|
1632
|
+
"""
|
|
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.
|
|
1561
1634
|
"""
|
|
1562
|
-
|
|
1635
|
+
preferredInstrument: String
|
|
1636
|
+
|
|
1637
|
+
"""
|
|
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.
|
|
1639
|
+
"""
|
|
1640
|
+
preferredProvider: PaymentProvider
|
|
1563
1641
|
}
|
|
1564
1642
|
|
|
1565
1643
|
"""Result of `cartSelectPaymentMethod`."""
|
|
@@ -1807,6 +1885,7 @@ enum CartWarningCode {
|
|
|
1807
1885
|
MERCHANDISE_NOT_AVAILABLE
|
|
1808
1886
|
MERCHANDISE_NOT_ENOUGH_STOCK
|
|
1809
1887
|
PAYMENTS_AMOUNT_REGION_MISMATCH
|
|
1888
|
+
PAYMENT_SELECTION_STALE
|
|
1810
1889
|
SHIPPING_METHOD_AUTO_CLEARED
|
|
1811
1890
|
}
|
|
1812
1891
|
|
|
@@ -1845,7 +1924,17 @@ type Category {
|
|
|
1845
1924
|
productCount: Int!
|
|
1846
1925
|
|
|
1847
1926
|
"""Products in category"""
|
|
1848
|
-
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!
|
|
1849
1938
|
|
|
1850
1939
|
"""SEO metadata"""
|
|
1851
1940
|
seo: SEO
|
|
@@ -1926,7 +2015,38 @@ type Collection implements Node {
|
|
|
1926
2015
|
image: Image
|
|
1927
2016
|
|
|
1928
2017
|
"""Products in collection"""
|
|
1929
|
-
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!
|
|
1930
2050
|
|
|
1931
2051
|
"""SEO metadata"""
|
|
1932
2052
|
seo: SEO
|
|
@@ -1988,24 +2108,24 @@ type ConvertedPriceRange {
|
|
|
1988
2108
|
minVariantPrice: PriceMoney!
|
|
1989
2109
|
}
|
|
1990
2110
|
|
|
1991
|
-
"""
|
|
2111
|
+
"""A country supported by the shop (ISO 3166-1 alpha-2)"""
|
|
1992
2112
|
type Country implements Node {
|
|
1993
|
-
"""
|
|
2113
|
+
"""Shop languages available in this country"""
|
|
1994
2114
|
availableLanguages: [Language!]!
|
|
1995
2115
|
|
|
1996
|
-
"""Primary currency
|
|
2116
|
+
"""Primary currency in this country"""
|
|
1997
2117
|
currency: Currency!
|
|
1998
2118
|
|
|
1999
|
-
"""Globally-unique identifier (
|
|
2119
|
+
"""Globally-unique identifier (e.g. "country:PL")"""
|
|
2000
2120
|
id: ID!
|
|
2001
2121
|
|
|
2002
2122
|
"""ISO 3166-1 alpha-2 country code"""
|
|
2003
2123
|
isoCode: CountryCode!
|
|
2004
2124
|
|
|
2005
|
-
"""English name
|
|
2125
|
+
"""English country name (e.g. "Poland", "Germany")"""
|
|
2006
2126
|
name: String!
|
|
2007
2127
|
|
|
2008
|
-
"""
|
|
2128
|
+
"""Measurement system (metric/imperial)"""
|
|
2009
2129
|
unitSystem: UnitSystem!
|
|
2010
2130
|
}
|
|
2011
2131
|
|
|
@@ -2298,10 +2418,35 @@ type Customer implements Node {
|
|
|
2298
2418
|
"""
|
|
2299
2419
|
Saved address book of the customer (Relay Connection). Use to render an address picker on checkout.
|
|
2300
2420
|
"""
|
|
2301
|
-
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!
|
|
2302
2442
|
|
|
2303
2443
|
"""Customer custom field values (post-Opcja A unified custom fields)."""
|
|
2304
|
-
attributes(
|
|
2444
|
+
attributes(
|
|
2445
|
+
"""
|
|
2446
|
+
Optional attribute group filter (e.g. `loyalty`, `b2b`); omit to return all groups
|
|
2447
|
+
"""
|
|
2448
|
+
namespace: String
|
|
2449
|
+
): [EntityAttributeField!]!
|
|
2305
2450
|
|
|
2306
2451
|
"""
|
|
2307
2452
|
Company name. Populated when `customerType` is COMPANY; null for INDIVIDUAL profiles.
|
|
@@ -2354,7 +2499,15 @@ type Customer implements Node {
|
|
|
2354
2499
|
"""
|
|
2355
2500
|
Orders placed by this customer (Relay Connection). Use for the order history page.
|
|
2356
2501
|
"""
|
|
2357
|
-
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!
|
|
2358
2511
|
|
|
2359
2512
|
"""Customer phone number (free-form)."""
|
|
2360
2513
|
phone: String
|
|
@@ -2364,6 +2517,11 @@ type Customer implements Node {
|
|
|
2364
2517
|
"""
|
|
2365
2518
|
regon: String
|
|
2366
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
|
+
|
|
2367
2525
|
"""
|
|
2368
2526
|
Merchant-assigned segmentation tags (e.g. "vip", "wholesale", "b2b"). Use to customise UI / pricing rules on the storefront.
|
|
2369
2527
|
"""
|
|
@@ -2804,7 +2962,7 @@ type Domain {
|
|
|
2804
2962
|
"""Whether HTTPS is enforced"""
|
|
2805
2963
|
isSslEnabled: Boolean!
|
|
2806
2964
|
|
|
2807
|
-
"""Full URL
|
|
2965
|
+
"""Full URL including protocol"""
|
|
2808
2966
|
url: URL!
|
|
2809
2967
|
}
|
|
2810
2968
|
|
|
@@ -3103,7 +3261,12 @@ type Image {
|
|
|
3103
3261
|
"""
|
|
3104
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.
|
|
3105
3263
|
"""
|
|
3106
|
-
url(
|
|
3264
|
+
url(
|
|
3265
|
+
"""
|
|
3266
|
+
Optional CDN transform (maxWidth/maxHeight/crop/scale/preferredContentType WEBP/AVIF)
|
|
3267
|
+
"""
|
|
3268
|
+
transform: ImageTransformInput
|
|
3269
|
+
): String!
|
|
3107
3270
|
|
|
3108
3271
|
"""Native width of the source image in pixels."""
|
|
3109
3272
|
width: Int
|
|
@@ -3217,28 +3380,28 @@ enum LanguageDirection {
|
|
|
3217
3380
|
}
|
|
3218
3381
|
|
|
3219
3382
|
"""
|
|
3220
|
-
Summary of a ProductVariant linked to an AttributeOption (
|
|
3383
|
+
Summary of a ProductVariant linked to an AttributeOption (product configurator).
|
|
3221
3384
|
"""
|
|
3222
3385
|
type LinkedVariantSummary {
|
|
3223
|
-
"""Available stock (stock − active reservations,
|
|
3386
|
+
"""Available stock (stock − active reservations, always ≥ 0)."""
|
|
3224
3387
|
availableStock: Int!
|
|
3225
3388
|
|
|
3226
|
-
"""Variant ID
|
|
3389
|
+
"""Variant ID."""
|
|
3227
3390
|
id: ID!
|
|
3228
3391
|
|
|
3229
|
-
"""
|
|
3392
|
+
"""Whether currently purchasable (accounts for allowBackorder)."""
|
|
3230
3393
|
isAvailable: Boolean!
|
|
3231
3394
|
|
|
3232
3395
|
"""Parent product ID."""
|
|
3233
3396
|
productId: ID!
|
|
3234
3397
|
|
|
3235
|
-
"""SKU
|
|
3398
|
+
"""SKU when defined."""
|
|
3236
3399
|
sku: String
|
|
3237
3400
|
|
|
3238
|
-
"""Variant name (e.g., "
|
|
3401
|
+
"""Variant name (e.g., "Large / Graphite")."""
|
|
3239
3402
|
title: String!
|
|
3240
3403
|
|
|
3241
|
-
"""
|
|
3404
|
+
"""Whether inventory is tracked for this variant."""
|
|
3242
3405
|
trackQuantity: Boolean!
|
|
3243
3406
|
}
|
|
3244
3407
|
|
|
@@ -3251,18 +3414,18 @@ type LocaleCurrencyMapping {
|
|
|
3251
3414
|
locale: String!
|
|
3252
3415
|
}
|
|
3253
3416
|
|
|
3254
|
-
"""Localization context
|
|
3417
|
+
"""Localization context for the storefront"""
|
|
3255
3418
|
type Localization {
|
|
3256
|
-
"""
|
|
3419
|
+
"""All supported countries (from active shipping zones)"""
|
|
3257
3420
|
availableCountries: [Country!]!
|
|
3258
3421
|
|
|
3259
|
-
"""
|
|
3422
|
+
"""All supported shop languages"""
|
|
3260
3423
|
availableLanguages: [Language!]!
|
|
3261
3424
|
|
|
3262
|
-
"""
|
|
3425
|
+
"""The customer current country (from `@inContext` or geo-detection)"""
|
|
3263
3426
|
country: Country!
|
|
3264
3427
|
|
|
3265
|
-
"""
|
|
3428
|
+
"""The customer current language (from `Accept-Language` or `@inContext`)"""
|
|
3266
3429
|
language: Language!
|
|
3267
3430
|
}
|
|
3268
3431
|
|
|
@@ -3836,87 +3999,191 @@ type Mutation {
|
|
|
3836
3999
|
"""
|
|
3837
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).
|
|
3838
4001
|
"""
|
|
3839
|
-
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!
|
|
3840
4011
|
|
|
3841
4012
|
"""
|
|
3842
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).
|
|
3843
4014
|
"""
|
|
3844
|
-
cartApplyGiftCard(
|
|
4015
|
+
cartApplyGiftCard(
|
|
4016
|
+
"""Cart UUID + full gift card code to redeem against the cart"""
|
|
4017
|
+
input: CartApplyGiftCardInput!
|
|
4018
|
+
): CartApplyGiftCardPayload!
|
|
4019
|
+
|
|
4020
|
+
"""
|
|
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`).
|
|
4022
|
+
"""
|
|
4023
|
+
cartClearPaymentSelection(
|
|
4024
|
+
"""
|
|
4025
|
+
Cart UUID to clear all payment selection state (method, provider, instrument)
|
|
4026
|
+
"""
|
|
4027
|
+
input: CartClearPaymentSelectionInput!
|
|
4028
|
+
): CartClearPaymentSelectionPayload!
|
|
3845
4029
|
|
|
3846
4030
|
"""
|
|
3847
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.
|
|
3848
4032
|
"""
|
|
3849
|
-
cartComplete(
|
|
4033
|
+
cartComplete(
|
|
4034
|
+
"""
|
|
4035
|
+
Cart UUID + optional idempotency key to guard against duplicate orders on retry
|
|
4036
|
+
"""
|
|
4037
|
+
input: CartCompleteInput!
|
|
4038
|
+
): CartCompletePayload!
|
|
3850
4039
|
|
|
3851
4040
|
"""
|
|
3852
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.
|
|
3853
4042
|
"""
|
|
3854
|
-
cartCreate(
|
|
4043
|
+
cartCreate(
|
|
4044
|
+
"""
|
|
4045
|
+
Optional initial cart contents — lines, buyer identity, email, address, attributes, discount codes
|
|
4046
|
+
"""
|
|
4047
|
+
input: CartCreateInput
|
|
4048
|
+
): CartCreatePayload!
|
|
3855
4049
|
|
|
3856
4050
|
"""
|
|
3857
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.
|
|
3858
4052
|
"""
|
|
3859
|
-
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!
|
|
3860
4062
|
|
|
3861
4063
|
"""
|
|
3862
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.
|
|
3863
4065
|
"""
|
|
3864
|
-
cartRemoveGiftCard(
|
|
4066
|
+
cartRemoveGiftCard(
|
|
4067
|
+
"""Cart UUID + applied gift card UUID to remove from the cart"""
|
|
4068
|
+
input: CartRemoveGiftCardInput!
|
|
4069
|
+
): CartRemoveGiftCardPayload!
|
|
3865
4070
|
|
|
3866
4071
|
"""
|
|
3867
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.
|
|
3868
4073
|
"""
|
|
3869
|
-
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!
|
|
3870
4081
|
|
|
3871
4082
|
"""
|
|
3872
|
-
Select a payment method on the cart.
|
|
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`.
|
|
3873
4084
|
"""
|
|
3874
|
-
cartSelectPaymentMethod(
|
|
4085
|
+
cartSelectPaymentMethod(
|
|
4086
|
+
"""
|
|
4087
|
+
Cart UUID + payment method category, with optional provider and instrument overrides
|
|
4088
|
+
"""
|
|
4089
|
+
input: CartSelectPaymentMethodInput!
|
|
4090
|
+
): CartSelectPaymentMethodPayload!
|
|
3875
4091
|
|
|
3876
4092
|
"""
|
|
3877
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.
|
|
3878
4094
|
"""
|
|
3879
|
-
cartSelectShippingMethod(
|
|
4095
|
+
cartSelectShippingMethod(
|
|
4096
|
+
"""Cart UUID + shipping method UUID to select for the cart"""
|
|
4097
|
+
input: CartSelectShippingMethodInput!
|
|
4098
|
+
): CartSelectShippingMethodPayload!
|
|
3880
4099
|
|
|
3881
4100
|
"""
|
|
3882
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).
|
|
3883
4102
|
"""
|
|
3884
|
-
cartSetBillingAddress(
|
|
4103
|
+
cartSetBillingAddress(
|
|
4104
|
+
"""
|
|
4105
|
+
Cart UUID + billing address (pass only when billing differs from shipping)
|
|
4106
|
+
"""
|
|
4107
|
+
input: CartSetBillingAddressInput!
|
|
4108
|
+
): CartSetBillingAddressPayload!
|
|
3885
4109
|
|
|
3886
4110
|
"""
|
|
3887
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.
|
|
3888
4112
|
"""
|
|
3889
|
-
cartSetShippingAddress(
|
|
4113
|
+
cartSetShippingAddress(
|
|
4114
|
+
"""
|
|
4115
|
+
Cart UUID + shipping address (with optional pickup point for parcel locker delivery)
|
|
4116
|
+
"""
|
|
4117
|
+
input: CartSetShippingAddressInput!
|
|
4118
|
+
): CartSetShippingAddressPayload!
|
|
3890
4119
|
|
|
3891
4120
|
"""
|
|
3892
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`.
|
|
3893
4122
|
"""
|
|
3894
|
-
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!
|
|
3895
4132
|
|
|
3896
4133
|
"""
|
|
3897
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.
|
|
3898
4135
|
"""
|
|
3899
|
-
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!
|
|
3900
4145
|
|
|
3901
4146
|
"""
|
|
3902
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.
|
|
3903
4148
|
"""
|
|
3904
|
-
cartUpdateGiftCardRecipient(
|
|
4149
|
+
cartUpdateGiftCardRecipient(
|
|
4150
|
+
"""
|
|
4151
|
+
Cart UUID + gift card line item UUID + recipient details (email, name, message)
|
|
4152
|
+
"""
|
|
4153
|
+
input: CartUpdateGiftCardRecipientInput!
|
|
4154
|
+
): CartUpdateGiftCardRecipientPayload!
|
|
3905
4155
|
|
|
3906
4156
|
"""
|
|
3907
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`.
|
|
3908
4158
|
"""
|
|
3909
|
-
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!
|
|
3910
4168
|
|
|
3911
4169
|
"""
|
|
3912
4170
|
Set or replace the buyer note on the cart (free-form, up to 1000 chars). Surfaced to the merchant on the resulting order.
|
|
3913
4171
|
"""
|
|
3914
|
-
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!
|
|
3915
4181
|
|
|
3916
4182
|
"""
|
|
3917
4183
|
Activate customer account using raw activation token (admin-created flow)
|
|
3918
4184
|
"""
|
|
3919
4185
|
customerActivate(
|
|
4186
|
+
"""New password (must satisfy the shop password policy)"""
|
|
3920
4187
|
password: String!
|
|
3921
4188
|
|
|
3922
4189
|
"""Raw activation token from the activation email"""
|
|
@@ -3924,12 +4191,20 @@ type Mutation {
|
|
|
3924
4191
|
): CustomerActivatePayload!
|
|
3925
4192
|
|
|
3926
4193
|
"""Add customer address"""
|
|
3927
|
-
customerAddAddress(
|
|
4194
|
+
customerAddAddress(
|
|
4195
|
+
"""
|
|
4196
|
+
Address to add to the customer address book (incl. optional B2B `taxId` / `vatNumber`)
|
|
4197
|
+
"""
|
|
4198
|
+
address: MailingAddressInput!
|
|
4199
|
+
): CustomerAddAddressPayload!
|
|
3928
4200
|
|
|
3929
4201
|
"""
|
|
3930
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).
|
|
3931
4203
|
"""
|
|
3932
|
-
customerLogin(
|
|
4204
|
+
customerLogin(
|
|
4205
|
+
"""Login credentials — email + password"""
|
|
4206
|
+
input: CustomerAccessTokenCreateInput!
|
|
4207
|
+
): CustomerLoginPayload!
|
|
3933
4208
|
|
|
3934
4209
|
"""
|
|
3935
4210
|
Sign the current customer out. Invalidates the access token on the server; the SDK BFF auth helpers additionally clear the HTTP-only cookie.
|
|
@@ -3942,13 +4217,22 @@ type Mutation {
|
|
|
3942
4217
|
customerRefreshToken: CustomerRefreshTokenPayload!
|
|
3943
4218
|
|
|
3944
4219
|
"""Remove customer address"""
|
|
3945
|
-
customerRemoveAddress(
|
|
4220
|
+
customerRemoveAddress(
|
|
4221
|
+
"""UUID of the address to remove"""
|
|
4222
|
+
id: ID!
|
|
4223
|
+
): CustomerRemoveAddressPayload!
|
|
3946
4224
|
|
|
3947
4225
|
"""Request password reset email"""
|
|
3948
|
-
customerRequestPasswordReset(
|
|
4226
|
+
customerRequestPasswordReset(
|
|
4227
|
+
"""
|
|
4228
|
+
Customer email (RFC 5322); always returns success to prevent account enumeration
|
|
4229
|
+
"""
|
|
4230
|
+
email: String!
|
|
4231
|
+
): CustomerRequestPasswordResetPayload!
|
|
3949
4232
|
|
|
3950
4233
|
"""Reset customer password via signed URL from email"""
|
|
3951
4234
|
customerResetPassword(
|
|
4235
|
+
"""New password (must satisfy the shop password policy)"""
|
|
3952
4236
|
newPassword: String!
|
|
3953
4237
|
|
|
3954
4238
|
"""Raw password-reset token from the password-reset email"""
|
|
@@ -3956,66 +4240,142 @@ type Mutation {
|
|
|
3956
4240
|
): CustomerResetPasswordPayload!
|
|
3957
4241
|
|
|
3958
4242
|
"""Set default address"""
|
|
3959
|
-
customerSetDefaultAddress(
|
|
4243
|
+
customerSetDefaultAddress(
|
|
4244
|
+
"""
|
|
4245
|
+
UUID of the address to mark as default for shipping and billing pickers
|
|
4246
|
+
"""
|
|
4247
|
+
addressId: ID!
|
|
4248
|
+
): CustomerSetDefaultAddressPayload!
|
|
3960
4249
|
|
|
3961
4250
|
"""
|
|
3962
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.
|
|
3963
4252
|
"""
|
|
3964
|
-
customerSignup(
|
|
4253
|
+
customerSignup(
|
|
4254
|
+
"""
|
|
4255
|
+
New customer registration data — email, password, optional profile and marketing consent
|
|
4256
|
+
"""
|
|
4257
|
+
input: CustomerCreateInput!
|
|
4258
|
+
): CustomerSignupPayload!
|
|
3965
4259
|
|
|
3966
4260
|
"""Subscribe an email to the newsletter (guest-friendly, double opt-in)."""
|
|
3967
|
-
customerSubscribeToMarketing(
|
|
4261
|
+
customerSubscribeToMarketing(
|
|
4262
|
+
"""
|
|
4263
|
+
Newsletter subscribe — email to opt in (double opt-in flow, anti-enumeration)
|
|
4264
|
+
"""
|
|
4265
|
+
input: CustomerSubscribeToMarketingInput!
|
|
4266
|
+
): SubscribeToMarketingPayload!
|
|
3968
4267
|
|
|
3969
4268
|
"""Unsubscribe an email from the newsletter (guest-friendly, idempotent)."""
|
|
3970
|
-
customerUnsubscribeFromMarketing(
|
|
4269
|
+
customerUnsubscribeFromMarketing(
|
|
4270
|
+
"""
|
|
4271
|
+
Newsletter unsubscribe — email to opt out (idempotent, anti-enumeration)
|
|
4272
|
+
"""
|
|
4273
|
+
input: CustomerUnsubscribeFromMarketingInput!
|
|
4274
|
+
): UnsubscribeFromMarketingPayload!
|
|
3971
4275
|
|
|
3972
4276
|
"""Update customer profile"""
|
|
3973
|
-
customerUpdate(
|
|
4277
|
+
customerUpdate(
|
|
4278
|
+
"""
|
|
4279
|
+
Customer profile changes — only supplied fields are touched (strict-hybrid)
|
|
4280
|
+
"""
|
|
4281
|
+
customer: CustomerUpdateInput!
|
|
4282
|
+
): CustomerUpdatePayload!
|
|
3974
4283
|
|
|
3975
4284
|
"""Update customer address"""
|
|
3976
|
-
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!
|
|
3977
4292
|
|
|
3978
4293
|
"""Generate or retrieve referral code"""
|
|
3979
4294
|
loyaltyGenerateReferralCode: GenerateReferralCodePayload!
|
|
3980
4295
|
|
|
3981
4296
|
"""Redeem a loyalty reward"""
|
|
3982
|
-
loyaltyRedeemReward(
|
|
4297
|
+
loyaltyRedeemReward(
|
|
4298
|
+
"""Reward redemption payload (rewardId UUID)"""
|
|
4299
|
+
input: RedeemRewardInput!
|
|
4300
|
+
): RedeemRewardPayload!
|
|
3983
4301
|
|
|
3984
4302
|
"""
|
|
3985
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.
|
|
3986
4304
|
"""
|
|
3987
|
-
paymentCreate(
|
|
4305
|
+
paymentCreate(
|
|
4306
|
+
"""
|
|
4307
|
+
Payment session payload (orderId UUID, optional returnUrl/cancelUrl — open-redirect validated server-side)
|
|
4308
|
+
"""
|
|
4309
|
+
input: PaymentCreateInput!
|
|
4310
|
+
): PaymentCreatePayload!
|
|
3988
4311
|
|
|
3989
4312
|
"""Cancel a return request"""
|
|
3990
|
-
returnCancel(
|
|
4313
|
+
returnCancel(
|
|
4314
|
+
"""Return UUID to cancel (only REQUESTED/APPROVED/DRAFT statuses)"""
|
|
4315
|
+
id: ID!
|
|
4316
|
+
): ReturnCancelPayload!
|
|
3991
4317
|
|
|
3992
4318
|
"""Create a return request"""
|
|
3993
|
-
returnCreate(
|
|
4319
|
+
returnCreate(
|
|
4320
|
+
"""
|
|
4321
|
+
Return request payload (orderId, reason, items[], optional customerNote/compensationType/idempotencyKey)
|
|
4322
|
+
"""
|
|
4323
|
+
input: ReturnCreateInput!
|
|
4324
|
+
): ReturnCreatePayload!
|
|
3994
4325
|
|
|
3995
4326
|
"""Create a product review"""
|
|
3996
|
-
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!
|
|
3997
4333
|
|
|
3998
4334
|
"""
|
|
3999
4335
|
Mark review as not helpful (downvote). Replaces any prior vote by same customer.
|
|
4000
4336
|
"""
|
|
4001
|
-
reviewDownvote(
|
|
4337
|
+
reviewDownvote(
|
|
4338
|
+
"""Review UUID to downvote"""
|
|
4339
|
+
reviewId: ID!
|
|
4340
|
+
): ReviewPayload!
|
|
4002
4341
|
|
|
4003
4342
|
"""
|
|
4004
4343
|
Mark review as helpful (upvote). Replaces any prior vote by same customer.
|
|
4005
4344
|
"""
|
|
4006
|
-
reviewUpvote(
|
|
4345
|
+
reviewUpvote(
|
|
4346
|
+
"""Review UUID to upvote"""
|
|
4347
|
+
reviewId: ID!
|
|
4348
|
+
): ReviewPayload!
|
|
4007
4349
|
|
|
4008
4350
|
"""Add item to wishlist"""
|
|
4009
|
-
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!
|
|
4010
4358
|
|
|
4011
4359
|
"""Create a new wishlist"""
|
|
4012
|
-
wishlistCreate(
|
|
4360
|
+
wishlistCreate(
|
|
4361
|
+
"""Wishlist details (name + isPublic flag for share-by-link visibility)"""
|
|
4362
|
+
input: WishlistCreateInput!
|
|
4363
|
+
): WishlistPayload!
|
|
4013
4364
|
|
|
4014
4365
|
"""Delete a wishlist"""
|
|
4015
|
-
wishlistDelete(
|
|
4366
|
+
wishlistDelete(
|
|
4367
|
+
"""Wishlist UUID to delete (must be owned by the authenticated customer)"""
|
|
4368
|
+
id: ID!
|
|
4369
|
+
): WishlistPayload!
|
|
4016
4370
|
|
|
4017
4371
|
"""Remove item from wishlist"""
|
|
4018
|
-
wishlistRemoveItem(
|
|
4372
|
+
wishlistRemoveItem(
|
|
4373
|
+
"""Wishlist UUID containing the item"""
|
|
4374
|
+
id: ID!
|
|
4375
|
+
|
|
4376
|
+
"""Wishlist item UUID to remove"""
|
|
4377
|
+
itemId: ID!
|
|
4378
|
+
): WishlistPayload!
|
|
4019
4379
|
}
|
|
4020
4380
|
|
|
4021
4381
|
"""GraphQL Node interface — universal ID-based lookup"""
|
|
@@ -4025,7 +4385,7 @@ interface Node {
|
|
|
4025
4385
|
}
|
|
4026
4386
|
|
|
4027
4387
|
"""
|
|
4028
|
-
Type discriminator
|
|
4388
|
+
Type discriminator for node()/nodes() queries (the UUID does not contain a type prefix)
|
|
4029
4389
|
"""
|
|
4030
4390
|
enum NodeType {
|
|
4031
4391
|
ARTICLE
|
|
@@ -4050,7 +4410,12 @@ type Order implements Node {
|
|
|
4050
4410
|
accessToken: String!
|
|
4051
4411
|
|
|
4052
4412
|
"""Order custom field values (post-Opcja A unified custom fields)."""
|
|
4053
|
-
attributes(
|
|
4413
|
+
attributes(
|
|
4414
|
+
"""
|
|
4415
|
+
Optional namespace prefix to filter attributes (e.g. "erp", "b2b", "fulfillment")
|
|
4416
|
+
"""
|
|
4417
|
+
namespace: String
|
|
4418
|
+
): [EntityAttributeField!]!
|
|
4054
4419
|
|
|
4055
4420
|
"""
|
|
4056
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.
|
|
@@ -4086,7 +4451,17 @@ type Order implements Node {
|
|
|
4086
4451
|
"""
|
|
4087
4452
|
Line items on the order (paginated, Relay Connection). Use to render the order summary on the confirmation or order detail page.
|
|
4088
4453
|
"""
|
|
4089
|
-
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!
|
|
4090
4465
|
|
|
4091
4466
|
"""
|
|
4092
4467
|
Human-readable order number shown to the buyer and the merchant (e.g. "1042"). Distinct from `id`.
|
|
@@ -4094,7 +4469,7 @@ type Order implements Node {
|
|
|
4094
4469
|
orderNumber: String!
|
|
4095
4470
|
|
|
4096
4471
|
"""
|
|
4097
|
-
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).
|
|
4098
4473
|
"""
|
|
4099
4474
|
paymentMethodType: PaymentMethodType!
|
|
4100
4475
|
|
|
@@ -4163,39 +4538,39 @@ enum OrderFulfillmentStatus {
|
|
|
4163
4538
|
UNFULFILLED
|
|
4164
4539
|
}
|
|
4165
4540
|
|
|
4166
|
-
"""
|
|
4541
|
+
"""Order line item with variant snapshot and live enrichment"""
|
|
4167
4542
|
type OrderLineItem {
|
|
4168
4543
|
"""Unique identifier"""
|
|
4169
4544
|
id: ID!
|
|
4170
4545
|
|
|
4171
4546
|
"""
|
|
4172
|
-
|
|
4547
|
+
Line total captured at purchase time (unitPrice × quantity, minor units)
|
|
4173
4548
|
"""
|
|
4174
4549
|
originalTotalPrice: Money!
|
|
4175
4550
|
|
|
4176
4551
|
"""
|
|
4177
|
-
|
|
4552
|
+
Unit price captured at purchase time (minor units, includes BUNDLED surcharges)
|
|
4178
4553
|
"""
|
|
4179
4554
|
originalUnitPrice: Money!
|
|
4180
4555
|
|
|
4181
|
-
"""
|
|
4556
|
+
"""Quantity ordered (snapshot from checkout)"""
|
|
4182
4557
|
quantity: Int!
|
|
4183
4558
|
|
|
4184
|
-
"""
|
|
4559
|
+
"""Quantity already fulfilled (shipped — per-item fulfillment tracking)"""
|
|
4185
4560
|
quantityFulfilled: Int!
|
|
4186
4561
|
|
|
4187
4562
|
"""
|
|
4188
|
-
|
|
4563
|
+
Quantity still eligible for return/refund (quantity − returnedQuantity, clamped ≥ 0). Industry-standard semantics for refund tracking.
|
|
4189
4564
|
"""
|
|
4190
4565
|
refundableQuantity: Int!
|
|
4191
4566
|
|
|
4192
4567
|
"""
|
|
4193
|
-
|
|
4568
|
+
Product name captured at purchase time (snapshot). Not the live `Product.name` — preserved even after the product is edited (invoice compliance).
|
|
4194
4569
|
"""
|
|
4195
4570
|
title: String!
|
|
4196
4571
|
|
|
4197
4572
|
"""
|
|
4198
|
-
Live
|
|
4573
|
+
Live product variant (fresh image/price). Null when the variant was deleted after purchase — consumers should fall back to `title`.
|
|
4199
4574
|
"""
|
|
4200
4575
|
variant: ProductVariant
|
|
4201
4576
|
}
|
|
@@ -4212,7 +4587,7 @@ type OrderLineItemConnection {
|
|
|
4212
4587
|
pageInfo: PageInfo!
|
|
4213
4588
|
|
|
4214
4589
|
"""
|
|
4215
|
-
Total count of line items in the order (convention parity
|
|
4590
|
+
Total count of line items in the order (convention parity with OrderConnection/MailingAddressConnection)
|
|
4216
4591
|
"""
|
|
4217
4592
|
totalCount: Int!
|
|
4218
4593
|
}
|
|
@@ -4337,9 +4712,14 @@ type PaymentCreatePayload {
|
|
|
4337
4712
|
payment: PaymentSession
|
|
4338
4713
|
|
|
4339
4714
|
"""
|
|
4340
|
-
Business / validation errors carrying a stable `PaymentErrorCode` in `code` (e.g. `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `PAYMENT_FAILED`).
|
|
4715
|
+
Business / validation errors carrying a stable `PaymentErrorCode` in `code` (e.g. `ORDER_NOT_FOUND`, `ORDER_ALREADY_PAID`, `ORDER_NOT_PAYABLE`, `PAYMENT_PROVIDER_NOT_CONFIGURED`, `RETURN_URL_INVALID`, `PAYMENT_FAILED`, `INSTRUMENT_PRESELECTION_FAILED`).
|
|
4341
4716
|
"""
|
|
4342
4717
|
userErrors: [UserError!]!
|
|
4718
|
+
|
|
4719
|
+
"""
|
|
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.
|
|
4721
|
+
"""
|
|
4722
|
+
warnings: [PaymentWarning!]!
|
|
4343
4723
|
}
|
|
4344
4724
|
|
|
4345
4725
|
"""
|
|
@@ -4352,25 +4732,96 @@ enum PaymentInitiationFlow {
|
|
|
4352
4732
|
ONLINE_REDIRECT
|
|
4353
4733
|
}
|
|
4354
4734
|
|
|
4735
|
+
"""
|
|
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.
|
|
4737
|
+
"""
|
|
4738
|
+
type PaymentInstrument {
|
|
4739
|
+
"""
|
|
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).
|
|
4741
|
+
"""
|
|
4742
|
+
brandImage: Image
|
|
4743
|
+
|
|
4744
|
+
"""
|
|
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.
|
|
4746
|
+
"""
|
|
4747
|
+
code: String!
|
|
4748
|
+
|
|
4749
|
+
"""
|
|
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.
|
|
4751
|
+
"""
|
|
4752
|
+
displayHint: PaymentInstrumentDisplayHint!
|
|
4753
|
+
|
|
4754
|
+
"""
|
|
4755
|
+
Buyer-facing display name (e.g. "BLIK", "mBank", "ING Bank Śląski", "Apple Pay").
|
|
4756
|
+
"""
|
|
4757
|
+
displayName: String!
|
|
4758
|
+
|
|
4759
|
+
"""
|
|
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).
|
|
4761
|
+
"""
|
|
4762
|
+
enabled: Boolean!
|
|
4763
|
+
|
|
4764
|
+
"""
|
|
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).
|
|
4766
|
+
"""
|
|
4767
|
+
provider: PaymentProvider!
|
|
4768
|
+
|
|
4769
|
+
"""
|
|
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.
|
|
4771
|
+
"""
|
|
4772
|
+
type: PaymentInstrumentType!
|
|
4773
|
+
}
|
|
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
|
+
|
|
4355
4796
|
"""
|
|
4356
4797
|
A payment method offered to the buyer at checkout — what to render in the payment picker and pass to `cartSelectPaymentMethod`.
|
|
4357
4798
|
"""
|
|
4358
4799
|
type PaymentMethod {
|
|
4800
|
+
"""
|
|
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.
|
|
4802
|
+
"""
|
|
4803
|
+
available: Boolean!
|
|
4804
|
+
|
|
4359
4805
|
"""
|
|
4360
4806
|
Optional buyer-facing description shown under the name (e.g. "Pay with your bank app").
|
|
4361
4807
|
"""
|
|
4362
4808
|
description: String
|
|
4363
4809
|
|
|
4364
4810
|
"""
|
|
4365
|
-
Optional icon
|
|
4811
|
+
Optional icon image configured by the merchant. Use `icon { url(transform: { maxWidth: 64 }) altText }` as the method tile artwork in the payment picker.
|
|
4366
4812
|
"""
|
|
4367
|
-
icon:
|
|
4813
|
+
icon: Image
|
|
4368
4814
|
|
|
4369
4815
|
"""
|
|
4370
4816
|
Stable ID of the payment method. Pass to `cartSelectPaymentMethod` to select it.
|
|
4371
4817
|
"""
|
|
4372
4818
|
id: ID!
|
|
4373
4819
|
|
|
4820
|
+
"""
|
|
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.
|
|
4822
|
+
"""
|
|
4823
|
+
instruments: [PaymentInstrument!]
|
|
4824
|
+
|
|
4374
4825
|
"""
|
|
4375
4826
|
True when the merchant has marked this method as the default. Pre-select it in the picker.
|
|
4376
4827
|
"""
|
|
@@ -4387,9 +4838,19 @@ type PaymentMethod {
|
|
|
4387
4838
|
position: Float!
|
|
4388
4839
|
|
|
4389
4840
|
"""
|
|
4390
|
-
|
|
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.
|
|
4391
4842
|
"""
|
|
4392
|
-
|
|
4843
|
+
preferredProvider: PaymentProvider
|
|
4844
|
+
|
|
4845
|
+
"""
|
|
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.
|
|
4847
|
+
"""
|
|
4848
|
+
provider: PaymentProvider!
|
|
4849
|
+
|
|
4850
|
+
"""
|
|
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.
|
|
4852
|
+
"""
|
|
4853
|
+
providersAvailable: [PaymentProvider!]
|
|
4393
4854
|
|
|
4394
4855
|
"""
|
|
4395
4856
|
ISO 4217 currency codes the method accepts. Null when the method accepts the shop currency without restriction.
|
|
@@ -4397,20 +4858,51 @@ type PaymentMethod {
|
|
|
4397
4858
|
supportedCurrencies: [String!]
|
|
4398
4859
|
|
|
4399
4860
|
"""
|
|
4400
|
-
Category of the method (CARD, BLIK, BANK_TRANSFER, CASH_ON_DELIVERY, OTHER). Drives iconography and copy.
|
|
4861
|
+
Category of the method (CARD, BLIK, BANK_TRANSFER, INSTALLMENT, WALLET, CASH_ON_DELIVERY, OTHER). Drives iconography and copy.
|
|
4401
4862
|
"""
|
|
4402
4863
|
type: PaymentMethodType!
|
|
4864
|
+
|
|
4865
|
+
"""
|
|
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").
|
|
4867
|
+
"""
|
|
4868
|
+
unavailableReason: PaymentMethodUnavailableReason
|
|
4403
4869
|
}
|
|
4404
4870
|
|
|
4405
4871
|
"""
|
|
4406
|
-
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.
|
|
4407
4873
|
"""
|
|
4408
4874
|
enum PaymentMethodType {
|
|
4409
4875
|
BANK_TRANSFER
|
|
4410
4876
|
BLIK
|
|
4411
4877
|
CARD
|
|
4412
4878
|
CASH_ON_DELIVERY
|
|
4879
|
+
INSTALLMENT
|
|
4413
4880
|
OTHER
|
|
4881
|
+
WALLET
|
|
4882
|
+
}
|
|
4883
|
+
|
|
4884
|
+
"""
|
|
4885
|
+
Why a payment method is currently unavailable. GATEWAY_DOWN/DISABLED/NO_INSTRUMENTS are transient (gateway-side); CREDENTIALS_INVALID needs merchant action in the admin panel.
|
|
4886
|
+
"""
|
|
4887
|
+
enum PaymentMethodUnavailableReason {
|
|
4888
|
+
CREDENTIALS_INVALID
|
|
4889
|
+
GATEWAY_DISABLED
|
|
4890
|
+
GATEWAY_DOWN
|
|
4891
|
+
NO_INSTRUMENTS
|
|
4892
|
+
}
|
|
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
|
|
4414
4906
|
}
|
|
4415
4907
|
|
|
4416
4908
|
"""
|
|
@@ -4456,21 +4948,50 @@ type PaymentSession {
|
|
|
4456
4948
|
|
|
4457
4949
|
"""Shop payment configuration (currency, country, providers)"""
|
|
4458
4950
|
type PaymentSettings {
|
|
4459
|
-
"""
|
|
4951
|
+
"""Shop country code — drives payment method availability"""
|
|
4460
4952
|
countryCode: CountryCode!
|
|
4461
4953
|
|
|
4462
|
-
"""Primary currency
|
|
4954
|
+
"""Primary currency used to process payments"""
|
|
4463
4955
|
currencyCode: CurrencyCode!
|
|
4464
4956
|
|
|
4465
|
-
"""
|
|
4957
|
+
"""
|
|
4958
|
+
Currencies displayable on the storefront (Money.currencyCode allowlist)
|
|
4959
|
+
"""
|
|
4466
4960
|
enabledPresentmentCurrencies: [CurrencyCode!]!
|
|
4467
4961
|
|
|
4468
4962
|
"""
|
|
4469
|
-
|
|
4963
|
+
Codes of the payment providers active for this shop. E.g. ["payu", "cash_on_delivery"]. Use to conditionally render the checkout UI.
|
|
4470
4964
|
"""
|
|
4471
4965
|
paymentProviders: [String!]!
|
|
4472
4966
|
}
|
|
4473
4967
|
|
|
4968
|
+
"""
|
|
4969
|
+
Non-blocking signal emitted alongside `userErrors` — backend state change context (e.g. an auto-clear, a server-side adjustment) that the storefront may surface as a retry hint or analytics event. Always pre-translated by backend per shop locale.
|
|
4970
|
+
"""
|
|
4971
|
+
type PaymentWarning {
|
|
4972
|
+
"""
|
|
4973
|
+
Machine-readable code — branch on this to dispatch UI retry hints. Add a new code only when there is a distinct UX response.
|
|
4974
|
+
"""
|
|
4975
|
+
code: PaymentWarningCode!
|
|
4976
|
+
|
|
4977
|
+
"""
|
|
4978
|
+
Pre-translated user-facing message describing what happened (Polish-first per shop locale).
|
|
4979
|
+
"""
|
|
4980
|
+
message: String!
|
|
4981
|
+
|
|
4982
|
+
"""
|
|
4983
|
+
Optional additional hint string for UI dispatch — currently unused for `INSTRUMENT_CLEARED_FOR_RETRY` (semantic encoded in `message`). Reserved for future warning codes (e.g. `SLOW_GATEWAY_RESPONSE` → "Retry in 30s").
|
|
4984
|
+
"""
|
|
4985
|
+
retryHint: String
|
|
4986
|
+
}
|
|
4987
|
+
|
|
4988
|
+
"""
|
|
4989
|
+
Machine-readable code for `PaymentWarning.code`. Non-blocking signals from payment mutations — branch on this to dispatch UI retry hints. `INSTRUMENT_CLEARED_FOR_RETRY` indicates backend auto-cleared a preselected payment instrument after gateway rejection; next `paymentCreate` will land on the gateway default page.
|
|
4990
|
+
"""
|
|
4991
|
+
enum PaymentWarningCode {
|
|
4992
|
+
INSTRUMENT_CLEARED_FOR_RETRY
|
|
4993
|
+
}
|
|
4994
|
+
|
|
4474
4995
|
"""
|
|
4475
4996
|
A pickup point (parcel locker or staffed collection point) attached to a delivery address. The buyer picks it in the carrier widget; it is persisted on the cart shipping address and carried through to the order.
|
|
4476
4997
|
"""
|
|
@@ -4603,23 +5124,28 @@ type Product implements Node {
|
|
|
4603
5124
|
"""
|
|
4604
5125
|
Customer-facing product attributes (configurator) — set definitions + per-product scoped
|
|
4605
5126
|
"""
|
|
4606
|
-
attributes(
|
|
5127
|
+
attributes(
|
|
5128
|
+
"""
|
|
5129
|
+
Optional filter — pass `{ fillingMode: CUSTOMER }` to return only buyer-fillable configurator fields
|
|
5130
|
+
"""
|
|
5131
|
+
filter: ProductAttributeFilterInput
|
|
5132
|
+
): [ProductAttributeDefinition!]!
|
|
4607
5133
|
|
|
4608
5134
|
"""Average rating (1-5)"""
|
|
4609
5135
|
averageRating: Float
|
|
4610
5136
|
|
|
4611
5137
|
"""
|
|
4612
|
-
Canonical brand entity
|
|
5138
|
+
Canonical brand entity. Resolved via DataLoader (N+1 safe for list queries). Null when the product has no assigned brand.
|
|
4613
5139
|
"""
|
|
4614
5140
|
brand: Brand
|
|
4615
5141
|
|
|
4616
5142
|
"""
|
|
4617
|
-
|
|
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.
|
|
4618
5144
|
"""
|
|
4619
5145
|
categories: [Category!]!
|
|
4620
5146
|
|
|
4621
5147
|
"""
|
|
4622
|
-
Compare-at price range (Money pair). Null
|
|
5148
|
+
Compare-at price range (Money pair). Null when no variant has a compareAtPrice.
|
|
4623
5149
|
"""
|
|
4624
5150
|
compareAtPriceRange: ProductPriceRange
|
|
4625
5151
|
|
|
@@ -4645,7 +5171,25 @@ type Product implements Node {
|
|
|
4645
5171
|
id: ID!
|
|
4646
5172
|
|
|
4647
5173
|
"""Product images (Relay Connection)"""
|
|
4648
|
-
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!
|
|
4649
5193
|
|
|
4650
5194
|
"""Whether product is available for sale (any variant in stock)"""
|
|
4651
5195
|
isAvailable: Boolean!
|
|
@@ -4664,17 +5208,20 @@ type Product implements Node {
|
|
|
4664
5208
|
priceRange: ProductPriceRange!
|
|
4665
5209
|
|
|
4666
5210
|
"""
|
|
4667
|
-
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.
|
|
4668
5212
|
"""
|
|
4669
5213
|
priceRangeWithConversion: ConvertedPriceRange
|
|
4670
5214
|
|
|
4671
5215
|
"""
|
|
4672
|
-
|
|
5216
|
+
Default category for breadcrumb/nav (= categories[0] by sortOrder). Null when the product is in no category.
|
|
4673
5217
|
"""
|
|
4674
5218
|
primaryCategory: Category
|
|
4675
5219
|
|
|
4676
5220
|
"""Similar products recommendations"""
|
|
4677
|
-
recommendations(
|
|
5221
|
+
recommendations(
|
|
5222
|
+
"""Number of similar products to return (default 4, max 100)"""
|
|
5223
|
+
first: Int = 4
|
|
5224
|
+
): ProductRecommendations
|
|
4678
5225
|
|
|
4679
5226
|
"""Number of reviews"""
|
|
4680
5227
|
reviewCount: Int
|
|
@@ -4700,14 +5247,34 @@ type Product implements Node {
|
|
|
4700
5247
|
updatedAt: DateTime!
|
|
4701
5248
|
|
|
4702
5249
|
"""Product variants (Relay Connection)"""
|
|
4703
|
-
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!
|
|
4704
5271
|
|
|
4705
5272
|
"""
|
|
4706
|
-
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).
|
|
4707
5274
|
"""
|
|
4708
5275
|
vendor: String
|
|
4709
5276
|
|
|
4710
|
-
"""Catalog visibility
|
|
5277
|
+
"""Catalog visibility — PUBLIC | HIDDEN | BUNDLE_ONLY"""
|
|
4711
5278
|
visibility: ProductVisibility!
|
|
4712
5279
|
}
|
|
4713
5280
|
|
|
@@ -4784,12 +5351,12 @@ type ProductAttributeOption {
|
|
|
4784
5351
|
label: String!
|
|
4785
5352
|
|
|
4786
5353
|
"""
|
|
4787
|
-
Summary
|
|
5354
|
+
Summary of the linked ProductVariant. Null when the option has no linkedVariantId or the variant was deleted.
|
|
4788
5355
|
"""
|
|
4789
5356
|
linkedVariant: LinkedVariantSummary
|
|
4790
5357
|
|
|
4791
5358
|
"""
|
|
4792
|
-
Linked ProductVariant ID for component stock decrement (
|
|
5359
|
+
Linked ProductVariant ID for component stock decrement (hidden-products pattern).
|
|
4793
5360
|
"""
|
|
4794
5361
|
linkedVariantId: ID
|
|
4795
5362
|
|
|
@@ -4797,11 +5364,11 @@ type ProductAttributeOption {
|
|
|
4797
5364
|
sortOrder: Int!
|
|
4798
5365
|
|
|
4799
5366
|
"""
|
|
4800
|
-
Surcharge amount when selected (FIXED =
|
|
5367
|
+
Surcharge amount when selected (FIXED = minor currency units; PERCENT = thousandths of percent).
|
|
4801
5368
|
"""
|
|
4802
5369
|
surchargeAmount: Int
|
|
4803
5370
|
|
|
4804
|
-
"""Surcharge type — FIXED | PERCENT
|
|
5371
|
+
"""Surcharge type — FIXED | PERCENT."""
|
|
4805
5372
|
surchargeType: AttributeOptionSurchargeType
|
|
4806
5373
|
|
|
4807
5374
|
"""Internal value (slug-style)"""
|
|
@@ -4840,7 +5407,7 @@ type ProductEdge {
|
|
|
4840
5407
|
"""Single product filter"""
|
|
4841
5408
|
input ProductFilter {
|
|
4842
5409
|
"""
|
|
4843
|
-
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.
|
|
4844
5411
|
"""
|
|
4845
5412
|
attributes: [AttributeFilterInput!]
|
|
4846
5413
|
|
|
@@ -4848,7 +5415,7 @@ input ProductFilter {
|
|
|
4848
5415
|
available: Boolean
|
|
4849
5416
|
|
|
4850
5417
|
"""
|
|
4851
|
-
|
|
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`.
|
|
4852
5419
|
"""
|
|
4853
5420
|
brand: BrandFilter
|
|
4854
5421
|
|
|
@@ -4974,8 +5541,10 @@ type ProductReview {
|
|
|
4974
5541
|
helpfulCount: Int!
|
|
4975
5542
|
id: ID!
|
|
4976
5543
|
|
|
4977
|
-
"""
|
|
4978
|
-
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!]!
|
|
4979
5548
|
|
|
4980
5549
|
"""Is verified purchase"""
|
|
4981
5550
|
isVerifiedPurchase: Boolean!
|
|
@@ -5042,7 +5611,12 @@ A purchasable unit of a product — one variant out of the product variants list
|
|
|
5042
5611
|
"""
|
|
5043
5612
|
type ProductVariant {
|
|
5044
5613
|
"""Variant custom field values (post-Opcja A unified custom fields)."""
|
|
5045
|
-
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!]!
|
|
5046
5620
|
|
|
5047
5621
|
"""
|
|
5048
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).
|
|
@@ -5103,7 +5677,7 @@ type ProductVariant {
|
|
|
5103
5677
|
sortOrder: Int
|
|
5104
5678
|
|
|
5105
5679
|
"""
|
|
5106
|
-
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.
|
|
5107
5681
|
"""
|
|
5108
5682
|
storeAvailability(
|
|
5109
5683
|
"""Cursor for pagination"""
|
|
@@ -5154,7 +5728,7 @@ type ProductVariantEdge {
|
|
|
5154
5728
|
node: ProductVariant!
|
|
5155
5729
|
}
|
|
5156
5730
|
|
|
5157
|
-
"""Catalog placement — PUBLIC | HIDDEN | BUNDLE_ONLY
|
|
5731
|
+
"""Catalog placement — PUBLIC | HIDDEN | BUNDLE_ONLY"""
|
|
5158
5732
|
enum ProductVisibility {
|
|
5159
5733
|
BUNDLE_ONLY
|
|
5160
5734
|
HIDDEN
|
|
@@ -5166,25 +5740,58 @@ type Query {
|
|
|
5166
5740
|
allSupportedCurrencies: [Currency!]!
|
|
5167
5741
|
|
|
5168
5742
|
"""
|
|
5169
|
-
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).
|
|
5170
5744
|
"""
|
|
5171
|
-
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!
|
|
5172
5751
|
|
|
5173
5752
|
"""
|
|
5174
|
-
Payment methods active for the current shop, plus the merchant default.
|
|
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.
|
|
5175
5754
|
"""
|
|
5176
5755
|
availablePaymentMethods: AvailablePaymentMethods!
|
|
5177
5756
|
|
|
5178
5757
|
"""
|
|
5179
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.
|
|
5180
5759
|
"""
|
|
5181
|
-
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!
|
|
5182
5769
|
|
|
5183
5770
|
"""Get live shipping rates from configured carriers"""
|
|
5184
|
-
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!
|
|
5185
5783
|
|
|
5186
5784
|
"""Get B2B pricing for a product variant"""
|
|
5187
|
-
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
|
|
5188
5795
|
|
|
5189
5796
|
"""List blog categories"""
|
|
5190
5797
|
blogCategories: [BlogCategory!]!
|
|
@@ -5226,20 +5833,32 @@ type Query {
|
|
|
5226
5833
|
): BlogPostConnection!
|
|
5227
5834
|
|
|
5228
5835
|
"""List blog tags"""
|
|
5229
|
-
blogTags(
|
|
5836
|
+
blogTags(
|
|
5837
|
+
"""Maximum number of tags to return (default 50, max 200)"""
|
|
5838
|
+
limit: Int = 50
|
|
5839
|
+
): [BlogTag!]!
|
|
5230
5840
|
|
|
5231
5841
|
"""
|
|
5232
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.
|
|
5233
5843
|
"""
|
|
5234
|
-
cart(
|
|
5844
|
+
cart(
|
|
5845
|
+
"""Cart UUID to fetch"""
|
|
5846
|
+
id: ID!
|
|
5847
|
+
): Cart
|
|
5235
5848
|
|
|
5236
5849
|
"""
|
|
5237
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.
|
|
5238
5851
|
"""
|
|
5239
|
-
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!
|
|
5240
5859
|
|
|
5241
5860
|
"""
|
|
5242
|
-
|
|
5861
|
+
List of categories (Relay Connection) with optional rootsOnly/parentId filtering
|
|
5243
5862
|
"""
|
|
5244
5863
|
categories(
|
|
5245
5864
|
"""Forward pagination cursor (after this element)"""
|
|
@@ -5255,7 +5874,7 @@ type Query {
|
|
|
5255
5874
|
last: Int
|
|
5256
5875
|
|
|
5257
5876
|
"""
|
|
5258
|
-
Filter by parent category ID —
|
|
5877
|
+
Filter by parent category ID — use `null` semantically for "roots" via the `rootsOnly` flag
|
|
5259
5878
|
"""
|
|
5260
5879
|
parentId: ID
|
|
5261
5880
|
|
|
@@ -5331,11 +5950,16 @@ type Query {
|
|
|
5331
5950
|
"""
|
|
5332
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.
|
|
5333
5952
|
"""
|
|
5334
|
-
customerOrder(
|
|
5953
|
+
customerOrder(
|
|
5954
|
+
"""Order UUID owned by the authenticated customer"""
|
|
5955
|
+
orderId: ID!
|
|
5956
|
+
): Order
|
|
5335
5957
|
|
|
5336
5958
|
"""Estimate points for an order amount"""
|
|
5337
5959
|
estimatePoints(
|
|
5338
|
-
"""
|
|
5960
|
+
"""
|
|
5961
|
+
Order total in major currency units (e.g. 99.99 PLN) to estimate earned points for
|
|
5962
|
+
"""
|
|
5339
5963
|
orderTotal: Float!
|
|
5340
5964
|
): PointsEstimate!
|
|
5341
5965
|
|
|
@@ -5349,19 +5973,30 @@ type Query {
|
|
|
5349
5973
|
): ExchangeRate
|
|
5350
5974
|
|
|
5351
5975
|
"""Get gift card by code (null if not found)"""
|
|
5352
|
-
giftCard(
|
|
5976
|
+
giftCard(
|
|
5977
|
+
"""Gift card code to look up (case-sensitive)"""
|
|
5978
|
+
code: String!
|
|
5979
|
+
): GiftCard
|
|
5353
5980
|
|
|
5354
5981
|
"""Validate gift card for use"""
|
|
5355
|
-
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!
|
|
5356
5989
|
|
|
5357
5990
|
"""Get available languages for this shop"""
|
|
5358
5991
|
languages: [Language!]!
|
|
5359
5992
|
|
|
5360
|
-
"""
|
|
5993
|
+
"""
|
|
5994
|
+
Localization context (countries, languages, the customer current country/language)
|
|
5995
|
+
"""
|
|
5361
5996
|
localization: Localization!
|
|
5362
5997
|
|
|
5363
5998
|
"""
|
|
5364
|
-
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).
|
|
5365
6000
|
"""
|
|
5366
6001
|
location(
|
|
5367
6002
|
"""Location UUID"""
|
|
@@ -5401,18 +6036,47 @@ type Query {
|
|
|
5401
6036
|
loyaltyTiers: [LoyaltyTier!]!
|
|
5402
6037
|
|
|
5403
6038
|
"""Get loyalty transaction history"""
|
|
5404
|
-
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!
|
|
5405
6050
|
|
|
5406
6051
|
"""Get a navigation menu by handle"""
|
|
5407
|
-
menu(
|
|
6052
|
+
menu(
|
|
6053
|
+
"""
|
|
6054
|
+
Navigation menu handle (e.g. "main-menu", "footer") configured in admin
|
|
6055
|
+
"""
|
|
6056
|
+
handle: String!
|
|
6057
|
+
): Menu
|
|
5408
6058
|
|
|
5409
6059
|
"""Universal ID-based lookup (Relay Node spec)"""
|
|
5410
|
-
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
|
|
5411
6069
|
|
|
5412
6070
|
"""
|
|
5413
|
-
Batch ID-based lookup; same NodeType
|
|
6071
|
+
Batch ID-based lookup; same NodeType for all IDs. Missing/wrong IDs → null entries (preserved length).
|
|
5414
6072
|
"""
|
|
5415
|
-
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]!
|
|
5416
6080
|
|
|
5417
6081
|
"""
|
|
5418
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.
|
|
@@ -5455,7 +6119,10 @@ type Query {
|
|
|
5455
6119
|
): ShopPageConnection!
|
|
5456
6120
|
|
|
5457
6121
|
"""Get personalized product recommendations for the current customer"""
|
|
5458
|
-
personalizedRecommendations(
|
|
6122
|
+
personalizedRecommendations(
|
|
6123
|
+
"""Number of recommendations to return (default 10, max 100)"""
|
|
6124
|
+
first: Int = 10
|
|
6125
|
+
): ProductRecommendations!
|
|
5459
6126
|
|
|
5460
6127
|
"""Get single product by ID or handle"""
|
|
5461
6128
|
product(
|
|
@@ -5469,7 +6136,12 @@ type Query {
|
|
|
5469
6136
|
"""
|
|
5470
6137
|
Get available filters for product listing (renamed from availableFilters in Storefront 5.0)
|
|
5471
6138
|
"""
|
|
5472
|
-
productFilters(
|
|
6139
|
+
productFilters(
|
|
6140
|
+
"""
|
|
6141
|
+
Product context (collectionId/categoryId/searchQuery) + currently applied filters for exclude-self facet counts
|
|
6142
|
+
"""
|
|
6143
|
+
input: AvailableFiltersInput
|
|
6144
|
+
): AvailableFilters!
|
|
5473
6145
|
|
|
5474
6146
|
"""Get recommended products similar to the given product"""
|
|
5475
6147
|
productRecommendations(
|
|
@@ -5519,16 +6191,25 @@ type Query {
|
|
|
5519
6191
|
referralStats: ReferralStats
|
|
5520
6192
|
|
|
5521
6193
|
"""Get return by ID"""
|
|
5522
|
-
return(
|
|
6194
|
+
return(
|
|
6195
|
+
"""Return UUID to fetch (customer-owned, ownership verified)"""
|
|
6196
|
+
id: ID!
|
|
6197
|
+
): ReturnPayload!
|
|
5523
6198
|
|
|
5524
6199
|
"""Get available return reasons"""
|
|
5525
6200
|
returnReasons: [ReturnReasonOption!]!
|
|
5526
6201
|
|
|
5527
6202
|
"""Get returns for an order"""
|
|
5528
|
-
returnsByOrder(
|
|
6203
|
+
returnsByOrder(
|
|
6204
|
+
"""Order UUID to list returns for (ownership verified)"""
|
|
6205
|
+
orderId: ID!
|
|
6206
|
+
): ReturnConnection!
|
|
5529
6207
|
|
|
5530
6208
|
"""Get product review statistics"""
|
|
5531
|
-
reviewStats(
|
|
6209
|
+
reviewStats(
|
|
6210
|
+
"""Product UUID to fetch review statistics for"""
|
|
6211
|
+
productId: ID!
|
|
6212
|
+
): ReviewStats!
|
|
5532
6213
|
|
|
5533
6214
|
"""Search products (DoSwiftly alias for products() with required query)"""
|
|
5534
6215
|
searchProducts(
|
|
@@ -5563,10 +6244,16 @@ type Query {
|
|
|
5563
6244
|
): PredictiveSearchResult!
|
|
5564
6245
|
|
|
5565
6246
|
"""Get shipment by ID"""
|
|
5566
|
-
shipment(
|
|
6247
|
+
shipment(
|
|
6248
|
+
"""Shipment UUID (customer must own parent order)"""
|
|
6249
|
+
id: ID!
|
|
6250
|
+
): ShipmentPayload!
|
|
5567
6251
|
|
|
5568
6252
|
"""Get shipment by tracking number"""
|
|
5569
|
-
shipmentByTrackingNumber(
|
|
6253
|
+
shipmentByTrackingNumber(
|
|
6254
|
+
"""Carrier tracking number (public lookup, no auth required)"""
|
|
6255
|
+
trackingNumber: String!
|
|
6256
|
+
): ShipmentPayload!
|
|
5570
6257
|
|
|
5571
6258
|
"""Get current shop information"""
|
|
5572
6259
|
shop: Shop!
|
|
@@ -5575,7 +6262,12 @@ type Query {
|
|
|
5575
6262
|
shopCurrencyConfig: ShopCurrencyConfig!
|
|
5576
6263
|
|
|
5577
6264
|
"""Get translations for a language"""
|
|
5578
|
-
translations(
|
|
6265
|
+
translations(
|
|
6266
|
+
"""
|
|
6267
|
+
Translation request (language code, optional namespaces filter) — falls back to shop default language
|
|
6268
|
+
"""
|
|
6269
|
+
input: TranslationsInput!
|
|
6270
|
+
): Translations!
|
|
5579
6271
|
|
|
5580
6272
|
"""List URL redirects"""
|
|
5581
6273
|
urlRedirects(
|
|
@@ -5795,8 +6487,10 @@ type ReturnItem {
|
|
|
5795
6487
|
"""Item ID"""
|
|
5796
6488
|
id: ID!
|
|
5797
6489
|
|
|
5798
|
-
"""
|
|
5799
|
-
|
|
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
|
|
5800
6494
|
|
|
5801
6495
|
"""Evidence photos"""
|
|
5802
6496
|
photos: [ReturnItemPhoto!]
|
|
@@ -6103,8 +6797,10 @@ type ShipmentItem {
|
|
|
6103
6797
|
"""Item ID"""
|
|
6104
6798
|
id: ID!
|
|
6105
6799
|
|
|
6106
|
-
"""
|
|
6107
|
-
|
|
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
|
|
6108
6804
|
|
|
6109
6805
|
"""Quantity shipped"""
|
|
6110
6806
|
quantity: Int!
|
|
@@ -6202,9 +6898,9 @@ type ShippingCarrier {
|
|
|
6202
6898
|
id: ID
|
|
6203
6899
|
|
|
6204
6900
|
"""
|
|
6205
|
-
|
|
6901
|
+
Carrier logo image. Use `logo { url(transform: { maxWidth: 64 }) altText }` for the method tile in the shipping picker.
|
|
6206
6902
|
"""
|
|
6207
|
-
|
|
6903
|
+
logo: Image
|
|
6208
6904
|
|
|
6209
6905
|
"""Carrier display name (e.g. "InPost", "DPD", "DHL")."""
|
|
6210
6906
|
name: String!
|
|
@@ -6246,7 +6942,7 @@ type Shop {
|
|
|
6246
6942
|
"""Default currency code (ISO 4217)"""
|
|
6247
6943
|
currencyCode: CurrencyCode!
|
|
6248
6944
|
|
|
6249
|
-
"""Customer account URL (login/orders) —
|
|
6945
|
+
"""Customer account URL (login/orders) — derived from primaryDomain"""
|
|
6250
6946
|
customerAccountUrl: URL
|
|
6251
6947
|
|
|
6252
6948
|
"""Default language code (ISO 639-1)"""
|
|
@@ -6268,7 +6964,7 @@ type Shop {
|
|
|
6268
6964
|
logo: Image
|
|
6269
6965
|
|
|
6270
6966
|
"""
|
|
6271
|
-
Money display format
|
|
6967
|
+
Money display format with the `{{amount}}` placeholder, e.g. "{{amount}} zł"
|
|
6272
6968
|
"""
|
|
6273
6969
|
moneyFormat: String!
|
|
6274
6970
|
|
|
@@ -6574,8 +7270,10 @@ type TierBenefit {
|
|
|
6574
7270
|
"""Benefit description"""
|
|
6575
7271
|
description: String
|
|
6576
7272
|
|
|
6577
|
-
"""
|
|
6578
|
-
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
|
|
6579
7277
|
|
|
6580
7278
|
"""Benefit name"""
|
|
6581
7279
|
name: String!
|
|
@@ -6640,7 +7338,7 @@ URL string per RFC 3986 (e.g. "https://shop.example.com/products/foo").
|
|
|
6640
7338
|
"""
|
|
6641
7339
|
scalar URL
|
|
6642
7340
|
|
|
6643
|
-
"""Measurement system (metric vs imperial) —
|
|
7341
|
+
"""Measurement system (metric vs imperial) — affects display formats"""
|
|
6644
7342
|
enum UnitSystem {
|
|
6645
7343
|
IMPERIAL_SYSTEM
|
|
6646
7344
|
METRIC_SYSTEM
|