@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/llms-full.txt CHANGED
@@ -1,7 +1,7 @@
1
1
  # DoSwiftly Storefront Operations — Full Reference
2
2
 
3
- > Schema version: **7.1.0**
4
- > 48 queries · 44 mutations · 108 fragments
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`: `String` *(default: `"CUSTOMER"`)*
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: String = "CUSTOMER") {
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: `PredictiveSearch`
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 PredictiveSearch($query: String!, $limit: Int = 10) {
179
- predictiveSearch(query: $query, limit: $limit) {
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 category exposes its `parent` and `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.
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
- roots {
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: `AvailableFilters`
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 AvailableFilters($input: AvailableFiltersInput) {
684
- availableFilters(input: $input) {
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
- ...VariantStoreAvailability
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: `CheckoutShippingAddressUpdate`
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` (`validateOrderReadiness`).
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
- - `$checkoutId`: `ID!`
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 CheckoutShippingAddressUpdate($checkoutId: ID!, $shippingAddress: CheckoutAddressInput!) {
1815
- checkoutShippingAddressUpdate(
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: `CheckoutBillingAddressUpdate`
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
- - `$checkoutId`: `ID!`
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 CheckoutBillingAddressUpdate($checkoutId: ID!, $billingAddress: CheckoutAddressInput!) {
1844
- checkoutBillingAddressUpdate(
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: `CheckoutEmailUpdate`
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
- - `$checkoutId`: `ID!`
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 CheckoutEmailUpdate($checkoutId: ID!, $email: String!) {
1873
- checkoutEmailUpdate(checkoutId: $checkoutId, email: $email) {
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: `CheckoutShippingLineUpdate`
1880
+ ### Mutation: `CheckoutSelectShippingRate`
1885
1881
 
1886
1882
  **Section**: Checkout Mutations
1887
1883
 
1888
- **Description**: Selects a shipping method by `shippingRateHandle` (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.
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
- - `$checkoutId`: `ID!`
1892
- - `$shippingRateHandle`: `String!`
1887
+ - `$id`: `ID!`
1888
+ - `$rateId`: `String!`
1893
1889
 
1894
1890
  **Fragments used**: `Checkout`, `UserError`
1895
1891
 
1896
1892
  **GraphQL**:
1897
1893
  ```graphql
1898
- mutation CheckoutShippingLineUpdate($checkoutId: ID!, $shippingRateHandle: String!) {
1899
- checkoutShippingLineUpdate(
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: `CheckoutDiscountCodeApply`
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 via `discountService.validateDiscount`.
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
- - `$checkoutId`: `ID!`
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 CheckoutDiscountCodeApply($checkoutId: ID!, $discountCode: String!) {
1928
- checkoutDiscountCodeApply(checkoutId: $checkoutId, discountCode: $discountCode) {
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: `CheckoutDiscountCodeRemove`
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
- - `$checkoutId`: `ID!`
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 CheckoutDiscountCodeRemove($checkoutId: ID!, $discountCode: String!) {
1954
- checkoutDiscountCodeRemove(checkoutId: $checkoutId, discountCode: $discountCode) {
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: `CheckoutDiscountCodeValidate`
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
- - `$checkoutId`: `ID!`
1965
+ - `$id`: `ID!`
1973
1966
  - `$discountCode`: `String!`
1974
1967
 
1975
1968
  **Fragments used**: `UserError`
1976
1969
 
1977
1970
  **GraphQL**:
1978
1971
  ```graphql
1979
- mutation CheckoutDiscountCodeValidate($checkoutId: ID!, $discountCode: String!) {
1980
- checkoutDiscountCodeValidate(
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: `CheckoutPaymentMethodUpdate`
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
- - `$checkoutId`: `ID!`
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 CheckoutPaymentMethodUpdate($checkoutId: ID!, $paymentMethodId: ID!) {
2023
- checkoutPaymentMethodUpdate(
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`, marks the cart `CONVERTED`, deducts gift cards, emits `ORDER_CREATED` (and `ORDER_CONFIRMED` for COD) — all in a single serializable transaction. **Idempotent on `idempotencyKey`** (NOT on `checkoutId`); auto-generated from `cartId + timestamp` 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.
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
- - `$checkoutId`: `ID!`
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($checkoutId: ID!, $input: CheckoutCompleteInput) {
2052
- checkoutComplete(checkoutId: $checkoutId, input: $input) {
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: `CheckoutGiftCardApply`
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 inside the `checkoutComplete` transaction. Errors: `GIFT_CARD_NOT_FOUND`, `GIFT_CARD_DEPLETED`, `GIFT_CARD_UNUSABLE`, `GIFT_CARD_ALREADY_APPLIED`.
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
- - `$checkoutId`: `ID!`
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 CheckoutGiftCardApply($checkoutId: ID!, $giftCardCode: String!) {
2082
- checkoutGiftCardApply(checkoutId: $checkoutId, giftCardCode: $giftCardCode) {
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: `CheckoutGiftCardRemove`
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
- - `$checkoutId`: `ID!`
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 CheckoutGiftCardRemove($checkoutId: ID!, $giftCardCode: String!) {
2108
- checkoutGiftCardRemove(checkoutId: $checkoutId, giftCardCode: $giftCardCode) {
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: `CheckoutGiftCardRecipientUpdate`
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 CheckoutGiftCardRecipientUpdate($input: CheckoutGiftCardRecipientInput!) {
2133
- checkoutGiftCardRecipientUpdate(input: $input) {
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
- redeemLoyaltyReward(input: $input) {
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
- generateReferralCode {
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 (`ON CONFLICT DO NOTHING`). Captures `priceAtAdd` for price-drop notifications.
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
- - `$wishlistId`: `ID!`
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($wishlistId: ID!, $input: WishlistItemInput!) {
2346
- wishlistAddItem(wishlistId: $wishlistId, input: $input) {
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
- - `$wishlistId`: `ID!`
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($wishlistId: ID!, $itemId: ID!) {
2370
- wishlistRemoveItem(wishlistId: $wishlistId, itemId: $itemId) {
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 `WishlistItem` rows are removed via FK cascade. No soft-delete; cannot be undone.
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
- - `$wishlistId`: `ID!`
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($wishlistId: ID!) {
2393
- wishlistDelete(wishlistId: $wishlistId) {
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
- category
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 `checkoutShippingLineUpdate`, plus title and price.
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 `availableFilters($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.
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
- activeFilterCount
4153
- totalProducts
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 `redeemLoyaltyReward` — depending on the reward type, exactly one of `discountCode`, `productDiscountCode`, `giftCardCode` is populated. Apply the returned code on cart/checkout.
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 `generateReferralCode` — the customer's referral code and shareable URL.
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)