@doswiftly/storefront-operations 13.1.0 → 15.1.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 +236 -0
- package/README.md +17 -15
- package/fragments.graphql +57 -18
- package/llms-full.txt +175 -36
- package/operations.json +60 -36
- package/package.json +1 -1
- package/queries.graphql +26 -11
- package/schema.graphql +1213 -559
package/schema.graphql
CHANGED
|
@@ -32,12 +32,14 @@ directive @inContext(
|
|
|
32
32
|
preferredLocationId: ID
|
|
33
33
|
) on MUTATION | QUERY | SUBSCRIPTION
|
|
34
34
|
|
|
35
|
-
"""
|
|
35
|
+
"""
|
|
36
|
+
A generic key/value attribute — used for line item properties and other free-form metadata.
|
|
37
|
+
"""
|
|
36
38
|
type Attribute {
|
|
37
|
-
"""Attribute key"""
|
|
39
|
+
"""Attribute key."""
|
|
38
40
|
key: String!
|
|
39
41
|
|
|
40
|
-
"""Attribute value"""
|
|
42
|
+
"""Attribute value. Null when the key is set without an associated value."""
|
|
41
43
|
value: String
|
|
42
44
|
}
|
|
43
45
|
|
|
@@ -63,7 +65,9 @@ type AttributeDefinition {
|
|
|
63
65
|
"""Attribute ID"""
|
|
64
66
|
id: ID!
|
|
65
67
|
|
|
66
|
-
"""
|
|
68
|
+
"""
|
|
69
|
+
Whether attribute is filterable (admin toggle). For storefront UI rendering signal use `isUsableAsFilter` (computed).
|
|
70
|
+
"""
|
|
67
71
|
isFilterable: Boolean!
|
|
68
72
|
|
|
69
73
|
"""Whether attribute is visible on product pages"""
|
|
@@ -140,6 +144,34 @@ type AttributeFilterValue {
|
|
|
140
144
|
value: String!
|
|
141
145
|
}
|
|
142
146
|
|
|
147
|
+
"""Paginated + searchable attribute options (Relay Connection)"""
|
|
148
|
+
type AttributeFilterValueConnection {
|
|
149
|
+
"""Paginated edges z cursorami"""
|
|
150
|
+
edges: [AttributeFilterValueEdge!]!
|
|
151
|
+
|
|
152
|
+
"""Shortcut: edges.map(e => e.node)"""
|
|
153
|
+
nodes: [AttributeFilterValue!]!
|
|
154
|
+
|
|
155
|
+
"""Relay pagination info (hasNextPage, hasPreviousPage, cursors)"""
|
|
156
|
+
pageInfo: PageInfo!
|
|
157
|
+
|
|
158
|
+
"""
|
|
159
|
+
Total number of attribute options matching the filter (po zastosowaniu search + context). NIE zmienia się przy paginacji — pokazuje pełną liczbę dla counter UI.
|
|
160
|
+
"""
|
|
161
|
+
totalCount: Int!
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
"""Edge w AttributeFilterValueConnection (Relay spec)"""
|
|
165
|
+
type AttributeFilterValueEdge {
|
|
166
|
+
"""
|
|
167
|
+
Opaque pagination cursor (base64-encoded). Echo as `after` for next page.
|
|
168
|
+
"""
|
|
169
|
+
cursor: String!
|
|
170
|
+
|
|
171
|
+
"""Attribute filter value (option + product count + swatch)"""
|
|
172
|
+
node: AttributeFilterValue!
|
|
173
|
+
}
|
|
174
|
+
|
|
143
175
|
"""Attribute input"""
|
|
144
176
|
input AttributeInput {
|
|
145
177
|
"""Attribute key"""
|
|
@@ -157,6 +189,37 @@ enum AttributeOptionSurchargeType {
|
|
|
157
189
|
PERCENT
|
|
158
190
|
}
|
|
159
191
|
|
|
192
|
+
"""Input dla attributeOptionsSearch query"""
|
|
193
|
+
input AttributeOptionsSearchInput {
|
|
194
|
+
"""Opaque cursor z pageInfo.endCursor poprzedniej strony"""
|
|
195
|
+
after: String
|
|
196
|
+
|
|
197
|
+
"""
|
|
198
|
+
Produktowy kontekst (categoryId/collectionId/searchQuery/currentFilters) dla accurate productCount. Exclude-self: gdy currentFilters zawiera ten sam atrybut, jest pomijany.
|
|
199
|
+
"""
|
|
200
|
+
contextInput: AvailableFiltersInput
|
|
201
|
+
|
|
202
|
+
"""Liczba zwracanych opcji (default 50, max 100)"""
|
|
203
|
+
first: Int
|
|
204
|
+
|
|
205
|
+
"""Attribute handle (URL-friendly identifier, np. "licencja")"""
|
|
206
|
+
handle: String!
|
|
207
|
+
|
|
208
|
+
"""Wyszukiwanie po value/label (case-insensitive ILIKE, max 100 znaków)"""
|
|
209
|
+
search: String
|
|
210
|
+
|
|
211
|
+
"""
|
|
212
|
+
Sort — COUNT_DESC default (most popular first), LABEL_ASC dla alphabetical
|
|
213
|
+
"""
|
|
214
|
+
sort: AttributeOptionsSearchSort
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
"""Sort order for attributeOptionsSearch results"""
|
|
218
|
+
enum AttributeOptionsSearchSort {
|
|
219
|
+
COUNT_DESC
|
|
220
|
+
LABEL_ASC
|
|
221
|
+
}
|
|
222
|
+
|
|
160
223
|
"""Min/max bounds for numeric attributes"""
|
|
161
224
|
type AttributeRangeBounds {
|
|
162
225
|
"""Currency code for CURRENCY type"""
|
|
@@ -169,64 +232,88 @@ type AttributeRangeBounds {
|
|
|
169
232
|
min: Float
|
|
170
233
|
}
|
|
171
234
|
|
|
172
|
-
"""
|
|
235
|
+
"""
|
|
236
|
+
A configurator selection that the buyer filled in on a line item — typed snapshot taken at add-to-cart and frozen on the resulting order. Distinct from `CartLine.attributes` (free-form key/value line item properties): selections are validated against the product attribute definition, carry pricing surcharges and can link to a hidden component variant.
|
|
237
|
+
"""
|
|
173
238
|
type AttributeSelection {
|
|
174
|
-
"""
|
|
239
|
+
"""ID of the attribute definition this selection refers to."""
|
|
175
240
|
attributeDefinitionId: ID!
|
|
176
241
|
|
|
177
|
-
"""
|
|
242
|
+
"""Display name of the attribute at the moment it was added to the cart."""
|
|
178
243
|
attributeName: String!
|
|
179
244
|
|
|
180
|
-
"""
|
|
245
|
+
"""
|
|
246
|
+
How the surcharge is charged: BUNDLED (folded into the line unit price) or SEPARATE_LINE (its own line on the order). Null when the selection is informational and has no surcharge.
|
|
247
|
+
"""
|
|
181
248
|
billingMode: AttributeBillingMode
|
|
182
249
|
|
|
183
|
-
"""
|
|
250
|
+
"""
|
|
251
|
+
Who supplies the value: MERCHANT (set on the product), CUSTOMER (filled at add-to-cart) or BOTH.
|
|
252
|
+
"""
|
|
184
253
|
fillingMode: AttributeFillingMode!
|
|
185
254
|
|
|
186
|
-
"""
|
|
255
|
+
"""
|
|
256
|
+
Linked variant whose stock is decremented when this option is chosen — used by the hidden-product configurator pattern (e.g. finish, accessory). Null when no component stock is tied to the selection.
|
|
257
|
+
"""
|
|
187
258
|
linkedVariantId: ID
|
|
188
259
|
|
|
189
|
-
"""
|
|
260
|
+
"""
|
|
261
|
+
Selected option ID for single-choice types (SELECT, RADIO, single-CHECKBOX).
|
|
262
|
+
"""
|
|
190
263
|
optionId: ID
|
|
191
264
|
|
|
192
|
-
"""
|
|
265
|
+
"""
|
|
266
|
+
Selected option IDs for multi-choice types (MULTI_SELECT, CHECKBOX list).
|
|
267
|
+
"""
|
|
193
268
|
optionIds: [ID!]
|
|
194
269
|
|
|
195
|
-
"""
|
|
270
|
+
"""Display label of the selected option at the moment of selection."""
|
|
196
271
|
optionLabel: String
|
|
197
272
|
|
|
198
273
|
"""
|
|
199
|
-
Surcharge
|
|
274
|
+
Surcharge attached to this selection in minor units of the shop currency when `surchargeType` is FIXED; thousandths of a percent (per mille of a percent) when PERCENT. Already reflected in the line cost.
|
|
200
275
|
"""
|
|
201
276
|
surchargeAmount: Int!
|
|
202
277
|
|
|
203
|
-
"""
|
|
278
|
+
"""
|
|
279
|
+
How the surcharge is calculated — FIXED (absolute amount) or PERCENT. Null when the selection has no surcharge.
|
|
280
|
+
"""
|
|
204
281
|
surchargeType: AttributeOptionSurchargeType
|
|
205
282
|
|
|
206
|
-
"""
|
|
283
|
+
"""
|
|
284
|
+
Tax class applied to this selection. Null means the line inherits its tax class from the variant.
|
|
285
|
+
"""
|
|
207
286
|
taxClassId: ID
|
|
208
287
|
|
|
209
|
-
"""Free-text value
|
|
288
|
+
"""Free-text value for TEXT, TEXTAREA, NUMBER or DATE attribute types."""
|
|
210
289
|
textValue: String
|
|
211
290
|
|
|
212
|
-
"""
|
|
291
|
+
"""
|
|
292
|
+
Attribute data type (TEXT, SELECT, RADIO, CHECKBOX, NUMBER, DATE, COLOR, etc.). Drives which value field is populated.
|
|
293
|
+
"""
|
|
213
294
|
type: AttributeType!
|
|
214
295
|
}
|
|
215
296
|
|
|
216
297
|
"""
|
|
217
|
-
|
|
298
|
+
A configurator selection on a cart line — server-side validated against the product attribute definition. The value goes into one of `optionId`, `optionIds` or `textValue` depending on the attribute type.
|
|
218
299
|
"""
|
|
219
300
|
input AttributeSelectionInput {
|
|
220
|
-
"""
|
|
301
|
+
"""ID of the attribute definition this selection refers to."""
|
|
221
302
|
attributeDefinitionId: ID!
|
|
222
303
|
|
|
223
|
-
"""
|
|
304
|
+
"""
|
|
305
|
+
Selected option ID for single-choice attribute types (SELECT, RADIO, single-CHECKBOX).
|
|
306
|
+
"""
|
|
224
307
|
optionId: ID
|
|
225
308
|
|
|
226
|
-
"""
|
|
309
|
+
"""
|
|
310
|
+
Selected option IDs for multi-choice attribute types (MULTI_SELECT, CHECKBOX list).
|
|
311
|
+
"""
|
|
227
312
|
optionIds: [ID!]
|
|
228
313
|
|
|
229
|
-
"""
|
|
314
|
+
"""
|
|
315
|
+
Free-text value for TEXT, TEXTAREA, NUMBER or DATE attribute types (max 2000 chars).
|
|
316
|
+
"""
|
|
230
317
|
textValue: String
|
|
231
318
|
}
|
|
232
319
|
|
|
@@ -271,7 +358,7 @@ type AvailableFilters {
|
|
|
271
358
|
availableCount: Int!
|
|
272
359
|
|
|
273
360
|
"""
|
|
274
|
-
Faza 3 (2026-05-17): canonical Brand entities z product counts w current context. Storefront UI renderuje checkbox list / dropdown z logo per brand. Klik → `filters: [{brand: {
|
|
361
|
+
Faza 3 (2026-05-17): canonical Brand entities z product counts w current context. Storefront UI renderuje checkbox list / dropdown z logo per brand. Klik → `filters: [{brand: {handle}}]`. Tylko brandy z >0 produktów w current product set + isActive=true.
|
|
275
362
|
"""
|
|
276
363
|
brands: [BrandFilterValue!]
|
|
277
364
|
|
|
@@ -309,54 +396,89 @@ input AvailableFiltersInput {
|
|
|
309
396
|
searchQuery: String
|
|
310
397
|
}
|
|
311
398
|
|
|
312
|
-
"""
|
|
399
|
+
"""
|
|
400
|
+
Result of `availablePaymentMethods` — the methods to render in the payment picker plus the merchant default.
|
|
401
|
+
"""
|
|
313
402
|
type AvailablePaymentMethods {
|
|
314
|
-
"""
|
|
403
|
+
"""
|
|
404
|
+
Method marked as the merchant default — pre-select in the picker. Null when no default is configured.
|
|
405
|
+
"""
|
|
315
406
|
defaultMethod: PaymentMethod
|
|
316
407
|
|
|
317
|
-
"""
|
|
408
|
+
"""Payment methods active for the shop, sorted by `position`."""
|
|
318
409
|
methods: [PaymentMethod!]!
|
|
319
410
|
}
|
|
320
411
|
|
|
321
|
-
"""
|
|
412
|
+
"""
|
|
413
|
+
A shipping method offered to the buyer for the current cart and destination — what to render in the shipping picker.
|
|
414
|
+
"""
|
|
322
415
|
type AvailableShippingMethod {
|
|
323
|
-
"""
|
|
416
|
+
"""
|
|
417
|
+
Carrier behind the method. Null when the merchant configured a custom non-carrier method.
|
|
418
|
+
"""
|
|
324
419
|
carrier: ShippingCarrier
|
|
325
420
|
|
|
326
|
-
"""
|
|
421
|
+
"""
|
|
422
|
+
Destination type — HOME (courier to the street address), PICKUP_POINT (staffed counter) or LOCKER (parcel locker). Drives whether the storefront must render a pickup-point picker for the method instead of inferring it from the method name.
|
|
423
|
+
"""
|
|
424
|
+
deliveryType: DeliveryType!
|
|
425
|
+
|
|
426
|
+
"""
|
|
427
|
+
Optional method description shown under the name (e.g. "Saturday delivery available").
|
|
428
|
+
"""
|
|
327
429
|
description: String
|
|
328
430
|
|
|
329
|
-
"""
|
|
431
|
+
"""
|
|
432
|
+
Estimated delivery window. Null when the merchant has not configured an estimate for this method.
|
|
433
|
+
"""
|
|
330
434
|
estimatedDelivery: DeliveryEstimate
|
|
331
435
|
|
|
332
|
-
"""
|
|
436
|
+
"""
|
|
437
|
+
Progress towards the free-shipping threshold for this method, when one is configured. Null otherwise.
|
|
438
|
+
"""
|
|
333
439
|
freeShippingProgress: FreeShippingProgress
|
|
334
440
|
|
|
335
|
-
"""
|
|
441
|
+
"""
|
|
442
|
+
Stable ID of the shipping method. Pass to `cartSelectShippingMethod` to select it.
|
|
443
|
+
"""
|
|
336
444
|
id: ID!
|
|
337
445
|
|
|
338
|
-
"""
|
|
446
|
+
"""
|
|
447
|
+
True when the price is zero — the method is free for this cart (e.g. free-shipping threshold met).
|
|
448
|
+
"""
|
|
339
449
|
isFree: Boolean!
|
|
340
450
|
|
|
341
|
-
"""
|
|
451
|
+
"""Display name of the method (e.g. "DPD Standard")."""
|
|
342
452
|
name: String!
|
|
343
453
|
|
|
344
|
-
"""
|
|
454
|
+
"""
|
|
455
|
+
Cost of the method for the current cart (in the buyer preferred currency).
|
|
456
|
+
"""
|
|
345
457
|
price: Money!
|
|
346
458
|
|
|
347
|
-
"""
|
|
459
|
+
"""
|
|
460
|
+
Merchant-configured display position — lower values come first in the picker.
|
|
461
|
+
"""
|
|
348
462
|
sortOrder: Int!
|
|
349
463
|
}
|
|
350
464
|
|
|
351
|
-
"""
|
|
465
|
+
"""
|
|
466
|
+
Result of `availableShippingMethods` / `cart.availableShippingMethods` — the methods to render plus optional free-shipping progress and any user errors.
|
|
467
|
+
"""
|
|
352
468
|
type AvailableShippingMethodsPayload {
|
|
353
|
-
"""
|
|
469
|
+
"""
|
|
470
|
+
Best free-shipping progress across all returned methods. Use to render a single banner above the picker.
|
|
471
|
+
"""
|
|
354
472
|
freeShippingProgress: FreeShippingProgress
|
|
355
473
|
|
|
356
|
-
"""
|
|
474
|
+
"""
|
|
475
|
+
Methods available for the current cart and destination, sorted by `sortOrder`.
|
|
476
|
+
"""
|
|
357
477
|
methods: [AvailableShippingMethod!]!
|
|
358
478
|
|
|
359
|
-
"""
|
|
479
|
+
"""
|
|
480
|
+
Validation / availability errors — e.g. `DIGITAL_ONLY_NO_SHIPPING` when the cart contains only non-physical items. Branch on `code`.
|
|
481
|
+
"""
|
|
360
482
|
userErrors: [UserError!]!
|
|
361
483
|
}
|
|
362
484
|
|
|
@@ -431,6 +553,9 @@ type BlogCategory {
|
|
|
431
553
|
"""Category description"""
|
|
432
554
|
description: String
|
|
433
555
|
|
|
556
|
+
"""URL-friendly handle"""
|
|
557
|
+
handle: String!
|
|
558
|
+
|
|
434
559
|
"""Category ID"""
|
|
435
560
|
id: ID!
|
|
436
561
|
|
|
@@ -445,9 +570,6 @@ type BlogCategory {
|
|
|
445
570
|
|
|
446
571
|
"""SEO metadata"""
|
|
447
572
|
seo: SEO
|
|
448
|
-
|
|
449
|
-
"""URL-friendly slug"""
|
|
450
|
-
slug: String!
|
|
451
573
|
}
|
|
452
574
|
|
|
453
575
|
"""Blog post"""
|
|
@@ -479,6 +601,9 @@ type BlogPost {
|
|
|
479
601
|
"""Featured image"""
|
|
480
602
|
featuredImage: Image
|
|
481
603
|
|
|
604
|
+
"""URL-friendly handle"""
|
|
605
|
+
handle: String!
|
|
606
|
+
|
|
482
607
|
"""Post ID"""
|
|
483
608
|
id: ID!
|
|
484
609
|
|
|
@@ -494,9 +619,6 @@ type BlogPost {
|
|
|
494
619
|
"""SEO metadata"""
|
|
495
620
|
seo: SEO
|
|
496
621
|
|
|
497
|
-
"""URL-friendly slug"""
|
|
498
|
-
slug: String!
|
|
499
|
-
|
|
500
622
|
"""Post status"""
|
|
501
623
|
status: BlogPostStatus!
|
|
502
624
|
|
|
@@ -552,6 +674,9 @@ enum BlogPostStatus {
|
|
|
552
674
|
|
|
553
675
|
"""Blog tag"""
|
|
554
676
|
type BlogTag {
|
|
677
|
+
"""URL-friendly handle"""
|
|
678
|
+
handle: String!
|
|
679
|
+
|
|
555
680
|
"""Tag ID"""
|
|
556
681
|
id: ID!
|
|
557
682
|
|
|
@@ -560,9 +685,6 @@ type BlogTag {
|
|
|
560
685
|
|
|
561
686
|
"""Number of posts with this tag"""
|
|
562
687
|
postCount: Int!
|
|
563
|
-
|
|
564
|
-
"""URL-friendly slug"""
|
|
565
|
-
slug: String!
|
|
566
688
|
}
|
|
567
689
|
|
|
568
690
|
"""Bot protection configuration (platform-level)"""
|
|
@@ -589,25 +711,21 @@ type BotProtectionProviderInfo {
|
|
|
589
711
|
siteKey: String!
|
|
590
712
|
}
|
|
591
713
|
|
|
592
|
-
"""
|
|
714
|
+
"""
|
|
715
|
+
Canonical product brand entity (np. Funko, Nike). Distinct od ShopBrand (shop branding metadata).
|
|
716
|
+
"""
|
|
593
717
|
type Brand {
|
|
594
|
-
"""
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
"""Cover image / hero banner"""
|
|
598
|
-
coverImage: Image
|
|
599
|
-
|
|
600
|
-
"""Primary logo"""
|
|
601
|
-
logo: Image
|
|
718
|
+
"""URL-friendly handle (e.g. "funko" → /brands/funko). Stable per-shop."""
|
|
719
|
+
handle: String!
|
|
602
720
|
|
|
603
|
-
"""
|
|
604
|
-
|
|
721
|
+
"""Brand unique identifier"""
|
|
722
|
+
id: ID!
|
|
605
723
|
|
|
606
|
-
"""
|
|
607
|
-
|
|
724
|
+
"""Brand logo URL (CDN-served, storefront-rendered)"""
|
|
725
|
+
logo: String
|
|
608
726
|
|
|
609
|
-
"""
|
|
610
|
-
|
|
727
|
+
"""Brand display name (e.g. "Funko", "Nintendo")"""
|
|
728
|
+
name: String!
|
|
611
729
|
}
|
|
612
730
|
|
|
613
731
|
"""Single brand color group (background + foreground hex)"""
|
|
@@ -627,17 +745,20 @@ type BrandColors {
|
|
|
627
745
|
|
|
628
746
|
"""Filter products po brand (canonical entity)"""
|
|
629
747
|
input BrandFilter {
|
|
630
|
-
"""Brand ID — exact UUID match"""
|
|
631
|
-
id: ID
|
|
632
|
-
|
|
633
748
|
"""
|
|
634
|
-
Brand
|
|
749
|
+
Brand handle — URL-friendly identifier. Preferowany over `id` dla storefront refetch (stable po URL share).
|
|
635
750
|
"""
|
|
636
|
-
|
|
751
|
+
handle: String
|
|
752
|
+
|
|
753
|
+
"""Brand ID — exact UUID match"""
|
|
754
|
+
id: ID
|
|
637
755
|
}
|
|
638
756
|
|
|
639
757
|
"""Brand filter value z product count"""
|
|
640
758
|
type BrandFilterValue {
|
|
759
|
+
"""Brand handle (refetch payload — paste w ProductFilter.brand.handle)"""
|
|
760
|
+
handle: String!
|
|
761
|
+
|
|
641
762
|
"""Brand ID"""
|
|
642
763
|
id: ID!
|
|
643
764
|
|
|
@@ -649,26 +770,6 @@ type BrandFilterValue {
|
|
|
649
770
|
|
|
650
771
|
"""Liczba produktów z tym brandem w current product set"""
|
|
651
772
|
productCount: Int!
|
|
652
|
-
|
|
653
|
-
"""Brand slug (refetch payload — paste w ProductFilter.brand.slug)"""
|
|
654
|
-
slug: String!
|
|
655
|
-
}
|
|
656
|
-
|
|
657
|
-
"""
|
|
658
|
-
Brand summary — minimalna projekcja dla storefront catalog + filter rendering
|
|
659
|
-
"""
|
|
660
|
-
type BrandSummary {
|
|
661
|
-
"""Brand unique identifier"""
|
|
662
|
-
id: ID!
|
|
663
|
-
|
|
664
|
-
"""Brand logo URL (CDN-served, storefront-rendered)"""
|
|
665
|
-
logo: String
|
|
666
|
-
|
|
667
|
-
"""Brand display name (e.g. "Funko", "Nintendo")"""
|
|
668
|
-
name: String!
|
|
669
|
-
|
|
670
|
-
"""URL-friendly slug — używane dla future /marka/[slug] landing pages"""
|
|
671
|
-
slug: String!
|
|
672
773
|
}
|
|
673
774
|
|
|
674
775
|
"""Business hours for a day"""
|
|
@@ -765,61 +866,79 @@ type CarrierShippingRate {
|
|
|
765
866
|
serviceName: String!
|
|
766
867
|
}
|
|
767
868
|
|
|
768
|
-
"""
|
|
869
|
+
"""
|
|
870
|
+
A shopping cart — the buyer-facing aggregate that holds items, totals, buyer identity, addresses, selected shipping and payment methods, gift cards and discount codes through to checkout completion.
|
|
871
|
+
"""
|
|
769
872
|
type Cart implements Node {
|
|
770
|
-
"""
|
|
873
|
+
"""
|
|
874
|
+
Gift cards attached to the cart. Each card is debited by its `appliedAmount` when the cart completes.
|
|
875
|
+
"""
|
|
771
876
|
appliedGiftCards: [CartAppliedGiftCard!]!
|
|
772
877
|
|
|
773
|
-
"""
|
|
878
|
+
"""
|
|
879
|
+
Cart-level custom attributes (free-form key/value). Use for cart-wide metadata such as B2B PO number or marketing source. Replace (not merge) the list with `cartUpdateAttributes`.
|
|
880
|
+
"""
|
|
774
881
|
attributes: [CartAttribute!]!
|
|
775
882
|
|
|
776
883
|
"""Available payment methods dla tego cart (shop-configured providers)"""
|
|
777
884
|
availablePaymentMethods: [PaymentMethod!]!
|
|
778
885
|
|
|
779
886
|
"""
|
|
780
|
-
|
|
887
|
+
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.
|
|
781
888
|
"""
|
|
782
889
|
availableShippingMethods(address: ShippingAddressInput!): AvailableShippingMethodsPayload!
|
|
783
890
|
|
|
784
891
|
"""
|
|
785
|
-
Billing address
|
|
892
|
+
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).
|
|
786
893
|
"""
|
|
787
894
|
billingAddress: MailingAddress
|
|
788
895
|
|
|
789
|
-
"""
|
|
896
|
+
"""
|
|
897
|
+
Buyer identity attached to the cart (email, phone, country and language hints). Null on a fresh cart before any identity is captured.
|
|
898
|
+
"""
|
|
790
899
|
buyerIdentity: CartBuyerIdentity
|
|
791
900
|
|
|
792
|
-
"""
|
|
901
|
+
"""
|
|
902
|
+
Hosted checkout URL the storefront may redirect to as a fallback. The recommended flow is to drive checkout through SDK mutations (`cartSetShippingAddress`, `cartSelectShippingMethod`, `cartSelectPaymentMethod`, `cartComplete`).
|
|
903
|
+
"""
|
|
793
904
|
checkoutUrl: URL
|
|
794
905
|
|
|
795
|
-
"""
|
|
906
|
+
"""
|
|
907
|
+
Cost breakdown for the cart (subtotal, tax, shipping, discount, grand total).
|
|
908
|
+
"""
|
|
796
909
|
cost: CartCost!
|
|
797
910
|
|
|
798
|
-
"""
|
|
911
|
+
"""When the cart was created (ISO 8601)."""
|
|
799
912
|
createdAt: DateTime!
|
|
800
913
|
|
|
801
|
-
"""
|
|
914
|
+
"""
|
|
915
|
+
Per-code discount amounts that make up `cost.totalDiscount`. Render line-item discount breakdown from this list.
|
|
916
|
+
"""
|
|
802
917
|
discountAllocations: [CartDiscountAllocation!]!
|
|
803
918
|
|
|
804
|
-
"""
|
|
919
|
+
"""Discount codes attached to the cart with their applicability flag."""
|
|
805
920
|
discountCodes: [CartDiscountCode!]!
|
|
806
921
|
|
|
807
922
|
"""
|
|
808
|
-
|
|
923
|
+
Convenience accessor — buyer email as last set via `cartUpdateBuyerIdentity`. The same value is available on `buyerIdentity.email`.
|
|
809
924
|
"""
|
|
810
925
|
email: String
|
|
811
926
|
|
|
812
|
-
"""
|
|
927
|
+
"""
|
|
928
|
+
Stable cart identifier — persist in a cookie / local store between sessions.
|
|
929
|
+
"""
|
|
813
930
|
id: ID!
|
|
814
931
|
|
|
815
|
-
"""
|
|
932
|
+
"""Lines in the cart (paginated, Relay Connection)."""
|
|
816
933
|
lines(after: String, before: String, first: Float, last: Float): CartLineConnection!
|
|
817
934
|
|
|
818
|
-
"""
|
|
935
|
+
"""
|
|
936
|
+
Buyer-supplied note (e.g. delivery instructions). Free-form, surfaced to the merchant on the order.
|
|
937
|
+
"""
|
|
819
938
|
note: String
|
|
820
939
|
|
|
821
940
|
"""
|
|
822
|
-
|
|
941
|
+
Convenience accessor — buyer phone as last set via `cartUpdateBuyerIdentity`. The same value is available on `buyerIdentity.phone`.
|
|
823
942
|
"""
|
|
824
943
|
phone: String
|
|
825
944
|
|
|
@@ -827,43 +946,51 @@ type Cart implements Node {
|
|
|
827
946
|
recommendations(first: Int = 4): CartRecommendations
|
|
828
947
|
|
|
829
948
|
"""
|
|
830
|
-
True
|
|
949
|
+
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.
|
|
831
950
|
"""
|
|
832
951
|
requiresShipping: Boolean!
|
|
833
952
|
|
|
834
|
-
"""
|
|
953
|
+
"""
|
|
954
|
+
The payment method currently selected on the cart. Null until the buyer picks a method via `cartSelectPaymentMethod`.
|
|
955
|
+
"""
|
|
835
956
|
selectedPaymentMethod: PaymentMethod
|
|
836
957
|
|
|
837
958
|
"""
|
|
838
|
-
|
|
959
|
+
The shipping method currently selected on the cart (label + cost). Null until the buyer picks a method.
|
|
839
960
|
"""
|
|
840
961
|
selectedShippingMethod: CartShippingMethod
|
|
841
962
|
|
|
842
|
-
"""
|
|
963
|
+
"""
|
|
964
|
+
Shipping address attached to the cart via `cartSetShippingAddress`. Null until set.
|
|
965
|
+
"""
|
|
843
966
|
shippingAddress: MailingAddress
|
|
844
967
|
|
|
845
|
-
"""
|
|
968
|
+
"""
|
|
969
|
+
Sum of `quantity` across all lines — the badge number for the cart icon.
|
|
970
|
+
"""
|
|
846
971
|
totalQuantity: Int!
|
|
847
972
|
|
|
848
|
-
"""
|
|
973
|
+
"""When the cart was last modified (ISO 8601)."""
|
|
849
974
|
updatedAt: DateTime!
|
|
850
975
|
}
|
|
851
976
|
|
|
852
|
-
"""Result of
|
|
977
|
+
"""Result of `cartAddLines`."""
|
|
853
978
|
type CartAddLinesPayload {
|
|
854
|
-
"""
|
|
979
|
+
"""The updated cart on success; null when `userErrors` is non-empty."""
|
|
855
980
|
cart: Cart
|
|
856
981
|
|
|
857
982
|
"""
|
|
858
|
-
|
|
983
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `CART_NOT_FOUND`, `NOT_ENOUGH_IN_STOCK`).
|
|
859
984
|
"""
|
|
860
985
|
userErrors: [UserError!]!
|
|
861
986
|
|
|
862
|
-
"""Non-fatal
|
|
987
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
863
988
|
warnings: [CartWarning!]!
|
|
864
989
|
}
|
|
865
990
|
|
|
866
|
-
"""
|
|
991
|
+
"""
|
|
992
|
+
Mailing address used as the shipping or billing address on a cart. Carries an optional pickup point (for parcel locker / collection-point delivery) and optional B2B fields (`taxId`, `regon`).
|
|
993
|
+
"""
|
|
867
994
|
input CartAddressInput {
|
|
868
995
|
"""City"""
|
|
869
996
|
city: String!
|
|
@@ -883,9 +1010,19 @@ input CartAddressInput {
|
|
|
883
1010
|
"""Phone number"""
|
|
884
1011
|
phone: String
|
|
885
1012
|
|
|
1013
|
+
"""
|
|
1014
|
+
Selected pickup point — required when the chosen shipping method has a deliveryType other than HOME (parcel locker / collection point).
|
|
1015
|
+
"""
|
|
1016
|
+
pickupPoint: PickupPointInput
|
|
1017
|
+
|
|
886
1018
|
"""Postal / ZIP code"""
|
|
887
1019
|
postalCode: String!
|
|
888
1020
|
|
|
1021
|
+
"""
|
|
1022
|
+
Buyer business registry number for B2B invoicing (Polish REGON). Persisted on the resulting order at checkout completion.
|
|
1023
|
+
"""
|
|
1024
|
+
regon: String
|
|
1025
|
+
|
|
889
1026
|
"""State / province"""
|
|
890
1027
|
state: String
|
|
891
1028
|
|
|
@@ -894,153 +1031,209 @@ input CartAddressInput {
|
|
|
894
1031
|
|
|
895
1032
|
"""Second line of street address"""
|
|
896
1033
|
streetLine2: String
|
|
1034
|
+
|
|
1035
|
+
"""
|
|
1036
|
+
Buyer tax ID for B2B invoicing (Polish NIP). Persisted on the resulting order at checkout completion.
|
|
1037
|
+
"""
|
|
1038
|
+
taxId: String
|
|
897
1039
|
}
|
|
898
1040
|
|
|
899
|
-
"""
|
|
1041
|
+
"""
|
|
1042
|
+
A gift card that the buyer has attached to the cart. The card is debited when the cart completes.
|
|
1043
|
+
"""
|
|
900
1044
|
type CartAppliedGiftCard {
|
|
901
|
-
"""Amount applied to
|
|
1045
|
+
"""Amount of this gift card that will be applied to the cart total."""
|
|
902
1046
|
appliedAmount: Money!
|
|
903
1047
|
|
|
904
|
-
"""
|
|
1048
|
+
"""
|
|
1049
|
+
Stable identifier of this applied gift card on the cart. Pass it to `cartRemoveGiftCard` so the storefront never has to hold the full gift card code.
|
|
1050
|
+
"""
|
|
1051
|
+
id: ID!
|
|
1052
|
+
|
|
1053
|
+
"""
|
|
1054
|
+
Last 4 characters of the gift card code — useful when several cards are applied.
|
|
1055
|
+
"""
|
|
905
1056
|
lastCharacters: String!
|
|
906
1057
|
|
|
907
|
-
"""Masked
|
|
1058
|
+
"""Masked code safe for display (e.g. "****-****-****-ABCD")."""
|
|
908
1059
|
maskedCode: String!
|
|
909
1060
|
|
|
910
|
-
"""Remaining balance on the gift card after this cart"""
|
|
1061
|
+
"""Remaining balance on the gift card after this cart is completed."""
|
|
911
1062
|
remainingBalance: Money!
|
|
912
1063
|
}
|
|
913
1064
|
|
|
914
|
-
"""Input
|
|
1065
|
+
"""Input for `cartApplyGiftCard`."""
|
|
915
1066
|
input CartApplyGiftCardInput {
|
|
916
|
-
"""
|
|
1067
|
+
"""ID of the cart to update."""
|
|
917
1068
|
cartId: ID!
|
|
918
1069
|
|
|
919
|
-
"""
|
|
1070
|
+
"""
|
|
1071
|
+
Full gift card code entered by the buyer (e.g. "ABCD-1234-EFGH-5678"). Max 64 chars.
|
|
1072
|
+
"""
|
|
920
1073
|
giftCardCode: String!
|
|
921
1074
|
}
|
|
922
1075
|
|
|
923
|
-
"""Result of
|
|
1076
|
+
"""Result of `cartApplyGiftCard`."""
|
|
924
1077
|
type CartApplyGiftCardPayload {
|
|
925
|
-
"""
|
|
1078
|
+
"""The updated cart with the gift card included in `appliedGiftCards`."""
|
|
926
1079
|
cart: Cart
|
|
927
1080
|
|
|
928
1081
|
"""
|
|
929
|
-
|
|
1082
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `GIFT_CARD_NOT_FOUND`, `GIFT_CARD_DEPLETED`, `GIFT_CARD_UNUSABLE`).
|
|
930
1083
|
"""
|
|
931
1084
|
userErrors: [UserError!]!
|
|
932
1085
|
|
|
933
|
-
"""Non-fatal
|
|
1086
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
934
1087
|
warnings: [CartWarning!]!
|
|
935
1088
|
}
|
|
936
1089
|
|
|
937
|
-
"""
|
|
1090
|
+
"""
|
|
1091
|
+
Custom attribute on a cart line — free-form key/value used for line item properties such as engraving text or gift wrap flags.
|
|
1092
|
+
"""
|
|
938
1093
|
type CartAttribute {
|
|
939
|
-
"""Attribute key"""
|
|
1094
|
+
"""Attribute key (e.g. "giftWrap", "engraving")."""
|
|
940
1095
|
key: String!
|
|
941
1096
|
|
|
942
|
-
"""Attribute value"""
|
|
1097
|
+
"""Attribute value. Null when the key is set without an associated value."""
|
|
943
1098
|
value: String
|
|
944
1099
|
}
|
|
945
1100
|
|
|
946
|
-
"""
|
|
1101
|
+
"""
|
|
1102
|
+
A custom cart attribute key/value pair. Used by `cartUpdateAttributes`; the full list is replaced on each call.
|
|
1103
|
+
"""
|
|
947
1104
|
input CartAttributeInput {
|
|
948
|
-
"""Attribute key"""
|
|
1105
|
+
"""Attribute key (max 255 chars)."""
|
|
949
1106
|
key: String!
|
|
950
1107
|
|
|
951
|
-
"""Attribute value"""
|
|
1108
|
+
"""Attribute value (max 500 chars). Omit to set the key without a value."""
|
|
952
1109
|
value: String
|
|
953
1110
|
}
|
|
954
1111
|
|
|
955
|
-
"""
|
|
1112
|
+
"""
|
|
1113
|
+
Buyer identity attached to the cart — email, phone, locale hints used during checkout and on the resulting order.
|
|
1114
|
+
"""
|
|
956
1115
|
type CartBuyerIdentity {
|
|
957
|
-
"""
|
|
1116
|
+
"""
|
|
1117
|
+
Buyer country (ISO 3166-1 alpha-2). Hint for pricing, tax and shipping eligibility before an address is provided.
|
|
1118
|
+
"""
|
|
958
1119
|
countryCode: CountryCode
|
|
959
1120
|
|
|
960
|
-
"""
|
|
1121
|
+
"""
|
|
1122
|
+
Customer record ID when the cart is owned by a signed-in customer. Null for guest carts.
|
|
1123
|
+
"""
|
|
961
1124
|
customerId: ID
|
|
962
1125
|
|
|
963
|
-
"""
|
|
1126
|
+
"""Buyer email — receives the order confirmation when the cart completes."""
|
|
964
1127
|
email: String
|
|
965
1128
|
|
|
966
|
-
"""
|
|
1129
|
+
"""
|
|
1130
|
+
Buyer preferred language (ISO 639-1). Used for the order confirmation email and any localised content.
|
|
1131
|
+
"""
|
|
967
1132
|
languageCode: LanguageCode
|
|
968
1133
|
|
|
969
|
-
"""
|
|
1134
|
+
"""Buyer phone number, free-form (validated only for length)."""
|
|
970
1135
|
phone: String
|
|
971
1136
|
}
|
|
972
1137
|
|
|
973
|
-
"""
|
|
1138
|
+
"""
|
|
1139
|
+
Buyer identity to attach to a cart. All fields are optional — only the supplied fields are updated.
|
|
1140
|
+
"""
|
|
974
1141
|
input CartBuyerIdentityInput {
|
|
975
|
-
"""
|
|
1142
|
+
"""
|
|
1143
|
+
Buyer country (ISO 3166-1 alpha-2). Hint for currency, tax and shipping eligibility before an address is set.
|
|
1144
|
+
"""
|
|
976
1145
|
countryCode: CountryCode
|
|
977
1146
|
|
|
978
|
-
"""
|
|
1147
|
+
"""
|
|
1148
|
+
ID of a signed-in customer that owns this cart. Pass to bind a guest cart to a customer record.
|
|
1149
|
+
"""
|
|
979
1150
|
customerId: ID
|
|
980
1151
|
|
|
981
|
-
"""
|
|
1152
|
+
"""Buyer email address. Persisted to the order at checkout completion."""
|
|
982
1153
|
email: String
|
|
983
1154
|
|
|
984
|
-
"""
|
|
1155
|
+
"""
|
|
1156
|
+
Buyer preferred language (ISO 639-1). Used for the order confirmation email and localised content.
|
|
1157
|
+
"""
|
|
985
1158
|
languageCode: LanguageCode
|
|
986
1159
|
|
|
987
|
-
"""
|
|
1160
|
+
"""Buyer phone number. Free-form; max 30 chars."""
|
|
988
1161
|
phone: String
|
|
989
1162
|
}
|
|
990
1163
|
|
|
991
|
-
"""Input
|
|
1164
|
+
"""Input for `cartComplete` — finalises the cart into an `Order`."""
|
|
992
1165
|
input CartCompleteInput {
|
|
993
|
-
"""
|
|
1166
|
+
"""ID of the cart to complete."""
|
|
994
1167
|
cartId: ID!
|
|
995
1168
|
|
|
996
1169
|
"""
|
|
997
|
-
Optional idempotency key —
|
|
1170
|
+
Optional idempotency key — guards against duplicate orders on retry / network issue. When omitted, the server derives one from the cart ID and the current minute, which is sufficient for the typical "user double-clicks the pay button" case.
|
|
998
1171
|
"""
|
|
999
1172
|
idempotencyKey: String
|
|
1000
1173
|
}
|
|
1001
1174
|
|
|
1002
1175
|
"""
|
|
1003
|
-
Result of
|
|
1176
|
+
Result of `cartComplete`. The cart is converted into an `Order` and locked — no further mutations are accepted on it. Payment is initiated separately via `paymentCreate` (after checking `order.canCreatePayment`).
|
|
1004
1177
|
"""
|
|
1005
1178
|
type CartCompletePayload {
|
|
1006
1179
|
"""
|
|
1007
|
-
|
|
1180
|
+
The order created from the cart. Carries `canCreatePayment` and `paymentMethodType` signals so the storefront can decide whether to render a "Pay now" button or send the buyer straight to the confirmation page (for offline methods).
|
|
1008
1181
|
"""
|
|
1009
1182
|
order: Order
|
|
1010
1183
|
|
|
1011
1184
|
"""
|
|
1012
|
-
|
|
1185
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `NOT_ENOUGH_IN_STOCK`, `SHIPPING_ADDRESS_REQUIRED`, `SHIPPING_METHOD_REQUIRED`, `PAYMENT_METHOD_REQUIRED`, `EMAIL_REQUIRED`, `ALREADY_COMPLETED`).
|
|
1013
1186
|
"""
|
|
1014
1187
|
userErrors: [UserError!]!
|
|
1015
1188
|
|
|
1016
|
-
"""Non-fatal
|
|
1189
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1017
1190
|
warnings: [CartWarning!]!
|
|
1018
1191
|
}
|
|
1019
1192
|
|
|
1020
|
-
"""
|
|
1193
|
+
"""
|
|
1194
|
+
Cart cost breakdown. All amounts are in the buyer preferred currency (auto-converted when the shop runs multi-currency). `total` is what the buyer will pay at checkout — no need to recompute.
|
|
1195
|
+
"""
|
|
1021
1196
|
type CartCost {
|
|
1022
|
-
"""
|
|
1197
|
+
"""
|
|
1198
|
+
Additional fixed checkout fee configured by the shop (e.g. small-order surcharge). Null when no such fee applies.
|
|
1199
|
+
"""
|
|
1023
1200
|
checkoutCharge: Money
|
|
1024
1201
|
|
|
1025
1202
|
"""Opt-in: checkoutCharge with conversion transparency."""
|
|
1026
1203
|
checkoutChargeWithConversion: PriceMoney
|
|
1027
1204
|
|
|
1028
|
-
"""Subtotal before taxes
|
|
1205
|
+
"""Subtotal of items in the cart before taxes, shipping and discounts."""
|
|
1029
1206
|
subtotal: Money!
|
|
1030
1207
|
|
|
1031
1208
|
"""Opt-in: subtotal with full conversion transparency."""
|
|
1032
1209
|
subtotalWithConversion: PriceMoney
|
|
1033
1210
|
|
|
1034
|
-
"""
|
|
1211
|
+
"""
|
|
1212
|
+
Grand total the buyer will pay — includes taxes, discounts and any selected shipping. Use this directly on the checkout summary instead of summing `subtotal` + extras.
|
|
1213
|
+
"""
|
|
1035
1214
|
total: Money!
|
|
1036
1215
|
|
|
1037
|
-
"""
|
|
1216
|
+
"""
|
|
1217
|
+
Aggregated discount across the cart — the sum of every entry in `discountAllocations`. Returns an amount of 0 when no discount applies.
|
|
1218
|
+
"""
|
|
1219
|
+
totalDiscount: Money!
|
|
1220
|
+
|
|
1221
|
+
"""
|
|
1222
|
+
Total customs duty on the cart. Null when no duty applies (most domestic orders).
|
|
1223
|
+
"""
|
|
1038
1224
|
totalDuty: Money
|
|
1039
1225
|
|
|
1040
1226
|
"""Opt-in: totalDuty with conversion transparency."""
|
|
1041
1227
|
totalDutyWithConversion: PriceMoney
|
|
1042
1228
|
|
|
1043
|
-
"""
|
|
1229
|
+
"""
|
|
1230
|
+
Cost of the currently selected shipping method. Null until a shipping method is selected — a selected free-shipping method returns an amount of 0, so null unambiguously means "no method chosen yet".
|
|
1231
|
+
"""
|
|
1232
|
+
totalShipping: Money
|
|
1233
|
+
|
|
1234
|
+
"""
|
|
1235
|
+
Total tax across all lines. Null when tax has not yet been calculated for this cart (e.g. before an address is set in tax-inclusive shops).
|
|
1236
|
+
"""
|
|
1044
1237
|
totalTax: Money
|
|
1045
1238
|
|
|
1046
1239
|
"""Opt-in: totalTax with conversion transparency."""
|
|
@@ -1050,150 +1243,194 @@ type CartCost {
|
|
|
1050
1243
|
totalWithConversion: PriceMoney
|
|
1051
1244
|
}
|
|
1052
1245
|
|
|
1053
|
-
"""
|
|
1246
|
+
"""
|
|
1247
|
+
Input for `cartCreate`. All fields are optional — pass only what you have at cart creation time.
|
|
1248
|
+
"""
|
|
1054
1249
|
input CartCreateInput {
|
|
1055
|
-
"""
|
|
1250
|
+
"""
|
|
1251
|
+
Cart-level custom attributes to set on the new cart (up to 50 entries).
|
|
1252
|
+
"""
|
|
1056
1253
|
attributes: [CartAttributeInput!]
|
|
1057
1254
|
|
|
1058
|
-
"""
|
|
1255
|
+
"""
|
|
1256
|
+
Buyer identity to attach to the new cart (email, phone, customer ID, country, language).
|
|
1257
|
+
"""
|
|
1059
1258
|
buyerIdentity: CartBuyerIdentityInput
|
|
1060
1259
|
|
|
1061
|
-
"""
|
|
1260
|
+
"""
|
|
1261
|
+
Discount codes to apply at creation (up to 10). Equivalent to calling `cartDiscountCodesUpdate` immediately after creating the cart.
|
|
1262
|
+
"""
|
|
1062
1263
|
discountCodes: [String!]
|
|
1063
1264
|
|
|
1064
|
-
"""
|
|
1265
|
+
"""
|
|
1266
|
+
Buyer email — shortcut for `buyerIdentity.email`. If both are provided, this field wins.
|
|
1267
|
+
"""
|
|
1065
1268
|
email: String
|
|
1066
1269
|
|
|
1067
|
-
"""Initial cart
|
|
1270
|
+
"""Initial lines to add to the cart (up to 100)."""
|
|
1068
1271
|
lines: [CartLineInput!]
|
|
1069
1272
|
|
|
1070
|
-
"""
|
|
1273
|
+
"""Buyer-supplied note (max 1000 chars), e.g. delivery instructions."""
|
|
1071
1274
|
note: String
|
|
1072
1275
|
|
|
1073
|
-
"""
|
|
1276
|
+
"""
|
|
1277
|
+
Shipping address to attach to the new cart — lets the storefront skip a follow-up `cartSetShippingAddress` call.
|
|
1278
|
+
"""
|
|
1074
1279
|
shippingAddress: CartAddressInput
|
|
1075
1280
|
}
|
|
1076
1281
|
|
|
1077
|
-
"""Result of
|
|
1282
|
+
"""Result of `cartCreate`."""
|
|
1078
1283
|
type CartCreatePayload {
|
|
1079
|
-
"""
|
|
1284
|
+
"""The created cart on success; null when `userErrors` is non-empty."""
|
|
1080
1285
|
cart: Cart
|
|
1081
1286
|
|
|
1082
1287
|
"""
|
|
1083
|
-
|
|
1288
|
+
Business / validation errors. Each entry carries a stable `code` (e.g. `CART_NOT_FOUND`, `NOT_ENOUGH_IN_STOCK`, `INVALID_MERCHANDISE_LINE`) — branch on `code`, never on `message`.
|
|
1084
1289
|
"""
|
|
1085
1290
|
userErrors: [UserError!]!
|
|
1086
1291
|
|
|
1087
|
-
"""
|
|
1292
|
+
"""
|
|
1293
|
+
Non-fatal advisories (informational only; the mutation itself succeeded).
|
|
1294
|
+
"""
|
|
1088
1295
|
warnings: [CartWarning!]!
|
|
1089
1296
|
}
|
|
1090
1297
|
|
|
1091
|
-
"""
|
|
1298
|
+
"""
|
|
1299
|
+
Per-code discount amount applied to the cart. Sum these for the aggregate total — or read `CartCost.totalDiscount`.
|
|
1300
|
+
"""
|
|
1092
1301
|
type CartDiscountAllocation {
|
|
1093
|
-
"""
|
|
1302
|
+
"""Amount discounted by this code on the cart."""
|
|
1094
1303
|
amount: Money!
|
|
1095
1304
|
|
|
1096
|
-
"""
|
|
1305
|
+
"""The discount code that produced this allocation."""
|
|
1097
1306
|
discountCode: String!
|
|
1098
1307
|
}
|
|
1099
1308
|
|
|
1100
|
-
"""
|
|
1309
|
+
"""A discount code that the buyer has attached to the cart."""
|
|
1101
1310
|
type CartDiscountCode {
|
|
1102
|
-
"""
|
|
1311
|
+
"""The code string as entered by the buyer (case is preserved as stored)."""
|
|
1103
1312
|
code: String!
|
|
1104
1313
|
|
|
1105
|
-
"""
|
|
1314
|
+
"""
|
|
1315
|
+
Whether this code currently produces a discount on the cart. False when the code is recognised but its conditions are not met (e.g. minimum-order, customer-eligibility, or product-set restrictions) — keep the chip visible and surface the reason.
|
|
1316
|
+
"""
|
|
1106
1317
|
isApplicable: Boolean!
|
|
1107
1318
|
}
|
|
1108
1319
|
|
|
1109
|
-
"""Result of
|
|
1320
|
+
"""Result of `cartDiscountCodesUpdate`."""
|
|
1110
1321
|
type CartDiscountCodesUpdatePayload {
|
|
1111
|
-
"""
|
|
1322
|
+
"""The updated cart on success."""
|
|
1112
1323
|
cart: Cart
|
|
1113
1324
|
|
|
1114
1325
|
"""
|
|
1115
|
-
|
|
1326
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `INVALID_DISCOUNT_CODE`).
|
|
1116
1327
|
"""
|
|
1117
1328
|
userErrors: [UserError!]!
|
|
1118
1329
|
|
|
1119
|
-
"""Non-fatal
|
|
1330
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1120
1331
|
warnings: [CartWarning!]!
|
|
1121
1332
|
}
|
|
1122
1333
|
|
|
1123
|
-
"""
|
|
1334
|
+
"""
|
|
1335
|
+
A single line item in the cart — one variant, a quantity and the data attached to it (cost, attributes, configurator selections).
|
|
1336
|
+
"""
|
|
1124
1337
|
type CartLine {
|
|
1125
|
-
"""
|
|
1338
|
+
"""
|
|
1339
|
+
Typed configurator selections filled in by the buyer (snapshot from add-to-cart). Validated server-side against the product attribute definition; carries any pricing surcharge.
|
|
1340
|
+
"""
|
|
1126
1341
|
attributeSelections: [AttributeSelection!]!
|
|
1127
1342
|
|
|
1128
|
-
"""
|
|
1343
|
+
"""
|
|
1344
|
+
Free-form custom attributes (line item properties) attached to this line — engraving text, gift wrap, B2B PO line reference, etc.
|
|
1345
|
+
"""
|
|
1129
1346
|
attributes: [Attribute!]!
|
|
1130
1347
|
|
|
1131
|
-
"""
|
|
1348
|
+
"""
|
|
1349
|
+
Per-line cost breakdown (unit price, subtotal, total, optional compare-at).
|
|
1350
|
+
"""
|
|
1132
1351
|
cost: CartLineCost!
|
|
1133
1352
|
|
|
1134
|
-
"""
|
|
1353
|
+
"""
|
|
1354
|
+
Stable line identifier. Use it to address the line in `cartUpdateLines` / `cartRemoveLines`.
|
|
1355
|
+
"""
|
|
1135
1356
|
id: ID!
|
|
1136
1357
|
|
|
1137
|
-
"""
|
|
1358
|
+
"""
|
|
1359
|
+
URL handle (slug) of the parent product — link target for the cart drawer (denormalised).
|
|
1360
|
+
"""
|
|
1138
1361
|
productHandle: String
|
|
1139
1362
|
|
|
1140
|
-
"""
|
|
1363
|
+
"""
|
|
1364
|
+
ID of the parent product. Denormalised so a cart drawer renders without an extra round-trip.
|
|
1365
|
+
"""
|
|
1141
1366
|
productId: ID
|
|
1142
1367
|
|
|
1143
|
-
"""
|
|
1368
|
+
"""Display title of the parent product (denormalised)."""
|
|
1144
1369
|
productTitle: String
|
|
1145
1370
|
|
|
1146
|
-
"""
|
|
1371
|
+
"""
|
|
1372
|
+
Type of the parent product (PHYSICAL, DIGITAL, SERVICE, SUBSCRIPTION, GIFT_CARD). Drives whether the line requires shipping and which post-purchase flow applies.
|
|
1373
|
+
"""
|
|
1147
1374
|
productType: ProductTypeEnum
|
|
1148
1375
|
|
|
1149
|
-
"""
|
|
1376
|
+
"""
|
|
1377
|
+
Quantity of the variant in this line (≥ 1; set to 0 with `cartUpdateLines` to remove).
|
|
1378
|
+
"""
|
|
1150
1379
|
quantity: Int!
|
|
1151
1380
|
|
|
1152
1381
|
"""
|
|
1153
|
-
True
|
|
1382
|
+
True when this line requires physical shipping (`productType` = PHYSICAL). False for digital, gift card, service and subscription items. Use together with `Cart.requiresShipping` to decide whether to render the shipping step.
|
|
1154
1383
|
"""
|
|
1155
1384
|
requiresShipping: Boolean!
|
|
1156
1385
|
|
|
1157
|
-
"""
|
|
1386
|
+
"""
|
|
1387
|
+
The variant being purchased — fresh data (current price, image, stock).
|
|
1388
|
+
"""
|
|
1158
1389
|
variant: ProductVariant!
|
|
1159
1390
|
}
|
|
1160
1391
|
|
|
1161
|
-
"""Paginated cart lines"""
|
|
1392
|
+
"""Paginated list of cart lines (Relay Connection)."""
|
|
1162
1393
|
type CartLineConnection {
|
|
1163
|
-
"""
|
|
1394
|
+
"""Edges with the line and its cursor — use for cursor-based pagination."""
|
|
1164
1395
|
edges: [CartLineEdge!]!
|
|
1165
1396
|
|
|
1166
|
-
"""Cart line nodes
|
|
1397
|
+
"""Cart line nodes — convenience shortcut for `edges.map(e => e.node)`."""
|
|
1167
1398
|
nodes: [CartLine!]!
|
|
1168
1399
|
|
|
1169
|
-
"""
|
|
1400
|
+
"""Cursor pagination info (`hasNextPage`, `endCursor`, etc.)."""
|
|
1170
1401
|
pageInfo: PageInfo!
|
|
1171
1402
|
|
|
1172
|
-
"""Total
|
|
1403
|
+
"""Total number of lines in the cart across all pages."""
|
|
1173
1404
|
totalCount: Int!
|
|
1174
1405
|
}
|
|
1175
1406
|
|
|
1176
|
-
"""Cost
|
|
1407
|
+
"""Cost breakdown for a single cart line."""
|
|
1177
1408
|
type CartLineCost {
|
|
1178
|
-
"""
|
|
1409
|
+
"""
|
|
1410
|
+
Strike-through compare-at unit price when the line is on sale. Null when the line is not discounted; show the strike-through only when this is present and greater than `pricePerUnit`.
|
|
1411
|
+
"""
|
|
1179
1412
|
compareAtPricePerUnit: Money
|
|
1180
1413
|
|
|
1181
1414
|
"""Opt-in: compareAtPricePerUnit with conversion transparency."""
|
|
1182
1415
|
compareAtPricePerUnitWithConversion: PriceMoney
|
|
1183
1416
|
|
|
1184
|
-
"""
|
|
1417
|
+
"""
|
|
1418
|
+
Unit price of the line item in the shop base currency. Use this for per-unit display.
|
|
1419
|
+
"""
|
|
1185
1420
|
pricePerUnit: Money!
|
|
1186
1421
|
|
|
1187
1422
|
"""Opt-in: pricePerUnit with conversion transparency."""
|
|
1188
1423
|
pricePerUnitWithConversion: PriceMoney
|
|
1189
1424
|
|
|
1190
|
-
"""
|
|
1425
|
+
"""Line subtotal before line-level discounts (`pricePerUnit` × quantity)."""
|
|
1191
1426
|
subtotal: Money!
|
|
1192
1427
|
|
|
1193
1428
|
"""Opt-in: subtotal with conversion transparency."""
|
|
1194
1429
|
subtotalWithConversion: PriceMoney
|
|
1195
1430
|
|
|
1196
|
-
"""
|
|
1431
|
+
"""
|
|
1432
|
+
Line total after any line-level discounts and surcharges. This is what the buyer pays for the line.
|
|
1433
|
+
"""
|
|
1197
1434
|
total: Money!
|
|
1198
1435
|
|
|
1199
1436
|
"""Opt-in: total with conversion transparency."""
|
|
@@ -1209,35 +1446,45 @@ type CartLineEdge {
|
|
|
1209
1446
|
node: CartLine!
|
|
1210
1447
|
}
|
|
1211
1448
|
|
|
1212
|
-
"""
|
|
1449
|
+
"""
|
|
1450
|
+
A line to add to the cart — variant, quantity and optional custom attributes / configurator selections.
|
|
1451
|
+
"""
|
|
1213
1452
|
input CartLineInput {
|
|
1214
|
-
"""
|
|
1453
|
+
"""
|
|
1454
|
+
Typed configurator selections to apply to this line — validated against the product attribute definition; pricing surcharges are taken from a snapshot at add-to-cart.
|
|
1455
|
+
"""
|
|
1215
1456
|
attributeSelections: [AttributeSelectionInput!]
|
|
1216
1457
|
|
|
1217
|
-
"""
|
|
1458
|
+
"""
|
|
1459
|
+
Free-form custom attributes (line item properties) — e.g. engraving text, gift wrap, B2B PO line reference. Up to 50 entries.
|
|
1460
|
+
"""
|
|
1218
1461
|
attributes: [AttributeInput!]
|
|
1219
1462
|
|
|
1220
|
-
"""Quantity to add"""
|
|
1463
|
+
"""Quantity to add (1 to 9999). Defaults to 1 when omitted."""
|
|
1221
1464
|
quantity: Int! = 1
|
|
1222
1465
|
|
|
1223
|
-
"""
|
|
1466
|
+
"""ID of the product variant being purchased."""
|
|
1224
1467
|
variantId: ID!
|
|
1225
1468
|
}
|
|
1226
1469
|
|
|
1227
|
-
"""
|
|
1470
|
+
"""
|
|
1471
|
+
An update to apply to an existing cart line — new quantity (set to 0 to remove) and optional attribute updates.
|
|
1472
|
+
"""
|
|
1228
1473
|
input CartLineUpdateInput {
|
|
1229
1474
|
"""
|
|
1230
|
-
|
|
1475
|
+
Replacement list of configurator selections. Omit (or pass null) to keep the existing selections; pass an empty array to clear them.
|
|
1231
1476
|
"""
|
|
1232
1477
|
attributeSelections: [AttributeSelectionInput!]
|
|
1233
1478
|
|
|
1234
|
-
"""
|
|
1479
|
+
"""
|
|
1480
|
+
Replacement list of custom attributes on the line. Omit (or pass null) to keep the existing list; pass an empty array to clear it.
|
|
1481
|
+
"""
|
|
1235
1482
|
attributes: [AttributeInput!]
|
|
1236
1483
|
|
|
1237
|
-
"""
|
|
1484
|
+
"""ID of the cart line to update (`CartLine.id`)."""
|
|
1238
1485
|
id: ID!
|
|
1239
1486
|
|
|
1240
|
-
"""New quantity"""
|
|
1487
|
+
"""New quantity. Use 0 to remove the line from the cart."""
|
|
1241
1488
|
quantity: Int!
|
|
1242
1489
|
}
|
|
1243
1490
|
|
|
@@ -1250,130 +1497,142 @@ type CartRecommendations {
|
|
|
1250
1497
|
youMayAlsoLike: [ProductRecommendation!]!
|
|
1251
1498
|
}
|
|
1252
1499
|
|
|
1253
|
-
"""Input
|
|
1500
|
+
"""Input for `cartRemoveGiftCard`."""
|
|
1254
1501
|
input CartRemoveGiftCardInput {
|
|
1255
|
-
"""
|
|
1502
|
+
"""ID of the cart to update."""
|
|
1256
1503
|
cartId: ID!
|
|
1257
1504
|
|
|
1258
|
-
"""
|
|
1259
|
-
|
|
1505
|
+
"""
|
|
1506
|
+
ID of the applied gift card to remove — `CartAppliedGiftCard.id` from the cart.
|
|
1507
|
+
"""
|
|
1508
|
+
giftCardId: ID!
|
|
1260
1509
|
}
|
|
1261
1510
|
|
|
1262
|
-
"""Result of
|
|
1511
|
+
"""Result of `cartRemoveGiftCard`."""
|
|
1263
1512
|
type CartRemoveGiftCardPayload {
|
|
1264
|
-
"""
|
|
1513
|
+
"""The updated cart with the gift card removed from `appliedGiftCards`."""
|
|
1265
1514
|
cart: Cart
|
|
1266
1515
|
|
|
1267
|
-
"""
|
|
1516
|
+
"""
|
|
1517
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1518
|
+
"""
|
|
1268
1519
|
userErrors: [UserError!]!
|
|
1269
1520
|
|
|
1270
|
-
"""Non-fatal
|
|
1521
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1271
1522
|
warnings: [CartWarning!]!
|
|
1272
1523
|
}
|
|
1273
1524
|
|
|
1274
|
-
"""Result of
|
|
1525
|
+
"""Result of `cartRemoveLines`."""
|
|
1275
1526
|
type CartRemoveLinesPayload {
|
|
1276
|
-
"""
|
|
1527
|
+
"""The updated cart on success; null when `userErrors` is non-empty."""
|
|
1277
1528
|
cart: Cart
|
|
1278
1529
|
|
|
1279
1530
|
"""
|
|
1280
|
-
|
|
1531
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1281
1532
|
"""
|
|
1282
1533
|
userErrors: [UserError!]!
|
|
1283
1534
|
|
|
1284
|
-
"""Non-fatal
|
|
1535
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1285
1536
|
warnings: [CartWarning!]!
|
|
1286
1537
|
}
|
|
1287
1538
|
|
|
1288
|
-
"""Input
|
|
1539
|
+
"""Input for `cartSelectPaymentMethod`."""
|
|
1289
1540
|
input CartSelectPaymentMethodInput {
|
|
1290
|
-
"""
|
|
1541
|
+
"""ID of the cart to update."""
|
|
1291
1542
|
cartId: ID!
|
|
1292
1543
|
|
|
1293
|
-
"""
|
|
1544
|
+
"""
|
|
1545
|
+
ID of the chosen payment method (matches a `PaymentMethod.id` from `availablePaymentMethods`).
|
|
1546
|
+
"""
|
|
1294
1547
|
paymentMethodId: ID!
|
|
1295
1548
|
}
|
|
1296
1549
|
|
|
1297
|
-
"""Result of
|
|
1550
|
+
"""Result of `cartSelectPaymentMethod`."""
|
|
1298
1551
|
type CartSelectPaymentMethodPayload {
|
|
1299
|
-
"""
|
|
1552
|
+
"""The updated cart with `selectedPaymentMethod` populated."""
|
|
1300
1553
|
cart: Cart
|
|
1301
1554
|
|
|
1302
1555
|
"""
|
|
1303
|
-
|
|
1556
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `PAYMENT_METHOD_REQUIRED`, `INVALID_PAYMENT_METHOD`, `PAYMENT_METHOD_NOT_SUPPORTED`).
|
|
1304
1557
|
"""
|
|
1305
1558
|
userErrors: [UserError!]!
|
|
1306
1559
|
|
|
1307
|
-
"""Non-fatal
|
|
1560
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1308
1561
|
warnings: [CartWarning!]!
|
|
1309
1562
|
}
|
|
1310
1563
|
|
|
1311
|
-
"""Input
|
|
1564
|
+
"""Input for `cartSelectShippingMethod`."""
|
|
1312
1565
|
input CartSelectShippingMethodInput {
|
|
1313
|
-
"""
|
|
1566
|
+
"""ID of the cart to update."""
|
|
1314
1567
|
cartId: ID!
|
|
1315
1568
|
|
|
1316
1569
|
"""
|
|
1317
|
-
|
|
1570
|
+
ID of the chosen shipping method (matches an `AvailableShippingMethod.id` from `cart.availableShippingMethods`).
|
|
1318
1571
|
"""
|
|
1319
1572
|
shippingMethodId: ID!
|
|
1320
1573
|
}
|
|
1321
1574
|
|
|
1322
|
-
"""Result of
|
|
1575
|
+
"""Result of `cartSelectShippingMethod`."""
|
|
1323
1576
|
type CartSelectShippingMethodPayload {
|
|
1324
|
-
"""
|
|
1577
|
+
"""
|
|
1578
|
+
The updated cart with `selectedShippingMethod` populated and `cost.totalShipping` updated.
|
|
1579
|
+
"""
|
|
1325
1580
|
cart: Cart
|
|
1326
1581
|
|
|
1327
1582
|
"""
|
|
1328
|
-
|
|
1583
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `SHIPPING_METHOD_REQUIRED`, `FORBIDDEN_SHIPPING_METHOD`, `ZIP_CODE_NOT_SUPPORTED`).
|
|
1329
1584
|
"""
|
|
1330
1585
|
userErrors: [UserError!]!
|
|
1331
1586
|
|
|
1332
|
-
"""Non-fatal
|
|
1587
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1333
1588
|
warnings: [CartWarning!]!
|
|
1334
1589
|
}
|
|
1335
1590
|
|
|
1336
|
-
"""Input
|
|
1591
|
+
"""Input for `cartSetBillingAddress`."""
|
|
1337
1592
|
input CartSetBillingAddressInput {
|
|
1338
|
-
"""
|
|
1593
|
+
"""New billing address. The shipping address is left unchanged."""
|
|
1339
1594
|
address: CartAddressInput!
|
|
1340
1595
|
|
|
1341
|
-
"""
|
|
1596
|
+
"""ID of the cart to update."""
|
|
1342
1597
|
cartId: ID!
|
|
1343
1598
|
}
|
|
1344
1599
|
|
|
1345
|
-
"""Result of
|
|
1600
|
+
"""Result of `cartSetBillingAddress`."""
|
|
1346
1601
|
type CartSetBillingAddressPayload {
|
|
1347
|
-
"""
|
|
1602
|
+
"""The updated cart with the new billing address."""
|
|
1348
1603
|
cart: Cart
|
|
1349
1604
|
|
|
1350
|
-
"""
|
|
1605
|
+
"""
|
|
1606
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1607
|
+
"""
|
|
1351
1608
|
userErrors: [UserError!]!
|
|
1352
1609
|
|
|
1353
|
-
"""Non-fatal
|
|
1610
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1354
1611
|
warnings: [CartWarning!]!
|
|
1355
1612
|
}
|
|
1356
1613
|
|
|
1357
|
-
"""Input
|
|
1614
|
+
"""Input for `cartSetShippingAddress`."""
|
|
1358
1615
|
input CartSetShippingAddressInput {
|
|
1359
|
-
"""
|
|
1616
|
+
"""
|
|
1617
|
+
New shipping address. Replaces any previous shipping address on the cart.
|
|
1618
|
+
"""
|
|
1360
1619
|
address: CartAddressInput!
|
|
1361
1620
|
|
|
1362
|
-
"""
|
|
1621
|
+
"""ID of the cart to update."""
|
|
1363
1622
|
cartId: ID!
|
|
1364
1623
|
}
|
|
1365
1624
|
|
|
1366
|
-
"""Result of
|
|
1625
|
+
"""Result of `cartSetShippingAddress`."""
|
|
1367
1626
|
type CartSetShippingAddressPayload {
|
|
1368
|
-
"""
|
|
1627
|
+
"""The updated cart with the new shipping address."""
|
|
1369
1628
|
cart: Cart
|
|
1370
1629
|
|
|
1371
1630
|
"""
|
|
1372
|
-
|
|
1631
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `INVALID_ADDRESS`, `EMAIL_REQUIRED`, `PICKUP_POINT_REQUIRED`).
|
|
1373
1632
|
"""
|
|
1374
1633
|
userErrors: [UserError!]!
|
|
1375
1634
|
|
|
1376
|
-
"""Non-fatal
|
|
1635
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1377
1636
|
warnings: [CartWarning!]!
|
|
1378
1637
|
}
|
|
1379
1638
|
|
|
@@ -1389,123 +1648,140 @@ input CartShippingInput {
|
|
|
1389
1648
|
totalWeight: Int
|
|
1390
1649
|
}
|
|
1391
1650
|
|
|
1392
|
-
"""
|
|
1651
|
+
"""
|
|
1652
|
+
The shipping method currently selected on a cart, with its display label and cost.
|
|
1653
|
+
"""
|
|
1393
1654
|
type CartShippingMethod {
|
|
1394
|
-
"""
|
|
1655
|
+
"""
|
|
1656
|
+
Handle of the selected shipping method — matches the `id` of an `AvailableShippingMethod`.
|
|
1657
|
+
"""
|
|
1395
1658
|
handle: ID!
|
|
1396
1659
|
|
|
1397
|
-
"""
|
|
1660
|
+
"""Cost of the selected shipping method."""
|
|
1398
1661
|
price: Money!
|
|
1399
1662
|
|
|
1400
|
-
"""Display title (e.g. "DPD Standard 2
|
|
1663
|
+
"""Display title for the checkout summary (e.g. "DPD Standard, 2 days")."""
|
|
1401
1664
|
title: String!
|
|
1402
1665
|
}
|
|
1403
1666
|
|
|
1404
|
-
"""Result of
|
|
1667
|
+
"""Result of `cartUpdateAttributes`."""
|
|
1405
1668
|
type CartUpdateAttributesPayload {
|
|
1406
|
-
"""
|
|
1669
|
+
"""The updated cart on success."""
|
|
1407
1670
|
cart: Cart
|
|
1408
1671
|
|
|
1409
1672
|
"""
|
|
1410
|
-
|
|
1673
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `CART_ATTRIBUTES_UPDATE_FAILED`).
|
|
1411
1674
|
"""
|
|
1412
1675
|
userErrors: [UserError!]!
|
|
1413
1676
|
|
|
1414
|
-
"""Non-fatal
|
|
1677
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1415
1678
|
warnings: [CartWarning!]!
|
|
1416
1679
|
}
|
|
1417
1680
|
|
|
1418
|
-
"""Result of
|
|
1681
|
+
"""Result of `cartUpdateBuyerIdentity`."""
|
|
1419
1682
|
type CartUpdateBuyerIdentityPayload {
|
|
1420
|
-
"""
|
|
1683
|
+
"""The updated cart on success."""
|
|
1421
1684
|
cart: Cart
|
|
1422
1685
|
|
|
1423
1686
|
"""
|
|
1424
|
-
|
|
1687
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1425
1688
|
"""
|
|
1426
1689
|
userErrors: [UserError!]!
|
|
1427
1690
|
|
|
1428
|
-
"""Non-fatal
|
|
1691
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1429
1692
|
warnings: [CartWarning!]!
|
|
1430
1693
|
}
|
|
1431
1694
|
|
|
1432
1695
|
"""
|
|
1433
|
-
Input
|
|
1696
|
+
Input for `cartUpdateGiftCardRecipient` — sets the recipient details for a gift card line item.
|
|
1434
1697
|
"""
|
|
1435
1698
|
input CartUpdateGiftCardRecipientInput {
|
|
1436
|
-
"""
|
|
1699
|
+
"""ID of the cart to update."""
|
|
1437
1700
|
cartId: ID!
|
|
1438
1701
|
|
|
1439
|
-
"""
|
|
1702
|
+
"""ID of the cart line; the line must be a gift card SKU."""
|
|
1440
1703
|
lineItemId: ID!
|
|
1441
1704
|
|
|
1442
|
-
"""Personalised message
|
|
1705
|
+
"""Personalised message included with the gift card (max 500 chars)."""
|
|
1443
1706
|
message: String
|
|
1444
1707
|
|
|
1445
|
-
"""Recipient email
|
|
1708
|
+
"""Recipient email — where the gift card code will be delivered."""
|
|
1446
1709
|
recipientEmail: String
|
|
1447
1710
|
|
|
1448
|
-
"""Recipient display name"""
|
|
1711
|
+
"""Recipient display name."""
|
|
1449
1712
|
recipientName: String
|
|
1450
1713
|
}
|
|
1451
1714
|
|
|
1452
|
-
"""Result of
|
|
1715
|
+
"""Result of `cartUpdateGiftCardRecipient`."""
|
|
1453
1716
|
type CartUpdateGiftCardRecipientPayload {
|
|
1454
|
-
"""
|
|
1717
|
+
"""
|
|
1718
|
+
The updated cart with the new gift card recipient info on the target line.
|
|
1719
|
+
"""
|
|
1455
1720
|
cart: Cart
|
|
1456
1721
|
|
|
1457
|
-
"""
|
|
1722
|
+
"""
|
|
1723
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1724
|
+
"""
|
|
1458
1725
|
userErrors: [UserError!]!
|
|
1459
1726
|
|
|
1460
|
-
"""Non-fatal
|
|
1727
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1461
1728
|
warnings: [CartWarning!]!
|
|
1462
1729
|
}
|
|
1463
1730
|
|
|
1464
|
-
"""Result of
|
|
1731
|
+
"""Result of `cartUpdateLines`."""
|
|
1465
1732
|
type CartUpdateLinesPayload {
|
|
1466
|
-
"""
|
|
1733
|
+
"""The updated cart on success; null when `userErrors` is non-empty."""
|
|
1467
1734
|
cart: Cart
|
|
1468
1735
|
|
|
1469
1736
|
"""
|
|
1470
|
-
|
|
1737
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code` (e.g. `CART_NOT_FOUND`, `NOT_ENOUGH_IN_STOCK`).
|
|
1471
1738
|
"""
|
|
1472
1739
|
userErrors: [UserError!]!
|
|
1473
1740
|
|
|
1474
|
-
"""Non-fatal
|
|
1741
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1475
1742
|
warnings: [CartWarning!]!
|
|
1476
1743
|
}
|
|
1477
1744
|
|
|
1478
|
-
"""Result of
|
|
1745
|
+
"""Result of `cartUpdateNote`."""
|
|
1479
1746
|
type CartUpdateNotePayload {
|
|
1480
|
-
"""
|
|
1747
|
+
"""The updated cart on success."""
|
|
1481
1748
|
cart: Cart
|
|
1482
1749
|
|
|
1483
1750
|
"""
|
|
1484
|
-
|
|
1751
|
+
Business / validation errors carrying a stable `CartErrorCode` in `code`.
|
|
1485
1752
|
"""
|
|
1486
1753
|
userErrors: [UserError!]!
|
|
1487
1754
|
|
|
1488
|
-
"""Non-fatal
|
|
1755
|
+
"""Non-fatal advisories — the mutation itself succeeded."""
|
|
1489
1756
|
warnings: [CartWarning!]!
|
|
1490
1757
|
}
|
|
1491
1758
|
|
|
1492
1759
|
"""Cart warning (non-fatal advisory)"""
|
|
1493
1760
|
type CartWarning {
|
|
1494
|
-
"""
|
|
1761
|
+
"""
|
|
1762
|
+
Stable machine-readable warning code. Branch on this for UI behaviour — never on `message` (translated, locale-dependent).
|
|
1763
|
+
"""
|
|
1495
1764
|
code: CartWarningCode!
|
|
1496
1765
|
|
|
1497
|
-
"""
|
|
1766
|
+
"""
|
|
1767
|
+
Human-readable warning message — informational, the mutation itself succeeded.
|
|
1768
|
+
"""
|
|
1498
1769
|
message: String!
|
|
1499
1770
|
|
|
1500
|
-
"""
|
|
1771
|
+
"""
|
|
1772
|
+
What the warning is about — a cart line ID when the warning refers to a specific item, or a field path otherwise.
|
|
1773
|
+
"""
|
|
1501
1774
|
target: String!
|
|
1502
1775
|
}
|
|
1503
1776
|
|
|
1504
|
-
"""
|
|
1777
|
+
"""
|
|
1778
|
+
Stable, machine-readable codes for non-fatal cart warnings. The mutation succeeded; the storefront can surface a toast or stay silent based on the code.
|
|
1779
|
+
"""
|
|
1505
1780
|
enum CartWarningCode {
|
|
1506
1781
|
MERCHANDISE_NOT_AVAILABLE
|
|
1507
1782
|
MERCHANDISE_NOT_ENOUGH_STOCK
|
|
1508
1783
|
PAYMENTS_AMOUNT_REGION_MISMATCH
|
|
1784
|
+
SHIPPING_METHOD_AUTO_CLEARED
|
|
1509
1785
|
}
|
|
1510
1786
|
|
|
1511
1787
|
"""Product category - hierarchical organization"""
|
|
@@ -1516,6 +1792,11 @@ type Category {
|
|
|
1516
1792
|
"""Category description"""
|
|
1517
1793
|
description: String
|
|
1518
1794
|
|
|
1795
|
+
"""
|
|
1796
|
+
URL-friendly handle (e.g. "electronics" -> /categories/electronics). Stable per-shop.
|
|
1797
|
+
"""
|
|
1798
|
+
handle: String!
|
|
1799
|
+
|
|
1519
1800
|
"""Unique identifier"""
|
|
1520
1801
|
id: ID!
|
|
1521
1802
|
|
|
@@ -1543,9 +1824,6 @@ type Category {
|
|
|
1543
1824
|
"""SEO metadata"""
|
|
1544
1825
|
seo: SEO
|
|
1545
1826
|
|
|
1546
|
-
"""URL-friendly slug"""
|
|
1547
|
-
slug: String!
|
|
1548
|
-
|
|
1549
1827
|
"""Sort order within parent"""
|
|
1550
1828
|
sortOrder: Int!
|
|
1551
1829
|
}
|
|
@@ -1582,6 +1860,9 @@ input CategoryFilter {
|
|
|
1582
1860
|
|
|
1583
1861
|
"""Category filter option"""
|
|
1584
1862
|
type CategoryFilterOption {
|
|
1863
|
+
"""URL-friendly handle"""
|
|
1864
|
+
handle: String!
|
|
1865
|
+
|
|
1585
1866
|
"""Category ID"""
|
|
1586
1867
|
id: ID!
|
|
1587
1868
|
|
|
@@ -1596,9 +1877,6 @@ type CategoryFilterOption {
|
|
|
1596
1877
|
|
|
1597
1878
|
"""Number of products in this category"""
|
|
1598
1879
|
productCount: Int!
|
|
1599
|
-
|
|
1600
|
-
"""URL-friendly slug"""
|
|
1601
|
-
slug: String!
|
|
1602
1880
|
}
|
|
1603
1881
|
|
|
1604
1882
|
"""Collection - curated group of products"""
|
|
@@ -1705,7 +1983,7 @@ type Country implements Node {
|
|
|
1705
1983
|
unitSystem: UnitSystem!
|
|
1706
1984
|
}
|
|
1707
1985
|
|
|
1708
|
-
"""ISO 3166-1 alpha-2 country code"""
|
|
1986
|
+
"""ISO 3166-1 alpha-2 country code (2-letter uppercase, e.g. PL, DE, US)."""
|
|
1709
1987
|
enum CountryCode {
|
|
1710
1988
|
AT
|
|
1711
1989
|
AU
|
|
@@ -1773,7 +2051,7 @@ type Currency {
|
|
|
1773
2051
|
symbolPosition: CurrencySymbolPosition!
|
|
1774
2052
|
}
|
|
1775
2053
|
|
|
1776
|
-
"""ISO 4217 currency code"""
|
|
2054
|
+
"""ISO 4217 currency code (3-letter uppercase, e.g. PLN, EUR, USD)."""
|
|
1777
2055
|
enum CurrencyCode {
|
|
1778
2056
|
AED
|
|
1779
2057
|
AFN
|
|
@@ -1987,90 +2265,122 @@ enum CurrencySymbolPosition {
|
|
|
1987
2265
|
BEFORE
|
|
1988
2266
|
}
|
|
1989
2267
|
|
|
1990
|
-
"""
|
|
2268
|
+
"""
|
|
2269
|
+
A registered customer of the shop — identity, profile, B2B fields, saved addresses and order history. Returned by `customer` (currently authenticated) and `customerSignup`.
|
|
2270
|
+
"""
|
|
1991
2271
|
type Customer implements Node {
|
|
1992
|
-
"""
|
|
2272
|
+
"""
|
|
2273
|
+
Saved address book of the customer (Relay Connection). Use to render an address picker on checkout.
|
|
2274
|
+
"""
|
|
1993
2275
|
addresses(after: String, before: String, first: Int, last: Int): MailingAddressConnection!
|
|
1994
2276
|
|
|
1995
2277
|
"""Customer custom field values (post-Opcja A unified custom fields)."""
|
|
1996
2278
|
attributes(namespace: String): [EntityAttributeField!]!
|
|
1997
2279
|
|
|
1998
|
-
"""
|
|
2280
|
+
"""
|
|
2281
|
+
Company name. Populated when `customerType` is COMPANY; null for INDIVIDUAL profiles.
|
|
2282
|
+
"""
|
|
1999
2283
|
companyName: String
|
|
2000
2284
|
|
|
2001
|
-
"""
|
|
2285
|
+
"""When the customer account was created (ISO 8601)."""
|
|
2002
2286
|
createdAt: DateTime!
|
|
2003
2287
|
|
|
2004
|
-
"""
|
|
2288
|
+
"""
|
|
2289
|
+
Profile type — INDIVIDUAL (B2C) or COMPANY (B2B). When COMPANY, the company fields below are populated.
|
|
2290
|
+
"""
|
|
2005
2291
|
customerType: CustomerType!
|
|
2006
2292
|
|
|
2007
|
-
"""
|
|
2293
|
+
"""
|
|
2294
|
+
Default address pre-selected in checkout pickers. Null when the customer has no saved addresses.
|
|
2295
|
+
"""
|
|
2008
2296
|
defaultAddress: MailingAddress
|
|
2009
2297
|
|
|
2010
|
-
"""
|
|
2298
|
+
"""
|
|
2299
|
+
Display name — typically `firstName lastName`, with sensible fallback to email when neither is set. Render directly in the UI.
|
|
2300
|
+
"""
|
|
2011
2301
|
displayName: String!
|
|
2012
2302
|
|
|
2013
|
-
"""
|
|
2303
|
+
"""Customer email address (login identity)."""
|
|
2014
2304
|
email: String!
|
|
2015
2305
|
|
|
2016
|
-
"""
|
|
2306
|
+
"""
|
|
2307
|
+
Marketing consent state (NOT_SUBSCRIBED, PENDING, SUBSCRIBED, UNSUBSCRIBED, REDACTED, INVALID). Drive newsletter UI and opt-in / opt-out controls from this value.
|
|
2308
|
+
"""
|
|
2017
2309
|
emailMarketing: EmailMarketingState!
|
|
2018
2310
|
|
|
2019
|
-
"""
|
|
2311
|
+
"""Customer first name."""
|
|
2020
2312
|
firstName: String
|
|
2021
2313
|
|
|
2022
|
-
"""
|
|
2314
|
+
"""Stable identifier of the customer."""
|
|
2023
2315
|
id: ID!
|
|
2024
2316
|
|
|
2025
|
-
"""
|
|
2317
|
+
"""True when the customer has confirmed ownership of their email address."""
|
|
2026
2318
|
isEmailVerified: Boolean!
|
|
2027
2319
|
|
|
2028
|
-
"""
|
|
2320
|
+
"""Customer last name."""
|
|
2029
2321
|
lastName: String
|
|
2030
2322
|
|
|
2031
|
-
"""
|
|
2323
|
+
"""
|
|
2324
|
+
Total number of orders the customer has placed. Stringified for BigInt safety.
|
|
2325
|
+
"""
|
|
2032
2326
|
orderCount: UnsignedInt64!
|
|
2033
2327
|
|
|
2034
|
-
"""
|
|
2328
|
+
"""
|
|
2329
|
+
Orders placed by this customer (Relay Connection). Use for the order history page.
|
|
2330
|
+
"""
|
|
2035
2331
|
orders(after: String, first: Int = 10): OrderConnection!
|
|
2036
2332
|
|
|
2037
|
-
"""
|
|
2333
|
+
"""Customer phone number (free-form)."""
|
|
2038
2334
|
phone: String
|
|
2039
2335
|
|
|
2040
|
-
"""
|
|
2336
|
+
"""
|
|
2337
|
+
Customer-wide Polish business registry number (REGON, 9 or 14 digits with checksum).
|
|
2338
|
+
"""
|
|
2041
2339
|
regon: String
|
|
2042
2340
|
|
|
2043
|
-
"""
|
|
2341
|
+
"""
|
|
2342
|
+
Merchant-assigned segmentation tags (e.g. "vip", "wholesale", "b2b"). Use to customise UI / pricing rules on the storefront.
|
|
2343
|
+
"""
|
|
2044
2344
|
tags: [String!]!
|
|
2045
2345
|
|
|
2046
|
-
"""
|
|
2346
|
+
"""
|
|
2347
|
+
Customer-wide Polish tax ID (NIP, 10 digits with checksum). Default for new addresses; can be overridden per address via `MailingAddress.taxId`.
|
|
2348
|
+
"""
|
|
2047
2349
|
taxId: String
|
|
2048
2350
|
|
|
2049
|
-
"""
|
|
2351
|
+
"""Lifetime amount the customer has spent (sum of paid orders)."""
|
|
2050
2352
|
totalSpent: Money!
|
|
2051
2353
|
|
|
2052
|
-
"""
|
|
2354
|
+
"""When the customer profile was last modified (ISO 8601)."""
|
|
2053
2355
|
updatedAt: DateTime!
|
|
2054
2356
|
|
|
2055
|
-
"""
|
|
2357
|
+
"""
|
|
2358
|
+
Customer-wide EU VAT number (e.g. `PL1234567890`). Default for new addresses; can be overridden per address via `MailingAddress.vatNumber`.
|
|
2359
|
+
"""
|
|
2056
2360
|
vatNumber: String
|
|
2057
2361
|
}
|
|
2058
2362
|
|
|
2059
|
-
"""
|
|
2363
|
+
"""
|
|
2364
|
+
Access token returned by `customerLogin`, `customerSignup` and `customerRefreshToken`. Send it on subsequent requests in the `Authorization: Bearer <token>` header, or store it in an HTTP-only cookie via the SDK BFF helpers. Never write it to `localStorage`.
|
|
2365
|
+
"""
|
|
2060
2366
|
type CustomerAccessToken {
|
|
2061
|
-
"""
|
|
2367
|
+
"""The access token string (JWT). Treat as sensitive — do not log."""
|
|
2062
2368
|
accessToken: String!
|
|
2063
2369
|
|
|
2064
|
-
"""
|
|
2370
|
+
"""
|
|
2371
|
+
When the token stops being valid (ISO 8601). Call `customerRefreshToken` before this to obtain a fresh one.
|
|
2372
|
+
"""
|
|
2065
2373
|
expiresAt: DateTime!
|
|
2066
2374
|
}
|
|
2067
2375
|
|
|
2068
|
-
"""
|
|
2376
|
+
"""
|
|
2377
|
+
Input for `customerLogin` — exchanges email + password for an access token.
|
|
2378
|
+
"""
|
|
2069
2379
|
input CustomerAccessTokenCreateInput {
|
|
2070
|
-
"""
|
|
2380
|
+
"""Customer email address."""
|
|
2071
2381
|
email: String!
|
|
2072
2382
|
|
|
2073
|
-
"""
|
|
2383
|
+
"""Customer password."""
|
|
2074
2384
|
password: String!
|
|
2075
2385
|
}
|
|
2076
2386
|
|
|
@@ -2101,31 +2411,35 @@ type CustomerAddAddressPayload {
|
|
|
2101
2411
|
userErrors: [UserError!]!
|
|
2102
2412
|
}
|
|
2103
2413
|
|
|
2104
|
-
"""Input for customer
|
|
2414
|
+
"""Input for `customerSignup` — registers a new customer."""
|
|
2105
2415
|
input CustomerCreateInput {
|
|
2106
2416
|
"""
|
|
2107
|
-
|
|
2417
|
+
Marketing opt-in checkbox. true → consent state SUBSCRIBED (single opt-in) unless `marketingOptInLevel: CONFIRMED_OPT_IN` is also sent (then PENDING and the server sends a double-opt-in confirmation email). false / null → no consent change.
|
|
2108
2418
|
"""
|
|
2109
2419
|
acceptsMarketing: Boolean
|
|
2110
2420
|
|
|
2111
|
-
"""
|
|
2421
|
+
"""
|
|
2422
|
+
Email address — must be unique within the shop. Used as the login identity.
|
|
2423
|
+
"""
|
|
2112
2424
|
email: String!
|
|
2113
2425
|
|
|
2114
|
-
"""First name"""
|
|
2426
|
+
"""First name."""
|
|
2115
2427
|
firstName: String
|
|
2116
2428
|
|
|
2117
|
-
"""Last name"""
|
|
2429
|
+
"""Last name."""
|
|
2118
2430
|
lastName: String
|
|
2119
2431
|
|
|
2120
2432
|
"""
|
|
2121
|
-
Opt-in level.
|
|
2433
|
+
Opt-in level. Defaults to SINGLE_OPT_IN (signup itself is treated as email proof). Pass CONFIRMED_OPT_IN to enforce double opt-in — the server then emails a confirmation link and leaves consent in PENDING until the buyer clicks it.
|
|
2122
2434
|
"""
|
|
2123
2435
|
marketingOptInLevel: MarketingOptInLevel
|
|
2124
2436
|
|
|
2125
|
-
"""
|
|
2437
|
+
"""
|
|
2438
|
+
Password (8 to 128 chars). The shop password policy may impose additional strength rules.
|
|
2439
|
+
"""
|
|
2126
2440
|
password: String!
|
|
2127
2441
|
|
|
2128
|
-
"""Phone number"""
|
|
2442
|
+
"""Phone number (free-form)."""
|
|
2129
2443
|
phone: String
|
|
2130
2444
|
}
|
|
2131
2445
|
|
|
@@ -2150,38 +2464,44 @@ type CustomerGroup {
|
|
|
2150
2464
|
taxExempt: Boolean!
|
|
2151
2465
|
}
|
|
2152
2466
|
|
|
2153
|
-
"""Result of
|
|
2467
|
+
"""Result of `customerLogin`."""
|
|
2154
2468
|
type CustomerLoginPayload {
|
|
2155
|
-
"""Access token"""
|
|
2469
|
+
"""Access token on success; null when `userErrors` is non-empty."""
|
|
2156
2470
|
customerAccessToken: CustomerAccessToken
|
|
2157
2471
|
|
|
2158
2472
|
"""
|
|
2159
|
-
|
|
2473
|
+
Errors carrying a stable `CustomerErrorCode` in `code` (e.g. `INVALID_CREDENTIALS`, `CUSTOMER_DISABLED`, `UNIDENTIFIED_CUSTOMER`).
|
|
2160
2474
|
"""
|
|
2161
2475
|
userErrors: [UserError!]!
|
|
2162
2476
|
}
|
|
2163
2477
|
|
|
2164
|
-
"""
|
|
2478
|
+
"""
|
|
2479
|
+
Result of `customerLogout` — invalidates the current access token on the server.
|
|
2480
|
+
"""
|
|
2165
2481
|
type CustomerLogoutPayload {
|
|
2166
|
-
"""
|
|
2482
|
+
"""
|
|
2483
|
+
The token string that was invalidated. Useful for client-side cache clearing.
|
|
2484
|
+
"""
|
|
2167
2485
|
deletedAccessToken: String
|
|
2168
2486
|
|
|
2169
|
-
"""
|
|
2487
|
+
"""ID of the invalidated token record."""
|
|
2170
2488
|
deletedCustomerAccessTokenId: String
|
|
2171
2489
|
|
|
2172
2490
|
"""
|
|
2173
|
-
|
|
2491
|
+
Errors carrying a stable `CustomerErrorCode` in `code` (e.g. `TOKEN_INVALID`, `TOKEN_EXPIRED`).
|
|
2174
2492
|
"""
|
|
2175
2493
|
userErrors: [UserError!]!
|
|
2176
2494
|
}
|
|
2177
2495
|
|
|
2178
|
-
"""
|
|
2496
|
+
"""
|
|
2497
|
+
Result of `customerRefreshToken` — exchanges a valid current token for a fresh one with a later expiry.
|
|
2498
|
+
"""
|
|
2179
2499
|
type CustomerRefreshTokenPayload {
|
|
2180
|
-
"""
|
|
2500
|
+
"""Fresh access token on success; null when `userErrors` is non-empty."""
|
|
2181
2501
|
customerAccessToken: CustomerAccessToken
|
|
2182
2502
|
|
|
2183
2503
|
"""
|
|
2184
|
-
|
|
2504
|
+
Errors carrying a stable `CustomerErrorCode` in `code` (e.g. `TOKEN_INVALID`, `TOKEN_EXPIRED`, `TOKEN_RENEWAL_FAILED`).
|
|
2185
2505
|
"""
|
|
2186
2506
|
userErrors: [UserError!]!
|
|
2187
2507
|
}
|
|
@@ -2230,16 +2550,18 @@ type CustomerSetDefaultAddressPayload {
|
|
|
2230
2550
|
userErrors: [UserError!]!
|
|
2231
2551
|
}
|
|
2232
2552
|
|
|
2233
|
-
"""Result of
|
|
2553
|
+
"""Result of `customerSignup`."""
|
|
2234
2554
|
type CustomerSignupPayload {
|
|
2235
|
-
"""
|
|
2555
|
+
"""The created customer on success; null when `userErrors` is non-empty."""
|
|
2236
2556
|
customer: Customer
|
|
2237
2557
|
|
|
2238
|
-
"""
|
|
2558
|
+
"""
|
|
2559
|
+
Access token for the new customer — saves a follow-up login round-trip.
|
|
2560
|
+
"""
|
|
2239
2561
|
customerAccessToken: CustomerAccessToken
|
|
2240
2562
|
|
|
2241
2563
|
"""
|
|
2242
|
-
|
|
2564
|
+
Validation / business errors carrying a stable `CustomerErrorCode` in `code` (e.g. `TAKEN`, `INVALID`, `PASSWORD_TOO_WEAK`, `BAD_DOMAIN`).
|
|
2243
2565
|
"""
|
|
2244
2566
|
userErrors: [UserError!]!
|
|
2245
2567
|
}
|
|
@@ -2255,7 +2577,9 @@ input CustomerSubscribeToMarketingInput {
|
|
|
2255
2577
|
marketingOptInLevel: MarketingOptInLevel
|
|
2256
2578
|
}
|
|
2257
2579
|
|
|
2258
|
-
"""
|
|
2580
|
+
"""
|
|
2581
|
+
Customer profile type — INDIVIDUAL (B2C buyer) or COMPANY (B2B buyer). Drives which company fields are required and which appear on tax documents.
|
|
2582
|
+
"""
|
|
2259
2583
|
enum CustomerType {
|
|
2260
2584
|
COMPANY
|
|
2261
2585
|
INDIVIDUAL
|
|
@@ -2331,19 +2655,41 @@ Decimal money amount, JSON-serialized as String. Format: "{int}.{dec}" e.g. "10.
|
|
|
2331
2655
|
"""
|
|
2332
2656
|
scalar Decimal
|
|
2333
2657
|
|
|
2334
|
-
"""Estimated delivery
|
|
2658
|
+
"""Estimated delivery window for a shipping method, in business days."""
|
|
2335
2659
|
type DeliveryEstimate {
|
|
2336
|
-
"""
|
|
2660
|
+
"""
|
|
2661
|
+
Pre-formatted human-readable estimate (e.g. "1-2 business days"). Localised; render as-is.
|
|
2662
|
+
"""
|
|
2337
2663
|
description: String
|
|
2338
2664
|
|
|
2339
|
-
"""Maximum delivery days"""
|
|
2665
|
+
"""Maximum expected delivery time in business days."""
|
|
2340
2666
|
maxDays: Int
|
|
2341
2667
|
|
|
2342
|
-
"""Minimum delivery days"""
|
|
2668
|
+
"""Minimum expected delivery time in business days."""
|
|
2343
2669
|
minDays: Int
|
|
2344
2670
|
}
|
|
2345
2671
|
|
|
2346
|
-
"""
|
|
2672
|
+
"""
|
|
2673
|
+
Delivery destination type of a shipping method — signals whether the storefront must collect a pickup point.
|
|
2674
|
+
"""
|
|
2675
|
+
enum DeliveryType {
|
|
2676
|
+
"""Courier delivery to the street address — no pickup point required."""
|
|
2677
|
+
HOME
|
|
2678
|
+
|
|
2679
|
+
"""
|
|
2680
|
+
Automated parcel locker — the buyer collects from a 24/7 self-service machine.
|
|
2681
|
+
"""
|
|
2682
|
+
LOCKER
|
|
2683
|
+
|
|
2684
|
+
"""
|
|
2685
|
+
Staffed pickup point / parcel shop — the buyer collects the parcel at a counter.
|
|
2686
|
+
"""
|
|
2687
|
+
PICKUP_POINT
|
|
2688
|
+
}
|
|
2689
|
+
|
|
2690
|
+
"""
|
|
2691
|
+
Category of discount: `PERCENTAGE` (percent off), `FIXED_AMOUNT` (amount off), `FREE_SHIPPING` (zeroes shipping) or `BUY_X_GET_Y` (item-quantity-based).
|
|
2692
|
+
"""
|
|
2347
2693
|
enum DiscountApplicationType {
|
|
2348
2694
|
BUY_X_GET_Y
|
|
2349
2695
|
FIXED_AMOUNT
|
|
@@ -2351,7 +2697,9 @@ enum DiscountApplicationType {
|
|
|
2351
2697
|
PERCENTAGE
|
|
2352
2698
|
}
|
|
2353
2699
|
|
|
2354
|
-
"""
|
|
2700
|
+
"""
|
|
2701
|
+
Stable reasons why a discount code is not applicable to the current cart / customer.
|
|
2702
|
+
"""
|
|
2355
2703
|
enum DiscountErrorCode {
|
|
2356
2704
|
CUSTOMER_GROUP_NOT_ELIGIBLE
|
|
2357
2705
|
CUSTOMER_NOT_ELIGIBLE
|
|
@@ -2367,42 +2715,58 @@ enum DiscountErrorCode {
|
|
|
2367
2715
|
USAGE_LIMIT_REACHED
|
|
2368
2716
|
}
|
|
2369
2717
|
|
|
2370
|
-
"""
|
|
2718
|
+
"""
|
|
2719
|
+
Details of a discount that the buyer entered and that is currently valid for the cart.
|
|
2720
|
+
"""
|
|
2371
2721
|
type DiscountInfo {
|
|
2372
|
-
"""
|
|
2722
|
+
"""The discount code as entered."""
|
|
2373
2723
|
code: String!
|
|
2374
2724
|
|
|
2375
|
-
"""
|
|
2725
|
+
"""
|
|
2726
|
+
Calculated savings the discount produces against the current cart. Null when the savings cannot be computed without a cart context.
|
|
2727
|
+
"""
|
|
2376
2728
|
discountAmount: Money
|
|
2377
2729
|
|
|
2378
|
-
"""
|
|
2730
|
+
"""Merchant-facing title of the discount (e.g. "Summer sale 10%")."""
|
|
2379
2731
|
title: String!
|
|
2380
2732
|
|
|
2381
|
-
"""
|
|
2733
|
+
"""
|
|
2734
|
+
Category of the discount: `PERCENTAGE`, `FIXED_AMOUNT`, `FREE_SHIPPING` or `BUY_X_GET_Y`. Drives how `value` is interpreted.
|
|
2735
|
+
"""
|
|
2382
2736
|
type: DiscountApplicationType!
|
|
2383
2737
|
|
|
2384
|
-
"""
|
|
2738
|
+
"""
|
|
2739
|
+
Discount value — percent points for `PERCENTAGE`, amount (in major currency units) for `FIXED_AMOUNT`. Ignored for `FREE_SHIPPING` / `BUY_X_GET_Y`.
|
|
2740
|
+
"""
|
|
2385
2741
|
value: Float!
|
|
2386
2742
|
}
|
|
2387
2743
|
|
|
2388
|
-
"""
|
|
2744
|
+
"""
|
|
2745
|
+
Reason why a discount code is not valid for the current cart / customer.
|
|
2746
|
+
"""
|
|
2389
2747
|
type DiscountValidationError {
|
|
2390
|
-
"""
|
|
2748
|
+
"""
|
|
2749
|
+
Stable reason code (e.g. `EXPIRED`, `USAGE_LIMIT_REACHED`, `MINIMUM_ORDER_NOT_MET`). Branch on this for UI behaviour.
|
|
2750
|
+
"""
|
|
2391
2751
|
code: DiscountErrorCode!
|
|
2392
2752
|
|
|
2393
|
-
"""
|
|
2753
|
+
"""Human-readable explanation of the validation failure."""
|
|
2394
2754
|
message: String!
|
|
2395
2755
|
}
|
|
2396
2756
|
|
|
2397
|
-
"""
|
|
2757
|
+
"""
|
|
2758
|
+
Result of validating a discount code against a cart — preview only, no cart side effects.
|
|
2759
|
+
"""
|
|
2398
2760
|
type DiscountValidationResult {
|
|
2399
|
-
"""Discount
|
|
2761
|
+
"""Discount details when `isValid` is true. Null otherwise."""
|
|
2400
2762
|
discount: DiscountInfo
|
|
2401
2763
|
|
|
2402
|
-
"""
|
|
2764
|
+
"""Validation failure details when `isValid` is false. Null otherwise."""
|
|
2403
2765
|
error: DiscountValidationError
|
|
2404
2766
|
|
|
2405
|
-
"""
|
|
2767
|
+
"""
|
|
2768
|
+
True when the code is currently applicable to the cart. When false, see `error` for the reason.
|
|
2769
|
+
"""
|
|
2406
2770
|
isValid: Boolean!
|
|
2407
2771
|
}
|
|
2408
2772
|
|
|
@@ -2418,7 +2782,9 @@ type Domain {
|
|
|
2418
2782
|
url: URL!
|
|
2419
2783
|
}
|
|
2420
2784
|
|
|
2421
|
-
"""
|
|
2785
|
+
"""
|
|
2786
|
+
Email marketing consent state of a customer. NOT_SUBSCRIBED = never opted in. PENDING = single opt-in awaiting double opt-in confirmation. SUBSCRIBED = active opt-in. UNSUBSCRIBED = explicitly opted out. REDACTED = data erased on request. INVALID = email rejected (bounce / spam complaint).
|
|
2787
|
+
"""
|
|
2422
2788
|
enum EmailMarketingState {
|
|
2423
2789
|
INVALID
|
|
2424
2790
|
NOT_SUBSCRIBED
|
|
@@ -2533,24 +2899,32 @@ type FilterValue {
|
|
|
2533
2899
|
swatch: AttributeSwatch
|
|
2534
2900
|
}
|
|
2535
2901
|
|
|
2536
|
-
"""
|
|
2902
|
+
"""
|
|
2903
|
+
Progress towards the free shipping threshold configured by the merchant — drives "Add X more to get free shipping" banners.
|
|
2904
|
+
"""
|
|
2537
2905
|
type FreeShippingProgress {
|
|
2538
|
-
"""Current
|
|
2906
|
+
"""Current qualifying subtotal of the cart."""
|
|
2539
2907
|
currentAmount: Money
|
|
2540
2908
|
|
|
2541
|
-
"""
|
|
2909
|
+
"""
|
|
2910
|
+
Pre-formatted, localised banner message (e.g. "Add 15.00 PLN more for free shipping"). Render as-is when present.
|
|
2911
|
+
"""
|
|
2542
2912
|
message: String
|
|
2543
2913
|
|
|
2544
|
-
"""
|
|
2914
|
+
"""
|
|
2915
|
+
Progress towards the threshold expressed as a percentage between 0 and 100. Use as the value of a progress bar.
|
|
2916
|
+
"""
|
|
2545
2917
|
progressPercent: Float
|
|
2546
2918
|
|
|
2547
|
-
"""
|
|
2919
|
+
"""True when the cart already qualifies for free shipping."""
|
|
2548
2920
|
qualifies: Boolean!
|
|
2549
2921
|
|
|
2550
|
-
"""
|
|
2922
|
+
"""
|
|
2923
|
+
How much more the buyer needs to add to qualify. Zero when `qualifies` is true.
|
|
2924
|
+
"""
|
|
2551
2925
|
remaining: Money
|
|
2552
2926
|
|
|
2553
|
-
"""
|
|
2927
|
+
"""Subtotal threshold that unlocks free shipping."""
|
|
2554
2928
|
threshold: Money
|
|
2555
2929
|
}
|
|
2556
2930
|
|
|
@@ -2662,26 +3036,34 @@ type GiftCardValidation {
|
|
|
2662
3036
|
isValid: Boolean!
|
|
2663
3037
|
}
|
|
2664
3038
|
|
|
2665
|
-
"""
|
|
3039
|
+
"""
|
|
3040
|
+
An image with its URL and presentation metadata. The URL accepts an `Image.url(transform: ...)` argument for responsive resizing / format selection.
|
|
3041
|
+
"""
|
|
2666
3042
|
type Image {
|
|
2667
|
-
"""
|
|
3043
|
+
"""
|
|
3044
|
+
Alt text for accessibility / SEO. Null when the merchant has not provided one.
|
|
3045
|
+
"""
|
|
2668
3046
|
altText: String
|
|
2669
3047
|
|
|
2670
|
-
"""
|
|
3048
|
+
"""Native height of the source image in pixels."""
|
|
2671
3049
|
height: Int
|
|
2672
3050
|
|
|
2673
|
-
"""
|
|
3051
|
+
"""
|
|
3052
|
+
Stable image identifier. Null for ad-hoc images that are not stored as media library entries.
|
|
3053
|
+
"""
|
|
2674
3054
|
id: ID
|
|
2675
3055
|
|
|
2676
3056
|
"""
|
|
2677
|
-
ThumbHash placeholder for progressive loading (base64-encoded, ~40 chars). Decode with thumbHashToDataURL() on the client.
|
|
3057
|
+
ThumbHash placeholder for progressive loading (base64-encoded, ~40 chars). Decode with `thumbHashToDataURL()` on the client to render an instant blurry preview while the full image loads.
|
|
2678
3058
|
"""
|
|
2679
3059
|
thumbhash: String
|
|
2680
3060
|
|
|
2681
|
-
"""
|
|
3061
|
+
"""
|
|
3062
|
+
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.
|
|
3063
|
+
"""
|
|
2682
3064
|
url(transform: ImageTransformInput): String!
|
|
2683
3065
|
|
|
2684
|
-
"""
|
|
3066
|
+
"""Native width of the source image in pixels."""
|
|
2685
3067
|
width: Int
|
|
2686
3068
|
}
|
|
2687
3069
|
|
|
@@ -2761,7 +3143,7 @@ type Language {
|
|
|
2761
3143
|
nativeName: String!
|
|
2762
3144
|
}
|
|
2763
3145
|
|
|
2764
|
-
"""ISO 639-1 language code"""
|
|
3146
|
+
"""ISO 639-1 language code (2-letter uppercase, e.g. PL, EN, DE)."""
|
|
2765
3147
|
enum LanguageCode {
|
|
2766
3148
|
CS
|
|
2767
3149
|
DA
|
|
@@ -3030,6 +3412,9 @@ type LoyaltyReward {
|
|
|
3030
3412
|
"""Discount percentage (if discount type)"""
|
|
3031
3413
|
discountPercent: Float
|
|
3032
3414
|
|
|
3415
|
+
"""URL-friendly handle"""
|
|
3416
|
+
handle: String!
|
|
3417
|
+
|
|
3033
3418
|
"""Reward ID"""
|
|
3034
3419
|
id: ID!
|
|
3035
3420
|
|
|
@@ -3048,9 +3433,6 @@ type LoyaltyReward {
|
|
|
3048
3433
|
"""Redemptions remaining (null = unlimited)"""
|
|
3049
3434
|
redemptionsRemaining: Int
|
|
3050
3435
|
|
|
3051
|
-
"""URL-friendly slug"""
|
|
3052
|
-
slug: String!
|
|
3053
|
-
|
|
3054
3436
|
"""Minimum tier required"""
|
|
3055
3437
|
tierRequired: LoyaltyTier
|
|
3056
3438
|
|
|
@@ -3180,86 +3562,99 @@ enum LoyaltyTransactionType {
|
|
|
3180
3562
|
REFUND_REVERSAL
|
|
3181
3563
|
}
|
|
3182
3564
|
|
|
3183
|
-
"""
|
|
3565
|
+
"""
|
|
3566
|
+
A mailing address — shipping or billing — used on a cart, on the resulting order, or saved in a customer address book. Carries optional B2B fields (`taxId`, `vatNumber`) and an optional `pickupPoint` for parcel locker / collection-point delivery.
|
|
3567
|
+
"""
|
|
3184
3568
|
type MailingAddress implements Node {
|
|
3185
|
-
"""City"""
|
|
3569
|
+
"""City / town."""
|
|
3186
3570
|
city: String
|
|
3187
3571
|
|
|
3188
|
-
"""Company name"""
|
|
3572
|
+
"""Company name (relevant for B2B addresses)."""
|
|
3189
3573
|
company: String
|
|
3190
3574
|
|
|
3191
|
-
"""
|
|
3575
|
+
"""
|
|
3576
|
+
Country name in the request locale (e.g. "Poland", "Polska"). For machine logic use `countryCode`.
|
|
3577
|
+
"""
|
|
3192
3578
|
country: String
|
|
3193
3579
|
|
|
3194
|
-
"""ISO 3166-1 alpha-2 country code"""
|
|
3580
|
+
"""ISO 3166-1 alpha-2 country code (e.g. PL, DE, US)."""
|
|
3195
3581
|
countryCode: CountryCode
|
|
3196
3582
|
|
|
3197
|
-
"""
|
|
3583
|
+
"""Buyer first name."""
|
|
3198
3584
|
firstName: String
|
|
3199
3585
|
|
|
3200
3586
|
"""
|
|
3201
|
-
Country-aware ordered address lines
|
|
3587
|
+
Country-aware ordered address lines, ready to render line by line in UI without manual formatting. The exact line layout depends on country (e.g. PL puts postal code before city, US after state).
|
|
3202
3588
|
"""
|
|
3203
3589
|
formatted: [String!]!
|
|
3204
3590
|
|
|
3205
3591
|
"""
|
|
3206
|
-
Single-line area
|
|
3592
|
+
Single-line summary of the area, e.g. "Warszawa, MZ, Poland". Useful for compact display in lists.
|
|
3207
3593
|
"""
|
|
3208
3594
|
formattedArea: String
|
|
3209
3595
|
|
|
3210
|
-
"""
|
|
3596
|
+
"""Stable identifier of the address."""
|
|
3211
3597
|
id: ID!
|
|
3212
3598
|
|
|
3213
|
-
"""
|
|
3599
|
+
"""True when this is the default address for the owning customer."""
|
|
3214
3600
|
isDefault: Boolean!
|
|
3215
3601
|
|
|
3216
|
-
"""
|
|
3602
|
+
"""Buyer last name."""
|
|
3217
3603
|
lastName: String
|
|
3218
3604
|
|
|
3219
|
-
"""
|
|
3605
|
+
"""Convenience full name (`firstName` + " " + `lastName`)."""
|
|
3220
3606
|
name: String
|
|
3221
3607
|
|
|
3222
|
-
"""Phone number"""
|
|
3608
|
+
"""Phone number associated with the address (free-form)."""
|
|
3223
3609
|
phone: String
|
|
3224
3610
|
|
|
3225
|
-
"""
|
|
3611
|
+
"""
|
|
3612
|
+
Selected pickup point when the shipping method delivers to a parcel locker / collection point instead of the street address. Null for home delivery.
|
|
3613
|
+
"""
|
|
3614
|
+
pickupPoint: PickupPoint
|
|
3615
|
+
|
|
3616
|
+
"""Postal / ZIP code."""
|
|
3226
3617
|
postalCode: String
|
|
3227
3618
|
|
|
3228
|
-
"""State / province"""
|
|
3619
|
+
"""State / province / region name."""
|
|
3229
3620
|
state: String
|
|
3230
3621
|
|
|
3231
|
-
"""State / province code (ISO 3166-2 subdivision)"""
|
|
3622
|
+
"""State / province code (ISO 3166-2 subdivision, e.g. PL-MZ)."""
|
|
3232
3623
|
stateCode: String
|
|
3233
3624
|
|
|
3234
|
-
"""First line of street address"""
|
|
3625
|
+
"""First line of the street address (street and house / building number)."""
|
|
3235
3626
|
streetLine1: String
|
|
3236
3627
|
|
|
3237
|
-
"""
|
|
3628
|
+
"""
|
|
3629
|
+
Second line of the street address (apartment, suite, floor — optional).
|
|
3630
|
+
"""
|
|
3238
3631
|
streetLine2: String
|
|
3239
3632
|
|
|
3240
3633
|
"""
|
|
3241
|
-
Per-address tax ID
|
|
3634
|
+
Per-address buyer tax ID for B2B invoicing — Polish NIP, 10 digits with checksum. Lets B2B buyers invoice different addresses to different legal entities. Independent of `Customer.taxId` (which is the customer-wide default).
|
|
3242
3635
|
"""
|
|
3243
3636
|
taxId: String
|
|
3244
3637
|
|
|
3245
3638
|
"""
|
|
3246
|
-
Per-address EU VAT number (e.g. PL1234567890)
|
|
3639
|
+
Per-address EU VAT number (e.g. `PL1234567890`) for cross-border B2B. Independent of `Customer.vatNumber` (which is the customer-wide default).
|
|
3247
3640
|
"""
|
|
3248
3641
|
vatNumber: String
|
|
3249
3642
|
}
|
|
3250
3643
|
|
|
3251
|
-
"""Paginated mailing addresses (Relay Connection)"""
|
|
3644
|
+
"""Paginated list of mailing addresses (Relay Connection)."""
|
|
3252
3645
|
type MailingAddressConnection {
|
|
3253
|
-
"""
|
|
3646
|
+
"""
|
|
3647
|
+
Edges with the address and its cursor — use for cursor-based pagination.
|
|
3648
|
+
"""
|
|
3254
3649
|
edges: [MailingAddressEdge!]!
|
|
3255
3650
|
|
|
3256
|
-
"""Address nodes
|
|
3651
|
+
"""Address nodes — convenience shortcut for `edges.map(e => e.node)`."""
|
|
3257
3652
|
nodes: [MailingAddress!]!
|
|
3258
3653
|
|
|
3259
|
-
"""
|
|
3654
|
+
"""Cursor pagination info (`hasNextPage`, `endCursor`, etc.)."""
|
|
3260
3655
|
pageInfo: PageInfo!
|
|
3261
3656
|
|
|
3262
|
-
"""Total
|
|
3657
|
+
"""Total number of saved addresses for the customer across all pages."""
|
|
3263
3658
|
totalCount: Int!
|
|
3264
3659
|
}
|
|
3265
3660
|
|
|
@@ -3363,16 +3758,17 @@ type MenuItem {
|
|
|
3363
3758
|
type: MenuItemType!
|
|
3364
3759
|
|
|
3365
3760
|
"""
|
|
3366
|
-
|
|
3761
|
+
Pre-resolved URL path computed server-side using a standard route convention: /categories/<handle>, /collections/<handle>, /pages/<handle>, /products/<handle>, /brands/<handle>. Static types resolve to /, /search, /products, /blog. HTTP returns the manually stored URL. Null when type is a resource link and the underlying resource was deleted. If your storefront uses non-standard routing (e.g. single-segment /<handle>), prefer reading the `resource` field instead and build URLs yourself from `resource.__typename` + `handle`.
|
|
3367
3762
|
"""
|
|
3368
3763
|
url: URL
|
|
3369
3764
|
}
|
|
3370
3765
|
|
|
3371
|
-
union MenuItemResource = Category | Collection | Product | ShopPage
|
|
3766
|
+
union MenuItemResource = Brand | Category | Collection | Product | ShopPage
|
|
3372
3767
|
|
|
3373
3768
|
"""Menu item link type"""
|
|
3374
3769
|
enum MenuItemType {
|
|
3375
3770
|
BLOG
|
|
3771
|
+
BRAND
|
|
3376
3772
|
CATALOG
|
|
3377
3773
|
CATEGORY
|
|
3378
3774
|
COLLECTION
|
|
@@ -3383,66 +3779,96 @@ enum MenuItemType {
|
|
|
3383
3779
|
SEARCH
|
|
3384
3780
|
}
|
|
3385
3781
|
|
|
3386
|
-
"""
|
|
3782
|
+
"""A monetary amount with its ISO 4217 currency code."""
|
|
3387
3783
|
type Money {
|
|
3388
|
-
"""
|
|
3784
|
+
"""
|
|
3785
|
+
Amount as a decimal string in major currency units (e.g. "12.99"). String, not float — preserves precision across locales.
|
|
3786
|
+
"""
|
|
3389
3787
|
amount: Decimal!
|
|
3390
3788
|
|
|
3391
|
-
"""ISO 4217 currency code"""
|
|
3789
|
+
"""ISO 4217 currency code (e.g. PLN, EUR, USD)."""
|
|
3392
3790
|
currencyCode: CurrencyCode!
|
|
3393
3791
|
}
|
|
3394
3792
|
|
|
3395
3793
|
type Mutation {
|
|
3396
|
-
"""
|
|
3794
|
+
"""
|
|
3795
|
+
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).
|
|
3796
|
+
"""
|
|
3397
3797
|
cartAddLines(id: ID!, lines: [CartLineInput!]!): CartAddLinesPayload!
|
|
3398
3798
|
|
|
3399
|
-
"""
|
|
3799
|
+
"""
|
|
3800
|
+
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).
|
|
3801
|
+
"""
|
|
3400
3802
|
cartApplyGiftCard(input: CartApplyGiftCardInput!): CartApplyGiftCardPayload!
|
|
3401
3803
|
|
|
3402
3804
|
"""
|
|
3403
|
-
|
|
3805
|
+
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.
|
|
3404
3806
|
"""
|
|
3405
3807
|
cartComplete(input: CartCompleteInput!): CartCompletePayload!
|
|
3406
3808
|
|
|
3407
|
-
"""
|
|
3809
|
+
"""
|
|
3810
|
+
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.
|
|
3811
|
+
"""
|
|
3408
3812
|
cartCreate(input: CartCreateInput): CartCreatePayload!
|
|
3409
3813
|
|
|
3410
|
-
"""
|
|
3814
|
+
"""
|
|
3815
|
+
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.
|
|
3816
|
+
"""
|
|
3411
3817
|
cartDiscountCodesUpdate(discountCodes: [String!]!, id: ID!): CartDiscountCodesUpdatePayload!
|
|
3412
3818
|
|
|
3413
|
-
"""
|
|
3819
|
+
"""
|
|
3820
|
+
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.
|
|
3821
|
+
"""
|
|
3414
3822
|
cartRemoveGiftCard(input: CartRemoveGiftCardInput!): CartRemoveGiftCardPayload!
|
|
3415
3823
|
|
|
3416
|
-
"""
|
|
3824
|
+
"""
|
|
3825
|
+
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.
|
|
3826
|
+
"""
|
|
3417
3827
|
cartRemoveLines(id: ID!, lineIds: [ID!]!): CartRemoveLinesPayload!
|
|
3418
3828
|
|
|
3419
|
-
"""
|
|
3829
|
+
"""
|
|
3830
|
+
Select a payment method on the cart. Validates against the active shop payment methods and currency. The selection is finalised at `cartComplete`; payment itself is initiated via a separate `paymentCreate` mutation after the order is created.
|
|
3831
|
+
"""
|
|
3420
3832
|
cartSelectPaymentMethod(input: CartSelectPaymentMethodInput!): CartSelectPaymentMethodPayload!
|
|
3421
3833
|
|
|
3422
3834
|
"""
|
|
3423
|
-
Select shipping method on cart (
|
|
3835
|
+
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.
|
|
3424
3836
|
"""
|
|
3425
3837
|
cartSelectShippingMethod(input: CartSelectShippingMethodInput!): CartSelectShippingMethodPayload!
|
|
3426
3838
|
|
|
3427
|
-
"""
|
|
3839
|
+
"""
|
|
3840
|
+
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).
|
|
3841
|
+
"""
|
|
3428
3842
|
cartSetBillingAddress(input: CartSetBillingAddressInput!): CartSetBillingAddressPayload!
|
|
3429
3843
|
|
|
3430
|
-
"""
|
|
3844
|
+
"""
|
|
3845
|
+
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.
|
|
3846
|
+
"""
|
|
3431
3847
|
cartSetShippingAddress(input: CartSetShippingAddressInput!): CartSetShippingAddressPayload!
|
|
3432
3848
|
|
|
3433
|
-
"""
|
|
3849
|
+
"""
|
|
3850
|
+
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`.
|
|
3851
|
+
"""
|
|
3434
3852
|
cartUpdateAttributes(attributes: [CartAttributeInput!]!, id: ID!): CartUpdateAttributesPayload!
|
|
3435
3853
|
|
|
3436
|
-
"""
|
|
3854
|
+
"""
|
|
3855
|
+
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.
|
|
3856
|
+
"""
|
|
3437
3857
|
cartUpdateBuyerIdentity(buyerIdentity: CartBuyerIdentityInput!, id: ID!): CartUpdateBuyerIdentityPayload!
|
|
3438
3858
|
|
|
3439
|
-
"""
|
|
3859
|
+
"""
|
|
3860
|
+
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.
|
|
3861
|
+
"""
|
|
3440
3862
|
cartUpdateGiftCardRecipient(input: CartUpdateGiftCardRecipientInput!): CartUpdateGiftCardRecipientPayload!
|
|
3441
3863
|
|
|
3442
|
-
"""
|
|
3864
|
+
"""
|
|
3865
|
+
Update existing cart lines — quantity, custom attributes and / or configurator selections. Set `quantity` to 0 to remove a line. Address lines by `CartLine.id`.
|
|
3866
|
+
"""
|
|
3443
3867
|
cartUpdateLines(id: ID!, lines: [CartLineUpdateInput!]!): CartUpdateLinesPayload!
|
|
3444
3868
|
|
|
3445
|
-
"""
|
|
3869
|
+
"""
|
|
3870
|
+
Set or replace the buyer note on the cart (free-form, up to 1000 chars). Surfaced to the merchant on the resulting order.
|
|
3871
|
+
"""
|
|
3446
3872
|
cartUpdateNote(id: ID!, note: String!): CartUpdateNotePayload!
|
|
3447
3873
|
|
|
3448
3874
|
"""
|
|
@@ -3458,13 +3884,19 @@ type Mutation {
|
|
|
3458
3884
|
"""Add customer address"""
|
|
3459
3885
|
customerAddAddress(address: MailingAddressInput!): CustomerAddAddressPayload!
|
|
3460
3886
|
|
|
3461
|
-
"""
|
|
3887
|
+
"""
|
|
3888
|
+
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).
|
|
3889
|
+
"""
|
|
3462
3890
|
customerLogin(input: CustomerAccessTokenCreateInput!): CustomerLoginPayload!
|
|
3463
3891
|
|
|
3464
|
-
"""
|
|
3892
|
+
"""
|
|
3893
|
+
Sign the current customer out. Invalidates the access token on the server; the SDK BFF auth helpers additionally clear the HTTP-only cookie.
|
|
3894
|
+
"""
|
|
3465
3895
|
customerLogout: CustomerLogoutPayload!
|
|
3466
3896
|
|
|
3467
|
-
"""
|
|
3897
|
+
"""
|
|
3898
|
+
Exchange a still-valid access token for a fresh one with a later expiry. Call before `expiresAt` to keep the session alive without prompting the buyer to log in again.
|
|
3899
|
+
"""
|
|
3468
3900
|
customerRefreshToken: CustomerRefreshTokenPayload!
|
|
3469
3901
|
|
|
3470
3902
|
"""Remove customer address"""
|
|
@@ -3484,7 +3916,9 @@ type Mutation {
|
|
|
3484
3916
|
"""Set default address"""
|
|
3485
3917
|
customerSetDefaultAddress(addressId: ID!): CustomerSetDefaultAddressPayload!
|
|
3486
3918
|
|
|
3487
|
-
"""
|
|
3919
|
+
"""
|
|
3920
|
+
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.
|
|
3921
|
+
"""
|
|
3488
3922
|
customerSignup(input: CustomerCreateInput!): CustomerSignupPayload!
|
|
3489
3923
|
|
|
3490
3924
|
"""Subscribe an email to the newsletter (guest-friendly, double opt-in)."""
|
|
@@ -3506,7 +3940,7 @@ type Mutation {
|
|
|
3506
3940
|
loyaltyRedeemReward(input: RedeemRewardInput!): RedeemRewardPayload!
|
|
3507
3941
|
|
|
3508
3942
|
"""
|
|
3509
|
-
Initiate a payment session for an order
|
|
3943
|
+
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.
|
|
3510
3944
|
"""
|
|
3511
3945
|
paymentCreate(input: PaymentCreateInput!): PaymentCreatePayload!
|
|
3512
3946
|
|
|
@@ -3564,64 +3998,88 @@ enum NodeType {
|
|
|
3564
3998
|
PRODUCT_VARIANT
|
|
3565
3999
|
}
|
|
3566
4000
|
|
|
3567
|
-
"""
|
|
4001
|
+
"""
|
|
4002
|
+
A buyer order — the result of completing a cart. Carries totals, status, addresses, line items and the signals needed to drive payment (`canCreatePayment`, `paymentMethodType`) and a guest confirmation page (`accessToken`).
|
|
4003
|
+
"""
|
|
3568
4004
|
type Order implements Node {
|
|
3569
4005
|
"""
|
|
3570
|
-
Opaque access token (UUID v4)
|
|
4006
|
+
Opaque access token (UUID v4) that grants read access to the order summary without an authenticated session — pass it to the `orderByToken` query to build a guest confirmation page. Persistent for the lifetime of the order so it can be re-used in forwarded receipts. Store on the storefront in an HTTP-only cookie or `sessionStorage`; never in `localStorage`. As defense-in-depth, `orderByToken` also accepts an optional email guard to limit the blast radius if the token leaks.
|
|
3571
4007
|
"""
|
|
3572
4008
|
accessToken: String!
|
|
3573
4009
|
|
|
3574
4010
|
"""Order custom field values (post-Opcja A unified custom fields)."""
|
|
3575
4011
|
attributes(namespace: String): [EntityAttributeField!]!
|
|
3576
4012
|
|
|
3577
|
-
"""
|
|
4013
|
+
"""
|
|
4014
|
+
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.
|
|
4015
|
+
"""
|
|
3578
4016
|
canCreatePayment: Boolean!
|
|
3579
4017
|
|
|
3580
|
-
"""When order was cancelled"""
|
|
4018
|
+
"""When the order was cancelled. Null when not cancelled."""
|
|
3581
4019
|
cancelledAt: DateTime
|
|
3582
4020
|
|
|
3583
|
-
"""
|
|
4021
|
+
"""
|
|
4022
|
+
When the order was confirmed (e.g. payment authorised / approved). Null until confirmation.
|
|
4023
|
+
"""
|
|
3584
4024
|
confirmedAt: DateTime
|
|
3585
4025
|
|
|
3586
|
-
"""
|
|
4026
|
+
"""
|
|
4027
|
+
When the order expired (e.g. pending payment timed out). Null when not expired.
|
|
4028
|
+
"""
|
|
3587
4029
|
expiredAt: DateTime
|
|
3588
4030
|
|
|
3589
|
-
"""
|
|
4031
|
+
"""
|
|
4032
|
+
Fulfillment progress (UNFULFILLED, PARTIALLY_FULFILLED, FULFILLED, IN_TRANSIT, DELIVERED, PARTIALLY_RETURNED, RETURNED, LOST).
|
|
4033
|
+
"""
|
|
3590
4034
|
fulfillmentStatus: OrderFulfillmentStatus!
|
|
3591
4035
|
|
|
3592
|
-
"""
|
|
4036
|
+
"""Stable identifier of the order."""
|
|
3593
4037
|
id: ID!
|
|
3594
4038
|
|
|
3595
|
-
"""
|
|
4039
|
+
"""
|
|
4040
|
+
Number of line items on the order (sum of distinct lines, not quantities).
|
|
4041
|
+
"""
|
|
3596
4042
|
itemCount: Int!
|
|
3597
4043
|
|
|
3598
4044
|
"""
|
|
3599
|
-
|
|
4045
|
+
Line items on the order (paginated, Relay Connection). Use to render the order summary on the confirmation or order detail page.
|
|
3600
4046
|
"""
|
|
3601
4047
|
lineItems(after: String, first: Int = 10): OrderLineItemConnection!
|
|
3602
4048
|
|
|
3603
|
-
"""
|
|
4049
|
+
"""
|
|
4050
|
+
Human-readable order number shown to the buyer and the merchant (e.g. "1042"). Distinct from `id`.
|
|
4051
|
+
"""
|
|
3604
4052
|
orderNumber: String!
|
|
3605
4053
|
|
|
3606
|
-
"""
|
|
4054
|
+
"""
|
|
4055
|
+
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).
|
|
4056
|
+
"""
|
|
3607
4057
|
paymentMethodType: PaymentMethodType!
|
|
3608
4058
|
|
|
3609
|
-
"""
|
|
4059
|
+
"""
|
|
4060
|
+
Payment progress (UNPAID, PENDING, AUTHORIZED, PAID, PARTIALLY_PAID, PARTIALLY_REFUNDED, REFUNDED, FAILED, CHARGEBACK, VOIDED, REFUND_PENDING).
|
|
4061
|
+
"""
|
|
3610
4062
|
paymentStatus: OrderPaymentStatus!
|
|
3611
4063
|
|
|
3612
|
-
"""
|
|
4064
|
+
"""
|
|
4065
|
+
When the order was placed (ISO 8601). Use as the canonical "order date" in receipts.
|
|
4066
|
+
"""
|
|
3613
4067
|
processedAt: DateTime!
|
|
3614
4068
|
|
|
3615
4069
|
"""Order shipments"""
|
|
3616
4070
|
shipments: [Shipment!]!
|
|
3617
4071
|
|
|
3618
|
-
"""
|
|
4072
|
+
"""
|
|
4073
|
+
Shipping address snapshot at the moment the order was placed. Null for digital-only orders.
|
|
4074
|
+
"""
|
|
3619
4075
|
shippingAddress: MailingAddress
|
|
3620
4076
|
|
|
3621
|
-
"""
|
|
4077
|
+
"""
|
|
4078
|
+
High-level lifecycle status of the order (DRAFT, PENDING, CONFIRMED, PROCESSING, ON_HOLD, COMPLETED, CANCELLED, EXPIRED).
|
|
4079
|
+
"""
|
|
3622
4080
|
status: StorefrontOrderStatus!
|
|
3623
4081
|
|
|
3624
|
-
"""Cost
|
|
4082
|
+
"""Cost breakdown on the order (subtotal, total, tax, shipping)."""
|
|
3625
4083
|
totals: OrderTotals!
|
|
3626
4084
|
}
|
|
3627
4085
|
|
|
@@ -3649,7 +4107,9 @@ type OrderEdge {
|
|
|
3649
4107
|
node: Order!
|
|
3650
4108
|
}
|
|
3651
4109
|
|
|
3652
|
-
"""
|
|
4110
|
+
"""
|
|
4111
|
+
Fulfillment progress of an order. UNFULFILLED → PARTIALLY_FULFILLED → FULFILLED (items shipped) → IN_TRANSIT → DELIVERED. PARTIALLY_RETURNED / RETURNED reflect post-delivery returns; LOST marks a parcel that never reached the buyer.
|
|
4112
|
+
"""
|
|
3653
4113
|
enum OrderFulfillmentStatus {
|
|
3654
4114
|
DELIVERED
|
|
3655
4115
|
FULFILLED
|
|
@@ -3724,7 +4184,9 @@ type OrderLineItemEdge {
|
|
|
3724
4184
|
node: OrderLineItem!
|
|
3725
4185
|
}
|
|
3726
4186
|
|
|
3727
|
-
"""
|
|
4187
|
+
"""
|
|
4188
|
+
Payment status of an order. UNPAID = no payment recorded yet; PENDING = initiated, awaiting confirmation; AUTHORIZED = held but not captured; PAID = fully paid; PARTIALLY_PAID / PARTIALLY_REFUNDED = intermediate states; REFUNDED = fully refunded; FAILED, CHARGEBACK, VOIDED, REFUND_PENDING = terminal / in-flight unpaid states.
|
|
4189
|
+
"""
|
|
3728
4190
|
enum OrderPaymentStatus {
|
|
3729
4191
|
AUTHORIZED
|
|
3730
4192
|
CHARGEBACK
|
|
@@ -3739,18 +4201,26 @@ enum OrderPaymentStatus {
|
|
|
3739
4201
|
VOIDED
|
|
3740
4202
|
}
|
|
3741
4203
|
|
|
3742
|
-
"""
|
|
4204
|
+
"""
|
|
4205
|
+
Cost totals on an order — symmetric with `CartCost` so the confirmation page renders the same breakdown the buyer saw at checkout.
|
|
4206
|
+
"""
|
|
3743
4207
|
type OrderTotals {
|
|
3744
|
-
"""Order subtotal
|
|
4208
|
+
"""Order subtotal — items only, before tax, shipping and discounts."""
|
|
3745
4209
|
subtotal: Money!
|
|
3746
4210
|
|
|
3747
|
-
"""
|
|
4211
|
+
"""
|
|
4212
|
+
Grand total the buyer was charged — includes taxes, shipping and discounts.
|
|
4213
|
+
"""
|
|
3748
4214
|
total: Money!
|
|
3749
4215
|
|
|
3750
|
-
"""
|
|
4216
|
+
"""
|
|
4217
|
+
Total shipping cost on the order. Null for digital-only orders that did not go through shipping.
|
|
4218
|
+
"""
|
|
3751
4219
|
totalShipping: Money
|
|
3752
4220
|
|
|
3753
|
-
"""
|
|
4221
|
+
"""
|
|
4222
|
+
Total tax across the order. Null when the order has no taxable component.
|
|
4223
|
+
"""
|
|
3754
4224
|
totalTax: Money
|
|
3755
4225
|
}
|
|
3756
4226
|
|
|
@@ -3769,18 +4239,26 @@ input PackageDimensionsInput {
|
|
|
3769
4239
|
width: Int
|
|
3770
4240
|
}
|
|
3771
4241
|
|
|
3772
|
-
"""
|
|
4242
|
+
"""Cursor pagination info for a Relay Connection."""
|
|
3773
4243
|
type PageInfo {
|
|
3774
|
-
"""
|
|
4244
|
+
"""
|
|
4245
|
+
Cursor of the last item on the current page — opaque, base64-encoded. Echo as the `after` argument to fetch the next page.
|
|
4246
|
+
"""
|
|
3775
4247
|
endCursor: String
|
|
3776
4248
|
|
|
3777
|
-
"""
|
|
4249
|
+
"""
|
|
4250
|
+
True when more pages follow this one. Use to decide whether to enable a "load more" / next page action.
|
|
4251
|
+
"""
|
|
3778
4252
|
hasNextPage: Boolean!
|
|
3779
4253
|
|
|
3780
|
-
"""
|
|
4254
|
+
"""
|
|
4255
|
+
True when pages exist before this one (relevant for bidirectional pagination).
|
|
4256
|
+
"""
|
|
3781
4257
|
hasPreviousPage: Boolean!
|
|
3782
4258
|
|
|
3783
|
-
"""
|
|
4259
|
+
"""
|
|
4260
|
+
Cursor of the first item on the current page — opaque, base64-encoded. Echo as the `before` argument to paginate backwards.
|
|
4261
|
+
"""
|
|
3784
4262
|
startCursor: String
|
|
3785
4263
|
}
|
|
3786
4264
|
|
|
@@ -3791,33 +4269,39 @@ enum PageSortKeys {
|
|
|
3791
4269
|
UPDATED_AT
|
|
3792
4270
|
}
|
|
3793
4271
|
|
|
3794
|
-
"""
|
|
4272
|
+
"""
|
|
4273
|
+
Input for `paymentCreate` — initiates a payment for an order created by `cartComplete`. Idempotent on the order: a second call returns the existing still-valid session.
|
|
4274
|
+
"""
|
|
3795
4275
|
input PaymentCreateInput {
|
|
3796
4276
|
"""
|
|
3797
|
-
URL
|
|
4277
|
+
URL the gateway returns the buyer to after they cancel the payment. Must point to a verified domain of the shop.
|
|
3798
4278
|
"""
|
|
3799
4279
|
cancelUrl: URL
|
|
3800
4280
|
|
|
3801
|
-
"""ID
|
|
4281
|
+
"""ID of the order to pay for — `cartComplete.order.id`."""
|
|
3802
4282
|
orderId: ID!
|
|
3803
4283
|
|
|
3804
4284
|
"""
|
|
3805
|
-
URL
|
|
4285
|
+
URL the gateway returns the buyer to after a successful payment. Must point to a verified domain of the shop; rejected with `RETURN_URL_INVALID` otherwise.
|
|
3806
4286
|
"""
|
|
3807
4287
|
returnUrl: URL
|
|
3808
4288
|
}
|
|
3809
4289
|
|
|
3810
|
-
"""
|
|
4290
|
+
"""Result of `paymentCreate`."""
|
|
3811
4291
|
type PaymentCreatePayload {
|
|
3812
|
-
"""
|
|
4292
|
+
"""
|
|
4293
|
+
The created (or reused) payment session on success; null when `userErrors` is non-empty.
|
|
4294
|
+
"""
|
|
3813
4295
|
payment: PaymentSession
|
|
3814
4296
|
|
|
3815
|
-
"""
|
|
4297
|
+
"""
|
|
4298
|
+
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`).
|
|
4299
|
+
"""
|
|
3816
4300
|
userErrors: [UserError!]!
|
|
3817
4301
|
}
|
|
3818
4302
|
|
|
3819
4303
|
"""
|
|
3820
|
-
|
|
4304
|
+
How the storefront should launch the payment after `paymentCreate`. ONLINE_REDIRECT = redirect the browser to `redirectUrl`. ONLINE_EMBEDDED = render an in-page widget using `clientSecret`. INSTANT_DIRECT = the payment is already settled, check `status`. OFFLINE_MANUAL never appears here — when the order uses an offline method `canCreatePayment` is false and `paymentCreate` is not called.
|
|
3821
4305
|
"""
|
|
3822
4306
|
enum PaymentInitiationFlow {
|
|
3823
4307
|
INSTANT_DIRECT
|
|
@@ -3826,37 +4310,59 @@ enum PaymentInitiationFlow {
|
|
|
3826
4310
|
ONLINE_REDIRECT
|
|
3827
4311
|
}
|
|
3828
4312
|
|
|
3829
|
-
"""
|
|
4313
|
+
"""
|
|
4314
|
+
A payment method offered to the buyer at checkout — what to render in the payment picker and pass to `cartSelectPaymentMethod`.
|
|
4315
|
+
"""
|
|
3830
4316
|
type PaymentMethod {
|
|
3831
|
-
"""
|
|
4317
|
+
"""
|
|
4318
|
+
Optional buyer-facing description shown under the name (e.g. "Pay with your bank app").
|
|
4319
|
+
"""
|
|
3832
4320
|
description: String
|
|
3833
4321
|
|
|
3834
|
-
"""
|
|
4322
|
+
"""
|
|
4323
|
+
Optional icon URL configured by the merchant. Use as the method tile artwork.
|
|
4324
|
+
"""
|
|
3835
4325
|
icon: String
|
|
3836
4326
|
|
|
3837
|
-
"""
|
|
4327
|
+
"""
|
|
4328
|
+
Stable ID of the payment method. Pass to `cartSelectPaymentMethod` to select it.
|
|
4329
|
+
"""
|
|
3838
4330
|
id: ID!
|
|
3839
4331
|
|
|
3840
|
-
"""
|
|
4332
|
+
"""
|
|
4333
|
+
True when the merchant has marked this method as the default. Pre-select it in the picker.
|
|
4334
|
+
"""
|
|
3841
4335
|
isDefault: Boolean!
|
|
3842
4336
|
|
|
3843
|
-
"""
|
|
4337
|
+
"""
|
|
4338
|
+
Display name configured by the merchant (e.g. "BLIK", "Credit card", "Cash on delivery").
|
|
4339
|
+
"""
|
|
3844
4340
|
name: String!
|
|
3845
4341
|
|
|
3846
|
-
"""
|
|
4342
|
+
"""
|
|
4343
|
+
Merchant-configured display position — lower values come first in the picker.
|
|
4344
|
+
"""
|
|
3847
4345
|
position: Float!
|
|
3848
4346
|
|
|
3849
|
-
"""
|
|
4347
|
+
"""
|
|
4348
|
+
Provider code (e.g. "payu", "stripe", "p24", "cash_on_delivery"). Identifies the integration behind the method; do not branch UI on it — use `type` instead.
|
|
4349
|
+
"""
|
|
3850
4350
|
provider: String!
|
|
3851
4351
|
|
|
3852
|
-
"""
|
|
4352
|
+
"""
|
|
4353
|
+
ISO 4217 currency codes the method accepts. Null when the method accepts the shop currency without restriction.
|
|
4354
|
+
"""
|
|
3853
4355
|
supportedCurrencies: [String!]
|
|
3854
4356
|
|
|
3855
|
-
"""
|
|
4357
|
+
"""
|
|
4358
|
+
Category of the method (CARD, BLIK, BANK_TRANSFER, CASH_ON_DELIVERY, OTHER). Drives iconography and copy.
|
|
4359
|
+
"""
|
|
3856
4360
|
type: PaymentMethodType!
|
|
3857
4361
|
}
|
|
3858
4362
|
|
|
3859
|
-
"""
|
|
4363
|
+
"""
|
|
4364
|
+
Category of a payment method: CARD, BLIK, BANK_TRANSFER, CASH_ON_DELIVERY or OTHER. Drives iconography and copy in the payment picker; do not branch on `provider` directly.
|
|
4365
|
+
"""
|
|
3860
4366
|
enum PaymentMethodType {
|
|
3861
4367
|
BANK_TRANSFER
|
|
3862
4368
|
BLIK
|
|
@@ -3865,30 +4371,44 @@ enum PaymentMethodType {
|
|
|
3865
4371
|
OTHER
|
|
3866
4372
|
}
|
|
3867
4373
|
|
|
3868
|
-
"""
|
|
4374
|
+
"""
|
|
4375
|
+
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`.
|
|
4376
|
+
"""
|
|
3869
4377
|
type PaymentSession {
|
|
3870
|
-
"""
|
|
4378
|
+
"""
|
|
4379
|
+
Client secret / token for the in-page payment widget. Populated only when `flow` is ONLINE_EMBEDDED. Treat as sensitive — do not log.
|
|
4380
|
+
"""
|
|
3871
4381
|
clientSecret: String
|
|
3872
4382
|
|
|
3873
|
-
"""
|
|
4383
|
+
"""
|
|
4384
|
+
When the `redirectUrl` / `clientSecret` stops being usable (ISO 8601). The storefront should call `paymentCreate` again to get a fresh session after this time.
|
|
4385
|
+
"""
|
|
3874
4386
|
expiresAt: String
|
|
3875
4387
|
|
|
3876
|
-
"""
|
|
4388
|
+
"""
|
|
4389
|
+
How the storefront should launch the payment — branch on this with `switch(flow)`.
|
|
4390
|
+
"""
|
|
3877
4391
|
flow: PaymentInitiationFlow!
|
|
3878
4392
|
|
|
3879
|
-
"""
|
|
4393
|
+
"""Stable identifier of the payment record."""
|
|
3880
4394
|
id: ID!
|
|
3881
4395
|
|
|
3882
|
-
"""ID
|
|
4396
|
+
"""ID of the order this payment is for."""
|
|
3883
4397
|
orderId: ID!
|
|
3884
4398
|
|
|
3885
|
-
"""
|
|
4399
|
+
"""
|
|
4400
|
+
Provider code of the integration behind the session (e.g. "PAYU", "STRIPE"). Use for analytics; do not branch UI on it — use `flow` and the order `paymentMethodType` instead.
|
|
4401
|
+
"""
|
|
3886
4402
|
provider: String!
|
|
3887
4403
|
|
|
3888
|
-
"""
|
|
4404
|
+
"""
|
|
4405
|
+
Hosted-gateway URL to redirect the buyer to. Populated only when `flow` is ONLINE_REDIRECT.
|
|
4406
|
+
"""
|
|
3889
4407
|
redirectUrl: URL
|
|
3890
4408
|
|
|
3891
|
-
"""
|
|
4409
|
+
"""
|
|
4410
|
+
Payment status of the order at the time the session was created. For INSTANT_DIRECT, this already reflects the settled outcome.
|
|
4411
|
+
"""
|
|
3892
4412
|
status: OrderPaymentStatus!
|
|
3893
4413
|
}
|
|
3894
4414
|
|
|
@@ -3909,6 +4429,46 @@ type PaymentSettings {
|
|
|
3909
4429
|
paymentProviders: [String!]!
|
|
3910
4430
|
}
|
|
3911
4431
|
|
|
4432
|
+
"""
|
|
4433
|
+
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.
|
|
4434
|
+
"""
|
|
4435
|
+
type PickupPoint {
|
|
4436
|
+
"""
|
|
4437
|
+
Point address as a single human-readable line — show alongside the name on the confirmation page.
|
|
4438
|
+
"""
|
|
4439
|
+
address: String
|
|
4440
|
+
|
|
4441
|
+
"""Display name of the point as shown in the carrier widget."""
|
|
4442
|
+
name: String
|
|
4443
|
+
|
|
4444
|
+
"""
|
|
4445
|
+
Identifier of the point within the provider network (e.g. an InPost parcel locker code such as `KRA010`). Pass back to `PickupPointInput.pointId` when attaching the same point to another address.
|
|
4446
|
+
"""
|
|
4447
|
+
pointId: String!
|
|
4448
|
+
|
|
4449
|
+
"""
|
|
4450
|
+
Carrier network code that owns the point (e.g. `inpost`, `orlen`, `dpd`).
|
|
4451
|
+
"""
|
|
4452
|
+
provider: String!
|
|
4453
|
+
}
|
|
4454
|
+
|
|
4455
|
+
"""
|
|
4456
|
+
Pickup point (parcel locker / collection point) for a cart shipping address
|
|
4457
|
+
"""
|
|
4458
|
+
input PickupPointInput {
|
|
4459
|
+
"""Point address as a single line"""
|
|
4460
|
+
address: String
|
|
4461
|
+
|
|
4462
|
+
"""Human-readable point name"""
|
|
4463
|
+
name: String
|
|
4464
|
+
|
|
4465
|
+
"""Point identifier within the provider network"""
|
|
4466
|
+
pointId: String!
|
|
4467
|
+
|
|
4468
|
+
"""Courier network code (e.g. inpost, orlen, dpd)"""
|
|
4469
|
+
provider: String!
|
|
4470
|
+
}
|
|
4471
|
+
|
|
3912
4472
|
"""Points estimate for an order"""
|
|
3913
4473
|
type PointsEstimate {
|
|
3914
4474
|
"""Base points to earn"""
|
|
@@ -4009,7 +4569,7 @@ type Product implements Node {
|
|
|
4009
4569
|
"""
|
|
4010
4570
|
Canonical brand entity (Faza 3, 2026-05-17). Resolved via DataLoader (N+1 safe dla list queries). Null gdy product nie ma przypisanego brand_id.
|
|
4011
4571
|
"""
|
|
4012
|
-
brand:
|
|
4572
|
+
brand: Brand
|
|
4013
4573
|
|
|
4014
4574
|
"""
|
|
4015
4575
|
Wszystkie kategorie do których produkt należy (M2M przez ProductCategory junction). Posortowane po junction.sortOrder ASC. Empty list gdy produkt nie jest w żadnej kategorii.
|
|
@@ -4123,6 +4683,9 @@ type ProductAttributeDefinition {
|
|
|
4123
4683
|
"""Filling mode — MERCHANT | CUSTOMER | BOTH"""
|
|
4124
4684
|
fillingMode: AttributeFillingMode!
|
|
4125
4685
|
|
|
4686
|
+
"""URL-friendly handle"""
|
|
4687
|
+
handle: String!
|
|
4688
|
+
|
|
4126
4689
|
"""Definition ID"""
|
|
4127
4690
|
id: ID!
|
|
4128
4691
|
|
|
@@ -4149,9 +4712,6 @@ type ProductAttributeDefinition {
|
|
|
4149
4712
|
"""
|
|
4150
4713
|
scopeProductId: ID
|
|
4151
4714
|
|
|
4152
|
-
"""URL-friendly slug"""
|
|
4153
|
-
slug: String!
|
|
4154
|
-
|
|
4155
4715
|
"""Tax class ID; null = inherit from variant"""
|
|
4156
4716
|
taxClassId: ID
|
|
4157
4717
|
|
|
@@ -4424,7 +4984,9 @@ enum ProductSortKeys {
|
|
|
4424
4984
|
VENDOR
|
|
4425
4985
|
}
|
|
4426
4986
|
|
|
4427
|
-
"""
|
|
4987
|
+
"""
|
|
4988
|
+
Product type classification. PHYSICAL = ships to an address (requires the shipping step). DIGITAL = delivered electronically. SERVICE = booking / appointment, no shipment. SUBSCRIPTION = recurring billing. GIFT_CARD = issues a redeemable card on completion.
|
|
4989
|
+
"""
|
|
4428
4990
|
enum ProductTypeEnum {
|
|
4429
4991
|
DIGITAL
|
|
4430
4992
|
GIFT_CARD
|
|
@@ -4433,49 +4995,69 @@ enum ProductTypeEnum {
|
|
|
4433
4995
|
SUBSCRIPTION
|
|
4434
4996
|
}
|
|
4435
4997
|
|
|
4436
|
-
"""
|
|
4998
|
+
"""
|
|
4999
|
+
A purchasable unit of a product — one variant out of the product variants list, identified by its `id` and described by its options.
|
|
5000
|
+
"""
|
|
4437
5001
|
type ProductVariant {
|
|
4438
5002
|
"""Variant custom field values (post-Opcja A unified custom fields)."""
|
|
4439
5003
|
attributes(namespace: String): [EntityAttributeField!]!
|
|
4440
5004
|
|
|
4441
5005
|
"""
|
|
4442
|
-
Available stock
|
|
5006
|
+
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).
|
|
4443
5007
|
"""
|
|
4444
5008
|
availableStock: Int
|
|
4445
5009
|
|
|
4446
|
-
"""
|
|
5010
|
+
"""
|
|
5011
|
+
Barcode (EAN/UPC/etc.) as set by the merchant. Null when not configured.
|
|
5012
|
+
"""
|
|
4447
5013
|
barcode: String
|
|
4448
5014
|
|
|
4449
|
-
"""
|
|
5015
|
+
"""
|
|
5016
|
+
Strike-through compare-at price when the variant is on sale. Null when the variant is not discounted; show the strike-through only when this is present and greater than `price`.
|
|
5017
|
+
"""
|
|
4450
5018
|
compareAtPrice: Money
|
|
4451
5019
|
|
|
4452
|
-
"""
|
|
5020
|
+
"""Optional opt-in: `compareAtPrice` with full conversion transparency."""
|
|
4453
5021
|
compareAtPriceWithConversion: PriceMoney
|
|
4454
5022
|
|
|
4455
|
-
"""
|
|
5023
|
+
"""
|
|
5024
|
+
Stable identifier of the variant. Pass to `cartAddLines.variantId` to add the variant to a cart.
|
|
5025
|
+
"""
|
|
4456
5026
|
id: ID!
|
|
4457
5027
|
|
|
4458
|
-
"""
|
|
5028
|
+
"""
|
|
5029
|
+
Image specific to this variant. Null when the variant inherits the parent product image.
|
|
5030
|
+
"""
|
|
4459
5031
|
image: Image
|
|
4460
5032
|
|
|
4461
|
-
"""
|
|
5033
|
+
"""
|
|
5034
|
+
True when the variant can be purchased right now (in stock, or backorder allowed by the merchant).
|
|
5035
|
+
"""
|
|
4462
5036
|
isAvailable: Boolean!
|
|
4463
5037
|
|
|
4464
|
-
"""
|
|
5038
|
+
"""
|
|
5039
|
+
Current price of the variant in the buyer preferred currency (auto-converted from the shop base currency when multi-currency is enabled).
|
|
5040
|
+
"""
|
|
4465
5041
|
price: Money!
|
|
4466
5042
|
|
|
4467
5043
|
"""
|
|
4468
|
-
|
|
5044
|
+
Optional opt-in: `price` with full conversion transparency (original shop-currency amount, exchange rate, conversion timestamp). Use when building a currency-converter UI.
|
|
4469
5045
|
"""
|
|
4470
5046
|
priceWithConversion: PriceMoney
|
|
4471
5047
|
|
|
4472
|
-
"""
|
|
5048
|
+
"""
|
|
5049
|
+
Option values that define this variant (e.g. Size = Large, Color = Red).
|
|
5050
|
+
"""
|
|
4473
5051
|
selectedOptions: [SelectedOption!]!
|
|
4474
5052
|
|
|
4475
|
-
"""
|
|
5053
|
+
"""
|
|
5054
|
+
Stock-keeping unit code as set by the merchant. Null when not configured.
|
|
5055
|
+
"""
|
|
4476
5056
|
sku: String
|
|
4477
5057
|
|
|
4478
|
-
"""
|
|
5058
|
+
"""
|
|
5059
|
+
Display position of this variant within the parent product list. Lower values come first.
|
|
5060
|
+
"""
|
|
4479
5061
|
sortOrder: Int
|
|
4480
5062
|
|
|
4481
5063
|
"""
|
|
@@ -4495,10 +5077,14 @@ type ProductVariant {
|
|
|
4495
5077
|
near: GeoCoordinateInput
|
|
4496
5078
|
): StoreAvailabilityConnection
|
|
4497
5079
|
|
|
4498
|
-
"""
|
|
5080
|
+
"""
|
|
5081
|
+
Display title of the variant (e.g. "Large / Red"). Composed from the variant options.
|
|
5082
|
+
"""
|
|
4499
5083
|
title: String!
|
|
4500
5084
|
|
|
4501
|
-
"""
|
|
5085
|
+
"""
|
|
5086
|
+
Variant weight with its unit. Stored in grams; pick a display unit on the storefront if needed. Null when the merchant has not set a weight.
|
|
5087
|
+
"""
|
|
4502
5088
|
weight: Weight
|
|
4503
5089
|
}
|
|
4504
5090
|
|
|
@@ -4537,10 +5123,19 @@ type Query {
|
|
|
4537
5123
|
"""List of all currencies supported by the system (ECB rates)"""
|
|
4538
5124
|
allSupportedCurrencies: [Currency!]!
|
|
4539
5125
|
|
|
4540
|
-
"""
|
|
5126
|
+
"""
|
|
5127
|
+
Paginated + searchable attribute options dla drill-into filter UI (np. dropdown z 800 licencjami + search input). Honors product context z exclude-self per attribute. Sort: COUNT_DESC default (most popular first), LABEL_ASC dla alfabetycznego z polskim collation.
|
|
5128
|
+
"""
|
|
5129
|
+
attributeOptionsSearch(input: AttributeOptionsSearchInput!): AttributeFilterValueConnection!
|
|
5130
|
+
|
|
5131
|
+
"""
|
|
5132
|
+
Payment methods active for the current shop, plus the merchant default. Shop-level — independent of cart contents in this iteration. Fetch once for the checkout payment step.
|
|
5133
|
+
"""
|
|
4541
5134
|
availablePaymentMethods: AvailablePaymentMethods!
|
|
4542
5135
|
|
|
4543
|
-
"""
|
|
5136
|
+
"""
|
|
5137
|
+
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.
|
|
5138
|
+
"""
|
|
4544
5139
|
availableShippingMethods(address: ShippingAddressInput!, cart: CartShippingInput): AvailableShippingMethodsPayload!
|
|
4545
5140
|
|
|
4546
5141
|
"""Get live shipping rates from configured carriers"""
|
|
@@ -4554,11 +5149,11 @@ type Query {
|
|
|
4554
5149
|
|
|
4555
5150
|
"""Get single blog post"""
|
|
4556
5151
|
blogPost(
|
|
5152
|
+
"""Post handle"""
|
|
5153
|
+
handle: String
|
|
5154
|
+
|
|
4557
5155
|
"""Post ID"""
|
|
4558
5156
|
id: ID
|
|
4559
|
-
|
|
4560
|
-
"""Post slug"""
|
|
4561
|
-
slug: String
|
|
4562
5157
|
): BlogPost
|
|
4563
5158
|
|
|
4564
5159
|
"""List blog posts"""
|
|
@@ -4569,8 +5164,8 @@ type Query {
|
|
|
4569
5164
|
"""Filter by author ID"""
|
|
4570
5165
|
authorId: String
|
|
4571
5166
|
|
|
4572
|
-
"""Filter by category
|
|
4573
|
-
|
|
5167
|
+
"""Filter by category handle"""
|
|
5168
|
+
categoryHandle: String
|
|
4574
5169
|
|
|
4575
5170
|
"""Filter featured posts only"""
|
|
4576
5171
|
featured: Boolean
|
|
@@ -4584,17 +5179,21 @@ type Query {
|
|
|
4584
5179
|
"""Sort key"""
|
|
4585
5180
|
sortKey: BlogPostSortKey = PUBLISHED_AT
|
|
4586
5181
|
|
|
4587
|
-
"""Filter by tag
|
|
4588
|
-
|
|
5182
|
+
"""Filter by tag handle"""
|
|
5183
|
+
tagHandle: String
|
|
4589
5184
|
): BlogPostConnection!
|
|
4590
5185
|
|
|
4591
5186
|
"""List blog tags"""
|
|
4592
5187
|
blogTags(limit: Int = 50): [BlogTag!]!
|
|
4593
5188
|
|
|
4594
|
-
"""
|
|
5189
|
+
"""
|
|
5190
|
+
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.
|
|
5191
|
+
"""
|
|
4595
5192
|
cart(id: ID!): Cart
|
|
4596
5193
|
|
|
4597
|
-
"""
|
|
5194
|
+
"""
|
|
5195
|
+
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.
|
|
5196
|
+
"""
|
|
4598
5197
|
cartValidateDiscountCode(cartId: ID!, discountCode: String!): DiscountValidationResult!
|
|
4599
5198
|
|
|
4600
5199
|
"""
|
|
@@ -4624,11 +5223,11 @@ type Query {
|
|
|
4624
5223
|
|
|
4625
5224
|
"""Get category by ID or slug"""
|
|
4626
5225
|
category(
|
|
5226
|
+
"""Category handle (URL-friendly)"""
|
|
5227
|
+
handle: String
|
|
5228
|
+
|
|
4627
5229
|
"""Category ID"""
|
|
4628
5230
|
id: ID
|
|
4629
|
-
|
|
4630
|
-
"""Category slug"""
|
|
4631
|
-
slug: String
|
|
4632
5231
|
): Category
|
|
4633
5232
|
|
|
4634
5233
|
"""Get single collection"""
|
|
@@ -4679,13 +5278,17 @@ type Query {
|
|
|
4679
5278
|
code: String!
|
|
4680
5279
|
): Currency
|
|
4681
5280
|
|
|
4682
|
-
"""
|
|
5281
|
+
"""
|
|
5282
|
+
The authenticated customer for the current request. The request must carry a valid customer access token (in the `Authorization: Bearer ...` header or an HTTP-only auth cookie). Returns null for anonymous requests.
|
|
5283
|
+
"""
|
|
4683
5284
|
customer: Customer
|
|
4684
5285
|
|
|
4685
5286
|
"""Get available customer groups"""
|
|
4686
5287
|
customerGroups: [CustomerGroup!]
|
|
4687
5288
|
|
|
4688
|
-
"""
|
|
5289
|
+
"""
|
|
5290
|
+
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.
|
|
5291
|
+
"""
|
|
4689
5292
|
customerOrder(orderId: ID!): Order
|
|
4690
5293
|
|
|
4691
5294
|
"""Estimate points for an order amount"""
|
|
@@ -5353,17 +5956,19 @@ type SearchQuerySuggestion {
|
|
|
5353
5956
|
text: String!
|
|
5354
5957
|
}
|
|
5355
5958
|
|
|
5356
|
-
"""
|
|
5959
|
+
"""
|
|
5960
|
+
One option of a product variant — e.g. `{ name: "Size", value: "Large" }`.
|
|
5961
|
+
"""
|
|
5357
5962
|
type SelectedOption {
|
|
5358
|
-
"""Option name (e.g
|
|
5963
|
+
"""Option name (e.g. "Size", "Color")."""
|
|
5359
5964
|
name: String!
|
|
5360
5965
|
|
|
5361
5966
|
"""
|
|
5362
|
-
|
|
5967
|
+
Stable ID of the option value — useful as a key when rendering variant selectors. Null only for legacy variants not yet migrated to relational option values.
|
|
5363
5968
|
"""
|
|
5364
5969
|
optionValueId: ID
|
|
5365
5970
|
|
|
5366
|
-
"""Option value (e.g
|
|
5971
|
+
"""Option value for this variant (e.g. "Large", "Red")."""
|
|
5367
5972
|
value: String!
|
|
5368
5973
|
}
|
|
5369
5974
|
|
|
@@ -5509,48 +6114,62 @@ enum ShipmentStatus {
|
|
|
5509
6114
|
RETURNED
|
|
5510
6115
|
}
|
|
5511
6116
|
|
|
5512
|
-
"""
|
|
6117
|
+
"""
|
|
6118
|
+
Destination address used to evaluate which shipping methods are available for a cart. Country is required; the rest are optional and improve carrier rate accuracy when provided.
|
|
6119
|
+
"""
|
|
5513
6120
|
input ShippingAddressInput {
|
|
5514
|
-
"""City"""
|
|
6121
|
+
"""City / town."""
|
|
5515
6122
|
city: String
|
|
5516
6123
|
|
|
5517
|
-
"""
|
|
6124
|
+
"""
|
|
6125
|
+
Destination country (ISO 3166-1 alpha-2). Required — drives carrier eligibility and tax/region rules.
|
|
6126
|
+
"""
|
|
5518
6127
|
country: CountryCode!
|
|
5519
6128
|
|
|
5520
|
-
"""
|
|
6129
|
+
"""
|
|
6130
|
+
Buyer email — useful when the shipping carrier needs notification contact details.
|
|
6131
|
+
"""
|
|
5521
6132
|
email: String
|
|
5522
6133
|
|
|
5523
|
-
"""
|
|
6134
|
+
"""Buyer first name."""
|
|
5524
6135
|
firstName: String
|
|
5525
6136
|
|
|
5526
|
-
"""
|
|
6137
|
+
"""Buyer last name."""
|
|
5527
6138
|
lastName: String
|
|
5528
6139
|
|
|
5529
|
-
"""
|
|
6140
|
+
"""Buyer phone number (free-form)."""
|
|
5530
6141
|
phone: String
|
|
5531
6142
|
|
|
5532
|
-
"""Postal / ZIP code"""
|
|
6143
|
+
"""Postal / ZIP code — required by most carriers for accurate rates."""
|
|
5533
6144
|
postalCode: String
|
|
5534
6145
|
|
|
5535
|
-
"""State / province / region"""
|
|
6146
|
+
"""State / province / region."""
|
|
5536
6147
|
state: String
|
|
5537
6148
|
|
|
5538
|
-
"""First line of street address"""
|
|
6149
|
+
"""First line of the street address (street and house / building number)."""
|
|
5539
6150
|
streetLine1: String
|
|
5540
6151
|
}
|
|
5541
6152
|
|
|
5542
|
-
"""
|
|
6153
|
+
"""
|
|
6154
|
+
Shipping carrier associated with a shipping method (e.g. InPost, DPD, DHL).
|
|
6155
|
+
"""
|
|
5543
6156
|
type ShippingCarrier {
|
|
5544
|
-
"""
|
|
6157
|
+
"""
|
|
6158
|
+
Stable carrier identifier. Null when the method does not map to a registered carrier (e.g. local pickup configured by the merchant).
|
|
6159
|
+
"""
|
|
5545
6160
|
id: ID
|
|
5546
6161
|
|
|
5547
|
-
"""
|
|
6162
|
+
"""
|
|
6163
|
+
URL of the carrier logo. Use for the method tile in the shipping picker.
|
|
6164
|
+
"""
|
|
5548
6165
|
logoUrl: String
|
|
5549
6166
|
|
|
5550
|
-
"""Carrier name (e.g
|
|
6167
|
+
"""Carrier display name (e.g. "InPost", "DPD", "DHL")."""
|
|
5551
6168
|
name: String!
|
|
5552
6169
|
|
|
5553
|
-
"""
|
|
6170
|
+
"""
|
|
6171
|
+
Carrier service code as configured by the merchant (e.g. "inpost_paczkomat"). Useful when integrating carrier widgets.
|
|
6172
|
+
"""
|
|
5554
6173
|
serviceCode: String
|
|
5555
6174
|
}
|
|
5556
6175
|
|
|
@@ -5562,8 +6181,10 @@ type Shop {
|
|
|
5562
6181
|
"""Bot protection configuration (platform-level)"""
|
|
5563
6182
|
botProtection: BotProtectionInfo
|
|
5564
6183
|
|
|
5565
|
-
"""
|
|
5566
|
-
brand
|
|
6184
|
+
"""
|
|
6185
|
+
Shop brand metadata (logo + slogan + colors). Tenant-scoped (vs canonical product `Brand` entity used in `Product.brand`).
|
|
6186
|
+
"""
|
|
6187
|
+
brand: ShopBrand
|
|
5567
6188
|
|
|
5568
6189
|
"""Complete branding configuration"""
|
|
5569
6190
|
branding: ShopBranding
|
|
@@ -5670,6 +6291,27 @@ type ShopAddress {
|
|
|
5670
6291
|
streetLine2: String
|
|
5671
6292
|
}
|
|
5672
6293
|
|
|
6294
|
+
"""Shop brand metadata (logo, colors, slogan)"""
|
|
6295
|
+
type ShopBrand {
|
|
6296
|
+
"""Primary + secondary brand colors"""
|
|
6297
|
+
colors: BrandColors
|
|
6298
|
+
|
|
6299
|
+
"""Cover image / hero banner"""
|
|
6300
|
+
coverImage: Image
|
|
6301
|
+
|
|
6302
|
+
"""Primary logo"""
|
|
6303
|
+
logo: Image
|
|
6304
|
+
|
|
6305
|
+
"""Short brand description"""
|
|
6306
|
+
shortDescription: String
|
|
6307
|
+
|
|
6308
|
+
"""Marketing slogan / tagline"""
|
|
6309
|
+
slogan: String
|
|
6310
|
+
|
|
6311
|
+
"""Square logo variant (favicons, app tiles)"""
|
|
6312
|
+
squareLogo: Image
|
|
6313
|
+
}
|
|
6314
|
+
|
|
5673
6315
|
"""Shop branding configuration"""
|
|
5674
6316
|
type ShopBranding {
|
|
5675
6317
|
"""Brand colors"""
|
|
@@ -5860,7 +6502,9 @@ type StoreAvailabilityEdge {
|
|
|
5860
6502
|
node: StoreAvailability!
|
|
5861
6503
|
}
|
|
5862
6504
|
|
|
5863
|
-
"""
|
|
6505
|
+
"""
|
|
6506
|
+
High-level lifecycle of an order. DRAFT (not yet placed) → PENDING (placed, awaiting confirmation) → CONFIRMED → PROCESSING → COMPLETED. ON_HOLD pauses the order; CANCELLED and EXPIRED are terminal states.
|
|
6507
|
+
"""
|
|
5864
6508
|
enum StorefrontOrderStatus {
|
|
5865
6509
|
CANCELLED
|
|
5866
6510
|
COMPLETED
|
|
@@ -5992,15 +6636,23 @@ type UrlRedirectConnection {
|
|
|
5992
6636
|
pageInfo: PageInfo!
|
|
5993
6637
|
}
|
|
5994
6638
|
|
|
5995
|
-
"""
|
|
6639
|
+
"""
|
|
6640
|
+
A validation or business error returned alongside a mutation result. Surfaced as `userErrors[]`; the cart/order itself is null when the mutation could not be applied. Always branch on `code` for UI behaviour — `message` is translated and locale-dependent.
|
|
6641
|
+
"""
|
|
5996
6642
|
type UserError {
|
|
5997
|
-
"""
|
|
6643
|
+
"""
|
|
6644
|
+
Stable machine-readable code (e.g. `CART_NOT_FOUND`, `NOT_ENOUGH_IN_STOCK`, `INVALID_DISCOUNT_CODE`). The list of possible codes is defined per mutation by `CartErrorCode`, `CustomerErrorCode`, `PaymentErrorCode`, etc.
|
|
6645
|
+
"""
|
|
5998
6646
|
code: String
|
|
5999
6647
|
|
|
6000
|
-
"""
|
|
6648
|
+
"""
|
|
6649
|
+
Path of the input field that caused the error (e.g. `["input", "lines", 0, "quantity"]`). Use to highlight the offending control in a form.
|
|
6650
|
+
"""
|
|
6001
6651
|
field: [String!]
|
|
6002
6652
|
|
|
6003
|
-
"""
|
|
6653
|
+
"""
|
|
6654
|
+
Human-readable error message localised to the request locale (e.g. `Accept-Language`). For display only.
|
|
6655
|
+
"""
|
|
6004
6656
|
message: String!
|
|
6005
6657
|
}
|
|
6006
6658
|
|
|
@@ -6013,16 +6665,18 @@ input VariantOptionFilter {
|
|
|
6013
6665
|
value: String!
|
|
6014
6666
|
}
|
|
6015
6667
|
|
|
6016
|
-
"""
|
|
6668
|
+
"""A weight value paired with its unit."""
|
|
6017
6669
|
type Weight {
|
|
6018
|
-
"""
|
|
6670
|
+
"""Unit of the weight (GRAMS, KILOGRAMS, OUNCES or POUNDS)."""
|
|
6019
6671
|
unit: WeightUnit!
|
|
6020
6672
|
|
|
6021
|
-
"""Weight
|
|
6673
|
+
"""Weight magnitude, interpreted according to `unit`."""
|
|
6022
6674
|
value: Float!
|
|
6023
6675
|
}
|
|
6024
6676
|
|
|
6025
|
-
"""
|
|
6677
|
+
"""
|
|
6678
|
+
Weight unit. GRAMS is the canonical storage unit; KILOGRAMS / OUNCES / POUNDS are display variants for shipping and checkout UI.
|
|
6679
|
+
"""
|
|
6026
6680
|
enum WeightUnit {
|
|
6027
6681
|
GRAMS
|
|
6028
6682
|
KILOGRAMS
|