@doswiftly/storefront-operations 4.4.0 → 5.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/fragments.graphql +260 -18
- package/mutations.graphql +15 -0
- package/package.json +7 -7
- package/queries.graphql +117 -5
- package/schema.graphql +736 -29
package/schema.graphql
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
# THIS FILE WAS AUTOMATICALLY GENERATED (DO NOT MODIFY)
|
|
3
3
|
# ------------------------------------------------------
|
|
4
4
|
|
|
5
|
+
"""
|
|
6
|
+
Sets contextual hints on an operation (Shopify Storefront API parity). Currently supports preferredLocationId; country/language/buyer will follow.
|
|
7
|
+
"""
|
|
8
|
+
directive @inContext(
|
|
9
|
+
"""
|
|
10
|
+
Biases field resolvers (e.g. storeAvailability) toward this location. Must reference an active InventoryLocation in the current shop — invalid / inactive IDs are silently ignored by resolvers.
|
|
11
|
+
"""
|
|
12
|
+
preferredLocationId: ID
|
|
13
|
+
) on MUTATION | QUERY | SUBSCRIPTION
|
|
14
|
+
|
|
5
15
|
"""Gift card applied to checkout"""
|
|
6
16
|
type AppliedGiftCard {
|
|
7
17
|
"""Amount applied to this checkout"""
|
|
@@ -26,6 +36,14 @@ type Attribute {
|
|
|
26
36
|
value: String
|
|
27
37
|
}
|
|
28
38
|
|
|
39
|
+
"""
|
|
40
|
+
How attribute surcharge affects pricing: BUNDLED (in unitPrice) or SEPARATE_LINE (own OrderItem)
|
|
41
|
+
"""
|
|
42
|
+
enum AttributeBillingMode {
|
|
43
|
+
BUNDLED
|
|
44
|
+
SEPARATE_LINE
|
|
45
|
+
}
|
|
46
|
+
|
|
29
47
|
"""Filterable attribute definition"""
|
|
30
48
|
type AttributeDefinition {
|
|
31
49
|
"""Display order"""
|
|
@@ -56,6 +74,15 @@ type AttributeDefinition {
|
|
|
56
74
|
type: AttributeType!
|
|
57
75
|
}
|
|
58
76
|
|
|
77
|
+
"""
|
|
78
|
+
Who fills the attribute value: MERCHANT (admin on product), CUSTOMER (in cart), or BOTH
|
|
79
|
+
"""
|
|
80
|
+
enum AttributeFillingMode {
|
|
81
|
+
BOTH
|
|
82
|
+
CUSTOMER
|
|
83
|
+
MERCHANT
|
|
84
|
+
}
|
|
85
|
+
|
|
59
86
|
"""Filter by attribute values"""
|
|
60
87
|
input AttributeFilterInput {
|
|
61
88
|
"""Attribute definition ID or handle"""
|
|
@@ -107,6 +134,14 @@ input AttributeInput {
|
|
|
107
134
|
value: String
|
|
108
135
|
}
|
|
109
136
|
|
|
137
|
+
"""
|
|
138
|
+
Surcharge calculation: FIXED (minor units) or PERCENT (thousandths of percent — Faza 2)
|
|
139
|
+
"""
|
|
140
|
+
enum AttributeOptionSurchargeType {
|
|
141
|
+
FIXED
|
|
142
|
+
PERCENT
|
|
143
|
+
}
|
|
144
|
+
|
|
110
145
|
"""Min/max bounds for numeric attributes"""
|
|
111
146
|
type AttributeRangeBounds {
|
|
112
147
|
"""Currency code for CURRENCY type"""
|
|
@@ -119,6 +154,67 @@ type AttributeRangeBounds {
|
|
|
119
154
|
min: Float
|
|
120
155
|
}
|
|
121
156
|
|
|
157
|
+
"""Typed snapshot of customer-filled attribute selection (Faza 1 R5)"""
|
|
158
|
+
type AttributeSelection {
|
|
159
|
+
"""AttributeDefinition ID (snapshot at addItem)"""
|
|
160
|
+
attributeDefinitionId: ID!
|
|
161
|
+
|
|
162
|
+
"""AttributeDefinition name (snapshot)"""
|
|
163
|
+
attributeName: String!
|
|
164
|
+
|
|
165
|
+
"""Billing mode; null = informational only"""
|
|
166
|
+
billingMode: AttributeBillingMode
|
|
167
|
+
|
|
168
|
+
"""Filling mode (snapshot)"""
|
|
169
|
+
fillingMode: AttributeFillingMode!
|
|
170
|
+
|
|
171
|
+
"""Linked ProductVariant ID for component stock (Faza 1.5)"""
|
|
172
|
+
linkedVariantId: ID
|
|
173
|
+
|
|
174
|
+
"""Selected option ID (SELECT/RADIO/CHECKBOX)"""
|
|
175
|
+
optionId: ID
|
|
176
|
+
|
|
177
|
+
"""Selected option IDs (MULTI_SELECT — Faza 2)"""
|
|
178
|
+
optionIds: [ID!]
|
|
179
|
+
|
|
180
|
+
"""Selected option label (snapshot)"""
|
|
181
|
+
optionLabel: String
|
|
182
|
+
|
|
183
|
+
"""
|
|
184
|
+
Surcharge amount snapshot (FIXED = grosze; PERCENT = thousandths of percent)
|
|
185
|
+
"""
|
|
186
|
+
surchargeAmount: Int!
|
|
187
|
+
|
|
188
|
+
"""Surcharge type (snapshot)"""
|
|
189
|
+
surchargeType: AttributeOptionSurchargeType
|
|
190
|
+
|
|
191
|
+
"""Tax class ID (snapshot); null = inherit from variant"""
|
|
192
|
+
taxClassId: ID
|
|
193
|
+
|
|
194
|
+
"""Free-text value (TEXT/TEXTAREA/NUMBER/DATE)"""
|
|
195
|
+
textValue: String
|
|
196
|
+
|
|
197
|
+
"""AttributeDefinition type (snapshot)"""
|
|
198
|
+
type: AttributeType!
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
"""
|
|
202
|
+
Customer-filled attribute selection (Faza 1 R5 — server-side validated)
|
|
203
|
+
"""
|
|
204
|
+
input AttributeSelectionInput {
|
|
205
|
+
"""AttributeDefinition ID"""
|
|
206
|
+
attributeDefinitionId: ID!
|
|
207
|
+
|
|
208
|
+
"""Selected option ID for SELECT/RADIO/CHECKBOX"""
|
|
209
|
+
optionId: ID
|
|
210
|
+
|
|
211
|
+
"""Selected option IDs for MULTI_SELECT (Faza 2)"""
|
|
212
|
+
optionIds: [ID!]
|
|
213
|
+
|
|
214
|
+
"""Free-text value for TEXT/TEXTAREA/NUMBER/DATE"""
|
|
215
|
+
textValue: String
|
|
216
|
+
}
|
|
217
|
+
|
|
122
218
|
"""Color or pattern swatch for visual attribute display"""
|
|
123
219
|
type AttributeSwatch {
|
|
124
220
|
"""Hex color code (e.g., #FF5733)"""
|
|
@@ -472,6 +568,39 @@ type BusinessHour {
|
|
|
472
568
|
openTime: String
|
|
473
569
|
}
|
|
474
570
|
|
|
571
|
+
"""Per-day business hours (BOPIS). Missing day = closed."""
|
|
572
|
+
type BusinessHours {
|
|
573
|
+
"""Friday opening windows"""
|
|
574
|
+
friday: [BusinessHoursWindow!]!
|
|
575
|
+
|
|
576
|
+
"""Monday opening windows"""
|
|
577
|
+
monday: [BusinessHoursWindow!]!
|
|
578
|
+
|
|
579
|
+
"""Saturday opening windows"""
|
|
580
|
+
saturday: [BusinessHoursWindow!]!
|
|
581
|
+
|
|
582
|
+
"""Sunday opening windows"""
|
|
583
|
+
sunday: [BusinessHoursWindow!]!
|
|
584
|
+
|
|
585
|
+
"""Thursday opening windows"""
|
|
586
|
+
thursday: [BusinessHoursWindow!]!
|
|
587
|
+
|
|
588
|
+
"""Tuesday opening windows"""
|
|
589
|
+
tuesday: [BusinessHoursWindow!]!
|
|
590
|
+
|
|
591
|
+
"""Wednesday opening windows"""
|
|
592
|
+
wednesday: [BusinessHoursWindow!]!
|
|
593
|
+
}
|
|
594
|
+
|
|
595
|
+
"""Opening window for a business day (24h format)"""
|
|
596
|
+
type BusinessHoursWindow {
|
|
597
|
+
"""Closing hour (0-24, 24h format). 24 = midnight close."""
|
|
598
|
+
closeHour: Int!
|
|
599
|
+
|
|
600
|
+
"""Opening hour (0-23, 24h format)"""
|
|
601
|
+
openHour: Int!
|
|
602
|
+
}
|
|
603
|
+
|
|
475
604
|
"""Provider error when fetching rates"""
|
|
476
605
|
type CarrierRateError {
|
|
477
606
|
"""Error message"""
|
|
@@ -565,6 +694,15 @@ input CartAttributeInput {
|
|
|
565
694
|
value: String
|
|
566
695
|
}
|
|
567
696
|
|
|
697
|
+
"""Result of updating cart attributes"""
|
|
698
|
+
type CartAttributesUpdatePayload {
|
|
699
|
+
"""Updated cart"""
|
|
700
|
+
cart: Cart
|
|
701
|
+
|
|
702
|
+
"""User errors"""
|
|
703
|
+
userErrors: [UserError!]!
|
|
704
|
+
}
|
|
705
|
+
|
|
568
706
|
"""Buyer identity information"""
|
|
569
707
|
type CartBuyerIdentity {
|
|
570
708
|
"""Country code (ISO 3166-1 alpha-2)"""
|
|
@@ -678,7 +816,14 @@ type CartDiscountCodesUpdatePayload {
|
|
|
678
816
|
|
|
679
817
|
"""Single line item in the cart"""
|
|
680
818
|
type CartLine {
|
|
681
|
-
"""
|
|
819
|
+
"""
|
|
820
|
+
Typed customer-filled attribute selections (Faza 1 R5 — surcharge + tax snapshot)
|
|
821
|
+
"""
|
|
822
|
+
attributeSelections: [AttributeSelection!]!
|
|
823
|
+
|
|
824
|
+
"""
|
|
825
|
+
Shopify-compatible Line Item Properties — raw key/value pairs (e.g., gift wrap, engraving)
|
|
826
|
+
"""
|
|
682
827
|
attributes: [Attribute!]!
|
|
683
828
|
|
|
684
829
|
"""Cost information for this line"""
|
|
@@ -723,7 +868,10 @@ type CartLineCost {
|
|
|
723
868
|
|
|
724
869
|
"""Input for adding a line to cart"""
|
|
725
870
|
input CartLineInput {
|
|
726
|
-
"""
|
|
871
|
+
"""Customer-filled AttributeDefinition selections (Faza 1 R5)"""
|
|
872
|
+
attributeSelections: [AttributeSelectionInput!]
|
|
873
|
+
|
|
874
|
+
"""Line attributes (Shopify Line Item Properties)"""
|
|
727
875
|
attributes: [AttributeInput!]
|
|
728
876
|
|
|
729
877
|
"""Product variant ID"""
|
|
@@ -735,7 +883,12 @@ input CartLineInput {
|
|
|
735
883
|
|
|
736
884
|
"""Input for updating a cart line"""
|
|
737
885
|
input CartLineUpdateInput {
|
|
738
|
-
"""
|
|
886
|
+
"""
|
|
887
|
+
Updated customer-filled attribute selections (null preserves; [] clears)
|
|
888
|
+
"""
|
|
889
|
+
attributeSelections: [AttributeSelectionInput!]
|
|
890
|
+
|
|
891
|
+
"""Updated Shopify Line Item Properties (null preserves)"""
|
|
739
892
|
attributes: [AttributeInput!]
|
|
740
893
|
|
|
741
894
|
"""Cart line ID to update"""
|
|
@@ -1844,6 +1997,15 @@ type GenerateReferralCodePayload {
|
|
|
1844
1997
|
userErrors: [String!]!
|
|
1845
1998
|
}
|
|
1846
1999
|
|
|
2000
|
+
"""Geographic coordinates (latitude/longitude)"""
|
|
2001
|
+
input GeoCoordinateInput {
|
|
2002
|
+
"""Latitude in decimal degrees (-90 to 90)"""
|
|
2003
|
+
latitude: Float!
|
|
2004
|
+
|
|
2005
|
+
"""Longitude in decimal degrees (-180 to 180)"""
|
|
2006
|
+
longitude: Float!
|
|
2007
|
+
}
|
|
2008
|
+
|
|
1847
2009
|
"""Gift card information"""
|
|
1848
2010
|
type GiftCard {
|
|
1849
2011
|
"""Current balance"""
|
|
@@ -1973,6 +2135,11 @@ type Image {
|
|
|
1973
2135
|
"""Image ID"""
|
|
1974
2136
|
id: ID
|
|
1975
2137
|
|
|
2138
|
+
"""
|
|
2139
|
+
ThumbHash placeholder for progressive loading (base64-encoded, ~40 chars). Decode with thumbHashToDataURL() on the client.
|
|
2140
|
+
"""
|
|
2141
|
+
thumbhash: String
|
|
2142
|
+
|
|
1976
2143
|
"""Image URL. Pass transform argument for resized/cropped CDN URLs."""
|
|
1977
2144
|
url(transform: ImageTransformInput): String!
|
|
1978
2145
|
|
|
@@ -2006,26 +2173,6 @@ input ImageTransformInput {
|
|
|
2006
2173
|
scale: Int
|
|
2007
2174
|
}
|
|
2008
2175
|
|
|
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
2176
|
"""Language configuration"""
|
|
2030
2177
|
type Language {
|
|
2031
2178
|
"""Language code (ISO 639-1)"""
|
|
@@ -2053,6 +2200,32 @@ enum LanguageDirection {
|
|
|
2053
2200
|
RTL
|
|
2054
2201
|
}
|
|
2055
2202
|
|
|
2203
|
+
"""
|
|
2204
|
+
Summary of a ProductVariant linked to an AttributeOption (Faza 1.5 configurator).
|
|
2205
|
+
"""
|
|
2206
|
+
type LinkedVariantSummary {
|
|
2207
|
+
"""Variant ID (w tenant DB)."""
|
|
2208
|
+
id: ID!
|
|
2209
|
+
|
|
2210
|
+
"""Czy w tej chwili dostępny do zakupu (uwzględnia allowBackorder)."""
|
|
2211
|
+
isAvailable: Boolean!
|
|
2212
|
+
|
|
2213
|
+
"""Parent product ID."""
|
|
2214
|
+
productId: ID!
|
|
2215
|
+
|
|
2216
|
+
"""Dostępna ilość (stock − active reservations, zawsze ≥ 0)."""
|
|
2217
|
+
quantityAvailable: Int!
|
|
2218
|
+
|
|
2219
|
+
"""SKU jeśli zdefiniowany."""
|
|
2220
|
+
sku: String
|
|
2221
|
+
|
|
2222
|
+
"""Variant name (e.g., "Finiszer Zewnętrzny SD")."""
|
|
2223
|
+
title: String!
|
|
2224
|
+
|
|
2225
|
+
"""Czy magazyn śledzi stock dla tego wariantu."""
|
|
2226
|
+
trackQuantity: Boolean!
|
|
2227
|
+
}
|
|
2228
|
+
|
|
2056
2229
|
"""Locale to currency mapping entry"""
|
|
2057
2230
|
type LocaleCurrencyMapping {
|
|
2058
2231
|
"""Currency code (e.g., "PLN", "USD")"""
|
|
@@ -2062,7 +2235,98 @@ type LocaleCurrencyMapping {
|
|
|
2062
2235
|
locale: String!
|
|
2063
2236
|
}
|
|
2064
2237
|
|
|
2065
|
-
"""
|
|
2238
|
+
"""Inventory location (warehouse, store, pickup point)"""
|
|
2239
|
+
type Location {
|
|
2240
|
+
"""Physical address and coordinates"""
|
|
2241
|
+
address: LocationAddress!
|
|
2242
|
+
|
|
2243
|
+
"""
|
|
2244
|
+
Per-day business hours. Null when not configured — use pickupLeadTimeHours only.
|
|
2245
|
+
"""
|
|
2246
|
+
businessHours: BusinessHours
|
|
2247
|
+
|
|
2248
|
+
"""Location ID"""
|
|
2249
|
+
id: ID!
|
|
2250
|
+
|
|
2251
|
+
"""Location display name"""
|
|
2252
|
+
name: String!
|
|
2253
|
+
|
|
2254
|
+
"""Whether this location supports BOPIS pickup"""
|
|
2255
|
+
pickupEnabled: Boolean!
|
|
2256
|
+
|
|
2257
|
+
"""Optional merchant pickup instructions (e.g., "Show ID at counter")"""
|
|
2258
|
+
pickupInstructions: String
|
|
2259
|
+
|
|
2260
|
+
"""
|
|
2261
|
+
IANA timezone identifier (e.g., "Europe/Warsaw"). Falls back to shop timezone if null.
|
|
2262
|
+
"""
|
|
2263
|
+
timezone: String
|
|
2264
|
+
|
|
2265
|
+
"""Location type (WAREHOUSE, STORE, etc.)"""
|
|
2266
|
+
type: LocationType!
|
|
2267
|
+
}
|
|
2268
|
+
|
|
2269
|
+
"""Physical address of a location (Shopify LocationAddress parity)"""
|
|
2270
|
+
type LocationAddress {
|
|
2271
|
+
"""Street address line 1"""
|
|
2272
|
+
address1: String
|
|
2273
|
+
|
|
2274
|
+
"""Street address line 2 (apartment, suite)"""
|
|
2275
|
+
address2: String
|
|
2276
|
+
|
|
2277
|
+
"""City"""
|
|
2278
|
+
city: String
|
|
2279
|
+
|
|
2280
|
+
"""Country name"""
|
|
2281
|
+
country: String
|
|
2282
|
+
|
|
2283
|
+
"""Country ISO 3166-1 alpha-2 code (e.g., PL, US)"""
|
|
2284
|
+
countryCode: String
|
|
2285
|
+
|
|
2286
|
+
"""Formatted address lines (country-aware ordering)"""
|
|
2287
|
+
formatted: [String!]!
|
|
2288
|
+
|
|
2289
|
+
"""Latitude (decimal degrees)"""
|
|
2290
|
+
latitude: Float
|
|
2291
|
+
|
|
2292
|
+
"""Longitude (decimal degrees)"""
|
|
2293
|
+
longitude: Float
|
|
2294
|
+
|
|
2295
|
+
"""Phone number"""
|
|
2296
|
+
phone: String
|
|
2297
|
+
|
|
2298
|
+
"""State / province name"""
|
|
2299
|
+
province: String
|
|
2300
|
+
|
|
2301
|
+
"""State / province code (e.g., CA, MZ)"""
|
|
2302
|
+
provinceCode: String
|
|
2303
|
+
|
|
2304
|
+
"""Postal / ZIP code"""
|
|
2305
|
+
zip: String
|
|
2306
|
+
}
|
|
2307
|
+
|
|
2308
|
+
"""Paginated location connection"""
|
|
2309
|
+
type LocationConnection {
|
|
2310
|
+
"""Location edges"""
|
|
2311
|
+
edges: [LocationEdge!]!
|
|
2312
|
+
|
|
2313
|
+
"""Pagination info"""
|
|
2314
|
+
pageInfo: PageInfo!
|
|
2315
|
+
|
|
2316
|
+
"""Total count of locations matching the query"""
|
|
2317
|
+
totalCount: Int!
|
|
2318
|
+
}
|
|
2319
|
+
|
|
2320
|
+
"""Edge in a paginated Location connection"""
|
|
2321
|
+
type LocationEdge {
|
|
2322
|
+
"""Cursor for pagination"""
|
|
2323
|
+
cursor: String!
|
|
2324
|
+
|
|
2325
|
+
"""The location node"""
|
|
2326
|
+
node: Location!
|
|
2327
|
+
}
|
|
2328
|
+
|
|
2329
|
+
"""Type of inventory location (warehouse, physical store, etc.)"""
|
|
2066
2330
|
enum LocationType {
|
|
2067
2331
|
DROPSHIPPER
|
|
2068
2332
|
FULFILLMENT_CENTER
|
|
@@ -2387,6 +2651,66 @@ input MailingAddressInput {
|
|
|
2387
2651
|
zip: String
|
|
2388
2652
|
}
|
|
2389
2653
|
|
|
2654
|
+
"""Navigation menu"""
|
|
2655
|
+
type Menu {
|
|
2656
|
+
"""URL handle (e.g., main-menu, footer)"""
|
|
2657
|
+
handle: String!
|
|
2658
|
+
|
|
2659
|
+
"""Menu ID"""
|
|
2660
|
+
id: ID!
|
|
2661
|
+
|
|
2662
|
+
"""Top-level menu items"""
|
|
2663
|
+
items: [MenuItem!]!
|
|
2664
|
+
|
|
2665
|
+
"""Total count of items across all levels"""
|
|
2666
|
+
itemsCount: Int!
|
|
2667
|
+
|
|
2668
|
+
"""Menu title"""
|
|
2669
|
+
title: String!
|
|
2670
|
+
}
|
|
2671
|
+
|
|
2672
|
+
"""Navigation menu item"""
|
|
2673
|
+
type MenuItem {
|
|
2674
|
+
"""Item ID"""
|
|
2675
|
+
id: ID!
|
|
2676
|
+
|
|
2677
|
+
"""Custom banner image (with url(transform:) support)"""
|
|
2678
|
+
image: Image
|
|
2679
|
+
|
|
2680
|
+
"""Child menu items (max 3 levels)"""
|
|
2681
|
+
items: [MenuItem!]!
|
|
2682
|
+
|
|
2683
|
+
"""Linked resource object (lazy, via DataLoader)"""
|
|
2684
|
+
resource: MenuItemResource
|
|
2685
|
+
|
|
2686
|
+
"""Linked resource ID"""
|
|
2687
|
+
resourceId: ID
|
|
2688
|
+
|
|
2689
|
+
"""Display title"""
|
|
2690
|
+
title: String!
|
|
2691
|
+
|
|
2692
|
+
"""Link type"""
|
|
2693
|
+
type: MenuItemType!
|
|
2694
|
+
|
|
2695
|
+
"""Resolved URL (always computed server-side)"""
|
|
2696
|
+
url: String
|
|
2697
|
+
}
|
|
2698
|
+
|
|
2699
|
+
union MenuItemResource = Category | Collection | Product | ShopPage
|
|
2700
|
+
|
|
2701
|
+
"""Menu item link type"""
|
|
2702
|
+
enum MenuItemType {
|
|
2703
|
+
BLOG
|
|
2704
|
+
CATALOG
|
|
2705
|
+
CATEGORY
|
|
2706
|
+
COLLECTION
|
|
2707
|
+
FRONTPAGE
|
|
2708
|
+
HTTP
|
|
2709
|
+
PAGE
|
|
2710
|
+
PRODUCT
|
|
2711
|
+
SEARCH
|
|
2712
|
+
}
|
|
2713
|
+
|
|
2390
2714
|
"""Monetary value with currency"""
|
|
2391
2715
|
type Money {
|
|
2392
2716
|
"""Decimal money amount"""
|
|
@@ -2397,6 +2721,9 @@ type Money {
|
|
|
2397
2721
|
}
|
|
2398
2722
|
|
|
2399
2723
|
type Mutation {
|
|
2724
|
+
"""Update cart attributes"""
|
|
2725
|
+
cartAttributesUpdate(attributes: [CartAttributeInput!]!, cartId: ID!): CartAttributesUpdatePayload!
|
|
2726
|
+
|
|
2400
2727
|
"""Update buyer identity"""
|
|
2401
2728
|
cartBuyerIdentityUpdate(buyerIdentity: CartBuyerIdentityInput!, cartId: ID!): CartBuyerIdentityUpdatePayload!
|
|
2402
2729
|
|
|
@@ -2650,6 +2977,13 @@ type PageInfo {
|
|
|
2650
2977
|
startCursor: String
|
|
2651
2978
|
}
|
|
2652
2979
|
|
|
2980
|
+
"""Sort keys for pages"""
|
|
2981
|
+
enum PageSortKeys {
|
|
2982
|
+
ID
|
|
2983
|
+
TITLE
|
|
2984
|
+
UPDATED_AT
|
|
2985
|
+
}
|
|
2986
|
+
|
|
2653
2987
|
"""Payment method available for checkout"""
|
|
2654
2988
|
type PaymentMethod {
|
|
2655
2989
|
"""Description for customers"""
|
|
@@ -2760,6 +3094,14 @@ type PricingTier {
|
|
|
2760
3094
|
|
|
2761
3095
|
"""Product - main catalog item"""
|
|
2762
3096
|
type Product {
|
|
3097
|
+
"""Assigned AttributeSet ID (Hybrid Magento — shared template fields)"""
|
|
3098
|
+
attributeSetId: ID
|
|
3099
|
+
|
|
3100
|
+
"""
|
|
3101
|
+
Customer-facing product attributes (configurator) — set definitions + per-product scoped
|
|
3102
|
+
"""
|
|
3103
|
+
attributes(filter: ProductAttributeFilterInput): [ProductAttributeDefinition!]!
|
|
3104
|
+
|
|
2763
3105
|
"""Whether product is available for sale (any variant in stock)"""
|
|
2764
3106
|
availableForSale: Boolean!
|
|
2765
3107
|
|
|
@@ -2793,6 +3135,11 @@ type Product {
|
|
|
2793
3135
|
"""All product images"""
|
|
2794
3136
|
images(first: Float = 10): [Image!]!
|
|
2795
3137
|
|
|
3138
|
+
"""
|
|
3139
|
+
Per-product option definitions (Color, Size, …) with their available values. Use these to build a variant picker without aggregating `selectedOptions` manually.
|
|
3140
|
+
"""
|
|
3141
|
+
options: [ProductOption!]!
|
|
3142
|
+
|
|
2796
3143
|
"""Original compare-at price range in shop base currency"""
|
|
2797
3144
|
originalCompareAtPriceRange: ProductPriceRange
|
|
2798
3145
|
|
|
@@ -2805,6 +3152,11 @@ type Product {
|
|
|
2805
3152
|
"""Product type/category (free text)"""
|
|
2806
3153
|
productType: String
|
|
2807
3154
|
|
|
3155
|
+
"""
|
|
3156
|
+
Whether the storefront should offer a direct purchase path (Add to cart / Buy now). Mirrors `visibility === PUBLIC`. BUNDLE_ONLY ("Komponent") products resolve to false — the PDP renders a Komponent banner explaining access is only via configurator.
|
|
3157
|
+
"""
|
|
3158
|
+
purchasable: Boolean!
|
|
3159
|
+
|
|
2808
3160
|
"""Similar products recommendations"""
|
|
2809
3161
|
recommendations(first: Int = 4): ProductRecommendations
|
|
2810
3162
|
|
|
@@ -2836,6 +3188,106 @@ type Product {
|
|
|
2836
3188
|
|
|
2837
3189
|
"""Vendor/brand name"""
|
|
2838
3190
|
vendor: String
|
|
3191
|
+
|
|
3192
|
+
"""Catalog visibility (Faza 1.5) — PUBLIC | HIDDEN | BUNDLE_ONLY"""
|
|
3193
|
+
visibility: ProductVisibility!
|
|
3194
|
+
}
|
|
3195
|
+
|
|
3196
|
+
"""Product attribute definition (configurator)"""
|
|
3197
|
+
type ProductAttributeDefinition {
|
|
3198
|
+
"""Billing mode — BUNDLED | SEPARATE_LINE; null = informational only"""
|
|
3199
|
+
billingMode: String
|
|
3200
|
+
|
|
3201
|
+
"""Customer-facing description"""
|
|
3202
|
+
description: String
|
|
3203
|
+
|
|
3204
|
+
"""Display order"""
|
|
3205
|
+
displayOrder: Int!
|
|
3206
|
+
|
|
3207
|
+
"""Filling mode — MERCHANT | CUSTOMER | BOTH"""
|
|
3208
|
+
fillingMode: String!
|
|
3209
|
+
|
|
3210
|
+
"""Definition ID"""
|
|
3211
|
+
id: ID!
|
|
3212
|
+
|
|
3213
|
+
"""Required validation flag"""
|
|
3214
|
+
isRequired: Boolean!
|
|
3215
|
+
|
|
3216
|
+
"""Visibility flag"""
|
|
3217
|
+
isVisible: Boolean!
|
|
3218
|
+
|
|
3219
|
+
"""Max value (NUMBER) / max length (TEXT)"""
|
|
3220
|
+
maxValue: Float
|
|
3221
|
+
|
|
3222
|
+
"""Min value (NUMBER) / min length (TEXT)"""
|
|
3223
|
+
minValue: Float
|
|
3224
|
+
|
|
3225
|
+
"""Field name (e.g. "Finiszer")"""
|
|
3226
|
+
name: String!
|
|
3227
|
+
|
|
3228
|
+
"""Options for SELECT/RADIO/CHECKBOX types"""
|
|
3229
|
+
options: [ProductAttributeOption!]!
|
|
3230
|
+
|
|
3231
|
+
"""
|
|
3232
|
+
Per-product scope — set to product ID for unique configurator fields, null for shared (in AttributeSet)
|
|
3233
|
+
"""
|
|
3234
|
+
scopeProductId: ID
|
|
3235
|
+
|
|
3236
|
+
"""URL-friendly slug"""
|
|
3237
|
+
slug: String!
|
|
3238
|
+
|
|
3239
|
+
"""Tax class ID; null = inherit from variant"""
|
|
3240
|
+
taxClassId: ID
|
|
3241
|
+
|
|
3242
|
+
"""Field type — TEXT/SELECT/RADIO/CHECKBOX/etc."""
|
|
3243
|
+
type: AttributeType!
|
|
3244
|
+
}
|
|
3245
|
+
|
|
3246
|
+
"""Filter for product attributes query"""
|
|
3247
|
+
input ProductAttributeFilterInput {
|
|
3248
|
+
"""
|
|
3249
|
+
Filter by filling mode — MERCHANT | CUSTOMER | BOTH (configurator UI uses CUSTOMER + BOTH)
|
|
3250
|
+
"""
|
|
3251
|
+
fillingMode: String
|
|
3252
|
+
}
|
|
3253
|
+
|
|
3254
|
+
"""Selectable option of a product attribute (configurator)"""
|
|
3255
|
+
type ProductAttributeOption {
|
|
3256
|
+
"""Hex color (for COLOR/SWATCH types)"""
|
|
3257
|
+
colorHex: String
|
|
3258
|
+
|
|
3259
|
+
"""Option ID"""
|
|
3260
|
+
id: ID!
|
|
3261
|
+
|
|
3262
|
+
"""Default option marker"""
|
|
3263
|
+
isDefault: Boolean!
|
|
3264
|
+
|
|
3265
|
+
"""Display label shown to customer"""
|
|
3266
|
+
label: String!
|
|
3267
|
+
|
|
3268
|
+
"""
|
|
3269
|
+
Summary powiązanego ProductVariant (Faza 1.5). Null gdy option nie ma linkedVariantId albo wariant został usunięty.
|
|
3270
|
+
"""
|
|
3271
|
+
linkedVariant: LinkedVariantSummary
|
|
3272
|
+
|
|
3273
|
+
"""
|
|
3274
|
+
Linked ProductVariant ID for component stock decrement (Faza 1.5 — Hidden Products pattern)
|
|
3275
|
+
"""
|
|
3276
|
+
linkedVariantId: ID
|
|
3277
|
+
|
|
3278
|
+
"""Sort order"""
|
|
3279
|
+
sortOrder: Int!
|
|
3280
|
+
|
|
3281
|
+
"""
|
|
3282
|
+
Surcharge amount when selected (FIXED = grosze; PERCENT = thousandths of percent — Faza 2)
|
|
3283
|
+
"""
|
|
3284
|
+
surchargeAmount: Int
|
|
3285
|
+
|
|
3286
|
+
"""Surcharge type — FIXED | PERCENT (Faza 2)"""
|
|
3287
|
+
surchargeType: String
|
|
3288
|
+
|
|
3289
|
+
"""Internal value (slug-style)"""
|
|
3290
|
+
value: String!
|
|
2839
3291
|
}
|
|
2840
3292
|
|
|
2841
3293
|
"""Paginated product list"""
|
|
@@ -2895,6 +3347,11 @@ input ProductFilterInput {
|
|
|
2895
3347
|
"""Filter by tags"""
|
|
2896
3348
|
tags: [String!]
|
|
2897
3349
|
|
|
3350
|
+
"""
|
|
3351
|
+
Filter by per-product variant options (e.g. Color=Red, Size=M). Multiple entries are combined with AND across different option names and OR within the same name. Matching is case-insensitive. Shopify parity.
|
|
3352
|
+
"""
|
|
3353
|
+
variantOption: [VariantOptionFilter!]
|
|
3354
|
+
|
|
2898
3355
|
"""Filter by vendor"""
|
|
2899
3356
|
vendor: String
|
|
2900
3357
|
|
|
@@ -2902,6 +3359,47 @@ input ProductFilterInput {
|
|
|
2902
3359
|
vendors: [String!]
|
|
2903
3360
|
}
|
|
2904
3361
|
|
|
3362
|
+
"""Product option"""
|
|
3363
|
+
type ProductOption {
|
|
3364
|
+
id: ID!
|
|
3365
|
+
|
|
3366
|
+
"""Storefront rendering hint"""
|
|
3367
|
+
inputType: ProductOptionInputType!
|
|
3368
|
+
|
|
3369
|
+
"""Option name (e.g. "Color", "Size")"""
|
|
3370
|
+
name: String!
|
|
3371
|
+
|
|
3372
|
+
"""Sort position among the product's options"""
|
|
3373
|
+
position: Int!
|
|
3374
|
+
|
|
3375
|
+
"""Available values, ordered by position"""
|
|
3376
|
+
values: [ProductOptionValue!]!
|
|
3377
|
+
}
|
|
3378
|
+
|
|
3379
|
+
"""
|
|
3380
|
+
Storefront rendering hint for a product option — SELECT (dropdown), COLOR_SWATCH (colored tiles), or TEXT (free text).
|
|
3381
|
+
"""
|
|
3382
|
+
enum ProductOptionInputType {
|
|
3383
|
+
COLOR_SWATCH
|
|
3384
|
+
SELECT
|
|
3385
|
+
TEXT
|
|
3386
|
+
}
|
|
3387
|
+
|
|
3388
|
+
"""Product option value"""
|
|
3389
|
+
type ProductOptionValue {
|
|
3390
|
+
"""
|
|
3391
|
+
Hex colour for COLOR_SWATCH rendering (e.g. "#FF0000"). Null for other types.
|
|
3392
|
+
"""
|
|
3393
|
+
colorHex: String
|
|
3394
|
+
id: ID!
|
|
3395
|
+
|
|
3396
|
+
"""Display name (e.g. "Red", "XL")"""
|
|
3397
|
+
name: String!
|
|
3398
|
+
|
|
3399
|
+
"""Sort position (0-based)"""
|
|
3400
|
+
position: Int!
|
|
3401
|
+
}
|
|
3402
|
+
|
|
2905
3403
|
"""Original price range in shop base currency"""
|
|
2906
3404
|
type ProductPriceRange {
|
|
2907
3405
|
"""Maximum variant price (shop currency)"""
|
|
@@ -3025,11 +3523,6 @@ type ProductVariant {
|
|
|
3025
3523
|
"""Variant image"""
|
|
3026
3524
|
image: Image
|
|
3027
3525
|
|
|
3028
|
-
"""
|
|
3029
|
-
Inventory levels per location. Null for single-location shops. Use locationType filter for BOPIS.
|
|
3030
|
-
"""
|
|
3031
|
-
inventoryLevels(locationType: LocationType): [InventoryLevel!]
|
|
3032
|
-
|
|
3033
3526
|
"""Original compare at price in shop base currency"""
|
|
3034
3527
|
originalCompareAtPrice: Money
|
|
3035
3528
|
|
|
@@ -3051,6 +3544,23 @@ type ProductVariant {
|
|
|
3051
3544
|
"""SKU code"""
|
|
3052
3545
|
sku: String
|
|
3053
3546
|
|
|
3547
|
+
"""
|
|
3548
|
+
Per-location stock availability (Shopify StoreAvailability parity). Null for single-location shops. Resolved by StoreAvailabilityResolver with `near`, `locationType`, and `@inContext(preferredLocationId)` support.
|
|
3549
|
+
"""
|
|
3550
|
+
storeAvailability(
|
|
3551
|
+
"""Cursor for pagination"""
|
|
3552
|
+
after: String
|
|
3553
|
+
|
|
3554
|
+
"""Number of locations to return"""
|
|
3555
|
+
first: Int! = 10
|
|
3556
|
+
|
|
3557
|
+
"""Filter by location type (DoSwiftly extension beyond Shopify parity)"""
|
|
3558
|
+
locationType: LocationType
|
|
3559
|
+
|
|
3560
|
+
"""Sort locations by proximity to these coordinates"""
|
|
3561
|
+
near: GeoCoordinateInput
|
|
3562
|
+
): StoreAvailabilityConnection
|
|
3563
|
+
|
|
3054
3564
|
"""Variant title (e.g., "Large / Red")"""
|
|
3055
3565
|
title: String!
|
|
3056
3566
|
|
|
@@ -3058,6 +3568,13 @@ type ProductVariant {
|
|
|
3058
3568
|
weight: Float
|
|
3059
3569
|
}
|
|
3060
3570
|
|
|
3571
|
+
"""Catalog placement — PUBLIC | HIDDEN | BUNDLE_ONLY (Faza 1.5)"""
|
|
3572
|
+
enum ProductVisibility {
|
|
3573
|
+
BUNDLE_ONLY
|
|
3574
|
+
HIDDEN
|
|
3575
|
+
PUBLIC
|
|
3576
|
+
}
|
|
3577
|
+
|
|
3061
3578
|
type Query {
|
|
3062
3579
|
"""List of all currencies supported by the system (ECB rates)"""
|
|
3063
3580
|
allSupportedCurrencies: [Currency!]!
|
|
@@ -3237,6 +3754,34 @@ type Query {
|
|
|
3237
3754
|
"""Get available languages for this shop"""
|
|
3238
3755
|
languages: [Language!]!
|
|
3239
3756
|
|
|
3757
|
+
"""
|
|
3758
|
+
Fetch a single active location by ID. Returns null when missing, inactive, or owned by another shop (tenant isolation via StorefrontShopGuard).
|
|
3759
|
+
"""
|
|
3760
|
+
location(
|
|
3761
|
+
"""Location UUID"""
|
|
3762
|
+
id: ID!
|
|
3763
|
+
): Location
|
|
3764
|
+
|
|
3765
|
+
"""
|
|
3766
|
+
Paginated locations for the current shop (Shopify parity). Supports proximity (`near`), pickup-only filter (`hasPickupEnabled`), and `locationType` filter.
|
|
3767
|
+
"""
|
|
3768
|
+
locations(
|
|
3769
|
+
"""Cursor for pagination"""
|
|
3770
|
+
after: String
|
|
3771
|
+
|
|
3772
|
+
"""Number of locations to return"""
|
|
3773
|
+
first: Int! = 20
|
|
3774
|
+
|
|
3775
|
+
"""Filter to only pickup-enabled locations (for store picker UI)"""
|
|
3776
|
+
hasPickupEnabled: Boolean
|
|
3777
|
+
|
|
3778
|
+
"""Filter by location type"""
|
|
3779
|
+
locationType: LocationType
|
|
3780
|
+
|
|
3781
|
+
"""Sort locations by proximity to these coordinates"""
|
|
3782
|
+
near: GeoCoordinateInput
|
|
3783
|
+
): LocationConnection!
|
|
3784
|
+
|
|
3240
3785
|
"""Get loyalty member status"""
|
|
3241
3786
|
loyaltyMember: LoyaltyMember
|
|
3242
3787
|
|
|
@@ -3252,6 +3797,36 @@ type Query {
|
|
|
3252
3797
|
"""Get loyalty transaction history"""
|
|
3253
3798
|
loyaltyTransactions(after: String, first: Int = 20): LoyaltyTransactionConnection!
|
|
3254
3799
|
|
|
3800
|
+
"""Get a navigation menu by handle"""
|
|
3801
|
+
menu(handle: String!): Menu
|
|
3802
|
+
|
|
3803
|
+
"""Get a page by handle or ID"""
|
|
3804
|
+
page(
|
|
3805
|
+
"""Page handle"""
|
|
3806
|
+
handle: String
|
|
3807
|
+
|
|
3808
|
+
"""Page ID"""
|
|
3809
|
+
id: ID
|
|
3810
|
+
): ShopPage
|
|
3811
|
+
|
|
3812
|
+
"""List pages with pagination"""
|
|
3813
|
+
pages(
|
|
3814
|
+
"""Pagination cursor"""
|
|
3815
|
+
after: String
|
|
3816
|
+
|
|
3817
|
+
"""Number of pages to return"""
|
|
3818
|
+
first: Int! = 20
|
|
3819
|
+
|
|
3820
|
+
"""Search query (title/handle match)"""
|
|
3821
|
+
query: String
|
|
3822
|
+
|
|
3823
|
+
"""Reverse sort order"""
|
|
3824
|
+
reverse: Boolean! = false
|
|
3825
|
+
|
|
3826
|
+
"""Sort key"""
|
|
3827
|
+
sortKey: PageSortKeys! = TITLE
|
|
3828
|
+
): ShopPageConnection!
|
|
3829
|
+
|
|
3255
3830
|
"""Get single product by ID or handle"""
|
|
3256
3831
|
product(
|
|
3257
3832
|
"""Product handle (slug)"""
|
|
@@ -3353,6 +3928,15 @@ type Query {
|
|
|
3353
3928
|
"""Get translations for a language"""
|
|
3354
3929
|
translations(input: TranslationsInput!): Translations!
|
|
3355
3930
|
|
|
3931
|
+
"""List URL redirects"""
|
|
3932
|
+
urlRedirects(
|
|
3933
|
+
"""Pagination cursor"""
|
|
3934
|
+
after: String
|
|
3935
|
+
|
|
3936
|
+
"""Number of redirects to return (max 250)"""
|
|
3937
|
+
first: Int! = 250
|
|
3938
|
+
): UrlRedirectConnection!
|
|
3939
|
+
|
|
3356
3940
|
"""Get wishlist by ID"""
|
|
3357
3941
|
wishlist(
|
|
3358
3942
|
"""Wishlist ID"""
|
|
@@ -3755,6 +4339,11 @@ type SelectedOption {
|
|
|
3755
4339
|
"""Option name (e.g., "Size", "Color")"""
|
|
3756
4340
|
name: String!
|
|
3757
4341
|
|
|
4342
|
+
"""
|
|
4343
|
+
Relational `ProductOptionValue.id` — stable FK reference. Null only for legacy variants whose option values have not yet been migrated to the relational model.
|
|
4344
|
+
"""
|
|
4345
|
+
optionValueId: ID
|
|
4346
|
+
|
|
3758
4347
|
"""Option value (e.g., "Large", "Red")"""
|
|
3759
4348
|
value: String!
|
|
3760
4349
|
}
|
|
@@ -4093,6 +4682,57 @@ type ShopFonts {
|
|
|
4093
4682
|
primary: String
|
|
4094
4683
|
}
|
|
4095
4684
|
|
|
4685
|
+
"""Static CMS page (About, FAQ, Terms, Privacy, Contact)"""
|
|
4686
|
+
type ShopPage {
|
|
4687
|
+
"""HTML body content"""
|
|
4688
|
+
body: String!
|
|
4689
|
+
|
|
4690
|
+
"""Auto-generated plain text summary"""
|
|
4691
|
+
bodySummary: String!
|
|
4692
|
+
|
|
4693
|
+
"""Created date (ISO 8601)"""
|
|
4694
|
+
createdAt: String!
|
|
4695
|
+
|
|
4696
|
+
"""URL handle"""
|
|
4697
|
+
handle: String!
|
|
4698
|
+
|
|
4699
|
+
"""Page ID"""
|
|
4700
|
+
id: ID!
|
|
4701
|
+
|
|
4702
|
+
"""Publish date (ISO 8601)"""
|
|
4703
|
+
publishedAt: String
|
|
4704
|
+
|
|
4705
|
+
"""SEO metadata"""
|
|
4706
|
+
seo: SEO
|
|
4707
|
+
|
|
4708
|
+
"""Page title"""
|
|
4709
|
+
title: String!
|
|
4710
|
+
|
|
4711
|
+
"""Updated date (ISO 8601)"""
|
|
4712
|
+
updatedAt: String!
|
|
4713
|
+
}
|
|
4714
|
+
|
|
4715
|
+
"""Paginated shop pages"""
|
|
4716
|
+
type ShopPageConnection {
|
|
4717
|
+
"""Page edges"""
|
|
4718
|
+
edges: [ShopPageEdge!]!
|
|
4719
|
+
|
|
4720
|
+
"""Pagination info"""
|
|
4721
|
+
pageInfo: PageInfo!
|
|
4722
|
+
|
|
4723
|
+
"""Total count of pages"""
|
|
4724
|
+
totalCount: Int!
|
|
4725
|
+
}
|
|
4726
|
+
|
|
4727
|
+
"""Shop page edge"""
|
|
4728
|
+
type ShopPageEdge {
|
|
4729
|
+
"""Cursor for pagination"""
|
|
4730
|
+
cursor: String!
|
|
4731
|
+
|
|
4732
|
+
"""Page node"""
|
|
4733
|
+
node: ShopPage!
|
|
4734
|
+
}
|
|
4735
|
+
|
|
4096
4736
|
"""Shop social media links"""
|
|
4097
4737
|
type SocialLinks {
|
|
4098
4738
|
"""Facebook page URL"""
|
|
@@ -4117,6 +4757,46 @@ type SocialLinks {
|
|
|
4117
4757
|
youtube: String
|
|
4118
4758
|
}
|
|
4119
4759
|
|
|
4760
|
+
"""Per-location stock availability (Shopify StoreAvailability parity)"""
|
|
4761
|
+
type StoreAvailability {
|
|
4762
|
+
"""Whether the variant is in stock at this location"""
|
|
4763
|
+
available: Boolean!
|
|
4764
|
+
|
|
4765
|
+
"""Location where this stock resides"""
|
|
4766
|
+
location: Location!
|
|
4767
|
+
|
|
4768
|
+
"""
|
|
4769
|
+
Human-readable pickup readiness string, localized (e.g., "Usually ready in 2 hours"). Null if location does not support pickup.
|
|
4770
|
+
"""
|
|
4771
|
+
pickUpTime: String
|
|
4772
|
+
|
|
4773
|
+
"""
|
|
4774
|
+
Quantity available at this location. Token-gated: null for anonymous requests, Int for authenticated customer context (Shopify parity).
|
|
4775
|
+
"""
|
|
4776
|
+
quantityAvailable: Int
|
|
4777
|
+
}
|
|
4778
|
+
|
|
4779
|
+
"""Paginated store availability connection"""
|
|
4780
|
+
type StoreAvailabilityConnection {
|
|
4781
|
+
"""Availability edges"""
|
|
4782
|
+
edges: [StoreAvailabilityEdge!]!
|
|
4783
|
+
|
|
4784
|
+
"""Pagination info"""
|
|
4785
|
+
pageInfo: PageInfo!
|
|
4786
|
+
|
|
4787
|
+
"""Total count of locations with stock availability"""
|
|
4788
|
+
totalCount: Int!
|
|
4789
|
+
}
|
|
4790
|
+
|
|
4791
|
+
"""Edge in a paginated StoreAvailability connection"""
|
|
4792
|
+
type StoreAvailabilityEdge {
|
|
4793
|
+
"""Cursor for pagination"""
|
|
4794
|
+
cursor: String!
|
|
4795
|
+
|
|
4796
|
+
"""The availability node"""
|
|
4797
|
+
node: StoreAvailability!
|
|
4798
|
+
}
|
|
4799
|
+
|
|
4120
4800
|
"""Lifecycle status of an order"""
|
|
4121
4801
|
enum StorefrontOrderStatus {
|
|
4122
4802
|
CANCELLED
|
|
@@ -4207,6 +4887,24 @@ input TranslationsInput {
|
|
|
4207
4887
|
namespaces: [String!]
|
|
4208
4888
|
}
|
|
4209
4889
|
|
|
4890
|
+
"""URL redirect (SEO, store migration)"""
|
|
4891
|
+
type UrlRedirect {
|
|
4892
|
+
"""Source path"""
|
|
4893
|
+
path: String!
|
|
4894
|
+
|
|
4895
|
+
"""Target path or URL"""
|
|
4896
|
+
target: String!
|
|
4897
|
+
}
|
|
4898
|
+
|
|
4899
|
+
"""Paginated URL redirects"""
|
|
4900
|
+
type UrlRedirectConnection {
|
|
4901
|
+
"""Redirect nodes"""
|
|
4902
|
+
nodes: [UrlRedirect!]!
|
|
4903
|
+
|
|
4904
|
+
"""Pagination info"""
|
|
4905
|
+
pageInfo: PageInfo!
|
|
4906
|
+
}
|
|
4907
|
+
|
|
4210
4908
|
"""User-facing error from mutations"""
|
|
4211
4909
|
type UserError {
|
|
4212
4910
|
"""Error code"""
|
|
@@ -4219,6 +4917,15 @@ type UserError {
|
|
|
4219
4917
|
message: String!
|
|
4220
4918
|
}
|
|
4221
4919
|
|
|
4920
|
+
"""Per-product variant option filter (Color, Size, …)"""
|
|
4921
|
+
input VariantOptionFilter {
|
|
4922
|
+
"""Option name (e.g. "Color")"""
|
|
4923
|
+
name: String!
|
|
4924
|
+
|
|
4925
|
+
"""Option value (e.g. "Red")"""
|
|
4926
|
+
value: String!
|
|
4927
|
+
}
|
|
4928
|
+
|
|
4222
4929
|
"""Customer wishlist"""
|
|
4223
4930
|
type Wishlist {
|
|
4224
4931
|
"""Created date"""
|