@doswiftly/storefront-operations 1.0.5 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +14 -12
- package/fragments.graphql +236 -59
- package/mutations.graphql +66 -0
- package/package.json +3 -1
- package/queries.graphql +128 -5
- package/schema.graphql +4290 -0
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
|
+
}
|