@doswiftly/storefront-operations 1.0.5 → 1.0.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/schema.graphql ADDED
@@ -0,0 +1,4290 @@
1
+ # ------------------------------------------------------
2
+ # THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
3
+ # ------------------------------------------------------
4
+
5
+ """Gift card applied to checkout"""
6
+ type AppliedGiftCard {
7
+ """Amount applied to this checkout"""
8
+ appliedAmount: Money!
9
+
10
+ """Last 4 characters of the gift card code"""
11
+ lastCharacters: String!
12
+
13
+ """Masked gift card code for display (e.g., "****-****-****-ABCD")"""
14
+ maskedCode: String!
15
+
16
+ """Remaining balance on the gift card after this checkout"""
17
+ remainingBalance: Money!
18
+ }
19
+
20
+ """Generic attribute"""
21
+ type Attribute {
22
+ """Attribute key"""
23
+ key: String!
24
+
25
+ """Attribute value"""
26
+ value: String
27
+ }
28
+
29
+ """Filterable attribute definition"""
30
+ type AttributeDefinition {
31
+ """Display order"""
32
+ displayOrder: Int!
33
+
34
+ """Available filter values (for SELECT, CHECKBOX, RADIO, COLOR, BOOLEAN)"""
35
+ filterValues: [AttributeFilterValue!]
36
+
37
+ """URL-friendly identifier"""
38
+ handle: String!
39
+
40
+ """Attribute ID"""
41
+ id: ID!
42
+
43
+ """Whether attribute is filterable"""
44
+ isFilterable: Boolean!
45
+
46
+ """Whether attribute is visible on product pages"""
47
+ isVisible: Boolean!
48
+
49
+ """Attribute name (e.g., "Color", "Size")"""
50
+ name: String!
51
+
52
+ """Range bounds (for NUMBER, CURRENCY)"""
53
+ rangeBounds: AttributeRangeBounds
54
+
55
+ """Attribute data type"""
56
+ type: AttributeType!
57
+ }
58
+
59
+ """Filter by attribute values"""
60
+ input AttributeFilterInput {
61
+ """Attribute definition ID or handle"""
62
+ attributeId: ID!
63
+
64
+ """Maximum value (for NUMBER, CURRENCY)"""
65
+ maxValue: Float
66
+
67
+ """Minimum value (for NUMBER, CURRENCY)"""
68
+ minValue: Float
69
+
70
+ """Text search (for TEXT, TEXTAREA)"""
71
+ textSearch: String
72
+
73
+ """Selected values (for SELECT, CHECKBOX, RADIO, COLOR, BOOLEAN)"""
74
+ values: [String!]
75
+ }
76
+
77
+ """Attribute filter value with product count"""
78
+ type AttributeFilterValue {
79
+ """Option ID or value identifier"""
80
+ id: ID!
81
+
82
+ """Display label (e.g., "Red", "Extra Large")"""
83
+ label: String!
84
+
85
+ """Price modifier for this option"""
86
+ priceModifier: Money
87
+
88
+ """Number of products with this value"""
89
+ productCount: Int!
90
+
91
+ """Sort order for display"""
92
+ sortOrder: Int!
93
+
94
+ """Visual swatch for COLOR type"""
95
+ swatch: AttributeSwatch
96
+
97
+ """Internal value (e.g., "red", "xl")"""
98
+ value: String!
99
+ }
100
+
101
+ """Attribute input"""
102
+ input AttributeInput {
103
+ """Attribute key"""
104
+ key: String!
105
+
106
+ """Attribute value"""
107
+ value: String
108
+ }
109
+
110
+ """Min/max bounds for numeric attributes"""
111
+ type AttributeRangeBounds {
112
+ """Currency code for CURRENCY type"""
113
+ currencyCode: String
114
+
115
+ """Maximum value in current product set"""
116
+ max: Float
117
+
118
+ """Minimum value in current product set"""
119
+ min: Float
120
+ }
121
+
122
+ """Color or pattern swatch for visual attribute display"""
123
+ type AttributeSwatch {
124
+ """Hex color code (e.g., #FF5733)"""
125
+ colorHex: String
126
+
127
+ """Image URL for pattern swatches"""
128
+ imageUrl: String
129
+ }
130
+
131
+ """Type of product attribute"""
132
+ enum AttributeType {
133
+ BOOLEAN
134
+ CHECKBOX
135
+ COLOR
136
+ CURRENCY
137
+ DATE
138
+ FILE
139
+ IMAGE
140
+ NUMBER
141
+ RADIO
142
+ SELECT
143
+ TEXT
144
+ TEXTAREA
145
+ }
146
+
147
+ """Available filters for product listing"""
148
+ type AvailableFilters {
149
+ """Number of currently active filters"""
150
+ activeFilterCount: Int!
151
+
152
+ """Filterable attributes with values"""
153
+ attributes: [AttributeDefinition!]!
154
+
155
+ """Categories available for filtering"""
156
+ categories: [CategoryFilterOption!]
157
+
158
+ """Price range for filtering"""
159
+ priceRange: PriceRange
160
+
161
+ """Total products matching current context (before filters)"""
162
+ totalProducts: Int!
163
+ }
164
+
165
+ """Context for available filters query"""
166
+ input AvailableFiltersInput {
167
+ """Category ID context (supports comma-separated UUIDs)"""
168
+ categoryId: ID
169
+
170
+ """Collection ID context (supports comma-separated UUIDs)"""
171
+ collectionId: ID
172
+
173
+ """Currently applied filters (to update counts)"""
174
+ currentFilters: [AttributeFilterInput!]
175
+
176
+ """Search query context"""
177
+ searchQuery: String
178
+ }
179
+
180
+ """Available payment methods for checkout"""
181
+ type AvailablePaymentMethods {
182
+ """Default payment method"""
183
+ defaultMethod: PaymentMethod
184
+
185
+ """List of available payment methods"""
186
+ methods: [PaymentMethod!]!
187
+ }
188
+
189
+ """Available shipping method"""
190
+ type AvailableShippingMethod {
191
+ """Carrier information"""
192
+ carrier: ShippingCarrier
193
+
194
+ """Method description"""
195
+ description: String
196
+
197
+ """Estimated delivery time"""
198
+ estimatedDelivery: DeliveryEstimate
199
+
200
+ """Free shipping progress if threshold exists"""
201
+ freeShippingProgress: FreeShippingProgress
202
+
203
+ """Shipping method ID (used as handle for selection)"""
204
+ id: ID!
205
+
206
+ """Whether shipping is free"""
207
+ isFree: Boolean!
208
+
209
+ """Method name"""
210
+ name: String!
211
+
212
+ """Shipping price"""
213
+ price: Money!
214
+
215
+ """Sort order for display"""
216
+ sortOrder: Int!
217
+ }
218
+
219
+ """Available shipping methods result"""
220
+ type AvailableShippingMethodsPayload {
221
+ """Best free shipping progress across all methods"""
222
+ freeShippingProgress: FreeShippingProgress
223
+
224
+ """Available shipping methods"""
225
+ methods: [AvailableShippingMethod!]!
226
+
227
+ """User errors"""
228
+ userErrors: [UserError!]!
229
+ }
230
+
231
+ """Live carrier shipping rates payload"""
232
+ type AvailableShippingRatesPayload {
233
+ """Whether the result was served from cache"""
234
+ cached: Boolean!
235
+
236
+ """Providers that failed to return rates"""
237
+ errors: [CarrierRateError!]!
238
+
239
+ """Available rates sorted by price"""
240
+ rates: [CarrierShippingRate!]!
241
+ }
242
+
243
+ """Complete B2B price display information"""
244
+ type B2BPriceDisplay {
245
+ """Message for guests (e.g., "Log in for wholesale pricing")"""
246
+ guestMessage: String
247
+
248
+ """Whether user is logged in"""
249
+ isAuthenticated: Boolean!
250
+
251
+ """Primary pricing information"""
252
+ pricing: B2BVariantPricing!
253
+
254
+ """Volume discount tiers"""
255
+ volumeTiers: [PricingTier!]
256
+ }
257
+
258
+ """B2B pricing for a product variant"""
259
+ type B2BVariantPricing {
260
+ """Applied customer group"""
261
+ appliedGroup: CustomerGroup
262
+
263
+ """Whether this is a group-discounted price"""
264
+ hasGroupDiscount: Boolean!
265
+
266
+ """Regular retail price"""
267
+ retailPrice: Money!
268
+
269
+ """Amount saved"""
270
+ savings: Money!
271
+
272
+ """Savings percentage (0-100)"""
273
+ savingsPercent: Float!
274
+
275
+ """Pricing tier name"""
276
+ tierName: String
277
+
278
+ """Your group price (best available)"""
279
+ yourPrice: Money!
280
+ }
281
+
282
+ """Blog post author"""
283
+ type BlogAuthor {
284
+ """Author avatar"""
285
+ avatar: Image
286
+
287
+ """Author bio"""
288
+ bio: String
289
+
290
+ """Author ID"""
291
+ id: ID!
292
+
293
+ """Author name"""
294
+ name: String!
295
+ }
296
+
297
+ """Blog category"""
298
+ type BlogCategory {
299
+ """Category description"""
300
+ description: String
301
+
302
+ """Category ID"""
303
+ id: ID!
304
+
305
+ """Category image"""
306
+ image: Image
307
+
308
+ """Category name"""
309
+ name: String!
310
+
311
+ """Number of posts in category"""
312
+ postCount: Int!
313
+
314
+ """SEO metadata"""
315
+ seo: SEO
316
+
317
+ """URL-friendly slug"""
318
+ slug: String!
319
+ }
320
+
321
+ """Blog post"""
322
+ type BlogPost {
323
+ """Whether comments are allowed"""
324
+ allowComments: Boolean!
325
+
326
+ """Post author"""
327
+ author: BlogAuthor!
328
+
329
+ """Post category"""
330
+ category: BlogCategory
331
+
332
+ """Comment count"""
333
+ commentCount: Int!
334
+
335
+ """Full content (HTML)"""
336
+ content: String!
337
+
338
+ """Content type (html or markdown)"""
339
+ contentType: String!
340
+
341
+ """Created date (ISO 8601)"""
342
+ createdAt: String!
343
+
344
+ """Short excerpt/summary"""
345
+ excerpt: String
346
+
347
+ """Featured image"""
348
+ featuredImage: Image
349
+
350
+ """Post ID"""
351
+ id: ID!
352
+
353
+ """Whether post is featured"""
354
+ isFeatured: Boolean!
355
+
356
+ """Published date (ISO 8601)"""
357
+ publishedAt: String
358
+
359
+ """Estimated reading time in minutes"""
360
+ readingTime: Int!
361
+
362
+ """SEO metadata"""
363
+ seo: SEO
364
+
365
+ """URL-friendly slug"""
366
+ slug: String!
367
+
368
+ """Post status"""
369
+ status: BlogPostStatus!
370
+
371
+ """Post tags"""
372
+ tags: [BlogTag!]!
373
+
374
+ """Post title"""
375
+ title: String!
376
+
377
+ """Updated date (ISO 8601)"""
378
+ updatedAt: String!
379
+
380
+ """View count"""
381
+ viewCount: Int!
382
+ }
383
+
384
+ """Paginated blog posts"""
385
+ type BlogPostConnection {
386
+ """Post edges"""
387
+ edges: [BlogPostEdge!]!
388
+
389
+ """Pagination info"""
390
+ pageInfo: PageInfo!
391
+
392
+ """Total count of posts"""
393
+ totalCount: Int!
394
+ }
395
+
396
+ """Blog post edge"""
397
+ type BlogPostEdge {
398
+ """Cursor for pagination"""
399
+ cursor: String!
400
+
401
+ """Blog post node"""
402
+ node: BlogPost!
403
+ }
404
+
405
+ """Sort keys for blog posts"""
406
+ enum BlogPostSortKey {
407
+ CREATED_AT
408
+ PUBLISHED_AT
409
+ TITLE
410
+ VIEW_COUNT
411
+ }
412
+
413
+ """Status of a blog post"""
414
+ enum BlogPostStatus {
415
+ ARCHIVED
416
+ DRAFT
417
+ PUBLISHED
418
+ SCHEDULED
419
+ }
420
+
421
+ """Blog tag"""
422
+ type BlogTag {
423
+ """Tag ID"""
424
+ id: ID!
425
+
426
+ """Tag name"""
427
+ name: String!
428
+
429
+ """Number of posts with this tag"""
430
+ postCount: Int!
431
+
432
+ """URL-friendly slug"""
433
+ slug: String!
434
+ }
435
+
436
+ """Bot protection configuration (platform-level)"""
437
+ type BotProtectionInfo {
438
+ """Fallback provider"""
439
+ fallback: BotProtectionProviderInfo
440
+
441
+ """Primary provider"""
442
+ primary: BotProtectionProviderInfo!
443
+
444
+ """GraphQL operation names requiring verification"""
445
+ protectedOperations: [String!]!
446
+ }
447
+
448
+ """Single bot protection provider config"""
449
+ type BotProtectionProviderInfo {
450
+ """Provider identifier: eucaptcha | turnstile | recaptcha"""
451
+ provider: String!
452
+
453
+ """Script URL (configurable, region/enterprise overrides)"""
454
+ scriptUrl: String!
455
+
456
+ """Site key for the bot protection widget"""
457
+ siteKey: String!
458
+ }
459
+
460
+ """Business hours for a day"""
461
+ type BusinessHour {
462
+ """Closing time (HH:MM format)"""
463
+ closeTime: String
464
+
465
+ """Day of week (monday, tuesday, etc.)"""
466
+ day: String!
467
+
468
+ """Whether the shop is closed this day"""
469
+ isClosed: Boolean!
470
+
471
+ """Opening time (HH:MM format)"""
472
+ openTime: String
473
+ }
474
+
475
+ """Provider error when fetching rates"""
476
+ type CarrierRateError {
477
+ """Error message"""
478
+ message: String!
479
+
480
+ """Provider code"""
481
+ provider: String!
482
+ }
483
+
484
+ """Live shipping rate from a carrier"""
485
+ type CarrierShippingRate {
486
+ """Whether cash on delivery is available"""
487
+ cashOnDeliveryAvailable: Boolean!
488
+
489
+ """Estimated delivery in business days"""
490
+ estimatedDeliveryDays: Int!
491
+
492
+ """Whether pickup is available for this service"""
493
+ pickupAvailable: Boolean!
494
+
495
+ """Rate price"""
496
+ price: Money!
497
+
498
+ """Provider ID (e.g., furgonetka, inpost)"""
499
+ providerId: String!
500
+
501
+ """Service ID (provider-specific)"""
502
+ serviceId: String!
503
+
504
+ """Service display name"""
505
+ serviceName: String!
506
+ }
507
+
508
+ """Shopping cart"""
509
+ type Cart {
510
+ """Cart attributes"""
511
+ attributes: [CartAttribute!]!
512
+
513
+ """Buyer identity information"""
514
+ buyerIdentity: CartBuyerIdentity
515
+
516
+ """Checkout URL"""
517
+ checkoutUrl: String
518
+
519
+ """Cost breakdown"""
520
+ cost: CartCost!
521
+
522
+ """Creation timestamp"""
523
+ createdAt: DateTime!
524
+
525
+ """Discount allocations"""
526
+ discountAllocations: [CartDiscountAllocation!]!
527
+
528
+ """Applied discount codes"""
529
+ discountCodes: [CartDiscountCode!]!
530
+
531
+ """Unique cart identifier"""
532
+ id: ID!
533
+
534
+ """Cart line items"""
535
+ lines(first: Float = 100): [CartLine!]!
536
+
537
+ """Cart note"""
538
+ note: String
539
+
540
+ """Product recommendations based on cart contents"""
541
+ recommendations(first: Int = 4): CartRecommendations
542
+
543
+ """Total quantity of all items"""
544
+ totalQuantity: Int!
545
+
546
+ """Last update timestamp"""
547
+ updatedAt: DateTime!
548
+ }
549
+
550
+ """Cart line attribute"""
551
+ type CartAttribute {
552
+ """Attribute key"""
553
+ key: String!
554
+
555
+ """Attribute value"""
556
+ value: String
557
+ }
558
+
559
+ """Input for cart attribute"""
560
+ input CartAttributeInput {
561
+ """Attribute key"""
562
+ key: String!
563
+
564
+ """Attribute value"""
565
+ value: String
566
+ }
567
+
568
+ """Buyer identity information"""
569
+ type CartBuyerIdentity {
570
+ """Country code (ISO 3166-1 alpha-2)"""
571
+ countryCode: String
572
+
573
+ """Customer ID"""
574
+ customerId: ID
575
+
576
+ """Customer email"""
577
+ email: String
578
+
579
+ """Customer phone"""
580
+ phone: String
581
+ }
582
+
583
+ """Input for buyer identity"""
584
+ input CartBuyerIdentityInput {
585
+ """Country code (ISO 3166-1 alpha-2)"""
586
+ countryCode: String
587
+
588
+ """Customer ID"""
589
+ customerId: ID
590
+
591
+ """Customer email"""
592
+ email: String
593
+
594
+ """Customer phone"""
595
+ phone: String
596
+ }
597
+
598
+ """Result of updating buyer identity"""
599
+ type CartBuyerIdentityUpdatePayload {
600
+ """Updated cart"""
601
+ cart: Cart
602
+
603
+ """User errors"""
604
+ userErrors: [UserError!]!
605
+ }
606
+
607
+ """Cart cost breakdown"""
608
+ type CartCost {
609
+ """Checkout charge amount"""
610
+ checkoutChargeAmount: PriceMoney
611
+
612
+ """Subtotal before taxes and shipping (in customer currency)"""
613
+ subtotalAmount: PriceMoney!
614
+
615
+ """Total amount including taxes (in customer currency)"""
616
+ totalAmount: PriceMoney!
617
+
618
+ """Total duty amount"""
619
+ totalDutyAmount: PriceMoney
620
+
621
+ """Total tax amount"""
622
+ totalTaxAmount: PriceMoney
623
+ }
624
+
625
+ """Input for creating a cart"""
626
+ input CartCreateInput {
627
+ """Cart attributes"""
628
+ attributes: [CartAttributeInput!]
629
+
630
+ """Buyer identity"""
631
+ buyerIdentity: CartBuyerIdentityInput
632
+
633
+ """Discount codes to apply"""
634
+ discountCodes: [String!]
635
+
636
+ """Initial cart lines"""
637
+ lines: [CartLineInput!]
638
+
639
+ """Cart note"""
640
+ note: String
641
+ }
642
+
643
+ """Result of cart creation"""
644
+ type CartCreatePayload {
645
+ """Created cart"""
646
+ cart: Cart
647
+
648
+ """User errors"""
649
+ userErrors: [UserError!]!
650
+ }
651
+
652
+ """Discount allocation showing how discount is applied"""
653
+ type CartDiscountAllocation {
654
+ """Discount amount"""
655
+ amount: Money!
656
+
657
+ """Discount code"""
658
+ discountCode: String!
659
+ }
660
+
661
+ """Discount code applied to cart"""
662
+ type CartDiscountCode {
663
+ """Whether the code is applicable"""
664
+ applicable: Boolean!
665
+
666
+ """Discount code string"""
667
+ code: String!
668
+ }
669
+
670
+ """Result of updating discount codes"""
671
+ type CartDiscountCodesUpdatePayload {
672
+ """Updated cart"""
673
+ cart: Cart
674
+
675
+ """User errors"""
676
+ userErrors: [UserError!]!
677
+ }
678
+
679
+ """Single line item in the cart"""
680
+ type CartLine {
681
+ """Custom attributes for this line"""
682
+ attributes: [Attribute!]!
683
+
684
+ """Cost information for this line"""
685
+ cost: CartLineCost!
686
+
687
+ """Unique line identifier"""
688
+ id: ID!
689
+
690
+ """Product variant being purchased"""
691
+ merchandise: ProductVariant!
692
+
693
+ """Parent product handle (slug)"""
694
+ productHandle: String
695
+
696
+ """Parent product ID"""
697
+ productId: ID
698
+
699
+ """Parent product title"""
700
+ productTitle: String
701
+
702
+ """Parent product type"""
703
+ productType: ProductTypeEnum
704
+
705
+ """Quantity of this item"""
706
+ quantity: Int!
707
+ }
708
+
709
+ """Cost information for a single cart line"""
710
+ type CartLineCost {
711
+ """Amount per quantity (in customer currency)"""
712
+ amountPerQuantity: PriceMoney!
713
+
714
+ """Original price per quantity if discounted"""
715
+ compareAtAmountPerQuantity: PriceMoney
716
+
717
+ """Subtotal before discounts (in customer currency)"""
718
+ subtotalAmount: PriceMoney!
719
+
720
+ """Total after discounts (in customer currency)"""
721
+ totalAmount: PriceMoney!
722
+ }
723
+
724
+ """Input for adding a line to cart"""
725
+ input CartLineInput {
726
+ """Line attributes"""
727
+ attributes: [AttributeInput!]
728
+
729
+ """Product variant ID"""
730
+ merchandiseId: ID!
731
+
732
+ """Quantity to add"""
733
+ quantity: Int! = 1
734
+ }
735
+
736
+ """Input for updating a cart line"""
737
+ input CartLineUpdateInput {
738
+ """Updated attributes"""
739
+ attributes: [AttributeInput!]
740
+
741
+ """Cart line ID to update"""
742
+ id: ID!
743
+
744
+ """New quantity"""
745
+ quantity: Int!
746
+ }
747
+
748
+ """Result of adding lines to cart"""
749
+ type CartLinesAddPayload {
750
+ """Updated cart"""
751
+ cart: Cart
752
+
753
+ """User errors"""
754
+ userErrors: [UserError!]!
755
+ }
756
+
757
+ """Result of removing cart lines"""
758
+ type CartLinesRemovePayload {
759
+ """Updated cart"""
760
+ cart: Cart
761
+
762
+ """User errors"""
763
+ userErrors: [UserError!]!
764
+ }
765
+
766
+ """Result of updating cart lines"""
767
+ type CartLinesUpdatePayload {
768
+ """Updated cart"""
769
+ cart: Cart
770
+
771
+ """User errors"""
772
+ userErrors: [UserError!]!
773
+ }
774
+
775
+ """Result of updating cart note"""
776
+ type CartNoteUpdatePayload {
777
+ """Updated cart"""
778
+ cart: Cart
779
+
780
+ """User errors"""
781
+ userErrors: [UserError!]!
782
+ }
783
+
784
+ """Recommendations based on cart contents"""
785
+ type CartRecommendations {
786
+ """Products frequently bought together with cart items"""
787
+ frequentlyBoughtTogether: [ProductRecommendation!]!
788
+
789
+ """Products to consider adding"""
790
+ youMayAlsoLike: [ProductRecommendation!]!
791
+ }
792
+
793
+ """Cart data for shipping calculation"""
794
+ input CartShippingInput {
795
+ """Currency code (ISO 4217)"""
796
+ currencyCode: String
797
+
798
+ """Cart subtotal in cents"""
799
+ subtotal: Int
800
+
801
+ """Total weight in grams"""
802
+ totalWeight: Int
803
+ }
804
+
805
+ """Product category - hierarchical organization"""
806
+ type Category {
807
+ """Child categories"""
808
+ children: [Category!]!
809
+
810
+ """Category description"""
811
+ description: String
812
+
813
+ """Unique identifier"""
814
+ id: ID!
815
+
816
+ """Category image"""
817
+ image: Image
818
+
819
+ """Depth level in hierarchy (0 = root)"""
820
+ level: Int!
821
+
822
+ """Category name"""
823
+ name: String!
824
+
825
+ """Parent category (null for root)"""
826
+ parent: Category
827
+
828
+ """Full path (e.g., "Electronics/Phones/Smartphones")"""
829
+ path: String!
830
+
831
+ """Number of products in category"""
832
+ productCount: Int!
833
+
834
+ """Products in category"""
835
+ products(after: String, first: Float! = 20): CategoryConnection!
836
+
837
+ """SEO metadata"""
838
+ seo: SEO
839
+
840
+ """URL-friendly slug"""
841
+ slug: String!
842
+
843
+ """Sort order within parent"""
844
+ sortOrder: Int!
845
+ }
846
+
847
+ """Paginated category list"""
848
+ type CategoryConnection {
849
+ """List of category edges"""
850
+ edges: [CategoryEdge!]!
851
+
852
+ """Pagination info"""
853
+ pageInfo: PageInfo!
854
+
855
+ """Total count of categories"""
856
+ totalCount: Int!
857
+ }
858
+
859
+ """Category edge in connection"""
860
+ type CategoryEdge {
861
+ """Cursor for pagination"""
862
+ cursor: String!
863
+
864
+ """Category node"""
865
+ node: Category!
866
+ }
867
+
868
+ """Category filter option"""
869
+ type CategoryFilterOption {
870
+ """Category ID"""
871
+ id: ID!
872
+
873
+ """Nesting level (0 = root)"""
874
+ level: Int!
875
+
876
+ """Category name"""
877
+ name: String!
878
+
879
+ """Parent category ID"""
880
+ parentId: ID
881
+
882
+ """Number of products in this category"""
883
+ productCount: Int!
884
+
885
+ """URL-friendly slug"""
886
+ slug: String!
887
+ }
888
+
889
+ """Category tree structure"""
890
+ type CategoryTree {
891
+ """Root categories"""
892
+ roots: [Category!]!
893
+
894
+ """Total categories count"""
895
+ totalCount: Int!
896
+ }
897
+
898
+ """Checkout object"""
899
+ type Checkout {
900
+ """Applied gift cards"""
901
+ appliedGiftCards: [AppliedGiftCard!]!
902
+
903
+ """Available payment methods (Requirements: R23.1, R23.2)"""
904
+ availablePaymentMethods: [PaymentMethod!]!
905
+
906
+ """Available shipping rates"""
907
+ availableShippingRates: [ShippingRate!]!
908
+
909
+ """Billing address"""
910
+ billingAddress: MailingAddress
911
+
912
+ """Whether checkout is completed"""
913
+ completed: Boolean!
914
+
915
+ """Completed order ID"""
916
+ completedOrderId: String
917
+
918
+ """Created at"""
919
+ createdAt: DateTime!
920
+
921
+ """Currency code"""
922
+ currencyCode: String!
923
+
924
+ """Customer ID"""
925
+ customerId: String
926
+
927
+ """Applied discounts with details"""
928
+ discountApplications: [DiscountApplication!]!
929
+
930
+ """Applied discount codes"""
931
+ discountCodes: [DiscountCode!]!
932
+
933
+ """Customer email"""
934
+ email: String
935
+
936
+ """Checkout ID"""
937
+ id: ID!
938
+
939
+ """Line items"""
940
+ lineItems: [CheckoutLineItem!]!
941
+
942
+ """Order note"""
943
+ note: String
944
+
945
+ """Amount due for payment after gift cards applied"""
946
+ paymentDue: Money!
947
+
948
+ """Customer phone"""
949
+ phone: String
950
+
951
+ """Whether checkout is ready for payment"""
952
+ ready: Boolean!
953
+
954
+ """Selected payment method ID (Requirements: R23.5)"""
955
+ selectedPaymentMethodId: ID
956
+
957
+ """Shipping address"""
958
+ shippingAddress: MailingAddress
959
+
960
+ """Selected shipping rate"""
961
+ shippingLine: ShippingRate
962
+
963
+ """Whether shipping rates are ready"""
964
+ shippingRatesReady: Boolean!
965
+
966
+ """Subtotal before discounts and taxes"""
967
+ subtotalPrice: Money!
968
+
969
+ """Tax breakdown"""
970
+ taxLines: [TaxLine!]!
971
+
972
+ """Total discount amount"""
973
+ totalDiscounts: Money!
974
+
975
+ """Total amount covered by gift cards"""
976
+ totalGiftCardAmount: Money!
977
+
978
+ """Total price"""
979
+ totalPrice: Money!
980
+
981
+ """Total quantity"""
982
+ totalQuantity: Float!
983
+
984
+ """Total shipping price"""
985
+ totalShippingPrice: Money!
986
+
987
+ """Total tax amount"""
988
+ totalTax: Money!
989
+
990
+ """Updated at"""
991
+ updatedAt: DateTime!
992
+
993
+ """Checkout URL"""
994
+ webUrl: String!
995
+ }
996
+
997
+ """Mailing address input"""
998
+ input CheckoutAddressInput {
999
+ """Address line 1"""
1000
+ address1: String!
1001
+
1002
+ """Address line 2"""
1003
+ address2: String
1004
+
1005
+ """City"""
1006
+ city: String!
1007
+
1008
+ """Company name"""
1009
+ company: String
1010
+
1011
+ """Country code (ISO)"""
1012
+ country: String!
1013
+
1014
+ """First name"""
1015
+ firstName: String
1016
+
1017
+ """Last name"""
1018
+ lastName: String
1019
+
1020
+ """Phone number"""
1021
+ phone: String
1022
+
1023
+ """Province/State"""
1024
+ province: String
1025
+
1026
+ """ZIP/Postal code"""
1027
+ zip: String!
1028
+ }
1029
+
1030
+ """Checkout billing address update payload"""
1031
+ type CheckoutBillingAddressUpdatePayload {
1032
+ """Updated checkout"""
1033
+ checkout: Checkout
1034
+
1035
+ """User errors"""
1036
+ userErrors: [CheckoutUserError!]!
1037
+ }
1038
+
1039
+ """Checkout complete input"""
1040
+ input CheckoutCompleteInput {
1041
+ """Idempotency key for duplicate prevention"""
1042
+ idempotencyKey: String
1043
+
1044
+ """Payment method ID"""
1045
+ paymentMethodId: String
1046
+ }
1047
+
1048
+ """Checkout complete payload"""
1049
+ type CheckoutCompletePayload {
1050
+ """Completed checkout"""
1051
+ checkout: Checkout
1052
+
1053
+ """Created order (if checkout successful)"""
1054
+ order: Order
1055
+
1056
+ """Payment redirect URL (if payment required)"""
1057
+ paymentUrl: String
1058
+
1059
+ """User errors"""
1060
+ userErrors: [CheckoutUserError!]!
1061
+ }
1062
+
1063
+ """Checkout create input"""
1064
+ input CheckoutCreateInput {
1065
+ """Existing cart ID to convert to checkout"""
1066
+ cartId: ID
1067
+
1068
+ """Customer access token"""
1069
+ customerAccessToken: String
1070
+
1071
+ """Customer email"""
1072
+ email: String
1073
+
1074
+ """Line items"""
1075
+ lineItems: [CheckoutLineItemInput!]
1076
+
1077
+ """Note"""
1078
+ note: String
1079
+
1080
+ """Shipping address"""
1081
+ shippingAddress: CheckoutAddressInput
1082
+ }
1083
+
1084
+ """Checkout create payload"""
1085
+ type CheckoutCreatePayload {
1086
+ """Created checkout"""
1087
+ checkout: Checkout
1088
+
1089
+ """User errors"""
1090
+ userErrors: [CheckoutUserError!]!
1091
+ }
1092
+
1093
+ """Checkout discount code apply payload"""
1094
+ type CheckoutDiscountCodeApplyPayload {
1095
+ """Updated checkout"""
1096
+ checkout: Checkout
1097
+
1098
+ """User errors"""
1099
+ userErrors: [CheckoutUserError!]!
1100
+ }
1101
+
1102
+ """Checkout discount code remove payload"""
1103
+ type CheckoutDiscountCodeRemovePayload {
1104
+ """Updated checkout"""
1105
+ checkout: Checkout
1106
+
1107
+ """User errors"""
1108
+ userErrors: [CheckoutUserError!]!
1109
+ }
1110
+
1111
+ """Checkout discount code validation result"""
1112
+ type CheckoutDiscountCodeValidatePayload {
1113
+ """Validation result"""
1114
+ result: DiscountValidationResult!
1115
+
1116
+ """User errors (for checkout-level issues)"""
1117
+ userErrors: [CheckoutUserError!]!
1118
+ }
1119
+
1120
+ """Checkout email update payload"""
1121
+ type CheckoutEmailUpdatePayload {
1122
+ """Updated checkout"""
1123
+ checkout: Checkout
1124
+
1125
+ """User errors"""
1126
+ userErrors: [CheckoutUserError!]!
1127
+ }
1128
+
1129
+ """Checkout error codes"""
1130
+ enum CheckoutErrorCode {
1131
+ ALREADY_COMPLETED
1132
+ BLANK
1133
+ CART_NOT_FOUND
1134
+ CHECKOUT_NOT_FOUND
1135
+ CUSTOMER_ALREADY_USED_ONCE_PER_CUSTOMER_DISCOUNT_NOTICE
1136
+ DISCOUNT_DISABLED
1137
+ DISCOUNT_LIMIT_REACHED
1138
+ DISCOUNT_NOT_FOUND
1139
+ EMPTY_CART
1140
+ GIFT_CARD_DEPLETED
1141
+ GIFT_CARD_DISABLED
1142
+ GIFT_CARD_EXPIRED
1143
+ GIFT_CARD_NOT_FOUND
1144
+ GIFT_CARD_UNUSABLE
1145
+ INVALID
1146
+ INVALID_PAYMENT_METHOD
1147
+ INVALID_SHIPPING_ADDRESS
1148
+ LINE_ITEM_NOT_FOUND
1149
+ MISSING_SHIPPING_METHOD
1150
+ NOT_ENOUGH_IN_STOCK
1151
+ NO_PAYMENT_METHODS
1152
+ SHIPPING_RATE_EXPIRED
1153
+ TOO_LONG
1154
+ }
1155
+
1156
+ """Checkout gift card apply payload"""
1157
+ type CheckoutGiftCardApplyPayload {
1158
+ """Updated checkout"""
1159
+ checkout: Checkout
1160
+
1161
+ """User errors"""
1162
+ userErrors: [CheckoutUserError!]!
1163
+ }
1164
+
1165
+ """Gift card recipient input"""
1166
+ input CheckoutGiftCardRecipientInput {
1167
+ """Checkout ID"""
1168
+ checkoutId: ID!
1169
+
1170
+ """Line item ID to attach recipient info to"""
1171
+ lineItemId: ID!
1172
+
1173
+ """Personal message to recipient"""
1174
+ message: String
1175
+
1176
+ """Recipient email address"""
1177
+ recipientEmail: String
1178
+
1179
+ """Recipient name"""
1180
+ recipientName: String
1181
+ }
1182
+
1183
+ """Checkout gift card recipient update payload"""
1184
+ type CheckoutGiftCardRecipientUpdatePayload {
1185
+ """Updated checkout"""
1186
+ checkout: Checkout
1187
+
1188
+ """User errors"""
1189
+ userErrors: [CheckoutUserError!]!
1190
+ }
1191
+
1192
+ """Checkout gift card remove payload"""
1193
+ type CheckoutGiftCardRemovePayload {
1194
+ """Updated checkout"""
1195
+ checkout: Checkout
1196
+
1197
+ """User errors"""
1198
+ userErrors: [CheckoutUserError!]!
1199
+ }
1200
+
1201
+ """Checkout line item"""
1202
+ type CheckoutLineItem {
1203
+ """Line item ID"""
1204
+ id: ID!
1205
+
1206
+ """Product image"""
1207
+ image: Image
1208
+
1209
+ """Product ID"""
1210
+ productId: String
1211
+
1212
+ """Quantity"""
1213
+ quantity: Int!
1214
+
1215
+ """SKU"""
1216
+ sku: String
1217
+
1218
+ """Product title"""
1219
+ title: String!
1220
+
1221
+ """Total price"""
1222
+ totalPrice: Money!
1223
+
1224
+ """Unit price"""
1225
+ unitPrice: Money!
1226
+
1227
+ """Product variant"""
1228
+ variant: ProductVariant
1229
+
1230
+ """Product variant ID"""
1231
+ variantId: String
1232
+
1233
+ """Variant title"""
1234
+ variantTitle: String
1235
+ }
1236
+
1237
+ """Checkout line item input"""
1238
+ input CheckoutLineItemInput {
1239
+ """Quantity"""
1240
+ quantity: Float!
1241
+
1242
+ """Product variant ID"""
1243
+ variantId: ID!
1244
+ }
1245
+
1246
+ """Checkout payment method update payload"""
1247
+ type CheckoutPaymentMethodUpdatePayload {
1248
+ """Updated checkout"""
1249
+ checkout: Checkout
1250
+
1251
+ """User errors"""
1252
+ userErrors: [CheckoutUserError!]!
1253
+ }
1254
+
1255
+ """Checkout shipping address update payload"""
1256
+ type CheckoutShippingAddressUpdatePayload {
1257
+ """Updated checkout"""
1258
+ checkout: Checkout
1259
+
1260
+ """User errors"""
1261
+ userErrors: [CheckoutUserError!]!
1262
+ }
1263
+
1264
+ """Checkout shipping line update payload"""
1265
+ type CheckoutShippingLineUpdatePayload {
1266
+ """Updated checkout"""
1267
+ checkout: Checkout
1268
+
1269
+ """User errors"""
1270
+ userErrors: [CheckoutUserError!]!
1271
+ }
1272
+
1273
+ """Checkout user error"""
1274
+ type CheckoutUserError {
1275
+ """Error code"""
1276
+ code: CheckoutErrorCode
1277
+
1278
+ """Path to error field"""
1279
+ field: [String!]!
1280
+
1281
+ """Error message"""
1282
+ message: String!
1283
+ }
1284
+
1285
+ """Collection - curated group of products"""
1286
+ type Collection {
1287
+ """Creation timestamp"""
1288
+ createdAt: DateTime!
1289
+
1290
+ """Plain text description"""
1291
+ description: String
1292
+
1293
+ """HTML description"""
1294
+ descriptionHtml: String
1295
+
1296
+ """URL-friendly handle (slug)"""
1297
+ handle: String!
1298
+
1299
+ """Unique identifier"""
1300
+ id: ID!
1301
+
1302
+ """Collection image"""
1303
+ image: Image
1304
+
1305
+ """Products in collection"""
1306
+ products(after: String, first: Int = 20, reverse: Boolean = false, sortKey: ProductSortKeys = BEST_SELLING): ProductConnection!
1307
+
1308
+ """SEO metadata"""
1309
+ seo: SEO
1310
+
1311
+ """Collection title"""
1312
+ title: String!
1313
+
1314
+ """Last update timestamp"""
1315
+ updatedAt: DateTime!
1316
+ }
1317
+
1318
+ """Paginated collection connection"""
1319
+ type CollectionConnection {
1320
+ """Collection edges"""
1321
+ edges: [CollectionEdge!]!
1322
+
1323
+ """Pagination info"""
1324
+ pageInfo: PageInfo!
1325
+
1326
+ """Total count of collections"""
1327
+ totalCount: Int!
1328
+ }
1329
+
1330
+ """Collection edge for pagination"""
1331
+ type CollectionEdge {
1332
+ """Cursor"""
1333
+ cursor: String!
1334
+
1335
+ """Collection node"""
1336
+ node: Collection!
1337
+ }
1338
+
1339
+ """Sort keys for collections"""
1340
+ enum CollectionSortKeys {
1341
+ CREATED_AT
1342
+ RELEVANCE
1343
+ TITLE
1344
+ UPDATED_AT
1345
+ }
1346
+
1347
+ """Type of compensation for the return"""
1348
+ enum CompensationType {
1349
+ REFUND
1350
+ STORE_CREDIT
1351
+ }
1352
+
1353
+ """Price range in converted currency"""
1354
+ type ConvertedPriceRange {
1355
+ """Maximum variant price (converted)"""
1356
+ maxVariantPrice: PriceMoney!
1357
+
1358
+ """Minimum variant price (converted)"""
1359
+ minVariantPrice: PriceMoney!
1360
+ }
1361
+
1362
+ """Region to crop the image"""
1363
+ enum CropRegion {
1364
+ BOTTOM
1365
+ CENTER
1366
+ LEFT
1367
+ RIGHT
1368
+ TOP
1369
+ }
1370
+
1371
+ """Currency information"""
1372
+ type Currency {
1373
+ """ISO 4217 currency code"""
1374
+ code: String!
1375
+
1376
+ """Number of decimal places"""
1377
+ decimalPlaces: Float!
1378
+
1379
+ """Currency full name"""
1380
+ name: String!
1381
+
1382
+ """Currency symbol"""
1383
+ symbol: String!
1384
+
1385
+ """Symbol position relative to amount: before or after"""
1386
+ symbolPosition: String!
1387
+ }
1388
+
1389
+ """Currency conversion result"""
1390
+ type CurrencyConversion {
1391
+ """Converted amount"""
1392
+ convertedAmount: Float!
1393
+
1394
+ """Target currency code"""
1395
+ convertedCurrency: String!
1396
+
1397
+ """Margin percentage applied"""
1398
+ marginApplied: Float
1399
+
1400
+ """Original amount"""
1401
+ originalAmount: Float!
1402
+
1403
+ """Original currency code"""
1404
+ originalCurrency: String!
1405
+
1406
+ """Exchange rate used"""
1407
+ rate: Float!
1408
+
1409
+ """Rate data source"""
1410
+ rateSource: CurrencyRateSource!
1411
+
1412
+ """Rate timestamp"""
1413
+ rateTimestamp: DateTime!
1414
+
1415
+ """Rate with margin applied"""
1416
+ rateWithMargin: Float
1417
+ }
1418
+
1419
+ """Source of exchange rate data"""
1420
+ enum CurrencyRateSource {
1421
+ ECB
1422
+ FIXER
1423
+ MANUAL
1424
+ }
1425
+
1426
+ """Customer - registered user"""
1427
+ type Customer {
1428
+ """Saved addresses"""
1429
+ addresses(first: Int = 10): [MailingAddress!]!
1430
+
1431
+ """Account creation date"""
1432
+ createdAt: DateTime!
1433
+
1434
+ """Default address"""
1435
+ defaultAddress: MailingAddress
1436
+
1437
+ """Display name"""
1438
+ displayName: String!
1439
+
1440
+ """Email address"""
1441
+ email: String!
1442
+
1443
+ """Email marketing consent state"""
1444
+ emailMarketingState: String!
1445
+
1446
+ """Whether email is verified"""
1447
+ emailVerified: Boolean!
1448
+
1449
+ """First name"""
1450
+ firstName: String
1451
+
1452
+ """Unique identifier"""
1453
+ id: ID!
1454
+
1455
+ """Last name"""
1456
+ lastName: String
1457
+
1458
+ """Customer orders"""
1459
+ orders(after: String, first: Int = 10): OrderConnection!
1460
+
1461
+ """Total orders count"""
1462
+ ordersCount: Int!
1463
+
1464
+ """Phone number"""
1465
+ phone: String
1466
+
1467
+ """Total amount spent"""
1468
+ totalSpent: Money!
1469
+
1470
+ """Last update date"""
1471
+ updatedAt: DateTime!
1472
+ }
1473
+
1474
+ """Customer access token"""
1475
+ type CustomerAccessToken {
1476
+ """Access token string"""
1477
+ accessToken: String!
1478
+
1479
+ """Token expiration"""
1480
+ expiresAt: String!
1481
+ }
1482
+
1483
+ """Input for customer login"""
1484
+ input CustomerAccessTokenCreateInput {
1485
+ """Email address"""
1486
+ email: String!
1487
+
1488
+ """Password"""
1489
+ password: String!
1490
+ }
1491
+
1492
+ """Result of customer login"""
1493
+ type CustomerAccessTokenCreatePayload {
1494
+ """Access token"""
1495
+ customerAccessToken: CustomerAccessToken
1496
+
1497
+ """User errors"""
1498
+ userErrors: [UserError!]!
1499
+ }
1500
+
1501
+ """Result of token deletion (logout)"""
1502
+ type CustomerAccessTokenDeletePayload {
1503
+ """Deleted access token"""
1504
+ deletedAccessToken: String
1505
+
1506
+ """Deleted token ID"""
1507
+ deletedCustomerAccessTokenId: String
1508
+
1509
+ """User errors"""
1510
+ userErrors: [UserError!]!
1511
+ }
1512
+
1513
+ """Result of token renewal"""
1514
+ type CustomerAccessTokenRenewPayload {
1515
+ """New access token"""
1516
+ customerAccessToken: CustomerAccessToken
1517
+
1518
+ """User errors"""
1519
+ userErrors: [UserError!]!
1520
+ }
1521
+
1522
+ """Result of address creation"""
1523
+ type CustomerAddressCreatePayload {
1524
+ """Created address"""
1525
+ address: MailingAddress
1526
+
1527
+ """User errors"""
1528
+ userErrors: [UserError!]!
1529
+ }
1530
+
1531
+ """Result of address deletion"""
1532
+ type CustomerAddressDeletePayload {
1533
+ """Deleted address ID"""
1534
+ deletedAddressId: ID
1535
+
1536
+ """User errors"""
1537
+ userErrors: [UserError!]!
1538
+ }
1539
+
1540
+ """Result of address update"""
1541
+ type CustomerAddressUpdatePayload {
1542
+ """Updated address"""
1543
+ address: MailingAddress
1544
+
1545
+ """User errors"""
1546
+ userErrors: [UserError!]!
1547
+ }
1548
+
1549
+ """Input for customer registration"""
1550
+ input CustomerCreateInput {
1551
+ """Email address"""
1552
+ email: String!
1553
+
1554
+ """First name"""
1555
+ firstName: String
1556
+
1557
+ """Last name"""
1558
+ lastName: String
1559
+
1560
+ """Password"""
1561
+ password: String!
1562
+
1563
+ """Phone number"""
1564
+ phone: String
1565
+ }
1566
+
1567
+ """Result of customer creation"""
1568
+ type CustomerCreatePayload {
1569
+ """Created customer"""
1570
+ customer: Customer
1571
+
1572
+ """Access token for new customer"""
1573
+ customerAccessToken: CustomerAccessToken
1574
+
1575
+ """User errors"""
1576
+ userErrors: [UserError!]!
1577
+ }
1578
+
1579
+ """Result of default address update"""
1580
+ type CustomerDefaultAddressUpdatePayload {
1581
+ """Updated customer"""
1582
+ customer: Customer
1583
+
1584
+ """User errors"""
1585
+ userErrors: [UserError!]!
1586
+ }
1587
+
1588
+ """Customer group for B2B pricing"""
1589
+ type CustomerGroup {
1590
+ """Group code"""
1591
+ code: String!
1592
+
1593
+ """Group description"""
1594
+ description: String
1595
+
1596
+ """Default discount percentage (0-100)"""
1597
+ discountPercent: Float!
1598
+
1599
+ """Group ID"""
1600
+ id: ID!
1601
+
1602
+ """Group name (e.g., "Wholesale", "VIP")"""
1603
+ name: String!
1604
+
1605
+ """Whether group is tax exempt"""
1606
+ taxExempt: Boolean!
1607
+ }
1608
+
1609
+ """Result of password recovery"""
1610
+ type CustomerRecoverPayload {
1611
+ """User errors"""
1612
+ userErrors: [UserError!]!
1613
+ }
1614
+
1615
+ """Result of password reset"""
1616
+ type CustomerResetPayload {
1617
+ """Updated customer"""
1618
+ customer: Customer
1619
+
1620
+ """New access token"""
1621
+ customerAccessToken: CustomerAccessToken
1622
+
1623
+ """User errors"""
1624
+ userErrors: [UserError!]!
1625
+ }
1626
+
1627
+ """Input for customer update"""
1628
+ input CustomerUpdateInput {
1629
+ """First name"""
1630
+ firstName: String
1631
+
1632
+ """Last name"""
1633
+ lastName: String
1634
+
1635
+ """Phone number"""
1636
+ phone: String
1637
+ }
1638
+
1639
+ """Result of customer update"""
1640
+ type CustomerUpdatePayload {
1641
+ """Updated customer"""
1642
+ customer: Customer
1643
+
1644
+ """User errors"""
1645
+ userErrors: [UserError!]!
1646
+ }
1647
+
1648
+ """
1649
+ A date-time string at UTC, such as 2019-12-03T09:54:33Z, compliant with the date-time format.
1650
+ """
1651
+ scalar DateTime
1652
+
1653
+ """Estimated delivery timeframe"""
1654
+ type DeliveryEstimate {
1655
+ """Human-readable delivery estimate"""
1656
+ description: String
1657
+
1658
+ """Maximum delivery days"""
1659
+ maxDays: Int
1660
+
1661
+ """Minimum delivery days"""
1662
+ minDays: Int
1663
+ }
1664
+
1665
+ """Item affected by a discount (especially BXGY)"""
1666
+ type DiscountAffectedItem {
1667
+ """Discounted price per unit"""
1668
+ discountedPrice: Money!
1669
+
1670
+ """Whether this item is "free" in BXGY"""
1671
+ isFreeItem: Boolean!
1672
+
1673
+ """Original price per unit"""
1674
+ originalPrice: Money!
1675
+
1676
+ """Product ID"""
1677
+ productId: ID!
1678
+
1679
+ """Quantity affected by discount"""
1680
+ quantity: Int!
1681
+
1682
+ """Total savings for this item"""
1683
+ savings: Money!
1684
+
1685
+ """Product/variant title"""
1686
+ title: String!
1687
+
1688
+ """Variant ID"""
1689
+ variantId: ID
1690
+ }
1691
+
1692
+ """Applied discount"""
1693
+ type DiscountApplication {
1694
+ """Items affected by this discount (for BXGY type)"""
1695
+ affectedItems: [DiscountAffectedItem!]
1696
+
1697
+ """Whether discount is applicable"""
1698
+ applicable: Boolean!
1699
+
1700
+ """Buy quantity for BXGY (e.g., 2 in "Buy 2 Get 1")"""
1701
+ buyQuantity: Int
1702
+
1703
+ """Discount code"""
1704
+ code: String!
1705
+
1706
+ """Discount percentage on "get" items (100 = free)"""
1707
+ getDiscountPercent: Float
1708
+
1709
+ """Get quantity for BXGY (e.g., 1 in "Buy 2 Get 1")"""
1710
+ getQuantity: Int
1711
+
1712
+ """Discount title/description"""
1713
+ title: String
1714
+
1715
+ """Type of discount"""
1716
+ type: DiscountApplicationType
1717
+
1718
+ """Discount amount"""
1719
+ value: Money
1720
+ }
1721
+
1722
+ """Type of discount being applied"""
1723
+ enum DiscountApplicationType {
1724
+ BUY_X_GET_Y
1725
+ FIXED_AMOUNT
1726
+ FREE_SHIPPING
1727
+ PERCENTAGE
1728
+ }
1729
+
1730
+ """Discount code applied to checkout"""
1731
+ type DiscountCode {
1732
+ """Whether the code is currently applicable"""
1733
+ applicable: Boolean!
1734
+
1735
+ """Discount code string"""
1736
+ code: String!
1737
+ }
1738
+
1739
+ """Error codes for discount validation"""
1740
+ enum DiscountErrorCode {
1741
+ CUSTOMER_NOT_ELIGIBLE
1742
+ CUSTOMER_USAGE_LIMIT_REACHED
1743
+ DISCOUNT_COMBINATION_NOT_ALLOWED
1744
+ EXPIRED
1745
+ INACTIVE
1746
+ MINIMUM_ORDER_NOT_MET
1747
+ MINIMUM_QUANTITY_NOT_MET
1748
+ NOT_FOUND
1749
+ NOT_STARTED
1750
+ SHOP_NOT_FOUND
1751
+ USAGE_LIMIT_REACHED
1752
+ }
1753
+
1754
+ """Information about a valid discount"""
1755
+ type DiscountInfo {
1756
+ """Discount code"""
1757
+ code: String!
1758
+
1759
+ """Calculated discount amount"""
1760
+ discountAmount: Money
1761
+
1762
+ """Discount title"""
1763
+ title: String!
1764
+
1765
+ """Type of discount"""
1766
+ type: DiscountApplicationType!
1767
+
1768
+ """Discount value (percentage or amount)"""
1769
+ value: Float!
1770
+ }
1771
+
1772
+ """Discount validation error"""
1773
+ type DiscountValidationError {
1774
+ """Error code"""
1775
+ code: DiscountErrorCode!
1776
+
1777
+ """Error message"""
1778
+ message: String!
1779
+ }
1780
+
1781
+ """Result of validating a discount code"""
1782
+ type DiscountValidationResult {
1783
+ """Discount info (if valid)"""
1784
+ discount: DiscountInfo
1785
+
1786
+ """Error details (if invalid)"""
1787
+ error: DiscountValidationError
1788
+
1789
+ """Whether the discount code is valid"""
1790
+ valid: Boolean!
1791
+ }
1792
+
1793
+ """Exchange rate between currencies"""
1794
+ type ExchangeRate {
1795
+ """Source currency code"""
1796
+ from: String!
1797
+
1798
+ """Exchange rate"""
1799
+ rate: Float!
1800
+
1801
+ """Rate data source"""
1802
+ source: CurrencyRateSource!
1803
+
1804
+ """Target currency code"""
1805
+ to: String!
1806
+
1807
+ """When rate was last updated"""
1808
+ updatedAt: DateTime!
1809
+ }
1810
+
1811
+ """Free shipping progress indicator"""
1812
+ type FreeShippingProgress {
1813
+ """Current cart subtotal"""
1814
+ currentAmount: Money
1815
+
1816
+ """Human-readable progress message"""
1817
+ message: String
1818
+
1819
+ """Progress percentage (0-100)"""
1820
+ progressPercent: Float
1821
+
1822
+ """Whether free shipping is achieved"""
1823
+ qualifies: Boolean!
1824
+
1825
+ """Amount remaining for free shipping"""
1826
+ remaining: Money
1827
+
1828
+ """Threshold for free shipping"""
1829
+ threshold: Money
1830
+ }
1831
+
1832
+ """Result of generating referral code"""
1833
+ type GenerateReferralCodePayload {
1834
+ """Generated referral code"""
1835
+ referralCode: String
1836
+
1837
+ """Shareable referral URL"""
1838
+ shareUrl: String
1839
+
1840
+ """Whether generation was successful"""
1841
+ success: Boolean!
1842
+
1843
+ """Error messages if any"""
1844
+ userErrors: [String!]!
1845
+ }
1846
+
1847
+ """Gift card information"""
1848
+ type GiftCard {
1849
+ """Current balance"""
1850
+ balance: Money!
1851
+
1852
+ """Creation timestamp"""
1853
+ createdAt: DateTime!
1854
+
1855
+ """Expiration date"""
1856
+ expiresAt: DateTime
1857
+
1858
+ """Gift card ID"""
1859
+ id: ID!
1860
+
1861
+ """Initial gift card amount"""
1862
+ initialAmount: Money!
1863
+
1864
+ """Last 4 characters of code"""
1865
+ lastCharacters: String!
1866
+
1867
+ """Gift card code (masked for security)"""
1868
+ maskedCode: String!
1869
+
1870
+ """Personal message"""
1871
+ message: String
1872
+
1873
+ """Recipient name"""
1874
+ recipientName: String
1875
+
1876
+ """Gift card status"""
1877
+ status: GiftCardStatus!
1878
+
1879
+ """Transaction history"""
1880
+ transactions: [GiftCardTransaction!]!
1881
+ }
1882
+
1883
+ """Gift card validation error"""
1884
+ type GiftCardError {
1885
+ """Error code"""
1886
+ code: GiftCardErrorCode!
1887
+
1888
+ """Human-readable error message"""
1889
+ message: String!
1890
+ }
1891
+
1892
+ """Gift card validation error codes"""
1893
+ enum GiftCardErrorCode {
1894
+ ALREADY_USED
1895
+ CURRENCY_MISMATCH
1896
+ DISABLED
1897
+ EXPIRED
1898
+ INSUFFICIENT_BALANCE
1899
+ INVALID_CODE_FORMAT
1900
+ NOT_FOUND
1901
+ }
1902
+
1903
+ """Result of gift card lookup"""
1904
+ type GiftCardPayload {
1905
+ """Gift card if found"""
1906
+ giftCard: GiftCard
1907
+
1908
+ """User errors"""
1909
+ userErrors: [UserError!]!
1910
+ }
1911
+
1912
+ """Gift card status"""
1913
+ enum GiftCardStatus {
1914
+ ACTIVE
1915
+ DISABLED
1916
+ EXPIRED
1917
+ USED
1918
+ }
1919
+
1920
+ """Gift card transaction record"""
1921
+ type GiftCardTransaction {
1922
+ """Transaction amount"""
1923
+ amount: Money!
1924
+
1925
+ """Balance after transaction"""
1926
+ balanceAfter: Money!
1927
+
1928
+ """Transaction timestamp"""
1929
+ createdAt: DateTime!
1930
+
1931
+ """Transaction ID"""
1932
+ id: ID!
1933
+
1934
+ """Order ID if related to order"""
1935
+ orderId: ID
1936
+
1937
+ """Transaction type"""
1938
+ type: String!
1939
+ }
1940
+
1941
+ """Result of gift card validation"""
1942
+ type GiftCardValidatePayload {
1943
+ """User errors"""
1944
+ userErrors: [UserError!]!
1945
+
1946
+ """Validation result"""
1947
+ validation: GiftCardValidation
1948
+ }
1949
+
1950
+ """Gift card validation result"""
1951
+ type GiftCardValidation {
1952
+ """Available balance if valid"""
1953
+ availableBalance: Money
1954
+
1955
+ """Error details if invalid"""
1956
+ error: GiftCardError
1957
+
1958
+ """Gift card details if valid"""
1959
+ giftCard: GiftCard
1960
+
1961
+ """Whether the gift card is valid for use"""
1962
+ valid: Boolean!
1963
+ }
1964
+
1965
+ """Image with URL and metadata"""
1966
+ type Image {
1967
+ """Alt text for accessibility"""
1968
+ altText: String
1969
+
1970
+ """Image height in pixels"""
1971
+ height: Int
1972
+
1973
+ """Image ID"""
1974
+ id: ID
1975
+
1976
+ """Image URL. Pass transform argument for resized/cropped CDN URLs."""
1977
+ url(transform: ImageTransformInput): String!
1978
+
1979
+ """Image width in pixels"""
1980
+ width: Int
1981
+ }
1982
+
1983
+ """Image content type for output format"""
1984
+ enum ImageContentType {
1985
+ AVIF
1986
+ JPG
1987
+ PNG
1988
+ WEBP
1989
+ }
1990
+
1991
+ """Image transform options (Shopify-compatible)"""
1992
+ input ImageTransformInput {
1993
+ """Crop region"""
1994
+ crop: CropRegion
1995
+
1996
+ """Max height in pixels (1-5760)"""
1997
+ maxHeight: Int
1998
+
1999
+ """Max width in pixels (1-5760)"""
2000
+ maxWidth: Int
2001
+
2002
+ """Preferred output format"""
2003
+ preferredContentType: ImageContentType
2004
+
2005
+ """DPI scale multiplier (1-3)"""
2006
+ scale: Int
2007
+ }
2008
+
2009
+ """Inventory level at a specific location"""
2010
+ type InventoryLevel {
2011
+ """
2012
+ Available quantity (computed: onHand - committed - reserved - damaged - safetyStock)
2013
+ """
2014
+ available: Int!
2015
+
2016
+ """Location ID"""
2017
+ locationId: ID!
2018
+
2019
+ """Location name"""
2020
+ locationName: String!
2021
+
2022
+ """Location type"""
2023
+ locationType: LocationType!
2024
+
2025
+ """On-hand quantity at this location"""
2026
+ onHand: Int!
2027
+ }
2028
+
2029
+ """Language configuration"""
2030
+ type Language {
2031
+ """Language code (ISO 639-1)"""
2032
+ code: ID!
2033
+
2034
+ """Text direction"""
2035
+ direction: LanguageDirection!
2036
+
2037
+ """English language name"""
2038
+ englishName: String!
2039
+
2040
+ """Whether this is the default language"""
2041
+ isDefault: Boolean!
2042
+
2043
+ """Locale code (e.g., "pl-PL")"""
2044
+ locale: String
2045
+
2046
+ """Native language name"""
2047
+ nativeName: String!
2048
+ }
2049
+
2050
+ """Text direction for the language"""
2051
+ enum LanguageDirection {
2052
+ LTR
2053
+ RTL
2054
+ }
2055
+
2056
+ """Locale to currency mapping entry"""
2057
+ type LocaleCurrencyMapping {
2058
+ """Currency code (e.g., "PLN", "USD")"""
2059
+ currency: String!
2060
+
2061
+ """Browser locale (e.g., "pl-PL", "en-US")"""
2062
+ locale: String!
2063
+ }
2064
+
2065
+ """Type of inventory location"""
2066
+ enum LocationType {
2067
+ DROPSHIPPER
2068
+ FULFILLMENT_CENTER
2069
+ STORE
2070
+ WAREHOUSE
2071
+ }
2072
+
2073
+ """Available point earning action"""
2074
+ type LoyaltyAction {
2075
+ """Whether action is enabled"""
2076
+ enabled: Boolean!
2077
+
2078
+ """Points awarded for this action (if fixed)"""
2079
+ points: Int
2080
+
2081
+ """Action type"""
2082
+ type: String!
2083
+ }
2084
+
2085
+ """Loyalty program member"""
2086
+ type LoyaltyMember {
2087
+ """Annual spend amount"""
2088
+ annualSpend: Money!
2089
+
2090
+ """Customer ID"""
2091
+ customerId: ID!
2092
+
2093
+ """Enrollment date"""
2094
+ enrolledAt: String!
2095
+
2096
+ """Member ID"""
2097
+ id: ID!
2098
+
2099
+ """Last activity date"""
2100
+ lastActivityAt: String
2101
+
2102
+ """Points summary"""
2103
+ points: LoyaltyPointsSummary!
2104
+
2105
+ """Current tier"""
2106
+ tier: LoyaltyTier
2107
+
2108
+ """Progress to next tier"""
2109
+ tierProgress: TierProgress
2110
+ }
2111
+
2112
+ """Page info"""
2113
+ type LoyaltyPageInfo {
2114
+ """End cursor"""
2115
+ endCursor: String
2116
+
2117
+ """Has next page"""
2118
+ hasNextPage: Boolean!
2119
+
2120
+ """Has previous page"""
2121
+ hasPreviousPage: Boolean!
2122
+
2123
+ """Start cursor"""
2124
+ startCursor: String
2125
+ }
2126
+
2127
+ """Loyalty points summary"""
2128
+ type LoyaltyPointsSummary {
2129
+ """Currently available points"""
2130
+ currentPoints: Int!
2131
+
2132
+ """Points expired"""
2133
+ expiredPoints: Int!
2134
+
2135
+ """Points expiring soon (next 30 days)"""
2136
+ expiringPoints: Int
2137
+
2138
+ """Next expiry date"""
2139
+ nextExpiryDate: String
2140
+
2141
+ """Points pending (from incomplete orders)"""
2142
+ pendingPoints: Int!
2143
+
2144
+ """Points redeemed"""
2145
+ redeemedPoints: Int!
2146
+
2147
+ """Total points earned all-time"""
2148
+ totalPoints: Int!
2149
+ }
2150
+
2151
+ """Redeemable loyalty reward"""
2152
+ type LoyaltyReward {
2153
+ """Whether reward is available"""
2154
+ available: Boolean!
2155
+
2156
+ """Description"""
2157
+ description: String
2158
+
2159
+ """Discount amount (if discount type)"""
2160
+ discountAmount: Money
2161
+
2162
+ """Discount percentage (if discount type)"""
2163
+ discountPercent: Float
2164
+
2165
+ """Reward ID"""
2166
+ id: ID!
2167
+
2168
+ """Reward image"""
2169
+ image: Image
2170
+
2171
+ """Reward name"""
2172
+ name: String!
2173
+
2174
+ """Points required to redeem"""
2175
+ pointsCost: Int!
2176
+
2177
+ """Remaining redemptions (null = unlimited)"""
2178
+ remainingRedemptions: Int
2179
+
2180
+ """URL-friendly slug"""
2181
+ slug: String!
2182
+
2183
+ """Minimum tier required"""
2184
+ tierRequired: LoyaltyTier
2185
+
2186
+ """Reward type (discount, product, shipping, gift_card)"""
2187
+ type: String!
2188
+ }
2189
+
2190
+ """Public loyalty program settings"""
2191
+ type LoyaltySettings {
2192
+ """Available point earning actions"""
2193
+ availableActions: [LoyaltyAction!]!
2194
+
2195
+ """Whether loyalty program is enabled"""
2196
+ enabled: Boolean!
2197
+
2198
+ """Months until points expire (null = no expiry)"""
2199
+ pointsExpiryMonths: Int
2200
+
2201
+ """Custom name for points (e.g., "Points", "Stars", "Coins")"""
2202
+ pointsName: String!
2203
+
2204
+ """Points earned per 1 unit of currency"""
2205
+ pointsPerCurrency: Float!
2206
+
2207
+ """Bonus points for referred customer"""
2208
+ referralBonusPoints: Int
2209
+
2210
+ """Whether referral program is enabled"""
2211
+ referralEnabled: Boolean!
2212
+
2213
+ """Points awarded to referrer"""
2214
+ referralPoints: Int
2215
+ }
2216
+
2217
+ """Loyalty program tier"""
2218
+ type LoyaltyTier {
2219
+ """Additional custom benefits"""
2220
+ customBenefits: [TierBenefit!]!
2221
+
2222
+ """Tier ID"""
2223
+ id: ID!
2224
+
2225
+ """Minimum annual spend required"""
2226
+ minAnnualSpend: Money
2227
+
2228
+ """Minimum points required for tier"""
2229
+ minPoints: Int!
2230
+
2231
+ """Tier name"""
2232
+ name: String!
2233
+
2234
+ """Points earning multiplier (e.g., 1.5 for 50% bonus)"""
2235
+ pointsMultiplier: Float!
2236
+
2237
+ """Tier type (null for custom tiers)"""
2238
+ type: LoyaltyTierType
2239
+ }
2240
+
2241
+ """Loyalty program tier level"""
2242
+ enum LoyaltyTierType {
2243
+ BRONZE
2244
+ DIAMOND
2245
+ GOLD
2246
+ PLATINUM
2247
+ SILVER
2248
+ }
2249
+
2250
+ """Loyalty points transaction"""
2251
+ type LoyaltyTransaction {
2252
+ """Balance after transaction"""
2253
+ balanceAfter: Int!
2254
+
2255
+ """Transaction date"""
2256
+ createdAt: String!
2257
+
2258
+ """Description"""
2259
+ description: String
2260
+
2261
+ """Expiry date for earned points"""
2262
+ expiresAt: String
2263
+
2264
+ """Transaction ID"""
2265
+ id: ID!
2266
+
2267
+ """Related order ID"""
2268
+ orderId: String
2269
+
2270
+ """Points (positive = earn, negative = spend)"""
2271
+ points: Int!
2272
+
2273
+ """Transaction type"""
2274
+ type: LoyaltyTransactionType!
2275
+ }
2276
+
2277
+ """Paginated loyalty transactions"""
2278
+ type LoyaltyTransactionConnection {
2279
+ """Transaction edges"""
2280
+ edges: [LoyaltyTransactionEdge!]!
2281
+
2282
+ """Pagination info"""
2283
+ pageInfo: LoyaltyPageInfo!
2284
+
2285
+ """Total count of transactions"""
2286
+ totalCount: Int!
2287
+ }
2288
+
2289
+ """Loyalty transaction edge"""
2290
+ type LoyaltyTransactionEdge {
2291
+ """Cursor for pagination"""
2292
+ cursor: String!
2293
+
2294
+ """The transaction"""
2295
+ node: LoyaltyTransaction!
2296
+ }
2297
+
2298
+ """Type of loyalty points transaction"""
2299
+ enum LoyaltyTransactionType {
2300
+ ADJUST
2301
+ EARN_BIRTHDAY
2302
+ EARN_BONUS
2303
+ EARN_PURCHASE
2304
+ EARN_REFERRAL
2305
+ EARN_REVIEW
2306
+ EARN_SIGNUP
2307
+ EXPIRE
2308
+ REDEEM
2309
+ REFUND_REVERSAL
2310
+ }
2311
+
2312
+ """Customer mailing address"""
2313
+ type MailingAddress {
2314
+ """First line of address"""
2315
+ address1: String
2316
+
2317
+ """Second line of address"""
2318
+ address2: String
2319
+
2320
+ """City"""
2321
+ city: String
2322
+
2323
+ """Company name"""
2324
+ company: String
2325
+
2326
+ """Country"""
2327
+ country: String
2328
+
2329
+ """Country code (ISO)"""
2330
+ countryCode: String
2331
+
2332
+ """First name"""
2333
+ firstName: String
2334
+
2335
+ """Unique identifier"""
2336
+ id: ID!
2337
+
2338
+ """Whether this is default address"""
2339
+ isDefault: Boolean!
2340
+
2341
+ """Last name"""
2342
+ lastName: String
2343
+
2344
+ """Phone number"""
2345
+ phone: String
2346
+
2347
+ """Province/State"""
2348
+ province: String
2349
+
2350
+ """Province code"""
2351
+ provinceCode: String
2352
+
2353
+ """ZIP/Postal code"""
2354
+ zip: String
2355
+ }
2356
+
2357
+ """Input for mailing address"""
2358
+ input MailingAddressInput {
2359
+ """First line of address"""
2360
+ address1: String
2361
+
2362
+ """Second line of address"""
2363
+ address2: String
2364
+
2365
+ """City"""
2366
+ city: String
2367
+
2368
+ """Company"""
2369
+ company: String
2370
+
2371
+ """Country code (ISO)"""
2372
+ country: String
2373
+
2374
+ """First name"""
2375
+ firstName: String
2376
+
2377
+ """Last name"""
2378
+ lastName: String
2379
+
2380
+ """Phone"""
2381
+ phone: String
2382
+
2383
+ """Province/State"""
2384
+ province: String
2385
+
2386
+ """ZIP/Postal code"""
2387
+ zip: String
2388
+ }
2389
+
2390
+ """Monetary value with currency"""
2391
+ type Money {
2392
+ """Decimal money amount"""
2393
+ amount: String!
2394
+
2395
+ """Currency code (ISO 4217)"""
2396
+ currencyCode: String!
2397
+ }
2398
+
2399
+ type Mutation {
2400
+ """Update buyer identity"""
2401
+ cartBuyerIdentityUpdate(buyerIdentity: CartBuyerIdentityInput!, cartId: ID!): CartBuyerIdentityUpdatePayload!
2402
+
2403
+ """Create new cart"""
2404
+ cartCreate(input: CartCreateInput): CartCreatePayload!
2405
+
2406
+ """Update discount codes"""
2407
+ cartDiscountCodesUpdate(cartId: ID!, discountCodes: [String!]!): CartDiscountCodesUpdatePayload!
2408
+
2409
+ """Add lines to cart"""
2410
+ cartLinesAdd(cartId: ID!, lines: [CartLineInput!]!): CartLinesAddPayload!
2411
+
2412
+ """Remove lines from cart"""
2413
+ cartLinesRemove(cartId: ID!, lineIds: [ID!]!): CartLinesRemovePayload!
2414
+
2415
+ """Update cart lines"""
2416
+ cartLinesUpdate(cartId: ID!, lines: [CartLineUpdateInput!]!): CartLinesUpdatePayload!
2417
+
2418
+ """Update cart note"""
2419
+ cartNoteUpdate(cartId: ID!, note: String!): CartNoteUpdatePayload!
2420
+
2421
+ """Update checkout billing address"""
2422
+ checkoutBillingAddressUpdate(billingAddress: CheckoutAddressInput!, checkoutId: ID!): CheckoutBillingAddressUpdatePayload!
2423
+
2424
+ """Complete checkout and create order"""
2425
+ checkoutComplete(checkoutId: ID!, input: CheckoutCompleteInput): CheckoutCompletePayload!
2426
+
2427
+ """Create new checkout"""
2428
+ checkoutCreate(input: CheckoutCreateInput!): CheckoutCreatePayload!
2429
+
2430
+ """Apply discount code to checkout"""
2431
+ checkoutDiscountCodeApply(checkoutId: ID!, discountCode: String!): CheckoutDiscountCodeApplyPayload!
2432
+
2433
+ """Remove discount code from checkout"""
2434
+ checkoutDiscountCodeRemove(checkoutId: ID!, discountCode: String!): CheckoutDiscountCodeRemovePayload!
2435
+
2436
+ """Validate discount code without applying"""
2437
+ checkoutDiscountCodeValidate(checkoutId: ID!, discountCode: String!): CheckoutDiscountCodeValidatePayload!
2438
+
2439
+ """Update checkout email"""
2440
+ checkoutEmailUpdate(checkoutId: ID!, email: String!): CheckoutEmailUpdatePayload!
2441
+
2442
+ """Apply gift card to checkout"""
2443
+ checkoutGiftCardApply(checkoutId: ID!, giftCardCode: String!): CheckoutGiftCardApplyPayload!
2444
+
2445
+ """Update gift card recipient info for a line item"""
2446
+ checkoutGiftCardRecipientUpdate(input: CheckoutGiftCardRecipientInput!): CheckoutGiftCardRecipientUpdatePayload!
2447
+
2448
+ """Remove gift card from checkout"""
2449
+ checkoutGiftCardRemove(checkoutId: ID!, giftCardCode: String!): CheckoutGiftCardRemovePayload!
2450
+
2451
+ """Update checkout payment method"""
2452
+ checkoutPaymentMethodUpdate(checkoutId: ID!, paymentMethodId: ID!): CheckoutPaymentMethodUpdatePayload!
2453
+
2454
+ """Update checkout shipping address"""
2455
+ checkoutShippingAddressUpdate(checkoutId: ID!, shippingAddress: CheckoutAddressInput!): CheckoutShippingAddressUpdatePayload!
2456
+
2457
+ """Update checkout shipping method"""
2458
+ checkoutShippingLineUpdate(checkoutId: ID!, shippingRateHandle: String!): CheckoutShippingLineUpdatePayload!
2459
+
2460
+ """Login customer"""
2461
+ customerAccessTokenCreate(input: CustomerAccessTokenCreateInput!): CustomerAccessTokenCreatePayload!
2462
+
2463
+ """Logout customer"""
2464
+ customerAccessTokenDelete(customerAccessToken: String!): CustomerAccessTokenDeletePayload!
2465
+
2466
+ """Refresh access token"""
2467
+ customerAccessTokenRenew(customerAccessToken: String!): CustomerAccessTokenRenewPayload!
2468
+
2469
+ """Create customer address"""
2470
+ customerAddressCreate(address: MailingAddressInput!, customerAccessToken: String!): CustomerAddressCreatePayload!
2471
+
2472
+ """Delete customer address"""
2473
+ customerAddressDelete(customerAccessToken: String!, id: ID!): CustomerAddressDeletePayload!
2474
+
2475
+ """Update customer address"""
2476
+ customerAddressUpdate(address: MailingAddressInput!, customerAccessToken: String!, id: ID!): CustomerAddressUpdatePayload!
2477
+
2478
+ """Register new customer"""
2479
+ customerCreate(input: CustomerCreateInput!): CustomerCreatePayload!
2480
+
2481
+ """Set default address"""
2482
+ customerDefaultAddressUpdate(addressId: ID!, customerAccessToken: String!): CustomerDefaultAddressUpdatePayload!
2483
+
2484
+ """Send password reset email"""
2485
+ customerRecover(email: String!): CustomerRecoverPayload!
2486
+
2487
+ """Reset password"""
2488
+ customerReset(id: ID!, input: String!, password: String!): CustomerResetPayload!
2489
+
2490
+ """Update customer profile"""
2491
+ customerUpdate(customer: CustomerUpdateInput!, customerAccessToken: String!): CustomerUpdatePayload!
2492
+
2493
+ """Generate or retrieve referral code"""
2494
+ generateReferralCode: GenerateReferralCodePayload!
2495
+
2496
+ """Redeem a loyalty reward"""
2497
+ redeemLoyaltyReward(input: RedeemRewardInput!): RedeemRewardPayload!
2498
+
2499
+ """Cancel a return request"""
2500
+ returnCancel(customerAccessToken: String!, id: ID!): ReturnCancelPayload!
2501
+
2502
+ """Create a return request"""
2503
+ returnCreate(customerAccessToken: String!, input: ReturnCreateInput!): ReturnCreatePayload!
2504
+
2505
+ """Create a product review"""
2506
+ reviewCreate(input: ReviewCreateInput!): ReviewPayload!
2507
+
2508
+ """Vote on review helpfulness"""
2509
+ reviewVote(isHelpful: Boolean!, reviewId: ID!): ReviewPayload!
2510
+
2511
+ """Add item to wishlist"""
2512
+ wishlistAddItem(input: WishlistItemInput!, wishlistId: ID!): WishlistPayload!
2513
+
2514
+ """Create a new wishlist"""
2515
+ wishlistCreate(input: WishlistCreateInput!): WishlistPayload!
2516
+
2517
+ """Delete a wishlist"""
2518
+ wishlistDelete(wishlistId: ID!): WishlistPayload!
2519
+
2520
+ """Remove item from wishlist"""
2521
+ wishlistRemoveItem(itemId: ID!, wishlistId: ID!): WishlistPayload!
2522
+ }
2523
+
2524
+ """Customer order summary"""
2525
+ type Order {
2526
+ """When order was cancelled"""
2527
+ cancelledAt: DateTime
2528
+
2529
+ """When order was confirmed"""
2530
+ confirmedAt: DateTime
2531
+
2532
+ """When order expired"""
2533
+ expiredAt: DateTime
2534
+
2535
+ """Financial status"""
2536
+ financialStatus: OrderFinancialStatus!
2537
+
2538
+ """Fulfillment status"""
2539
+ fulfillmentStatus: OrderFulfillmentStatus!
2540
+
2541
+ """Unique identifier"""
2542
+ id: ID!
2543
+
2544
+ """Line items count"""
2545
+ lineItemsCount: Int!
2546
+
2547
+ """Order number (human-readable)"""
2548
+ orderNumber: String!
2549
+
2550
+ """Order date"""
2551
+ processedAt: String!
2552
+
2553
+ """Order shipments"""
2554
+ shipments: [Shipment!]!
2555
+
2556
+ """Shipping address"""
2557
+ shippingAddress: MailingAddress
2558
+
2559
+ """Order lifecycle status"""
2560
+ status: StorefrontOrderStatus!
2561
+
2562
+ """Order subtotal"""
2563
+ subtotalPrice: Money!
2564
+
2565
+ """Order total"""
2566
+ totalPrice: Money!
2567
+
2568
+ """Total shipping"""
2569
+ totalShipping: Money
2570
+
2571
+ """Total tax"""
2572
+ totalTax: Money
2573
+ }
2574
+
2575
+ """Paginated order connection"""
2576
+ type OrderConnection {
2577
+ """Order edges"""
2578
+ edges: [OrderEdge!]!
2579
+
2580
+ """Pagination info"""
2581
+ pageInfo: PageInfo!
2582
+
2583
+ """Total orders count"""
2584
+ totalCount: Int!
2585
+ }
2586
+
2587
+ """Order edge for pagination"""
2588
+ type OrderEdge {
2589
+ """Cursor"""
2590
+ cursor: String!
2591
+
2592
+ """Order node"""
2593
+ node: Order!
2594
+ }
2595
+
2596
+ """Financial status of an order"""
2597
+ enum OrderFinancialStatus {
2598
+ AUTHORIZED
2599
+ CHARGEBACK
2600
+ FAILED
2601
+ PAID
2602
+ PARTIALLY_PAID
2603
+ PARTIALLY_REFUNDED
2604
+ PENDING
2605
+ REFUNDED
2606
+ REFUND_PENDING
2607
+ UNPAID
2608
+ VOIDED
2609
+ }
2610
+
2611
+ """Fulfillment status of an order"""
2612
+ enum OrderFulfillmentStatus {
2613
+ DELIVERED
2614
+ FULFILLED
2615
+ IN_TRANSIT
2616
+ LOST
2617
+ PARTIALLY_FULFILLED
2618
+ PARTIALLY_RETURNED
2619
+ RETURNED
2620
+ UNFULFILLED
2621
+ }
2622
+
2623
+ """Package dimensions for rate calculation"""
2624
+ input PackageDimensionsInput {
2625
+ """Height in cm"""
2626
+ height: Int
2627
+
2628
+ """Length in cm"""
2629
+ length: Int
2630
+
2631
+ """Weight in grams"""
2632
+ weight: Int!
2633
+
2634
+ """Width in cm"""
2635
+ width: Int
2636
+ }
2637
+
2638
+ """Pagination information"""
2639
+ type PageInfo {
2640
+ """Cursor of last item"""
2641
+ endCursor: String
2642
+
2643
+ """Whether there are more items after"""
2644
+ hasNextPage: Boolean!
2645
+
2646
+ """Whether there are more items before"""
2647
+ hasPreviousPage: Boolean!
2648
+
2649
+ """Cursor of first item"""
2650
+ startCursor: String
2651
+ }
2652
+
2653
+ """Payment method available for checkout"""
2654
+ type PaymentMethod {
2655
+ """Description for customers"""
2656
+ description: String
2657
+
2658
+ """Icon URL or path"""
2659
+ icon: String
2660
+
2661
+ """Payment method ID"""
2662
+ id: ID!
2663
+
2664
+ """Whether this is the default payment method"""
2665
+ isDefault: Boolean!
2666
+
2667
+ """Display name"""
2668
+ name: String!
2669
+
2670
+ """Display position (lower = higher priority)"""
2671
+ position: Float!
2672
+
2673
+ """Provider code (payu, stripe, p24, etc.)"""
2674
+ provider: String!
2675
+
2676
+ """Supported currency codes"""
2677
+ supportedCurrencies: [String!]
2678
+
2679
+ """Type of payment method"""
2680
+ type: PaymentMethodType!
2681
+ }
2682
+
2683
+ """Type of payment method"""
2684
+ enum PaymentMethodType {
2685
+ APPLE_PAY
2686
+ BANK_TRANSFER
2687
+ BLIK
2688
+ CARD
2689
+ CASH_ON_DELIVERY
2690
+ GOOGLE_PAY
2691
+ OTHER
2692
+ PAYPAL
2693
+ }
2694
+
2695
+ """Points estimate for an order"""
2696
+ type PointsEstimate {
2697
+ """Base points to earn"""
2698
+ basePoints: Int!
2699
+
2700
+ """Bonus points from tier multiplier"""
2701
+ bonusPoints: Int!
2702
+
2703
+ """Tier multiplier applied"""
2704
+ multiplier: Float
2705
+
2706
+ """Total points to earn"""
2707
+ totalPoints: Int!
2708
+ }
2709
+
2710
+ """Price with full conversion transparency"""
2711
+ type PriceMoney {
2712
+ """Price amount in display currency"""
2713
+ amount: String!
2714
+
2715
+ """Original price in shop base currency"""
2716
+ baseAmount: String!
2717
+
2718
+ """Shop base currency code"""
2719
+ baseCurrencyCode: String!
2720
+
2721
+ """Display currency code (ISO 4217)"""
2722
+ currencyCode: String!
2723
+
2724
+ """Exchange rate used (null if same currency)"""
2725
+ exchangeRate: Float
2726
+
2727
+ """Whether price was converted from different currency"""
2728
+ isConverted: Boolean!
2729
+
2730
+ """Margin applied by shop (e.g., 0.02 = 2%)"""
2731
+ marginApplied: Float
2732
+
2733
+ """When the exchange rate was fetched"""
2734
+ rateTimestamp: DateTime
2735
+ }
2736
+
2737
+ """Price range for filtering"""
2738
+ type PriceRange {
2739
+ """Maximum price in current product set"""
2740
+ max: Money!
2741
+
2742
+ """Minimum price in current product set"""
2743
+ min: Money!
2744
+ }
2745
+
2746
+ """Quantity-based pricing tier"""
2747
+ type PricingTier {
2748
+ """Discount percentage from retail"""
2749
+ discountPercent: Float!
2750
+
2751
+ """Maximum quantity for this tier"""
2752
+ maxQuantity: Int
2753
+
2754
+ """Minimum quantity for this tier"""
2755
+ minQuantity: Int!
2756
+
2757
+ """Price per unit at this tier"""
2758
+ unitPrice: Money!
2759
+ }
2760
+
2761
+ """Product - main catalog item"""
2762
+ type Product {
2763
+ """Whether product is available for sale (any variant in stock)"""
2764
+ availableForSale: Boolean!
2765
+
2766
+ """Average rating (1-5)"""
2767
+ averageRating: Float
2768
+
2769
+ """Whether storefront checkout collects recipient data for this product"""
2770
+ collectRecipientInfo: Boolean!
2771
+
2772
+ """Compare-at price range in customer preferred currency (auto-converted)"""
2773
+ compareAtPriceRange: ConvertedPriceRange
2774
+
2775
+ """Creation timestamp"""
2776
+ createdAt: DateTime!
2777
+
2778
+ """Plain text description"""
2779
+ description: String
2780
+
2781
+ """HTML description"""
2782
+ descriptionHtml: String
2783
+
2784
+ """Featured/primary image"""
2785
+ featuredImage: Image
2786
+
2787
+ """URL-friendly handle (slug)"""
2788
+ handle: String!
2789
+
2790
+ """Unique identifier"""
2791
+ id: ID!
2792
+
2793
+ """All product images"""
2794
+ images(first: Float = 10): [Image!]!
2795
+
2796
+ """Original compare-at price range in shop base currency"""
2797
+ originalCompareAtPriceRange: ProductPriceRange
2798
+
2799
+ """Original price range in shop base currency"""
2800
+ originalPriceRange: ProductPriceRange
2801
+
2802
+ """Price range in customer preferred currency (auto-converted)"""
2803
+ priceRange: ConvertedPriceRange!
2804
+
2805
+ """Product type/category (free text)"""
2806
+ productType: String
2807
+
2808
+ """Similar products recommendations"""
2809
+ recommendations(first: Int = 4): ProductRecommendations
2810
+
2811
+ """Number of reviews"""
2812
+ reviewCount: Int
2813
+
2814
+ """SEO metadata"""
2815
+ seo: SEO
2816
+
2817
+ """Product tags"""
2818
+ tags: [String!]!
2819
+
2820
+ """Product title"""
2821
+ title: String!
2822
+
2823
+ """Total inventory across all variants"""
2824
+ totalInventory: Int
2825
+
2826
+ """
2827
+ Product type enum (PHYSICAL, DIGITAL, SERVICE, SUBSCRIPTION, GIFT_CARD)
2828
+ """
2829
+ type: ProductTypeEnum!
2830
+
2831
+ """Last update timestamp"""
2832
+ updatedAt: DateTime!
2833
+
2834
+ """Product variants"""
2835
+ variants(first: Float = 100): [ProductVariant!]!
2836
+
2837
+ """Vendor/brand name"""
2838
+ vendor: String
2839
+ }
2840
+
2841
+ """Paginated product list"""
2842
+ type ProductConnection {
2843
+ """Product edges"""
2844
+ edges: [ProductEdge!]!
2845
+
2846
+ """Pagination info"""
2847
+ pageInfo: PageInfo!
2848
+
2849
+ """Total count of products"""
2850
+ totalCount: Int!
2851
+ }
2852
+
2853
+ """Product edge for pagination"""
2854
+ type ProductEdge {
2855
+ """Cursor for pagination"""
2856
+ cursor: String!
2857
+
2858
+ """Product node"""
2859
+ node: Product!
2860
+ }
2861
+
2862
+ """Product filter options"""
2863
+ input ProductFilterInput {
2864
+ """Dynamic attribute filters (Requirements: R35.12, R35.13, R35.14)"""
2865
+ attributes: [AttributeFilterInput!]
2866
+
2867
+ """Filter by availability"""
2868
+ available: Boolean
2869
+
2870
+ """
2871
+ Filter by category ID (supports comma-separated UUIDs for multi-category)
2872
+ """
2873
+ categoryId: ID
2874
+
2875
+ """
2876
+ Filter by collection ID (supports comma-separated UUIDs for multi-collection)
2877
+ """
2878
+ collectionId: ID
2879
+
2880
+ """Filter by maximum price"""
2881
+ maxPrice: Float
2882
+
2883
+ """Filter by minimum price"""
2884
+ minPrice: Float
2885
+
2886
+ """Filter by product type"""
2887
+ productType: String
2888
+
2889
+ """Filter by product types"""
2890
+ productTypes: [String!]
2891
+
2892
+ """Filter by tag"""
2893
+ tag: String
2894
+
2895
+ """Filter by tags"""
2896
+ tags: [String!]
2897
+
2898
+ """Filter by vendor"""
2899
+ vendor: String
2900
+
2901
+ """Filter by vendor names"""
2902
+ vendors: [String!]
2903
+ }
2904
+
2905
+ """Original price range in shop base currency"""
2906
+ type ProductPriceRange {
2907
+ """Maximum variant price (shop currency)"""
2908
+ maxVariantPrice: Money!
2909
+
2910
+ """Minimum variant price (shop currency)"""
2911
+ minVariantPrice: Money!
2912
+ }
2913
+
2914
+ """Single product recommendation with metadata"""
2915
+ type ProductRecommendation {
2916
+ """The recommended product"""
2917
+ product: Product!
2918
+
2919
+ """Reason for recommendation"""
2920
+ reason: String
2921
+
2922
+ """Relevance score (0-100, higher is more relevant)"""
2923
+ score: Int
2924
+
2925
+ """Type of recommendation"""
2926
+ type: RecommendationType!
2927
+ }
2928
+
2929
+ """Collection of product recommendations"""
2930
+ type ProductRecommendations {
2931
+ """List of product recommendations"""
2932
+ items: [ProductRecommendation!]!
2933
+
2934
+ """Total available recommendations"""
2935
+ totalCount: Int!
2936
+ }
2937
+
2938
+ """Product review"""
2939
+ type ProductReview {
2940
+ """Author display name"""
2941
+ authorName: String!
2942
+
2943
+ """Cons list"""
2944
+ cons: [String!]!
2945
+
2946
+ """Review content"""
2947
+ content: String!
2948
+
2949
+ """Review date"""
2950
+ createdAt: DateTime!
2951
+
2952
+ """Helpful votes count"""
2953
+ helpfulCount: Int!
2954
+ id: ID!
2955
+
2956
+ """Review images"""
2957
+ images: [String!]!
2958
+
2959
+ """Is verified purchase"""
2960
+ isVerifiedPurchase: Boolean!
2961
+ productId: ID!
2962
+
2963
+ """Pros list"""
2964
+ pros: [String!]!
2965
+
2966
+ """Rating 1-5"""
2967
+ rating: Int!
2968
+
2969
+ """Store response"""
2970
+ response: String
2971
+
2972
+ """Response date"""
2973
+ responseAt: DateTime
2974
+
2975
+ """Review title"""
2976
+ title: String
2977
+ }
2978
+
2979
+ """Paginated reviews connection"""
2980
+ type ProductReviewConnection {
2981
+ edges: [ProductReviewEdge!]!
2982
+ pageInfo: PageInfo!
2983
+ totalCount: Int!
2984
+ }
2985
+
2986
+ """Review edge for pagination"""
2987
+ type ProductReviewEdge {
2988
+ cursor: String!
2989
+ node: ProductReview!
2990
+ }
2991
+
2992
+ """Sort keys for products"""
2993
+ enum ProductSortKeys {
2994
+ BEST_SELLING
2995
+ CREATED_AT
2996
+ PRICE
2997
+ RELEVANCE
2998
+ TITLE
2999
+ UPDATED_AT
3000
+ }
3001
+
3002
+ """Product type classification"""
3003
+ enum ProductTypeEnum {
3004
+ DIGITAL
3005
+ GIFT_CARD
3006
+ PHYSICAL
3007
+ SERVICE
3008
+ SUBSCRIPTION
3009
+ }
3010
+
3011
+ """Product variant - purchasable unit"""
3012
+ type ProductVariant {
3013
+ """Whether variant is available for purchase"""
3014
+ available: Boolean!
3015
+
3016
+ """Barcode"""
3017
+ barcode: String
3018
+
3019
+ """Compare at price in customer preferred currency"""
3020
+ compareAtPrice: PriceMoney
3021
+
3022
+ """Unique identifier"""
3023
+ id: ID!
3024
+
3025
+ """Variant image"""
3026
+ image: Image
3027
+
3028
+ """
3029
+ Inventory levels per location. Null for single-location shops. Use locationType filter for BOPIS.
3030
+ """
3031
+ inventoryLevels(locationType: LocationType): [InventoryLevel!]
3032
+
3033
+ """Original compare at price in shop base currency"""
3034
+ originalCompareAtPrice: Money
3035
+
3036
+ """Original price in shop base currency"""
3037
+ originalPrice: Money
3038
+
3039
+ """Position in product variants list"""
3040
+ position: Int
3041
+
3042
+ """Price in customer preferred currency (auto-converted)"""
3043
+ price: PriceMoney!
3044
+
3045
+ """Quantity available in stock"""
3046
+ quantityAvailable: Int
3047
+
3048
+ """Selected options for this variant"""
3049
+ selectedOptions: [SelectedOption!]!
3050
+
3051
+ """SKU code"""
3052
+ sku: String
3053
+
3054
+ """Variant title (e.g., "Large / Red")"""
3055
+ title: String!
3056
+
3057
+ """Weight in grams"""
3058
+ weight: Float
3059
+ }
3060
+
3061
+ type Query {
3062
+ """List of all currencies supported by the system (ECB rates)"""
3063
+ allSupportedCurrencies: [Currency!]!
3064
+
3065
+ """Get available filters for product listing"""
3066
+ availableFilters(input: AvailableFiltersInput): AvailableFilters!
3067
+
3068
+ """Get available payment methods"""
3069
+ availablePaymentMethods: AvailablePaymentMethods!
3070
+
3071
+ """Get available shipping methods for address"""
3072
+ availableShippingMethods(address: ShippingAddressInput!, cart: CartShippingInput): AvailableShippingMethodsPayload!
3073
+
3074
+ """Get live shipping rates from configured carriers"""
3075
+ availableShippingRates(address: ShippingAddressInput!, packages: [PackageDimensionsInput!], totalWeight: Float): AvailableShippingRatesPayload!
3076
+
3077
+ """Get B2B pricing for a product variant"""
3078
+ b2bPricing(quantity: Float = 1, retailPrice: Float!, variantId: ID!): B2BPriceDisplay
3079
+
3080
+ """List blog categories"""
3081
+ blogCategories: [BlogCategory!]!
3082
+
3083
+ """Get single blog post"""
3084
+ blogPost(
3085
+ """Post ID"""
3086
+ id: ID
3087
+
3088
+ """Post slug"""
3089
+ slug: String
3090
+ ): BlogPost
3091
+
3092
+ """List blog posts"""
3093
+ blogPosts(
3094
+ """Cursor for pagination"""
3095
+ after: String
3096
+
3097
+ """Filter by author ID"""
3098
+ authorId: String
3099
+
3100
+ """Filter by category slug"""
3101
+ categorySlug: String
3102
+
3103
+ """Filter featured posts only"""
3104
+ featured: Boolean
3105
+
3106
+ """Number of posts to fetch"""
3107
+ first: Int! = 10
3108
+
3109
+ """Reverse sort order"""
3110
+ reverse: Boolean! = true
3111
+
3112
+ """Sort key"""
3113
+ sortKey: BlogPostSortKey = PUBLISHED_AT
3114
+
3115
+ """Filter by tag slug"""
3116
+ tagSlug: String
3117
+ ): BlogPostConnection!
3118
+
3119
+ """List blog tags"""
3120
+ blogTags(limit: Int = 50): [BlogTag!]!
3121
+
3122
+ """Get cart by ID"""
3123
+ cart(id: ID!): Cart
3124
+
3125
+ """Get recommendations based on cart contents"""
3126
+ cartRecommendations(
3127
+ """Cart ID to base recommendations on"""
3128
+ cartId: String!
3129
+ first: Int = 4
3130
+ ): CartRecommendations!
3131
+
3132
+ """Get category tree"""
3133
+ categories(
3134
+ """Cursor for pagination"""
3135
+ after: String
3136
+
3137
+ """Number of items to fetch"""
3138
+ first: Int! = 20
3139
+
3140
+ """Filter by parent category ID"""
3141
+ parentId: ID
3142
+
3143
+ """Only root categories"""
3144
+ rootsOnly: Boolean! = false
3145
+ ): CategoryTree!
3146
+
3147
+ """Get category by ID or slug"""
3148
+ category(
3149
+ """Category ID"""
3150
+ id: ID
3151
+
3152
+ """Category slug"""
3153
+ slug: String
3154
+ ): Category
3155
+
3156
+ """Get checkout by ID"""
3157
+ checkout(id: ID!): Checkout
3158
+
3159
+ """Get single collection"""
3160
+ collection(
3161
+ """Collection handle (slug)"""
3162
+ handle: String
3163
+
3164
+ """Collection ID"""
3165
+ id: ID
3166
+ ): Collection
3167
+
3168
+ """List collections with pagination"""
3169
+ collections(
3170
+ """Cursor for pagination"""
3171
+ after: String
3172
+
3173
+ """Number of collections to return"""
3174
+ first: Int! = 20
3175
+
3176
+ """Search query"""
3177
+ query: String
3178
+
3179
+ """Reverse sort order"""
3180
+ reverse: Boolean! = false
3181
+
3182
+ """Sort key"""
3183
+ sortKey: CollectionSortKeys! = TITLE
3184
+ ): CollectionConnection!
3185
+
3186
+ """Convert amount between currencies (applies shop margin)"""
3187
+ convertCurrency(
3188
+ """Amount to convert"""
3189
+ amount: Float!
3190
+
3191
+ """Source currency code"""
3192
+ from: String!
3193
+
3194
+ """Target currency code"""
3195
+ to: String!
3196
+ ): CurrencyConversion!
3197
+
3198
+ """List of currencies available for this shop"""
3199
+ currencies: [Currency!]!
3200
+
3201
+ """Get currency information by ISO 4217 code"""
3202
+ currencyInfo(
3203
+ """ISO 4217 currency code (e.g., PLN, EUR, USD)"""
3204
+ code: String!
3205
+ ): Currency
3206
+
3207
+ """Get authenticated customer"""
3208
+ customer(customerAccessToken: String!): Customer
3209
+
3210
+ """Get available customer groups"""
3211
+ customerGroups: [CustomerGroup!]
3212
+
3213
+ """Get single order for authenticated customer"""
3214
+ customerOrder(customerAccessToken: String!, orderId: ID!): Order
3215
+
3216
+ """Estimate points for an order amount"""
3217
+ estimatePoints(
3218
+ """Order total in major currency units (e.g., PLN)"""
3219
+ orderTotal: Float!
3220
+ ): PointsEstimate!
3221
+
3222
+ """Get exchange rate between two currencies"""
3223
+ exchangeRate(
3224
+ """Source currency code (ISO 4217)"""
3225
+ from: String!
3226
+
3227
+ """Target currency code (ISO 4217)"""
3228
+ to: String!
3229
+ ): ExchangeRate
3230
+
3231
+ """Get gift card by code"""
3232
+ giftCard(code: String!): GiftCardPayload!
3233
+
3234
+ """Validate gift card for use"""
3235
+ giftCardValidate(amount: Float, code: String!): GiftCardValidatePayload!
3236
+
3237
+ """Get available languages for this shop"""
3238
+ languages: [Language!]!
3239
+
3240
+ """Get loyalty member status"""
3241
+ loyaltyMember: LoyaltyMember
3242
+
3243
+ """List available loyalty rewards"""
3244
+ loyaltyRewards: [LoyaltyReward!]!
3245
+
3246
+ """Get public loyalty program settings"""
3247
+ loyaltySettings: LoyaltySettings!
3248
+
3249
+ """List all loyalty tiers"""
3250
+ loyaltyTiers: [LoyaltyTier!]!
3251
+
3252
+ """Get loyalty transaction history"""
3253
+ loyaltyTransactions(after: String, first: Int = 20): LoyaltyTransactionConnection!
3254
+
3255
+ """Get single product by ID or handle"""
3256
+ product(
3257
+ """Product handle (slug)"""
3258
+ handle: String
3259
+
3260
+ """Product ID"""
3261
+ id: ID
3262
+ ): Product
3263
+
3264
+ """Get recommended products similar to the given product"""
3265
+ productRecommendations(
3266
+ """Type of recommendations (SIMILAR, COMPLEMENTARY, UPSELL)"""
3267
+ intent: RecommendationIntent = SIMILAR
3268
+
3269
+ """Maximum number of recommendations"""
3270
+ limit: Int! = 8
3271
+
3272
+ """Source product ID to get recommendations for"""
3273
+ productId: ID!
3274
+ ): [Product!]!
3275
+
3276
+ """Get product reviews"""
3277
+ productReviews(after: String, first: Int = 10, productId: ID!, reverse: Boolean = true, sortKey: ReviewSortKey = CREATED_AT): ProductReviewConnection!
3278
+
3279
+ """Search products"""
3280
+ productSearch(
3281
+ """Cursor for pagination"""
3282
+ after: String
3283
+
3284
+ """Filter options"""
3285
+ filters: ProductFilterInput
3286
+
3287
+ """Number of items to fetch"""
3288
+ first: Int! = 20
3289
+
3290
+ """Search query"""
3291
+ query: String!
3292
+ ): ProductConnection!
3293
+
3294
+ """List products with pagination and filtering"""
3295
+ products(
3296
+ """Cursor for pagination"""
3297
+ after: String
3298
+
3299
+ """Product filters"""
3300
+ filters: ProductFilterInput
3301
+
3302
+ """Number of items to fetch"""
3303
+ first: Int! = 20
3304
+
3305
+ """Search query"""
3306
+ query: String
3307
+
3308
+ """Reverse sort order"""
3309
+ reverse: Boolean! = false
3310
+
3311
+ """Sort key"""
3312
+ sortKey: ProductSortKeys = BEST_SELLING
3313
+ ): ProductConnection!
3314
+
3315
+ """Get personalized product recommendations"""
3316
+ recommendations(first: Int = 10): ProductRecommendations!
3317
+
3318
+ """Get referral program statistics"""
3319
+ referralStats: ReferralStats
3320
+
3321
+ """Get return by ID"""
3322
+ return(customerAccessToken: String!, id: ID!): ReturnPayload!
3323
+
3324
+ """Get available return reasons"""
3325
+ returnReasons: [ReturnReasonOption!]!
3326
+
3327
+ """Get returns for an order"""
3328
+ returnsByOrder(customerAccessToken: String!, orderId: ID!): ReturnConnection!
3329
+
3330
+ """Get product review statistics"""
3331
+ reviewStats(productId: ID!): ReviewStats!
3332
+
3333
+ """Get shipment by ID"""
3334
+ shipment(customerAccessToken: String!, id: ID!): ShipmentPayload!
3335
+
3336
+ """Get shipment by tracking number"""
3337
+ shipmentByTrackingNumber(trackingNumber: String!): ShipmentPayload!
3338
+
3339
+ """Get current shop information"""
3340
+ shop: Shop!
3341
+
3342
+ """Get currency configuration for the current shop"""
3343
+ shopCurrencyConfig: ShopCurrencyConfig!
3344
+
3345
+ """Get products similar to a specific product"""
3346
+ similarProducts(
3347
+ first: Int = 6
3348
+
3349
+ """Product ID to find similar products for"""
3350
+ productId: String!
3351
+ ): ProductRecommendations!
3352
+
3353
+ """Get translations for a language"""
3354
+ translations(input: TranslationsInput!): Translations!
3355
+
3356
+ """Get wishlist by ID"""
3357
+ wishlist(
3358
+ """Wishlist ID"""
3359
+ id: ID
3360
+ ): Wishlist
3361
+
3362
+ """Get customer wishlists (requires customer auth)"""
3363
+ wishlists: [Wishlist!]!
3364
+ }
3365
+
3366
+ """Type of product recommendations to return"""
3367
+ enum RecommendationIntent {
3368
+ COMPLEMENTARY
3369
+ SIMILAR
3370
+ UPSELL
3371
+ }
3372
+
3373
+ """Type of product recommendation"""
3374
+ enum RecommendationType {
3375
+ CROSS_SELL
3376
+ FREQUENTLY_BOUGHT_TOGETHER
3377
+ PERSONALIZED
3378
+ RECENTLY_VIEWED
3379
+ SIMILAR
3380
+ TRENDING
3381
+ UPSELL
3382
+ }
3383
+
3384
+ """Input for redeeming a loyalty reward"""
3385
+ input RedeemRewardInput {
3386
+ """Reward ID to redeem"""
3387
+ rewardId: ID!
3388
+ }
3389
+
3390
+ """Result of reward redemption"""
3391
+ type RedeemRewardPayload {
3392
+ """Generated discount code for DISCOUNT type rewards"""
3393
+ discountCode: String
3394
+
3395
+ """Generated gift card code for GIFT_CARD type rewards"""
3396
+ giftCardCode: String
3397
+
3398
+ """
3399
+ Generated discount code for PRODUCT type rewards (100% off specific product)
3400
+ """
3401
+ productDiscountCode: String
3402
+
3403
+ """Whether redemption was successful"""
3404
+ success: Boolean!
3405
+
3406
+ """Error messages if any"""
3407
+ userErrors: [String!]!
3408
+ }
3409
+
3410
+ """Referral program statistics"""
3411
+ type ReferralStats {
3412
+ """Completed referrals (first order placed)"""
3413
+ completedReferrals: Int!
3414
+
3415
+ """Pending referrals (signed up, no order yet)"""
3416
+ pendingReferrals: Int!
3417
+
3418
+ """Customer referral code"""
3419
+ referralCode: String!
3420
+
3421
+ """Shareable referral URL"""
3422
+ shareUrl: String!
3423
+
3424
+ """Total points earned from referrals"""
3425
+ totalPointsEarned: Int!
3426
+
3427
+ """Total customers referred"""
3428
+ totalReferred: Int!
3429
+ }
3430
+
3431
+ """Return/RMA request"""
3432
+ type Return {
3433
+ """When return was approved"""
3434
+ approvedAt: DateTime
3435
+
3436
+ """Requested compensation type"""
3437
+ compensationType: CompensationType
3438
+
3439
+ """When return was completed"""
3440
+ completedAt: DateTime
3441
+
3442
+ """Creation date"""
3443
+ createdAt: DateTime!
3444
+
3445
+ """Customer notes/explanation"""
3446
+ customerNote: String
3447
+
3448
+ """Return ID"""
3449
+ id: ID!
3450
+
3451
+ """Items being returned"""
3452
+ items: [ReturnItem!]!
3453
+
3454
+ """Order ID"""
3455
+ orderId: ID!
3456
+
3457
+ """Order number"""
3458
+ orderNumber: String!
3459
+
3460
+ """Primary return reason"""
3461
+ reason: ReturnReason!
3462
+
3463
+ """When return was received"""
3464
+ receivedAt: DateTime
3465
+
3466
+ """Total refund amount"""
3467
+ refundAmount: Money
3468
+
3469
+ """When refund was processed"""
3470
+ refundedAt: DateTime
3471
+
3472
+ """When return was requested"""
3473
+ requestedAt: DateTime
3474
+
3475
+ """RMA number (e.g., RMA-2024-0001)"""
3476
+ returnNumber: String!
3477
+
3478
+ """Return shipping label (if generated)"""
3479
+ shippingLabel: ReturnShippingLabel
3480
+
3481
+ """Current return status"""
3482
+ status: ReturnStatus!
3483
+
3484
+ """Last update date"""
3485
+ updatedAt: DateTime!
3486
+ }
3487
+
3488
+ """Result of return cancellation"""
3489
+ type ReturnCancelPayload {
3490
+ """Cancelled return"""
3491
+ return: Return
3492
+
3493
+ """User errors"""
3494
+ userErrors: [UserError!]!
3495
+ }
3496
+
3497
+ """Paginated return connection"""
3498
+ type ReturnConnection {
3499
+ """Return edges"""
3500
+ edges: [ReturnEdge!]!
3501
+
3502
+ """Pagination info"""
3503
+ pageInfo: PageInfo!
3504
+
3505
+ """Total returns count"""
3506
+ totalCount: Int!
3507
+ }
3508
+
3509
+ """Input for creating a return request"""
3510
+ input ReturnCreateInput {
3511
+ """Preferred compensation type (defaults to REFUND)"""
3512
+ compensationType: CompensationType
3513
+
3514
+ """Customer notes/explanation"""
3515
+ customerNote: String
3516
+
3517
+ """Idempotency key to prevent duplicate submissions"""
3518
+ idempotencyKey: String
3519
+
3520
+ """Items to return"""
3521
+ items: [ReturnItemInput!]!
3522
+
3523
+ """Order ID to return items from"""
3524
+ orderId: ID!
3525
+
3526
+ """Primary return reason"""
3527
+ reason: ReturnReason!
3528
+ }
3529
+
3530
+ """Result of return creation"""
3531
+ type ReturnCreatePayload {
3532
+ """Created return"""
3533
+ return: Return
3534
+
3535
+ """User errors"""
3536
+ userErrors: [UserError!]!
3537
+ }
3538
+
3539
+ """Return edge for pagination"""
3540
+ type ReturnEdge {
3541
+ """Cursor"""
3542
+ cursor: String!
3543
+
3544
+ """Return node"""
3545
+ node: Return!
3546
+ }
3547
+
3548
+ """Item included in a return request"""
3549
+ type ReturnItem {
3550
+ """Approved quantity (may differ from requested)"""
3551
+ approvedQuantity: Int
3552
+
3553
+ """Item condition"""
3554
+ condition: String
3555
+
3556
+ """Item ID"""
3557
+ id: ID!
3558
+
3559
+ """Product image URL"""
3560
+ imageUrl: String
3561
+
3562
+ """Evidence photos"""
3563
+ photos: [ReturnItemPhoto!]
3564
+
3565
+ """Product title"""
3566
+ productTitle: String!
3567
+
3568
+ """Quantity being returned"""
3569
+ quantity: Int!
3570
+
3571
+ """Reason for returning this item"""
3572
+ reason: ReturnReason!
3573
+
3574
+ """Product SKU"""
3575
+ sku: String
3576
+
3577
+ """Item-level status"""
3578
+ status: String
3579
+
3580
+ """Unit price of the item"""
3581
+ unitPrice: Money
3582
+
3583
+ """Product variant ID"""
3584
+ variantId: ID!
3585
+
3586
+ """Variant title"""
3587
+ variantTitle: String
3588
+ }
3589
+
3590
+ """Input for a return item"""
3591
+ input ReturnItemInput {
3592
+ """Item condition"""
3593
+ condition: String
3594
+
3595
+ """Quantity to return"""
3596
+ quantity: Int!
3597
+
3598
+ """Reason for returning this item"""
3599
+ reason: ReturnReason!
3600
+
3601
+ """Product variant ID to return"""
3602
+ variantId: ID!
3603
+ }
3604
+
3605
+ """Photo evidence for a return item"""
3606
+ type ReturnItemPhoto {
3607
+ """Alt text for accessibility"""
3608
+ alt: String
3609
+
3610
+ """Upload date"""
3611
+ createdAt: DateTime!
3612
+
3613
+ """Photo description"""
3614
+ description: String
3615
+
3616
+ """Photo ID"""
3617
+ id: ID!
3618
+
3619
+ """Photo URL"""
3620
+ url: String!
3621
+ }
3622
+
3623
+ """Result of return query"""
3624
+ type ReturnPayload {
3625
+ """Return data"""
3626
+ return: Return
3627
+
3628
+ """User errors"""
3629
+ userErrors: [UserError!]!
3630
+ }
3631
+
3632
+ """Reason for returning an item"""
3633
+ enum ReturnReason {
3634
+ BETTER_PRICE
3635
+ CHANGED_MIND
3636
+ DAMAGED_SHIPPING
3637
+ DEFECTIVE
3638
+ NOT_AS_DESCRIBED
3639
+ OTHER
3640
+ WRONG_ITEM
3641
+ }
3642
+
3643
+ """Return reason option for UI"""
3644
+ type ReturnReasonOption {
3645
+ """Description/help text"""
3646
+ description: String
3647
+
3648
+ """Human-readable label"""
3649
+ label: String!
3650
+
3651
+ """Reason enum value"""
3652
+ value: ReturnReason!
3653
+ }
3654
+
3655
+ """Return shipping label"""
3656
+ type ReturnShippingLabel {
3657
+ """Carrier for the return shipment"""
3658
+ carrier: String
3659
+
3660
+ """When the label expires"""
3661
+ expiresAt: DateTime
3662
+
3663
+ """Tracking number for the return"""
3664
+ trackingNumber: String
3665
+
3666
+ """URL to download the shipping label"""
3667
+ url: String!
3668
+ }
3669
+
3670
+ """Status of a return request"""
3671
+ enum ReturnStatus {
3672
+ APPROVED
3673
+ CANCELLED
3674
+ COMPLETED
3675
+ DRAFT
3676
+ EXCHANGED
3677
+ EXPIRED
3678
+ FAILED
3679
+ INSPECTING
3680
+ IN_TRANSIT
3681
+ LABEL_GENERATED
3682
+ RECEIVED
3683
+ REFUNDED
3684
+ REFUND_PENDING
3685
+ REJECTED
3686
+ REPLACED
3687
+ REQUESTED
3688
+ }
3689
+
3690
+ """Input for creating a review"""
3691
+ input ReviewCreateInput {
3692
+ authorEmail: String
3693
+ authorName: String!
3694
+ cons: [String!]
3695
+ content: String!
3696
+ images: [String!]
3697
+
3698
+ """Order ID for verified purchase"""
3699
+ orderId: ID
3700
+ productId: ID!
3701
+ pros: [String!]
3702
+ rating: Int!
3703
+ title: String
3704
+ }
3705
+
3706
+ """Review mutation payload"""
3707
+ type ReviewPayload {
3708
+ review: ProductReview
3709
+
3710
+ """User errors"""
3711
+ userErrors: [UserError!]!
3712
+ }
3713
+
3714
+ enum ReviewSortKey {
3715
+ CREATED_AT
3716
+ HELPFUL_COUNT
3717
+ RATING
3718
+ }
3719
+
3720
+ """Product review statistics"""
3721
+ type ReviewStats {
3722
+ """Average rating"""
3723
+ averageRating: Float!
3724
+
3725
+ """5-star count"""
3726
+ fiveStarCount: Int!
3727
+
3728
+ """4-star count"""
3729
+ fourStarCount: Int!
3730
+
3731
+ """1-star count"""
3732
+ oneStarCount: Int!
3733
+
3734
+ """3-star count"""
3735
+ threeStarCount: Int!
3736
+
3737
+ """Total reviews"""
3738
+ totalCount: Int!
3739
+
3740
+ """2-star count"""
3741
+ twoStarCount: Int!
3742
+ }
3743
+
3744
+ """SEO metadata"""
3745
+ type SEO {
3746
+ """SEO description"""
3747
+ description: String
3748
+
3749
+ """SEO title"""
3750
+ title: String
3751
+ }
3752
+
3753
+ """Selected product option"""
3754
+ type SelectedOption {
3755
+ """Option name (e.g., "Size", "Color")"""
3756
+ name: String!
3757
+
3758
+ """Option value (e.g., "Large", "Red")"""
3759
+ value: String!
3760
+ }
3761
+
3762
+ """Order shipment with tracking information"""
3763
+ type Shipment {
3764
+ """Creation date"""
3765
+ createdAt: DateTime!
3766
+
3767
+ """When the shipment was delivered"""
3768
+ deliveredAt: DateTime
3769
+
3770
+ """Estimated delivery date"""
3771
+ estimatedDeliveryDate: DateTime
3772
+
3773
+ """Tracking events timeline"""
3774
+ events: [ShipmentEvent!]
3775
+
3776
+ """Unique identifier"""
3777
+ id: ID!
3778
+
3779
+ """Items included in this shipment"""
3780
+ items: [ShipmentItem!]
3781
+
3782
+ """Shipping label download URL"""
3783
+ labelUrl: String
3784
+
3785
+ """Order ID this shipment belongs to"""
3786
+ orderId: ID!
3787
+
3788
+ """Package dimensions"""
3789
+ packages: [ShipmentPackage!]
3790
+
3791
+ """Shipping provider (e.g., INPOST, DPD, UPS)"""
3792
+ provider: String!
3793
+
3794
+ """Recipient address"""
3795
+ recipientAddress: MailingAddress
3796
+
3797
+ """Provider service code"""
3798
+ serviceCode: String
3799
+
3800
+ """When the shipment was shipped"""
3801
+ shippedAt: DateTime
3802
+
3803
+ """Current shipment status"""
3804
+ status: ShipmentStatus!
3805
+
3806
+ """Tracking number"""
3807
+ trackingNumber: String
3808
+
3809
+ """External tracking URL"""
3810
+ trackingUrl: String
3811
+
3812
+ """Last update date"""
3813
+ updatedAt: DateTime!
3814
+ }
3815
+
3816
+ """Shipment edge for pagination"""
3817
+ type ShipmentEdge {
3818
+ """Cursor"""
3819
+ cursor: String!
3820
+
3821
+ """Shipment node"""
3822
+ node: Shipment!
3823
+ }
3824
+
3825
+ """Shipment tracking event"""
3826
+ type ShipmentEvent {
3827
+ """Human-readable description"""
3828
+ description: String
3829
+
3830
+ """Event ID"""
3831
+ id: ID!
3832
+
3833
+ """Location where event occurred"""
3834
+ location: String
3835
+
3836
+ """When the event occurred"""
3837
+ occurredAt: DateTime!
3838
+
3839
+ """Provider-specific event code"""
3840
+ providerEventCode: String
3841
+
3842
+ """Status at this event"""
3843
+ status: ShipmentStatus!
3844
+ }
3845
+
3846
+ """Item included in a shipment"""
3847
+ type ShipmentItem {
3848
+ """Item ID"""
3849
+ id: ID!
3850
+
3851
+ """Product image URL"""
3852
+ imageUrl: String
3853
+
3854
+ """Quantity shipped"""
3855
+ quantity: Int!
3856
+
3857
+ """Product SKU"""
3858
+ sku: String
3859
+
3860
+ """Product title"""
3861
+ title: String!
3862
+
3863
+ """Variant title"""
3864
+ variantTitle: String
3865
+ }
3866
+
3867
+ """Package dimensions and weight"""
3868
+ type ShipmentPackage {
3869
+ """Package height in cm"""
3870
+ height: Float
3871
+
3872
+ """Package length in cm"""
3873
+ length: Float
3874
+
3875
+ """Package weight in kg"""
3876
+ weight: Float
3877
+
3878
+ """Package width in cm"""
3879
+ width: Float
3880
+ }
3881
+
3882
+ """Result of shipment query"""
3883
+ type ShipmentPayload {
3884
+ """Shipment data"""
3885
+ shipment: Shipment
3886
+
3887
+ """User errors"""
3888
+ userErrors: [UserError!]!
3889
+ }
3890
+
3891
+ """Status of a shipment"""
3892
+ enum ShipmentStatus {
3893
+ CANCELLED
3894
+ CREATED
3895
+ DELIVERED
3896
+ EXCEPTION
3897
+ IN_TRANSIT
3898
+ LABEL_PRINTED
3899
+ OUT_FOR_DELIVERY
3900
+ PICKED_UP
3901
+ RETURNED
3902
+ }
3903
+
3904
+ """Address input for shipping calculation"""
3905
+ input ShippingAddressInput {
3906
+ """Street address line 1"""
3907
+ address1: String
3908
+
3909
+ """City"""
3910
+ city: String
3911
+
3912
+ """Country code (ISO 3166-1 alpha-2)"""
3913
+ country: String!
3914
+
3915
+ """Email address"""
3916
+ email: String
3917
+
3918
+ """First name"""
3919
+ firstName: String
3920
+
3921
+ """Last name"""
3922
+ lastName: String
3923
+
3924
+ """Phone number"""
3925
+ phone: String
3926
+
3927
+ """Postal/ZIP code"""
3928
+ postalCode: String
3929
+
3930
+ """Province/State/Region"""
3931
+ province: String
3932
+ }
3933
+
3934
+ """Shipping carrier information"""
3935
+ type ShippingCarrier {
3936
+ """Carrier provider ID"""
3937
+ id: ID
3938
+
3939
+ """Carrier logo URL"""
3940
+ logoUrl: String
3941
+
3942
+ """Carrier name (e.g., InPost, DPD, DHL)"""
3943
+ name: String!
3944
+
3945
+ """Service code"""
3946
+ serviceCode: String
3947
+ }
3948
+
3949
+ """Available shipping rate"""
3950
+ type ShippingRate {
3951
+ """Shipping rate ID"""
3952
+ handle: ID!
3953
+
3954
+ """Shipping price"""
3955
+ price: Money!
3956
+
3957
+ """Shipping rate title"""
3958
+ title: String!
3959
+ }
3960
+
3961
+ """Shop information"""
3962
+ type Shop {
3963
+ """Shop physical address"""
3964
+ address: ShopAddress
3965
+
3966
+ """Bot protection configuration (platform-level)"""
3967
+ botProtection: BotProtectionInfo
3968
+
3969
+ """Complete branding configuration"""
3970
+ branding: ShopBranding
3971
+
3972
+ """Business operating hours"""
3973
+ businessHours: [BusinessHour!]
3974
+
3975
+ """Contact email address"""
3976
+ contactEmail: String
3977
+
3978
+ """Contact phone number"""
3979
+ contactPhone: String
3980
+
3981
+ """Default currency code (ISO 4217)"""
3982
+ currencyCode: String!
3983
+
3984
+ """Default language code"""
3985
+ defaultLanguage: String
3986
+
3987
+ """Shop description"""
3988
+ description: String
3989
+
3990
+ """Shop unique identifier"""
3991
+ id: ID!
3992
+
3993
+ """Locale to currency mapping for auto-detection (SSOT)"""
3994
+ localeToCurrencyMap: [LocaleCurrencyMapping!]!
3995
+
3996
+ """Shop logo"""
3997
+ logo: Image
3998
+
3999
+ """Shop name"""
4000
+ name: String!
4001
+
4002
+ """Supported payment currencies"""
4003
+ paymentCurrencies: [String!]!
4004
+
4005
+ """Primary domain URL"""
4006
+ primaryDomain: String
4007
+
4008
+ """Supported currencies for price display"""
4009
+ supportedCurrencies: [String!]!
4010
+
4011
+ """Supported languages"""
4012
+ supportedLanguages: [String!]
4013
+
4014
+ """Shop timezone"""
4015
+ timezone: String
4016
+ }
4017
+
4018
+ """Shop physical address"""
4019
+ type ShopAddress {
4020
+ """Street address line 1"""
4021
+ address1: String
4022
+
4023
+ """Street address line 2"""
4024
+ address2: String
4025
+
4026
+ """City"""
4027
+ city: String
4028
+
4029
+ """Country code (ISO 3166-1 alpha-2)"""
4030
+ country: String
4031
+
4032
+ """Postal/ZIP code"""
4033
+ postalCode: String
4034
+
4035
+ """State/Province"""
4036
+ state: String
4037
+ }
4038
+
4039
+ """Shop branding configuration"""
4040
+ type ShopBranding {
4041
+ """Brand colors"""
4042
+ colors: ShopColors
4043
+
4044
+ """Shop favicon"""
4045
+ favicon: Image
4046
+
4047
+ """Typography configuration"""
4048
+ fonts: ShopFonts
4049
+
4050
+ """Shop logo"""
4051
+ logo: Image
4052
+
4053
+ """Social media links"""
4054
+ socialLinks: SocialLinks
4055
+ }
4056
+
4057
+ """Shop brand colors"""
4058
+ type ShopColors {
4059
+ """Accent color (hex)"""
4060
+ accent: String
4061
+
4062
+ """Background color (hex)"""
4063
+ background: String
4064
+
4065
+ """Primary brand color (hex)"""
4066
+ primary: String
4067
+
4068
+ """Secondary brand color (hex)"""
4069
+ secondary: String
4070
+
4071
+ """Text color (hex)"""
4072
+ text: String
4073
+ }
4074
+
4075
+ """Shop currency configuration"""
4076
+ type ShopCurrencyConfig {
4077
+ """Whether prices auto-convert to customer currency"""
4078
+ autoConvertPrices: Boolean!
4079
+
4080
+ """Primary currency for the shop"""
4081
+ primaryCurrency: String!
4082
+
4083
+ """List of currencies available in storefront"""
4084
+ supportedCurrencies: [String!]!
4085
+ }
4086
+
4087
+ """Shop typography configuration"""
4088
+ type ShopFonts {
4089
+ """Secondary/heading font family"""
4090
+ heading: String
4091
+
4092
+ """Primary font family"""
4093
+ primary: String
4094
+ }
4095
+
4096
+ """Shop social media links"""
4097
+ type SocialLinks {
4098
+ """Facebook page URL"""
4099
+ facebook: String
4100
+
4101
+ """Instagram profile URL"""
4102
+ instagram: String
4103
+
4104
+ """LinkedIn page URL"""
4105
+ linkedin: String
4106
+
4107
+ """Pinterest profile URL"""
4108
+ pinterest: String
4109
+
4110
+ """TikTok profile URL"""
4111
+ tiktok: String
4112
+
4113
+ """Twitter/X profile URL"""
4114
+ twitter: String
4115
+
4116
+ """YouTube channel URL"""
4117
+ youtube: String
4118
+ }
4119
+
4120
+ """Lifecycle status of an order"""
4121
+ enum StorefrontOrderStatus {
4122
+ CANCELLED
4123
+ COMPLETED
4124
+ CONFIRMED
4125
+ DRAFT
4126
+ EXPIRED
4127
+ ON_HOLD
4128
+ PENDING
4129
+ PROCESSING
4130
+ }
4131
+
4132
+ """Tax line item"""
4133
+ type TaxLine {
4134
+ """Tax amount"""
4135
+ price: Money!
4136
+
4137
+ """Tax rate as decimal (e.g., 0.23 for 23%)"""
4138
+ rate: Float!
4139
+
4140
+ """Tax name"""
4141
+ title: String!
4142
+ }
4143
+
4144
+ """Custom tier benefit"""
4145
+ type TierBenefit {
4146
+ """Benefit description"""
4147
+ description: String
4148
+
4149
+ """Benefit icon"""
4150
+ icon: String
4151
+
4152
+ """Benefit name"""
4153
+ name: String!
4154
+ }
4155
+
4156
+ """Progress towards next tier"""
4157
+ type TierProgress {
4158
+ """Current tier"""
4159
+ currentTier: LoyaltyTier!
4160
+
4161
+ """Next tier (null if at max)"""
4162
+ nextTier: LoyaltyTier
4163
+
4164
+ """Points needed for next tier"""
4165
+ pointsToNextTier: Int!
4166
+
4167
+ """Progress percentage (0-100)"""
4168
+ progressPercent: Float!
4169
+
4170
+ """Spend needed for next tier"""
4171
+ spendToNextTier: Money
4172
+ }
4173
+
4174
+ """Single translation entry"""
4175
+ type TranslationEntry {
4176
+ """Translation key"""
4177
+ key: String!
4178
+
4179
+ """Translated value"""
4180
+ value: String!
4181
+ }
4182
+
4183
+ """Translation namespace (e.g., common, product, checkout)"""
4184
+ type TranslationNamespace {
4185
+ """Translations in this namespace"""
4186
+ entries: [TranslationEntry!]!
4187
+
4188
+ """Namespace identifier"""
4189
+ namespace: String!
4190
+ }
4191
+
4192
+ """Complete translation set for a language"""
4193
+ type Translations {
4194
+ """Language code (ISO 639-1)"""
4195
+ language: String!
4196
+
4197
+ """Namespaces with translations"""
4198
+ namespaces: [TranslationNamespace!]!
4199
+ }
4200
+
4201
+ """Input for fetching translations"""
4202
+ input TranslationsInput {
4203
+ """Language code (ISO 639-1)"""
4204
+ language: String!
4205
+
4206
+ """Namespaces to fetch (null = all)"""
4207
+ namespaces: [String!]
4208
+ }
4209
+
4210
+ """User-facing error from mutations"""
4211
+ type UserError {
4212
+ """Error code"""
4213
+ code: String
4214
+
4215
+ """Path to field that caused error"""
4216
+ field: [String!]
4217
+
4218
+ """Error message"""
4219
+ message: String!
4220
+ }
4221
+
4222
+ """Customer wishlist"""
4223
+ type Wishlist {
4224
+ """Created date"""
4225
+ createdAt: DateTime!
4226
+ id: ID!
4227
+
4228
+ """Is publicly shareable"""
4229
+ isPublic: Boolean!
4230
+
4231
+ """Total items count"""
4232
+ itemCount: Int!
4233
+
4234
+ """Wishlist items"""
4235
+ items: [WishlistItem!]!
4236
+
4237
+ """Wishlist name"""
4238
+ name: String!
4239
+
4240
+ """Share URL token"""
4241
+ shareToken: String
4242
+
4243
+ """Updated date"""
4244
+ updatedAt: DateTime!
4245
+ }
4246
+
4247
+ """Input for creating a wishlist"""
4248
+ input WishlistCreateInput {
4249
+ isPublic: Boolean = false
4250
+ name: String = "My Wishlist"
4251
+ }
4252
+
4253
+ """Wishlist item"""
4254
+ type WishlistItem {
4255
+ """Date added"""
4256
+ addedAt: DateTime!
4257
+ id: ID!
4258
+
4259
+ """Notify on restock"""
4260
+ notifyOnRestock: Boolean!
4261
+
4262
+ """Notify on sale"""
4263
+ notifyOnSale: Boolean!
4264
+
4265
+ """Price when added to wishlist"""
4266
+ priceAtAdd: Money!
4267
+
4268
+ """Product details"""
4269
+ product: Product
4270
+ productId: ID!
4271
+
4272
+ """Variant details"""
4273
+ variant: ProductVariant
4274
+ variantId: ID
4275
+ }
4276
+
4277
+ """Input for adding item to wishlist"""
4278
+ input WishlistItemInput {
4279
+ notifyOnRestock: Boolean = false
4280
+ notifyOnSale: Boolean = false
4281
+ productId: ID!
4282
+ variantId: ID
4283
+ }
4284
+
4285
+ """Wishlist mutation payload"""
4286
+ type WishlistPayload {
4287
+ """User errors"""
4288
+ userErrors: [String!]!
4289
+ wishlist: Wishlist
4290
+ }