@doswiftly/storefront-operations 14.0.0 → 16.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +26 -3
- package/CHANGELOG.md +294 -0
- package/README.md +8 -4
- package/fragments.graphql +49 -4
- package/llms-full.txt +117 -6
- package/operations.json +58 -11
- package/package.json +1 -1
- package/queries.graphql +22 -0
- package/schema.graphql +1084 -481
package/llms-full.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# DoSwiftly Storefront Operations — Full Reference
|
|
2
2
|
|
|
3
|
-
> Schema version: **
|
|
4
|
-
>
|
|
3
|
+
> Schema version: **16.0.0**
|
|
4
|
+
> 52 queries · 40 mutations · 102 fragments
|
|
5
5
|
|
|
6
6
|
Auto-generated from `.graphql` source files. Do not edit by hand — this file is
|
|
7
7
|
regenerated on every release to match the published schema.
|
|
@@ -37,6 +37,25 @@ query Shop {
|
|
|
37
37
|
}
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
+
### Query: `ShopConfig`
|
|
41
|
+
|
|
42
|
+
**Section**: Shop
|
|
43
|
+
|
|
44
|
+
**Description**: Minimal Shop payload for `<StorefrontProvider shopData={...}>` from `@doswiftly/storefront-sdk/react`. Returns exactly the fields the SDK's `ShopConfig` interface declares — currency setup (with `localeToCurrencyMap` for browser-locale-based currency detection), language setup, and bot protection. Cache for the session; refetch when the merchant updates currency / language settings or you want to pick up new bot-protection rules.
|
|
45
|
+
|
|
46
|
+
**Variables**: none
|
|
47
|
+
|
|
48
|
+
**Fragments used**: `ShopConfigFields`
|
|
49
|
+
|
|
50
|
+
**GraphQL**:
|
|
51
|
+
```graphql
|
|
52
|
+
query ShopConfig {
|
|
53
|
+
shop {
|
|
54
|
+
...ShopConfigFields
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
40
59
|
### Query: `Product`
|
|
41
60
|
|
|
42
61
|
**Section**: Products
|
|
@@ -410,6 +429,33 @@ query CustomerProfile {
|
|
|
410
429
|
}
|
|
411
430
|
```
|
|
412
431
|
|
|
432
|
+
### Query: `CustomerAddresses`
|
|
433
|
+
|
|
434
|
+
**Section**: Customer (requires auth)
|
|
435
|
+
|
|
436
|
+
**Description**: Authenticated customer's saved address book — used on checkout to let the buyer pick a previously-used shipping / billing address instead of typing it. Each entry carries B2B invoicing fields (`taxId`, `vatNumber`) and the `isDefault` flag so the same list serves both as the shipping picker and as the billing/invoice picker. Returns up to 50 addresses (Relay Connection — buyers rarely keep more); for the unauthenticated case the connection is empty (no error). The default address is also surfaced as `Customer.defaultAddress`.
|
|
437
|
+
|
|
438
|
+
**Variables**: none
|
|
439
|
+
|
|
440
|
+
**Fragments used**: `MailingAddress`, `PageInfo`
|
|
441
|
+
|
|
442
|
+
**GraphQL**:
|
|
443
|
+
```graphql
|
|
444
|
+
query CustomerAddresses {
|
|
445
|
+
customer {
|
|
446
|
+
addresses(first: 50) {
|
|
447
|
+
nodes {
|
|
448
|
+
...MailingAddress
|
|
449
|
+
}
|
|
450
|
+
pageInfo {
|
|
451
|
+
...PageInfo
|
|
452
|
+
}
|
|
453
|
+
totalCount
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
```
|
|
458
|
+
|
|
413
459
|
### Query: `CustomerOrder`
|
|
414
460
|
|
|
415
461
|
**Section**: Customer (requires auth)
|
|
@@ -2744,11 +2790,29 @@ fragment Category on Category {
|
|
|
2744
2790
|
}
|
|
2745
2791
|
```
|
|
2746
2792
|
|
|
2793
|
+
### Fragment: `PickupPoint` on `PickupPoint`
|
|
2794
|
+
|
|
2795
|
+
**Section**: Customer
|
|
2796
|
+
|
|
2797
|
+
**Description**: Selected pickup point (parcel locker or collection point) attached to a delivery address. Returned on `MailingAddress.pickupPoint` when the buyer chose a non-home delivery method (`deliveryType` other than `HOME`). Null for home delivery.
|
|
2798
|
+
|
|
2799
|
+
**GraphQL**:
|
|
2800
|
+
```graphql
|
|
2801
|
+
fragment PickupPoint on PickupPoint {
|
|
2802
|
+
provider
|
|
2803
|
+
pointId
|
|
2804
|
+
name
|
|
2805
|
+
address
|
|
2806
|
+
}
|
|
2807
|
+
```
|
|
2808
|
+
|
|
2747
2809
|
### Fragment: `MailingAddress` on `MailingAddress`
|
|
2748
2810
|
|
|
2749
2811
|
**Section**: Customer
|
|
2750
2812
|
|
|
2751
|
-
**Description**: Customer mailing address — full street/city/state/country/postal code with names and phone. `isDefault` flips when this address is the default for shipping. Spread on the address book UI and order summaries.
|
|
2813
|
+
**Description**: Customer mailing address — full street/city/state/country/postal code with names and phone. `isDefault` flips when this address is the default for shipping. Carries B2B invoicing fields (`taxId`, `vatNumber`) and the selected `pickupPoint` for parcel locker / collection point deliveries. Spread on the address book UI, checkout shipping/billing forms, and order summaries.
|
|
2814
|
+
|
|
2815
|
+
**Uses fragments**: `PickupPoint`
|
|
2752
2816
|
|
|
2753
2817
|
**GraphQL**:
|
|
2754
2818
|
```graphql
|
|
@@ -2768,6 +2832,11 @@ fragment MailingAddress on MailingAddress {
|
|
|
2768
2832
|
stateCode
|
|
2769
2833
|
postalCode
|
|
2770
2834
|
isDefault
|
|
2835
|
+
taxId
|
|
2836
|
+
vatNumber
|
|
2837
|
+
pickupPoint {
|
|
2838
|
+
...PickupPoint
|
|
2839
|
+
}
|
|
2771
2840
|
}
|
|
2772
2841
|
```
|
|
2773
2842
|
|
|
@@ -2870,7 +2939,7 @@ fragment Order on Order {
|
|
|
2870
2939
|
|
|
2871
2940
|
**Section**: Cart
|
|
2872
2941
|
|
|
2873
|
-
**Description**: Cart-level totals — subtotal, total, tax, duty, checkout charge. Spread inside the `Cart` fragment.
|
|
2942
|
+
**Description**: Cart-level totals — subtotal, total, tax, duty, discount, shipping, checkout charge. Spread inside the `Cart` fragment.
|
|
2874
2943
|
|
|
2875
2944
|
**Uses fragments**: `Money`
|
|
2876
2945
|
|
|
@@ -2892,6 +2961,12 @@ fragment CartCost on CartCost {
|
|
|
2892
2961
|
checkoutCharge {
|
|
2893
2962
|
...Money
|
|
2894
2963
|
}
|
|
2964
|
+
totalDiscount {
|
|
2965
|
+
...Money
|
|
2966
|
+
}
|
|
2967
|
+
totalShipping {
|
|
2968
|
+
...Money
|
|
2969
|
+
}
|
|
2895
2970
|
}
|
|
2896
2971
|
```
|
|
2897
2972
|
|
|
@@ -3097,6 +3172,15 @@ fragment Cart on Cart {
|
|
|
3097
3172
|
requiresShipping
|
|
3098
3173
|
createdAt
|
|
3099
3174
|
updatedAt
|
|
3175
|
+
status
|
|
3176
|
+
completedOrder {
|
|
3177
|
+
id
|
|
3178
|
+
orderNumber
|
|
3179
|
+
accessToken
|
|
3180
|
+
status
|
|
3181
|
+
paymentStatus
|
|
3182
|
+
fulfillmentStatus
|
|
3183
|
+
}
|
|
3100
3184
|
}
|
|
3101
3185
|
```
|
|
3102
3186
|
|
|
@@ -3123,13 +3207,14 @@ fragment CartShippingMethod on CartShippingMethod {
|
|
|
3123
3207
|
|
|
3124
3208
|
**Section**: Cart
|
|
3125
3209
|
|
|
3126
|
-
**Description**: Gift card applied to a cart — masked code for display, last 4 chars for matching, applied amount + remaining balance. Balance NIE debited yet — actual deduction atomically at `cartComplete`.
|
|
3210
|
+
**Description**: Gift card applied to a cart — `id` is the stable handle the storefront passes to `cartRemoveGiftCard` (no need to keep the raw code around). Plus masked code for display, last 4 chars for matching, applied amount + remaining balance. Balance NIE debited yet — actual deduction atomically at `cartComplete`.
|
|
3127
3211
|
|
|
3128
3212
|
**Uses fragments**: `Money`
|
|
3129
3213
|
|
|
3130
3214
|
**GraphQL**:
|
|
3131
3215
|
```graphql
|
|
3132
3216
|
fragment CartAppliedGiftCard on CartAppliedGiftCard {
|
|
3217
|
+
id
|
|
3133
3218
|
maskedCode
|
|
3134
3219
|
lastCharacters
|
|
3135
3220
|
appliedAmount {
|
|
@@ -3355,6 +3440,31 @@ fragment Shop on Shop {
|
|
|
3355
3440
|
}
|
|
3356
3441
|
```
|
|
3357
3442
|
|
|
3443
|
+
### Fragment: `ShopConfigFields` on `Shop`
|
|
3444
|
+
|
|
3445
|
+
**Section**: Shop
|
|
3446
|
+
|
|
3447
|
+
**Description**: Minimal Shop fields consumed by `<StorefrontProvider shopData={...}>` from `@doswiftly/storefront-sdk/react`. Spread this in your `shop` query to get a response shape that matches the SDK `ShopConfig` interface 1:1 — no manual field selection, no drift when the SDK adds optional fields. Use the larger `Shop` fragment when you also need branding / contact / business hours for your UI.
|
|
3448
|
+
|
|
3449
|
+
**Uses fragments**: `BotProtection`
|
|
3450
|
+
|
|
3451
|
+
**GraphQL**:
|
|
3452
|
+
```graphql
|
|
3453
|
+
fragment ShopConfigFields on Shop {
|
|
3454
|
+
currencyCode
|
|
3455
|
+
supportedCurrencies
|
|
3456
|
+
localeToCurrencyMap {
|
|
3457
|
+
locale
|
|
3458
|
+
currency
|
|
3459
|
+
}
|
|
3460
|
+
defaultLanguage
|
|
3461
|
+
supportedLanguages
|
|
3462
|
+
botProtection {
|
|
3463
|
+
...BotProtection
|
|
3464
|
+
}
|
|
3465
|
+
}
|
|
3466
|
+
```
|
|
3467
|
+
|
|
3358
3468
|
### Fragment: `PaymentMethod` on `PaymentMethod`
|
|
3359
3469
|
|
|
3360
3470
|
**Section**: Payment Methods
|
|
@@ -3772,7 +3882,7 @@ fragment FreeShippingProgress on FreeShippingProgress {
|
|
|
3772
3882
|
|
|
3773
3883
|
**Section**: Shipping Methods
|
|
3774
3884
|
|
|
3775
|
-
**Description**: One shipping method offered for the destination + cart — id, name, carrier, price, free-shipping progress, estimated delivery, sort order. Spread on the checkout shipping step.
|
|
3885
|
+
**Description**: One shipping method offered for the destination + cart — id, name, carrier, price, free-shipping progress, estimated delivery, sort order. `deliveryType` signals whether to render a pickup-point / locker picker (`HOME` vs `PICKUP_POINT` / `LOCKER`) so the storefront does not have to infer it from the method name. Spread on the checkout shipping step.
|
|
3776
3886
|
|
|
3777
3887
|
**Uses fragments**: `DeliveryEstimate`, `FreeShippingProgress`, `Money`, `ShippingCarrier`
|
|
3778
3888
|
|
|
@@ -3782,6 +3892,7 @@ fragment AvailableShippingMethod on AvailableShippingMethod {
|
|
|
3782
3892
|
id
|
|
3783
3893
|
name
|
|
3784
3894
|
description
|
|
3895
|
+
deliveryType
|
|
3785
3896
|
carrier {
|
|
3786
3897
|
...ShippingCarrier
|
|
3787
3898
|
}
|
package/operations.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"schemaVersion": "
|
|
2
|
+
"schemaVersion": "16.0.0",
|
|
3
3
|
"queries": [
|
|
4
4
|
{
|
|
5
5
|
"name": "Shop",
|
|
@@ -12,6 +12,17 @@
|
|
|
12
12
|
],
|
|
13
13
|
"body": "query Shop {\n shop {\n ...Shop\n }\n}"
|
|
14
14
|
},
|
|
15
|
+
{
|
|
16
|
+
"name": "ShopConfig",
|
|
17
|
+
"kind": "query",
|
|
18
|
+
"section": "Shop",
|
|
19
|
+
"description": "Minimal Shop payload for `<StorefrontProvider shopData={...}>` from `@doswiftly/storefront-sdk/react`. Returns exactly the fields the SDK's `ShopConfig` interface declares — currency setup (with `localeToCurrencyMap` for browser-locale-based currency detection), language setup, and bot protection. Cache for the session; refetch when the merchant updates currency / language settings or you want to pick up new bot-protection rules.",
|
|
20
|
+
"variables": [],
|
|
21
|
+
"fragmentRefs": [
|
|
22
|
+
"ShopConfigFields"
|
|
23
|
+
],
|
|
24
|
+
"body": "query ShopConfig {\n shop {\n ...ShopConfigFields\n }\n}"
|
|
25
|
+
},
|
|
15
26
|
{
|
|
16
27
|
"name": "Product",
|
|
17
28
|
"kind": "query",
|
|
@@ -307,6 +318,18 @@
|
|
|
307
318
|
],
|
|
308
319
|
"body": "query CustomerProfile {\n customer {\n ...Customer\n }\n}"
|
|
309
320
|
},
|
|
321
|
+
{
|
|
322
|
+
"name": "CustomerAddresses",
|
|
323
|
+
"kind": "query",
|
|
324
|
+
"section": "Customer (requires auth)",
|
|
325
|
+
"description": "Authenticated customer's saved address book — used on checkout to let the buyer pick a previously-used shipping / billing address instead of typing it. Each entry carries B2B invoicing fields (`taxId`, `vatNumber`) and the `isDefault` flag so the same list serves both as the shipping picker and as the billing/invoice picker. Returns up to 50 addresses (Relay Connection — buyers rarely keep more); for the unauthenticated case the connection is empty (no error). The default address is also surfaced as `Customer.defaultAddress`.",
|
|
326
|
+
"variables": [],
|
|
327
|
+
"fragmentRefs": [
|
|
328
|
+
"MailingAddress",
|
|
329
|
+
"PageInfo"
|
|
330
|
+
],
|
|
331
|
+
"body": "query CustomerAddresses {\n customer {\n addresses(first: 50) {\n nodes {\n ...MailingAddress\n }\n pageInfo {\n ...PageInfo\n }\n totalCount\n }\n }\n}"
|
|
332
|
+
},
|
|
310
333
|
{
|
|
311
334
|
"name": "CustomerOrder",
|
|
312
335
|
"kind": "query",
|
|
@@ -1999,13 +2022,25 @@
|
|
|
1999
2022
|
"onType": "Category"
|
|
2000
2023
|
},
|
|
2001
2024
|
{
|
|
2002
|
-
"name": "
|
|
2025
|
+
"name": "PickupPoint",
|
|
2003
2026
|
"kind": "fragment",
|
|
2004
2027
|
"section": "Customer",
|
|
2005
|
-
"description": "
|
|
2028
|
+
"description": "Selected pickup point (parcel locker or collection point) attached to a delivery address. Returned on `MailingAddress.pickupPoint` when the buyer chose a non-home delivery method (`deliveryType` other than `HOME`). Null for home delivery.",
|
|
2006
2029
|
"variables": [],
|
|
2007
2030
|
"fragmentRefs": [],
|
|
2008
|
-
"body": "fragment
|
|
2031
|
+
"body": "fragment PickupPoint on PickupPoint {\n provider\n pointId\n name\n address\n}",
|
|
2032
|
+
"onType": "PickupPoint"
|
|
2033
|
+
},
|
|
2034
|
+
{
|
|
2035
|
+
"name": "MailingAddress",
|
|
2036
|
+
"kind": "fragment",
|
|
2037
|
+
"section": "Customer",
|
|
2038
|
+
"description": "Customer mailing address — full street/city/state/country/postal code with names and phone. `isDefault` flips when this address is the default for shipping. Carries B2B invoicing fields (`taxId`, `vatNumber`) and the selected `pickupPoint` for parcel locker / collection point deliveries. Spread on the address book UI, checkout shipping/billing forms, and order summaries.",
|
|
2039
|
+
"variables": [],
|
|
2040
|
+
"fragmentRefs": [
|
|
2041
|
+
"PickupPoint"
|
|
2042
|
+
],
|
|
2043
|
+
"body": "fragment MailingAddress on MailingAddress {\n id\n streetLine1\n streetLine2\n city\n company\n country\n countryCode\n firstName\n lastName\n name\n phone\n state\n stateCode\n postalCode\n isDefault\n taxId\n vatNumber\n pickupPoint {\n ...PickupPoint\n }\n}",
|
|
2009
2044
|
"onType": "MailingAddress"
|
|
2010
2045
|
},
|
|
2011
2046
|
{
|
|
@@ -2048,12 +2083,12 @@
|
|
|
2048
2083
|
"name": "CartCost",
|
|
2049
2084
|
"kind": "fragment",
|
|
2050
2085
|
"section": "Cart",
|
|
2051
|
-
"description": "Cart-level totals — subtotal, total, tax, duty, checkout charge. Spread inside the `Cart` fragment.",
|
|
2086
|
+
"description": "Cart-level totals — subtotal, total, tax, duty, discount, shipping, checkout charge. Spread inside the `Cart` fragment.",
|
|
2052
2087
|
"variables": [],
|
|
2053
2088
|
"fragmentRefs": [
|
|
2054
2089
|
"Money"
|
|
2055
2090
|
],
|
|
2056
|
-
"body": "fragment CartCost on CartCost {\n total {\n ...Money\n }\n subtotal {\n ...Money\n }\n totalTax {\n ...Money\n }\n totalDuty {\n ...Money\n }\n checkoutCharge {\n ...Money\n }\n}",
|
|
2091
|
+
"body": "fragment CartCost on CartCost {\n total {\n ...Money\n }\n subtotal {\n ...Money\n }\n totalTax {\n ...Money\n }\n totalDuty {\n ...Money\n }\n checkoutCharge {\n ...Money\n }\n totalDiscount {\n ...Money\n }\n totalShipping {\n ...Money\n }\n}",
|
|
2057
2092
|
"onType": "CartCost"
|
|
2058
2093
|
},
|
|
2059
2094
|
{
|
|
@@ -2142,7 +2177,7 @@
|
|
|
2142
2177
|
"MailingAddress",
|
|
2143
2178
|
"PageInfo"
|
|
2144
2179
|
],
|
|
2145
|
-
"body": "fragment Cart on Cart {\n id\n checkoutUrl\n totalQuantity\n cost {\n ...CartCost\n }\n lines(first: 100) {\n edges {\n cursor\n node {\n ... on CartLine {\n ...CartLine\n }\n }\n }\n nodes {\n ... on CartLine {\n ...CartLine\n }\n }\n pageInfo {\n ...PageInfo\n }\n totalCount\n }\n buyerIdentity {\n ...CartBuyerIdentity\n }\n discountCodes {\n ...CartDiscountCode\n }\n discountAllocations {\n ...CartDiscountAllocation\n }\n note\n attributes {\n key\n value\n }\n email\n phone\n shippingAddress {\n ...MailingAddress\n }\n billingAddress {\n ...MailingAddress\n }\n selectedShippingMethod {\n ...CartShippingMethod\n }\n selectedPaymentMethod {\n ...CartSelectedPaymentMethod\n }\n appliedGiftCards {\n ...CartAppliedGiftCard\n }\n requiresShipping\n createdAt\n updatedAt\n}",
|
|
2180
|
+
"body": "fragment Cart on Cart {\n id\n checkoutUrl\n totalQuantity\n cost {\n ...CartCost\n }\n lines(first: 100) {\n edges {\n cursor\n node {\n ... on CartLine {\n ...CartLine\n }\n }\n }\n nodes {\n ... on CartLine {\n ...CartLine\n }\n }\n pageInfo {\n ...PageInfo\n }\n totalCount\n }\n buyerIdentity {\n ...CartBuyerIdentity\n }\n discountCodes {\n ...CartDiscountCode\n }\n discountAllocations {\n ...CartDiscountAllocation\n }\n note\n attributes {\n key\n value\n }\n email\n phone\n shippingAddress {\n ...MailingAddress\n }\n billingAddress {\n ...MailingAddress\n }\n selectedShippingMethod {\n ...CartShippingMethod\n }\n selectedPaymentMethod {\n ...CartSelectedPaymentMethod\n }\n appliedGiftCards {\n ...CartAppliedGiftCard\n }\n requiresShipping\n createdAt\n updatedAt\n status\n completedOrder {\n id\n orderNumber\n accessToken\n status\n paymentStatus\n fulfillmentStatus\n }\n}",
|
|
2146
2181
|
"onType": "Cart"
|
|
2147
2182
|
},
|
|
2148
2183
|
{
|
|
@@ -2161,12 +2196,12 @@
|
|
|
2161
2196
|
"name": "CartAppliedGiftCard",
|
|
2162
2197
|
"kind": "fragment",
|
|
2163
2198
|
"section": "Cart",
|
|
2164
|
-
"description": "Gift card applied to a cart — masked code for display, last 4 chars for matching, applied amount + remaining balance. Balance NIE debited yet — actual deduction atomically at `cartComplete`.",
|
|
2199
|
+
"description": "Gift card applied to a cart — `id` is the stable handle the storefront passes to `cartRemoveGiftCard` (no need to keep the raw code around). Plus masked code for display, last 4 chars for matching, applied amount + remaining balance. Balance NIE debited yet — actual deduction atomically at `cartComplete`.",
|
|
2165
2200
|
"variables": [],
|
|
2166
2201
|
"fragmentRefs": [
|
|
2167
2202
|
"Money"
|
|
2168
2203
|
],
|
|
2169
|
-
"body": "fragment CartAppliedGiftCard on CartAppliedGiftCard {\n maskedCode\n lastCharacters\n appliedAmount {\n ...Money\n }\n remainingBalance {\n ...Money\n }\n}",
|
|
2204
|
+
"body": "fragment CartAppliedGiftCard on CartAppliedGiftCard {\n id\n maskedCode\n lastCharacters\n appliedAmount {\n ...Money\n }\n remainingBalance {\n ...Money\n }\n}",
|
|
2170
2205
|
"onType": "CartAppliedGiftCard"
|
|
2171
2206
|
},
|
|
2172
2207
|
{
|
|
@@ -2282,6 +2317,18 @@
|
|
|
2282
2317
|
"body": "fragment Shop on Shop {\n id\n name\n description\n primaryDomain {\n host\n url\n isSslEnabled\n }\n currencyCode\n supportedCurrencies\n paymentCurrencies\n defaultLanguage\n supportedLanguages\n logo {\n ...Image\n }\n contactEmail\n contactPhone\n address {\n ...ShopAddress\n }\n businessHours {\n ...BusinessHour\n }\n branding {\n ...ShopBranding\n }\n botProtection {\n ...BotProtection\n }\n}",
|
|
2283
2318
|
"onType": "Shop"
|
|
2284
2319
|
},
|
|
2320
|
+
{
|
|
2321
|
+
"name": "ShopConfigFields",
|
|
2322
|
+
"kind": "fragment",
|
|
2323
|
+
"section": "Shop",
|
|
2324
|
+
"description": "Minimal Shop fields consumed by `<StorefrontProvider shopData={...}>` from `@doswiftly/storefront-sdk/react`. Spread this in your `shop` query to get a response shape that matches the SDK `ShopConfig` interface 1:1 — no manual field selection, no drift when the SDK adds optional fields. Use the larger `Shop` fragment when you also need branding / contact / business hours for your UI.",
|
|
2325
|
+
"variables": [],
|
|
2326
|
+
"fragmentRefs": [
|
|
2327
|
+
"BotProtection"
|
|
2328
|
+
],
|
|
2329
|
+
"body": "fragment ShopConfigFields on Shop {\n currencyCode\n supportedCurrencies\n localeToCurrencyMap {\n locale\n currency\n }\n defaultLanguage\n supportedLanguages\n botProtection {\n ...BotProtection\n }\n}",
|
|
2330
|
+
"onType": "Shop"
|
|
2331
|
+
},
|
|
2285
2332
|
{
|
|
2286
2333
|
"name": "PaymentMethod",
|
|
2287
2334
|
"kind": "fragment",
|
|
@@ -2498,7 +2545,7 @@
|
|
|
2498
2545
|
"name": "AvailableShippingMethod",
|
|
2499
2546
|
"kind": "fragment",
|
|
2500
2547
|
"section": "Shipping Methods",
|
|
2501
|
-
"description": "One shipping method offered for the destination + cart — id, name, carrier, price, free-shipping progress, estimated delivery, sort order. Spread on the checkout shipping step.",
|
|
2548
|
+
"description": "One shipping method offered for the destination + cart — id, name, carrier, price, free-shipping progress, estimated delivery, sort order. `deliveryType` signals whether to render a pickup-point / locker picker (`HOME` vs `PICKUP_POINT` / `LOCKER`) so the storefront does not have to infer it from the method name. Spread on the checkout shipping step.",
|
|
2502
2549
|
"variables": [],
|
|
2503
2550
|
"fragmentRefs": [
|
|
2504
2551
|
"DeliveryEstimate",
|
|
@@ -2506,7 +2553,7 @@
|
|
|
2506
2553
|
"Money",
|
|
2507
2554
|
"ShippingCarrier"
|
|
2508
2555
|
],
|
|
2509
|
-
"body": "fragment AvailableShippingMethod on AvailableShippingMethod {\n id\n name\n description\n carrier {\n ...ShippingCarrier\n }\n price {\n ...Money\n }\n isFree\n estimatedDelivery {\n ...DeliveryEstimate\n }\n freeShippingProgress {\n ...FreeShippingProgress\n }\n sortOrder\n}",
|
|
2556
|
+
"body": "fragment AvailableShippingMethod on AvailableShippingMethod {\n id\n name\n description\n deliveryType\n carrier {\n ...ShippingCarrier\n }\n price {\n ...Money\n }\n isFree\n estimatedDelivery {\n ...DeliveryEstimate\n }\n freeShippingProgress {\n ...FreeShippingProgress\n }\n sortOrder\n}",
|
|
2510
2557
|
"onType": "AvailableShippingMethod"
|
|
2511
2558
|
},
|
|
2512
2559
|
{
|
package/package.json
CHANGED
package/queries.graphql
CHANGED
|
@@ -14,6 +14,13 @@ query Shop {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
# Minimal Shop payload for `<StorefrontProvider shopData={...}>` from `@doswiftly/storefront-sdk/react`. Returns exactly the fields the SDK's `ShopConfig` interface declares — currency setup (with `localeToCurrencyMap` for browser-locale-based currency detection), language setup, and bot protection. Cache for the session; refetch when the merchant updates currency / language settings or you want to pick up new bot-protection rules.
|
|
18
|
+
query ShopConfig {
|
|
19
|
+
shop {
|
|
20
|
+
...ShopConfigFields
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
17
24
|
# ============================================
|
|
18
25
|
# Products
|
|
19
26
|
# ============================================
|
|
@@ -224,6 +231,21 @@ query CustomerProfile {
|
|
|
224
231
|
}
|
|
225
232
|
}
|
|
226
233
|
|
|
234
|
+
# Authenticated customer's saved address book — used on checkout to let the buyer pick a previously-used shipping / billing address instead of typing it. Each entry carries B2B invoicing fields (`taxId`, `vatNumber`) and the `isDefault` flag so the same list serves both as the shipping picker and as the billing/invoice picker. Returns up to 50 addresses (Relay Connection — buyers rarely keep more); for the unauthenticated case the connection is empty (no error). The default address is also surfaced as `Customer.defaultAddress`.
|
|
235
|
+
query CustomerAddresses {
|
|
236
|
+
customer {
|
|
237
|
+
addresses(first: 50) {
|
|
238
|
+
nodes {
|
|
239
|
+
...MailingAddress
|
|
240
|
+
}
|
|
241
|
+
pageInfo {
|
|
242
|
+
...PageInfo
|
|
243
|
+
}
|
|
244
|
+
totalCount
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
227
249
|
# Single order by `orderId`. Returns only orders that belong to the authenticated customer (cross-customer access returns null, not an error). Much cheaper than fetching the full `Customer` payload to access one order. Use on the order detail page.
|
|
228
250
|
query CustomerOrder($orderId: ID!) {
|
|
229
251
|
customerOrder(orderId: $orderId) {
|