@doswiftly/storefront-operations 7.1.0 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +93 -0
- package/README.md +21 -30
- package/fragments.graphql +17 -59
- package/llms-full.txt +118 -196
- package/mutations.graphql +51 -43
- package/operations.json +80 -118
- package/package.json +2 -1
- package/queries.graphql +11 -9
package/llms-full.txt
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# DoSwiftly Storefront Operations — Full Reference
|
|
2
2
|
|
|
3
|
-
> Schema version: **
|
|
4
|
-
> 48 queries · 44 mutations ·
|
|
3
|
+
> Schema version: **9.1.0**
|
|
4
|
+
> 48 queries · 44 mutations · 104 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.
|
|
@@ -66,13 +66,13 @@ query Product($id: ID, $handle: String) {
|
|
|
66
66
|
|
|
67
67
|
**Variables**:
|
|
68
68
|
- `$handle`: `String!`
|
|
69
|
-
- `$fillingMode`: `
|
|
69
|
+
- `$fillingMode`: `AttributeFillingMode` *(default: `CUSTOMER`)*
|
|
70
70
|
|
|
71
71
|
**Fragments used**: `ProductAttributeDefinition`, `ProductFull`
|
|
72
72
|
|
|
73
73
|
**GraphQL**:
|
|
74
74
|
```graphql
|
|
75
|
-
query ProductConfigurator($handle: String!, $fillingMode:
|
|
75
|
+
query ProductConfigurator($handle: String!, $fillingMode: AttributeFillingMode = CUSTOMER) {
|
|
76
76
|
product(handle: $handle) {
|
|
77
77
|
...ProductFull
|
|
78
78
|
attributes(filter: {fillingMode: $fillingMode}) {
|
|
@@ -161,7 +161,7 @@ query ProductSearch($query: String!, $first: Int = 20, $after: String, $filters:
|
|
|
161
161
|
}
|
|
162
162
|
```
|
|
163
163
|
|
|
164
|
-
### Query: `
|
|
164
|
+
### Query: `SearchSuggestions`
|
|
165
165
|
|
|
166
166
|
**Section**: Products
|
|
167
167
|
|
|
@@ -175,8 +175,8 @@ query ProductSearch($query: String!, $first: Int = 20, $after: String, $filters:
|
|
|
175
175
|
|
|
176
176
|
**GraphQL**:
|
|
177
177
|
```graphql
|
|
178
|
-
query
|
|
179
|
-
|
|
178
|
+
query SearchSuggestions($query: String!, $limit: Int = 10) {
|
|
179
|
+
searchSuggestions(query: $query, limit: $limit) {
|
|
180
180
|
products {
|
|
181
181
|
...ProductCard
|
|
182
182
|
}
|
|
@@ -301,7 +301,7 @@ query Category($id: ID, $slug: String) {
|
|
|
301
301
|
|
|
302
302
|
**Section**: Categories
|
|
303
303
|
|
|
304
|
-
**Description**: Returns active categories for the shop. Each
|
|
304
|
+
**Description**: Returns active root categories for the shop. Each root exposes its `children` — build the tree client-side by walking those fields (server batches the lookups, no N+1). The hierarchy is not depth-capped server-side. Use for nav mega-menus and category pages.
|
|
305
305
|
|
|
306
306
|
**Variables**: none
|
|
307
307
|
|
|
@@ -310,8 +310,8 @@ query Category($id: ID, $slug: String) {
|
|
|
310
310
|
**GraphQL**:
|
|
311
311
|
```graphql
|
|
312
312
|
query Categories {
|
|
313
|
-
categories {
|
|
314
|
-
|
|
313
|
+
categories(rootsOnly: true) {
|
|
314
|
+
nodes {
|
|
315
315
|
...Category
|
|
316
316
|
children {
|
|
317
317
|
...Category
|
|
@@ -667,7 +667,7 @@ query AvailableShippingMethods($address: ShippingAddressInput!, $cart: CartShipp
|
|
|
667
667
|
}
|
|
668
668
|
```
|
|
669
669
|
|
|
670
|
-
### Query: `
|
|
670
|
+
### Query: `ProductFilters`
|
|
671
671
|
|
|
672
672
|
**Section**: Attribute Filters
|
|
673
673
|
|
|
@@ -680,8 +680,8 @@ query AvailableShippingMethods($address: ShippingAddressInput!, $cart: CartShipp
|
|
|
680
680
|
|
|
681
681
|
**GraphQL**:
|
|
682
682
|
```graphql
|
|
683
|
-
query
|
|
684
|
-
|
|
683
|
+
query ProductFilters($input: AvailableFiltersInput) {
|
|
684
|
+
productFilters(input: $input) {
|
|
685
685
|
...AvailableFilters
|
|
686
686
|
}
|
|
687
687
|
}
|
|
@@ -1197,7 +1197,9 @@ query ProductStoreAvailability($handle: String, $id: ID) {
|
|
|
1197
1197
|
handle
|
|
1198
1198
|
title
|
|
1199
1199
|
variants {
|
|
1200
|
-
|
|
1200
|
+
nodes {
|
|
1201
|
+
...VariantStoreAvailability
|
|
1202
|
+
}
|
|
1201
1203
|
}
|
|
1202
1204
|
}
|
|
1203
1205
|
}
|
|
@@ -1797,25 +1799,22 @@ mutation CheckoutCreate($input: CheckoutCreateInput!) {
|
|
|
1797
1799
|
}
|
|
1798
1800
|
```
|
|
1799
1801
|
|
|
1800
|
-
### Mutation: `
|
|
1802
|
+
### Mutation: `CheckoutUpdateShippingAddress`
|
|
1801
1803
|
|
|
1802
1804
|
**Section**: Checkout Mutations
|
|
1803
1805
|
|
|
1804
|
-
**Description**: Sets the shipping address (full replace, not patch). Triggers cart re-pricing. Address format is NOT validated here — full validation runs at `checkoutComplete
|
|
1806
|
+
**Description**: Sets the shipping address (full replace, not patch). Triggers cart re-pricing. Address format is NOT validated here — full validation runs at `checkoutComplete`.
|
|
1805
1807
|
|
|
1806
1808
|
**Variables**:
|
|
1807
|
-
- `$
|
|
1809
|
+
- `$id`: `ID!`
|
|
1808
1810
|
- `$shippingAddress`: `CheckoutAddressInput!`
|
|
1809
1811
|
|
|
1810
1812
|
**Fragments used**: `Checkout`, `UserError`
|
|
1811
1813
|
|
|
1812
1814
|
**GraphQL**:
|
|
1813
1815
|
```graphql
|
|
1814
|
-
mutation
|
|
1815
|
-
|
|
1816
|
-
checkoutId: $checkoutId
|
|
1817
|
-
shippingAddress: $shippingAddress
|
|
1818
|
-
) {
|
|
1816
|
+
mutation CheckoutUpdateShippingAddress($id: ID!, $shippingAddress: CheckoutAddressInput!) {
|
|
1817
|
+
checkoutUpdateShippingAddress(id: $id, shippingAddress: $shippingAddress) {
|
|
1819
1818
|
checkout {
|
|
1820
1819
|
...Checkout
|
|
1821
1820
|
}
|
|
@@ -1826,25 +1825,22 @@ mutation CheckoutShippingAddressUpdate($checkoutId: ID!, $shippingAddress: Check
|
|
|
1826
1825
|
}
|
|
1827
1826
|
```
|
|
1828
1827
|
|
|
1829
|
-
### Mutation: `
|
|
1828
|
+
### Mutation: `CheckoutUpdateBillingAddress`
|
|
1830
1829
|
|
|
1831
1830
|
**Section**: Checkout Mutations
|
|
1832
1831
|
|
|
1833
1832
|
**Description**: Sets the billing address (full replace). Independent of shipping address — pass it explicitly even when "billing same as shipping".
|
|
1834
1833
|
|
|
1835
1834
|
**Variables**:
|
|
1836
|
-
- `$
|
|
1835
|
+
- `$id`: `ID!`
|
|
1837
1836
|
- `$billingAddress`: `CheckoutAddressInput!`
|
|
1838
1837
|
|
|
1839
1838
|
**Fragments used**: `Checkout`, `UserError`
|
|
1840
1839
|
|
|
1841
1840
|
**GraphQL**:
|
|
1842
1841
|
```graphql
|
|
1843
|
-
mutation
|
|
1844
|
-
|
|
1845
|
-
checkoutId: $checkoutId
|
|
1846
|
-
billingAddress: $billingAddress
|
|
1847
|
-
) {
|
|
1842
|
+
mutation CheckoutUpdateBillingAddress($id: ID!, $billingAddress: CheckoutAddressInput!) {
|
|
1843
|
+
checkoutUpdateBillingAddress(id: $id, billingAddress: $billingAddress) {
|
|
1848
1844
|
checkout {
|
|
1849
1845
|
...Checkout
|
|
1850
1846
|
}
|
|
@@ -1855,22 +1851,22 @@ mutation CheckoutBillingAddressUpdate($checkoutId: ID!, $billingAddress: Checkou
|
|
|
1855
1851
|
}
|
|
1856
1852
|
```
|
|
1857
1853
|
|
|
1858
|
-
### Mutation: `
|
|
1854
|
+
### Mutation: `CheckoutUpdateEmail`
|
|
1859
1855
|
|
|
1860
1856
|
**Section**: Checkout Mutations
|
|
1861
1857
|
|
|
1862
1858
|
**Description**: Sets or updates the contact email on the checkout (used for guest checkout, order confirmation, and tracking emails). Validated against a regex; returns `INVALID` for malformed format.
|
|
1863
1859
|
|
|
1864
1860
|
**Variables**:
|
|
1865
|
-
- `$
|
|
1861
|
+
- `$id`: `ID!`
|
|
1866
1862
|
- `$email`: `String!`
|
|
1867
1863
|
|
|
1868
1864
|
**Fragments used**: `Checkout`, `UserError`
|
|
1869
1865
|
|
|
1870
1866
|
**GraphQL**:
|
|
1871
1867
|
```graphql
|
|
1872
|
-
mutation
|
|
1873
|
-
|
|
1868
|
+
mutation CheckoutUpdateEmail($id: ID!, $email: String!) {
|
|
1869
|
+
checkoutUpdateEmail(id: $id, email: $email) {
|
|
1874
1870
|
checkout {
|
|
1875
1871
|
...Checkout
|
|
1876
1872
|
}
|
|
@@ -1881,25 +1877,22 @@ mutation CheckoutEmailUpdate($checkoutId: ID!, $email: String!) {
|
|
|
1881
1877
|
}
|
|
1882
1878
|
```
|
|
1883
1879
|
|
|
1884
|
-
### Mutation: `
|
|
1880
|
+
### Mutation: `CheckoutSelectShippingRate`
|
|
1885
1881
|
|
|
1886
1882
|
**Section**: Checkout Mutations
|
|
1887
1883
|
|
|
1888
|
-
**Description**: Selects a shipping method by `
|
|
1884
|
+
**Description**: Selects a shipping method by `rateId` (a stable shipping-method UUID, NOT an opaque per-request token). The id comes from `availableShippingMethods` query, computed for the current address + cart subtotal at request time.
|
|
1889
1885
|
|
|
1890
1886
|
**Variables**:
|
|
1891
|
-
- `$
|
|
1892
|
-
- `$
|
|
1887
|
+
- `$id`: `ID!`
|
|
1888
|
+
- `$rateId`: `String!`
|
|
1893
1889
|
|
|
1894
1890
|
**Fragments used**: `Checkout`, `UserError`
|
|
1895
1891
|
|
|
1896
1892
|
**GraphQL**:
|
|
1897
1893
|
```graphql
|
|
1898
|
-
mutation
|
|
1899
|
-
|
|
1900
|
-
checkoutId: $checkoutId
|
|
1901
|
-
shippingRateHandle: $shippingRateHandle
|
|
1902
|
-
) {
|
|
1894
|
+
mutation CheckoutSelectShippingRate($id: ID!, $rateId: String!) {
|
|
1895
|
+
checkoutSelectShippingRate(id: $id, rateId: $rateId) {
|
|
1903
1896
|
checkout {
|
|
1904
1897
|
...Checkout
|
|
1905
1898
|
}
|
|
@@ -1910,22 +1903,22 @@ mutation CheckoutShippingLineUpdate($checkoutId: ID!, $shippingRateHandle: Strin
|
|
|
1910
1903
|
}
|
|
1911
1904
|
```
|
|
1912
1905
|
|
|
1913
|
-
### Mutation: `
|
|
1906
|
+
### Mutation: `CheckoutApplyDiscountCode`
|
|
1914
1907
|
|
|
1915
1908
|
**Section**: Checkout Mutations
|
|
1916
1909
|
|
|
1917
|
-
**Description**: Appends a discount code to the cart's `discount_codes` array. Note: while multiple codes can be stored, the pricing engine currently uses **only the first applied code** — codes do not stack. Validated for existence, active status, and customer usage limits
|
|
1910
|
+
**Description**: Appends a discount code to the cart's `discount_codes` array. Note: while multiple codes can be stored, the pricing engine currently uses **only the first applied code** — codes do not stack. Validated for existence, active status, and customer usage limits.
|
|
1918
1911
|
|
|
1919
1912
|
**Variables**:
|
|
1920
|
-
- `$
|
|
1913
|
+
- `$id`: `ID!`
|
|
1921
1914
|
- `$discountCode`: `String!`
|
|
1922
1915
|
|
|
1923
1916
|
**Fragments used**: `Checkout`, `UserError`
|
|
1924
1917
|
|
|
1925
1918
|
**GraphQL**:
|
|
1926
1919
|
```graphql
|
|
1927
|
-
mutation
|
|
1928
|
-
|
|
1920
|
+
mutation CheckoutApplyDiscountCode($id: ID!, $discountCode: String!) {
|
|
1921
|
+
checkoutApplyDiscountCode(id: $id, discountCode: $discountCode) {
|
|
1929
1922
|
checkout {
|
|
1930
1923
|
...Checkout
|
|
1931
1924
|
}
|
|
@@ -1936,22 +1929,22 @@ mutation CheckoutDiscountCodeApply($checkoutId: ID!, $discountCode: String!) {
|
|
|
1936
1929
|
}
|
|
1937
1930
|
```
|
|
1938
1931
|
|
|
1939
|
-
### Mutation: `
|
|
1932
|
+
### Mutation: `CheckoutRemoveDiscountCode`
|
|
1940
1933
|
|
|
1941
1934
|
**Section**: Checkout Mutations
|
|
1942
1935
|
|
|
1943
1936
|
**Description**: Removes a code from the cart's `discount_codes` array (filters by exact match). Triggers re-pricing.
|
|
1944
1937
|
|
|
1945
1938
|
**Variables**:
|
|
1946
|
-
- `$
|
|
1939
|
+
- `$id`: `ID!`
|
|
1947
1940
|
- `$discountCode`: `String!`
|
|
1948
1941
|
|
|
1949
1942
|
**Fragments used**: `Checkout`, `UserError`
|
|
1950
1943
|
|
|
1951
1944
|
**GraphQL**:
|
|
1952
1945
|
```graphql
|
|
1953
|
-
mutation
|
|
1954
|
-
|
|
1946
|
+
mutation CheckoutRemoveDiscountCode($id: ID!, $discountCode: String!) {
|
|
1947
|
+
checkoutRemoveDiscountCode(id: $id, discountCode: $discountCode) {
|
|
1955
1948
|
checkout {
|
|
1956
1949
|
...Checkout
|
|
1957
1950
|
}
|
|
@@ -1962,25 +1955,22 @@ mutation CheckoutDiscountCodeRemove($checkoutId: ID!, $discountCode: String!) {
|
|
|
1962
1955
|
}
|
|
1963
1956
|
```
|
|
1964
1957
|
|
|
1965
|
-
### Mutation: `
|
|
1958
|
+
### Mutation: `CheckoutValidateDiscountCode`
|
|
1966
1959
|
|
|
1967
1960
|
**Section**: Checkout Mutations
|
|
1968
1961
|
|
|
1969
1962
|
**Description**: READ-ONLY validation of a discount code against the current checkout — does NOT modify state. Returns `{ isValid, discount, error }` for previewing the effect (e.g. inline UI feedback as the user types).
|
|
1970
1963
|
|
|
1971
1964
|
**Variables**:
|
|
1972
|
-
- `$
|
|
1965
|
+
- `$id`: `ID!`
|
|
1973
1966
|
- `$discountCode`: `String!`
|
|
1974
1967
|
|
|
1975
1968
|
**Fragments used**: `UserError`
|
|
1976
1969
|
|
|
1977
1970
|
**GraphQL**:
|
|
1978
1971
|
```graphql
|
|
1979
|
-
mutation
|
|
1980
|
-
|
|
1981
|
-
checkoutId: $checkoutId
|
|
1982
|
-
discountCode: $discountCode
|
|
1983
|
-
) {
|
|
1972
|
+
mutation CheckoutValidateDiscountCode($id: ID!, $discountCode: String!) {
|
|
1973
|
+
checkoutValidateDiscountCode(id: $id, discountCode: $discountCode) {
|
|
1984
1974
|
result {
|
|
1985
1975
|
isValid
|
|
1986
1976
|
discount {
|
|
@@ -2005,25 +1995,22 @@ mutation CheckoutDiscountCodeValidate($checkoutId: ID!, $discountCode: String!)
|
|
|
2005
1995
|
}
|
|
2006
1996
|
```
|
|
2007
1997
|
|
|
2008
|
-
### Mutation: `
|
|
1998
|
+
### Mutation: `CheckoutSelectPaymentMethod`
|
|
2009
1999
|
|
|
2010
2000
|
**Section**: Checkout Mutations
|
|
2011
2001
|
|
|
2012
2002
|
**Description**: Selects a payment method by `paymentMethodId` (UUID from `availablePaymentMethods` query). Validates existence and active status; no pre-authorization is performed here.
|
|
2013
2003
|
|
|
2014
2004
|
**Variables**:
|
|
2015
|
-
- `$
|
|
2005
|
+
- `$id`: `ID!`
|
|
2016
2006
|
- `$paymentMethodId`: `ID!`
|
|
2017
2007
|
|
|
2018
2008
|
**Fragments used**: `Checkout`, `UserError`
|
|
2019
2009
|
|
|
2020
2010
|
**GraphQL**:
|
|
2021
2011
|
```graphql
|
|
2022
|
-
mutation
|
|
2023
|
-
|
|
2024
|
-
checkoutId: $checkoutId
|
|
2025
|
-
paymentMethodId: $paymentMethodId
|
|
2026
|
-
) {
|
|
2012
|
+
mutation CheckoutSelectPaymentMethod($id: ID!, $paymentMethodId: ID!) {
|
|
2013
|
+
checkoutSelectPaymentMethod(id: $id, paymentMethodId: $paymentMethodId) {
|
|
2027
2014
|
checkout {
|
|
2028
2015
|
...Checkout
|
|
2029
2016
|
}
|
|
@@ -2038,18 +2025,18 @@ mutation CheckoutPaymentMethodUpdate($checkoutId: ID!, $paymentMethodId: ID!) {
|
|
|
2038
2025
|
|
|
2039
2026
|
**Section**: Checkout Mutations
|
|
2040
2027
|
|
|
2041
|
-
**Description**: Finalizes the checkout: creates the `Order`,
|
|
2028
|
+
**Description**: Finalizes the checkout: creates the `Order`, deducts gift cards, sends order-created confirmation — all atomically. **Idempotent on `idempotencyKey`** (NOT on the checkout `id`); auto-generated if the caller omits it. The `paymentUrl` field is reserved but is NOT populated here — for hosted gateways (PayU, P24) the storefront calls a separate `paymentCreate` mutation after this returns.
|
|
2042
2029
|
|
|
2043
2030
|
**Variables**:
|
|
2044
|
-
- `$
|
|
2031
|
+
- `$id`: `ID!`
|
|
2045
2032
|
- `$input`: `CheckoutCompleteInput`
|
|
2046
2033
|
|
|
2047
2034
|
**Fragments used**: `Checkout`, `Order`, `UserError`
|
|
2048
2035
|
|
|
2049
2036
|
**GraphQL**:
|
|
2050
2037
|
```graphql
|
|
2051
|
-
mutation CheckoutComplete($
|
|
2052
|
-
checkoutComplete(
|
|
2038
|
+
mutation CheckoutComplete($id: ID!, $input: CheckoutCompleteInput) {
|
|
2039
|
+
checkoutComplete(id: $id, input: $input) {
|
|
2053
2040
|
checkout {
|
|
2054
2041
|
...Checkout
|
|
2055
2042
|
}
|
|
@@ -2064,22 +2051,22 @@ mutation CheckoutComplete($checkoutId: ID!, $input: CheckoutCompleteInput) {
|
|
|
2064
2051
|
}
|
|
2065
2052
|
```
|
|
2066
2053
|
|
|
2067
|
-
### Mutation: `
|
|
2054
|
+
### Mutation: `CheckoutApplyGiftCard`
|
|
2068
2055
|
|
|
2069
2056
|
**Section**: Gift Card Checkout Mutations
|
|
2070
2057
|
|
|
2071
|
-
**Description**: Applies a gift card to the cart, stackable with discount codes. Consumption is FIFO: each card consumes `min(remainingBalance, paymentDue)` against the current cart total in the order they were applied. The gift card balance is NOT debited yet — actual deduction happens atomically
|
|
2058
|
+
**Description**: Applies a gift card to the cart, stackable with discount codes. Consumption is FIFO: each card consumes `min(remainingBalance, paymentDue)` against the current cart total in the order they were applied. The gift card balance is NOT debited yet — actual deduction happens atomically at `checkoutComplete`. Errors: `GIFT_CARD_NOT_FOUND`, `GIFT_CARD_DEPLETED`, `GIFT_CARD_UNUSABLE`, `GIFT_CARD_ALREADY_APPLIED`.
|
|
2072
2059
|
|
|
2073
2060
|
**Variables**:
|
|
2074
|
-
- `$
|
|
2061
|
+
- `$id`: `ID!`
|
|
2075
2062
|
- `$giftCardCode`: `String!`
|
|
2076
2063
|
|
|
2077
2064
|
**Fragments used**: `Checkout`, `UserError`
|
|
2078
2065
|
|
|
2079
2066
|
**GraphQL**:
|
|
2080
2067
|
```graphql
|
|
2081
|
-
mutation
|
|
2082
|
-
|
|
2068
|
+
mutation CheckoutApplyGiftCard($id: ID!, $giftCardCode: String!) {
|
|
2069
|
+
checkoutApplyGiftCard(id: $id, giftCardCode: $giftCardCode) {
|
|
2083
2070
|
checkout {
|
|
2084
2071
|
...Checkout
|
|
2085
2072
|
}
|
|
@@ -2090,22 +2077,22 @@ mutation CheckoutGiftCardApply($checkoutId: ID!, $giftCardCode: String!) {
|
|
|
2090
2077
|
}
|
|
2091
2078
|
```
|
|
2092
2079
|
|
|
2093
|
-
### Mutation: `
|
|
2080
|
+
### Mutation: `CheckoutRemoveGiftCard`
|
|
2094
2081
|
|
|
2095
2082
|
**Section**: Gift Card Checkout Mutations
|
|
2096
2083
|
|
|
2097
2084
|
**Description**: Removes a gift card from the applied list and recalculates FIFO `appliedAmount` for the remaining cards. Since gift card balances are only debited at `checkoutComplete`, removing before completion has no effect on the underlying gift card balance.
|
|
2098
2085
|
|
|
2099
2086
|
**Variables**:
|
|
2100
|
-
- `$
|
|
2087
|
+
- `$id`: `ID!`
|
|
2101
2088
|
- `$giftCardCode`: `String!`
|
|
2102
2089
|
|
|
2103
2090
|
**Fragments used**: `Checkout`, `UserError`
|
|
2104
2091
|
|
|
2105
2092
|
**GraphQL**:
|
|
2106
2093
|
```graphql
|
|
2107
|
-
mutation
|
|
2108
|
-
|
|
2094
|
+
mutation CheckoutRemoveGiftCard($id: ID!, $giftCardCode: String!) {
|
|
2095
|
+
checkoutRemoveGiftCard(id: $id, giftCardCode: $giftCardCode) {
|
|
2109
2096
|
checkout {
|
|
2110
2097
|
...Checkout
|
|
2111
2098
|
}
|
|
@@ -2116,7 +2103,7 @@ mutation CheckoutGiftCardRemove($checkoutId: ID!, $giftCardCode: String!) {
|
|
|
2116
2103
|
}
|
|
2117
2104
|
```
|
|
2118
2105
|
|
|
2119
|
-
### Mutation: `
|
|
2106
|
+
### Mutation: `CheckoutUpdateGiftCardRecipient`
|
|
2120
2107
|
|
|
2121
2108
|
**Section**: Gift Card Checkout Mutations
|
|
2122
2109
|
|
|
@@ -2129,8 +2116,8 @@ mutation CheckoutGiftCardRemove($checkoutId: ID!, $giftCardCode: String!) {
|
|
|
2129
2116
|
|
|
2130
2117
|
**GraphQL**:
|
|
2131
2118
|
```graphql
|
|
2132
|
-
mutation
|
|
2133
|
-
|
|
2119
|
+
mutation CheckoutUpdateGiftCardRecipient($input: CheckoutGiftCardRecipientInput!) {
|
|
2120
|
+
checkoutUpdateGiftCardRecipient(input: $input) {
|
|
2134
2121
|
checkout {
|
|
2135
2122
|
...Checkout
|
|
2136
2123
|
}
|
|
@@ -2205,7 +2192,7 @@ mutation ReturnCancel($id: ID!) {
|
|
|
2205
2192
|
**GraphQL**:
|
|
2206
2193
|
```graphql
|
|
2207
2194
|
mutation RedeemLoyaltyReward($input: RedeemRewardInput!) {
|
|
2208
|
-
|
|
2195
|
+
loyaltyRedeemReward(input: $input) {
|
|
2209
2196
|
...RedeemRewardPayload
|
|
2210
2197
|
}
|
|
2211
2198
|
}
|
|
@@ -2224,7 +2211,7 @@ mutation RedeemLoyaltyReward($input: RedeemRewardInput!) {
|
|
|
2224
2211
|
**GraphQL**:
|
|
2225
2212
|
```graphql
|
|
2226
2213
|
mutation GenerateReferralCode {
|
|
2227
|
-
|
|
2214
|
+
loyaltyGenerateReferralCode {
|
|
2228
2215
|
...GenerateReferralCodePayload
|
|
2229
2216
|
}
|
|
2230
2217
|
}
|
|
@@ -2314,7 +2301,7 @@ mutation ReviewDownvote($reviewId: ID!) {
|
|
|
2314
2301
|
**Variables**:
|
|
2315
2302
|
- `$input`: `WishlistCreateInput!`
|
|
2316
2303
|
|
|
2317
|
-
**Fragments used**: `Wishlist`
|
|
2304
|
+
**Fragments used**: `UserError`, `Wishlist`
|
|
2318
2305
|
|
|
2319
2306
|
**GraphQL**:
|
|
2320
2307
|
```graphql
|
|
@@ -2323,7 +2310,9 @@ mutation WishlistCreate($input: WishlistCreateInput!) {
|
|
|
2323
2310
|
wishlist {
|
|
2324
2311
|
...Wishlist
|
|
2325
2312
|
}
|
|
2326
|
-
userErrors
|
|
2313
|
+
userErrors {
|
|
2314
|
+
...UserError
|
|
2315
|
+
}
|
|
2327
2316
|
}
|
|
2328
2317
|
}
|
|
2329
2318
|
```
|
|
@@ -2332,22 +2321,24 @@ mutation WishlistCreate($input: WishlistCreateInput!) {
|
|
|
2332
2321
|
|
|
2333
2322
|
**Section**: Wishlist Mutations
|
|
2334
2323
|
|
|
2335
|
-
**Description**: Adds an item by `productId` (and optional `variantId`) to a wishlist. Idempotent on the `(wishlist_id, product_id, variant_id)` unique constraint — adding an already-present item is a silent no-op
|
|
2324
|
+
**Description**: Adds an item by `productId` (and optional `variantId`) to a wishlist. Idempotent on the `(wishlist_id, product_id, variant_id)` unique constraint — adding an already-present item is a silent no-op. Captures `priceAtAdd` for price-drop notifications.
|
|
2336
2325
|
|
|
2337
2326
|
**Variables**:
|
|
2338
|
-
- `$
|
|
2327
|
+
- `$id`: `ID!`
|
|
2339
2328
|
- `$input`: `WishlistItemInput!`
|
|
2340
2329
|
|
|
2341
|
-
**Fragments used**: `Wishlist`
|
|
2330
|
+
**Fragments used**: `UserError`, `Wishlist`
|
|
2342
2331
|
|
|
2343
2332
|
**GraphQL**:
|
|
2344
2333
|
```graphql
|
|
2345
|
-
mutation WishlistAddItem($
|
|
2346
|
-
wishlistAddItem(
|
|
2334
|
+
mutation WishlistAddItem($id: ID!, $input: WishlistItemInput!) {
|
|
2335
|
+
wishlistAddItem(id: $id, input: $input) {
|
|
2347
2336
|
wishlist {
|
|
2348
2337
|
...Wishlist
|
|
2349
2338
|
}
|
|
2350
|
-
userErrors
|
|
2339
|
+
userErrors {
|
|
2340
|
+
...UserError
|
|
2341
|
+
}
|
|
2351
2342
|
}
|
|
2352
2343
|
}
|
|
2353
2344
|
```
|
|
@@ -2359,19 +2350,21 @@ mutation WishlistAddItem($wishlistId: ID!, $input: WishlistItemInput!) {
|
|
|
2359
2350
|
**Description**: Hard-deletes a wishlist item by `itemId` (the `WishlistItem` row id, NOT the product id).
|
|
2360
2351
|
|
|
2361
2352
|
**Variables**:
|
|
2362
|
-
- `$
|
|
2353
|
+
- `$id`: `ID!`
|
|
2363
2354
|
- `$itemId`: `ID!`
|
|
2364
2355
|
|
|
2365
|
-
**Fragments used**: `Wishlist`
|
|
2356
|
+
**Fragments used**: `UserError`, `Wishlist`
|
|
2366
2357
|
|
|
2367
2358
|
**GraphQL**:
|
|
2368
2359
|
```graphql
|
|
2369
|
-
mutation WishlistRemoveItem($
|
|
2370
|
-
wishlistRemoveItem(
|
|
2360
|
+
mutation WishlistRemoveItem($id: ID!, $itemId: ID!) {
|
|
2361
|
+
wishlistRemoveItem(id: $id, itemId: $itemId) {
|
|
2371
2362
|
wishlist {
|
|
2372
2363
|
...Wishlist
|
|
2373
2364
|
}
|
|
2374
|
-
userErrors
|
|
2365
|
+
userErrors {
|
|
2366
|
+
...UserError
|
|
2367
|
+
}
|
|
2375
2368
|
}
|
|
2376
2369
|
}
|
|
2377
2370
|
```
|
|
@@ -2380,21 +2373,23 @@ mutation WishlistRemoveItem($wishlistId: ID!, $itemId: ID!) {
|
|
|
2380
2373
|
|
|
2381
2374
|
**Section**: Wishlist Mutations
|
|
2382
2375
|
|
|
2383
|
-
**Description**: Hard-deletes the wishlist row. All
|
|
2376
|
+
**Description**: Hard-deletes the wishlist row. All wishlist items are removed via cascade. No soft-delete; cannot be undone.
|
|
2384
2377
|
|
|
2385
2378
|
**Variables**:
|
|
2386
|
-
- `$
|
|
2379
|
+
- `$id`: `ID!`
|
|
2387
2380
|
|
|
2388
|
-
**Fragments used**: `Wishlist`
|
|
2381
|
+
**Fragments used**: `UserError`, `Wishlist`
|
|
2389
2382
|
|
|
2390
2383
|
**GraphQL**:
|
|
2391
2384
|
```graphql
|
|
2392
|
-
mutation WishlistDelete($
|
|
2393
|
-
wishlistDelete(
|
|
2385
|
+
mutation WishlistDelete($id: ID!) {
|
|
2386
|
+
wishlistDelete(id: $id) {
|
|
2394
2387
|
wishlist {
|
|
2395
2388
|
...Wishlist
|
|
2396
2389
|
}
|
|
2397
|
-
userErrors
|
|
2390
|
+
userErrors {
|
|
2391
|
+
...UserError
|
|
2392
|
+
}
|
|
2398
2393
|
}
|
|
2399
2394
|
}
|
|
2400
2395
|
```
|
|
@@ -2565,41 +2560,6 @@ fragment Money on Money {
|
|
|
2565
2560
|
}
|
|
2566
2561
|
```
|
|
2567
2562
|
|
|
2568
|
-
### Fragment: `Price` on `PriceMoney`
|
|
2569
|
-
|
|
2570
|
-
**Section**: Common
|
|
2571
|
-
|
|
2572
|
-
**Description**: Lightweight price for listing views (cards, grids, search results) — same shape as `Money`. Spread when full conversion metadata is overkill.
|
|
2573
|
-
|
|
2574
|
-
**GraphQL**:
|
|
2575
|
-
```graphql
|
|
2576
|
-
fragment Price on PriceMoney {
|
|
2577
|
-
amount
|
|
2578
|
-
currencyCode
|
|
2579
|
-
}
|
|
2580
|
-
```
|
|
2581
|
-
|
|
2582
|
-
### Fragment: `PriceMoney` on `PriceMoney`
|
|
2583
|
-
|
|
2584
|
-
**Section**: Common
|
|
2585
|
-
|
|
2586
|
-
**Description**: Full price with currency-conversion transparency — adds `baseAmount`, `baseCurrencyCode`, `exchangeRate`, `marginApplied`, `rateTimestamp`, `isConverted`. Spread on PDP / cart / checkout where the customer needs to see the original price + applied conversion.
|
|
2587
|
-
|
|
2588
|
-
**Uses fragments**: `Price`
|
|
2589
|
-
|
|
2590
|
-
**GraphQL**:
|
|
2591
|
-
```graphql
|
|
2592
|
-
fragment PriceMoney on PriceMoney {
|
|
2593
|
-
...Price
|
|
2594
|
-
baseAmount
|
|
2595
|
-
baseCurrencyCode
|
|
2596
|
-
exchangeRate
|
|
2597
|
-
marginApplied
|
|
2598
|
-
rateTimestamp
|
|
2599
|
-
isConverted
|
|
2600
|
-
}
|
|
2601
|
-
```
|
|
2602
|
-
|
|
2603
2563
|
### Fragment: `SelectedOption` on `SelectedOption`
|
|
2604
2564
|
|
|
2605
2565
|
**Section**: Common
|
|
@@ -2666,7 +2626,11 @@ fragment ProductCard on Product {
|
|
|
2666
2626
|
handle
|
|
2667
2627
|
title
|
|
2668
2628
|
vendor
|
|
2669
|
-
|
|
2629
|
+
categories {
|
|
2630
|
+
id
|
|
2631
|
+
slug
|
|
2632
|
+
name
|
|
2633
|
+
}
|
|
2670
2634
|
isAvailable
|
|
2671
2635
|
averageRating
|
|
2672
2636
|
reviewCount
|
|
@@ -3390,7 +3354,7 @@ fragment AvailablePaymentMethods on AvailablePaymentMethods {
|
|
|
3390
3354
|
|
|
3391
3355
|
**Section**: Checkout
|
|
3392
3356
|
|
|
3393
|
-
**Description**: Single shipping rate option — `handle` is the stable id you pass to `
|
|
3357
|
+
**Description**: Single shipping rate option — `handle` is the stable id you pass to `checkoutSelectShippingRate` as `rateId`, plus title and price.
|
|
3394
3358
|
|
|
3395
3359
|
**Uses fragments**: `Money`
|
|
3396
3360
|
|
|
@@ -4133,7 +4097,7 @@ fragment CategoryFilterOption on CategoryFilterOption {
|
|
|
4133
4097
|
|
|
4134
4098
|
**Section**: Attribute Filters
|
|
4135
4099
|
|
|
4136
|
-
**Description**: Full result of the `
|
|
4100
|
+
**Description**: Full result of the `productFilters($input)` query — attribute filters, price range, category filters, count of currently active filters, total products matching the context. Spread on listing pages to render filter sidebars.
|
|
4137
4101
|
|
|
4138
4102
|
**Uses fragments**: `AttributeDefinition`, `CategoryFilterOption`, `PriceRangeFilter`
|
|
4139
4103
|
|
|
@@ -4149,8 +4113,8 @@ fragment AvailableFilters on AvailableFilters {
|
|
|
4149
4113
|
categories {
|
|
4150
4114
|
...CategoryFilterOption
|
|
4151
4115
|
}
|
|
4152
|
-
|
|
4153
|
-
|
|
4116
|
+
activeCount
|
|
4117
|
+
matchCount
|
|
4154
4118
|
}
|
|
4155
4119
|
```
|
|
4156
4120
|
|
|
@@ -4400,7 +4364,9 @@ fragment ReferralStats on ReferralStats {
|
|
|
4400
4364
|
|
|
4401
4365
|
**Section**: Loyalty Program
|
|
4402
4366
|
|
|
4403
|
-
**Description**: Result of `
|
|
4367
|
+
**Description**: Result of `loyaltyRedeemReward` — depending on the reward type, exactly one of `discountCode`, `productDiscountCode`, `giftCardCode` is populated. Apply the returned code on cart/checkout.
|
|
4368
|
+
|
|
4369
|
+
**Uses fragments**: `UserError`
|
|
4404
4370
|
|
|
4405
4371
|
**GraphQL**:
|
|
4406
4372
|
```graphql
|
|
@@ -4409,7 +4375,9 @@ fragment RedeemRewardPayload on RedeemRewardPayload {
|
|
|
4409
4375
|
discountCode
|
|
4410
4376
|
productDiscountCode
|
|
4411
4377
|
giftCardCode
|
|
4412
|
-
userErrors
|
|
4378
|
+
userErrors {
|
|
4379
|
+
...UserError
|
|
4380
|
+
}
|
|
4413
4381
|
}
|
|
4414
4382
|
```
|
|
4415
4383
|
|
|
@@ -4417,7 +4385,9 @@ fragment RedeemRewardPayload on RedeemRewardPayload {
|
|
|
4417
4385
|
|
|
4418
4386
|
**Section**: Loyalty Program
|
|
4419
4387
|
|
|
4420
|
-
**Description**: Result of `
|
|
4388
|
+
**Description**: Result of `loyaltyGenerateReferralCode` — the customer's referral code and shareable URL.
|
|
4389
|
+
|
|
4390
|
+
**Uses fragments**: `UserError`
|
|
4421
4391
|
|
|
4422
4392
|
**GraphQL**:
|
|
4423
4393
|
```graphql
|
|
@@ -4425,7 +4395,9 @@ fragment GenerateReferralCodePayload on GenerateReferralCodePayload {
|
|
|
4425
4395
|
success
|
|
4426
4396
|
referralCode
|
|
4427
4397
|
shareUrl
|
|
4428
|
-
userErrors
|
|
4398
|
+
userErrors {
|
|
4399
|
+
...UserError
|
|
4400
|
+
}
|
|
4429
4401
|
}
|
|
4430
4402
|
```
|
|
4431
4403
|
|
|
@@ -4608,56 +4580,6 @@ fragment BlogPost on BlogPost {
|
|
|
4608
4580
|
}
|
|
4609
4581
|
```
|
|
4610
4582
|
|
|
4611
|
-
### Fragment: `ProductRecommendation` on `ProductRecommendation`
|
|
4612
|
-
|
|
4613
|
-
**Section**: Recommendations
|
|
4614
|
-
|
|
4615
|
-
**Description**: One recommended product — the product itself (card-level), recommendation type (e.g. SIMILAR / FREQUENTLY_BOUGHT_TOGETHER), score (0-100), human reason text. Spread on PDP "You may also like" sections.
|
|
4616
|
-
|
|
4617
|
-
**Uses fragments**: `ProductCard`
|
|
4618
|
-
|
|
4619
|
-
**GraphQL**:
|
|
4620
|
-
```graphql
|
|
4621
|
-
fragment ProductRecommendation on ProductRecommendation {
|
|
4622
|
-
product {
|
|
4623
|
-
...ProductCard
|
|
4624
|
-
}
|
|
4625
|
-
type
|
|
4626
|
-
score
|
|
4627
|
-
reason
|
|
4628
|
-
}
|
|
4629
|
-
```
|
|
4630
|
-
|
|
4631
|
-
### Fragment: `CartRecommendation` on `CartRecommendations`
|
|
4632
|
-
|
|
4633
|
-
**Section**: Recommendations
|
|
4634
|
-
|
|
4635
|
-
**Description**: Recommendations bundle for the cart drawer — `frequentlyBoughtTogether` (cross-sell) and `youMayAlsoLike` (related). Each entry has the same shape as `ProductRecommendation`.
|
|
4636
|
-
|
|
4637
|
-
**Uses fragments**: `ProductCard`
|
|
4638
|
-
|
|
4639
|
-
**GraphQL**:
|
|
4640
|
-
```graphql
|
|
4641
|
-
fragment CartRecommendation on CartRecommendations {
|
|
4642
|
-
frequentlyBoughtTogether {
|
|
4643
|
-
product {
|
|
4644
|
-
...ProductCard
|
|
4645
|
-
}
|
|
4646
|
-
type
|
|
4647
|
-
score
|
|
4648
|
-
reason
|
|
4649
|
-
}
|
|
4650
|
-
youMayAlsoLike {
|
|
4651
|
-
product {
|
|
4652
|
-
...ProductCard
|
|
4653
|
-
}
|
|
4654
|
-
type
|
|
4655
|
-
score
|
|
4656
|
-
reason
|
|
4657
|
-
}
|
|
4658
|
-
}
|
|
4659
|
-
```
|
|
4660
|
-
|
|
4661
4583
|
### Fragment: `LocationAddress` on `LocationAddress`
|
|
4662
4584
|
|
|
4663
4585
|
**Section**: Store Availability (BOPIS / multi-location)
|