@doswiftly/storefront-operations 8.0.0 → 10.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/schema.graphql CHANGED
@@ -32,21 +32,6 @@ directive @inContext(
32
32
  preferredLocationId: ID
33
33
  ) on MUTATION | QUERY | SUBSCRIPTION
34
34
 
35
- """Gift card applied to checkout"""
36
- type AppliedGiftCard {
37
- """Amount applied to this checkout"""
38
- appliedAmount: Money!
39
-
40
- """Last 4 characters of the gift card code"""
41
- lastCharacters: String!
42
-
43
- """Masked gift card code for display (e.g., "****-****-****-ABCD")"""
44
- maskedCode: String!
45
-
46
- """Remaining balance on the gift card after this checkout"""
47
- remainingBalance: Money!
48
- }
49
-
50
35
  """Generic attribute"""
51
36
  type Attribute {
52
37
  """Attribute key"""
@@ -709,9 +694,20 @@ type CarrierShippingRate {
709
694
 
710
695
  """Shopping cart"""
711
696
  type Cart implements Node {
697
+ """Gift cards applied do tego koszyka (debited at cartComplete)"""
698
+ appliedGiftCards: [CartAppliedGiftCard!]!
699
+
712
700
  """Cart attributes"""
713
701
  attributes: [CartAttribute!]!
714
702
 
703
+ """Available payment methods dla tego cart (shop-configured providers)"""
704
+ availablePaymentMethods: [PaymentMethod!]!
705
+
706
+ """
707
+ Billing address ustawiony przez cartSetBillingAddress (jeśli różny od shipping)
708
+ """
709
+ billingAddress: MailingAddress
710
+
715
711
  """Buyer identity information"""
716
712
  buyerIdentity: CartBuyerIdentity
717
713
 
@@ -730,6 +726,11 @@ type Cart implements Node {
730
726
  """Applied discount codes"""
731
727
  discountCodes: [CartDiscountCode!]!
732
728
 
729
+ """
730
+ Customer email (D2 — persisted via cartUpdateBuyerIdentity). Convenience accessor; pełen kontekst w buyerIdentity.email.
731
+ """
732
+ email: String
733
+
733
734
  """Unique cart identifier"""
734
735
  id: ID!
735
736
 
@@ -739,9 +740,25 @@ type Cart implements Node {
739
740
  """Cart note"""
740
741
  note: String
741
742
 
743
+ """
744
+ Customer phone (D2). Convenience accessor; pełen kontekst w buyerIdentity.phone.
745
+ """
746
+ phone: String
747
+
742
748
  """Product recommendations based on cart contents"""
743
749
  recommendations(first: Int = 4): CartRecommendations
744
750
 
751
+ """Selected payment method (PayU/Stripe/COD/etc.)"""
752
+ selectedPaymentMethod: PaymentMethod
753
+
754
+ """
755
+ Selected shipping method (D8 term unification — wcześniej selectedShippingRate)
756
+ """
757
+ selectedShippingMethod: CartShippingMethod
758
+
759
+ """Shipping address ustawiony przez cartSetShippingAddress"""
760
+ shippingAddress: MailingAddress
761
+
745
762
  """Total quantity of all items"""
746
763
  totalQuantity: Int!
747
764
 
@@ -763,13 +780,70 @@ type CartAddLinesPayload {
763
780
  warnings: [CartWarning!]!
764
781
  }
765
782
 
766
- """Result of applying discount codes"""
767
- type CartApplyDiscountCodesPayload {
768
- """Updated cart"""
783
+ """Mailing address input dla cart fulfillment mutations"""
784
+ input CartAddressInput {
785
+ """City"""
786
+ city: String!
787
+
788
+ """Company name"""
789
+ company: String
790
+
791
+ """ISO 3166-1 alpha-2 country code"""
792
+ country: CountryCode!
793
+
794
+ """First name"""
795
+ firstName: String
796
+
797
+ """Last name"""
798
+ lastName: String
799
+
800
+ """Phone number"""
801
+ phone: String
802
+
803
+ """Postal / ZIP code"""
804
+ postalCode: String!
805
+
806
+ """State / province"""
807
+ state: String
808
+
809
+ """First line of street address"""
810
+ streetLine1: String!
811
+
812
+ """Second line of street address"""
813
+ streetLine2: String
814
+ }
815
+
816
+ """Gift card applied to a cart"""
817
+ type CartAppliedGiftCard {
818
+ """Amount applied to this cart"""
819
+ appliedAmount: Money!
820
+
821
+ """Last 4 characters of the gift card code"""
822
+ lastCharacters: String!
823
+
824
+ """Masked gift card code for display (np. "****-****-****-ABCD")"""
825
+ maskedCode: String!
826
+
827
+ """Remaining balance on the gift card after this cart"""
828
+ remainingBalance: Money!
829
+ }
830
+
831
+ """Input dla cartApplyGiftCard mutation"""
832
+ input CartApplyGiftCardInput {
833
+ """Cart ID"""
834
+ cartId: ID!
835
+
836
+ """Gift card code (np. ABCD-1234-EFGH-5678)"""
837
+ giftCardCode: String!
838
+ }
839
+
840
+ """Result of applying gift card to cart"""
841
+ type CartApplyGiftCardPayload {
842
+ """Updated cart z appliedGiftCards"""
769
843
  cart: Cart
770
844
 
771
845
  """
772
- User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
846
+ User errors (CartErrorCode-namespaced — np. GIFT_CARD_NOT_FOUND, GIFT_CARD_DEPLETED, GIFT_CARD_UNUSABLE)
773
847
  """
774
848
  userErrors: [UserError!]!
775
849
 
@@ -831,6 +905,38 @@ input CartBuyerIdentityInput {
831
905
  phone: String
832
906
  }
833
907
 
908
+ """Input dla cartComplete mutation — finalizuje cart do Order"""
909
+ input CartCompleteInput {
910
+ """Cart ID do skompletowania"""
911
+ cartId: ID!
912
+
913
+ """
914
+ Optional idempotency key — zapobiega duplicate Orders przy retry / network issue (jeśli null, generowany z cartId + minute timestamp)
915
+ """
916
+ idempotencyKey: String
917
+ }
918
+
919
+ """
920
+ Result of completing cart — transition cart → order (per D4 NO paymentUrl)
921
+ """
922
+ type CartCompletePayload {
923
+ """Cart finalised (status CONVERTED — read-only po complete)"""
924
+ cart: Cart
925
+
926
+ """
927
+ Order created z cart. Zapewnia canCreatePayment + paymentMethodType (Phase 4 ResolveFields) dla decyzji storefront przycisku "Zapłać".
928
+ """
929
+ order: Order
930
+
931
+ """
932
+ User errors (CartErrorCode-namespaced — np. INSUFFICIENT_STOCK, SHIPPING_ADDRESS_REQUIRED, PAYMENT_METHOD_REQUIRED, EMAIL_REQUIRED)
933
+ """
934
+ userErrors: [UserError!]!
935
+
936
+ """Non-fatal warnings"""
937
+ warnings: [CartWarning!]!
938
+ }
939
+
834
940
  """Cart cost breakdown"""
835
941
  type CartCost {
836
942
  """Checkout charge amount."""
@@ -875,11 +981,17 @@ input CartCreateInput {
875
981
  """Discount codes to apply"""
876
982
  discountCodes: [String!]
877
983
 
984
+ """Customer email (Phase 3 D2 — merge funkcjonalności checkoutCreate)"""
985
+ email: String
986
+
878
987
  """Initial cart lines"""
879
988
  lines: [CartLineInput!]
880
989
 
881
990
  """Cart note"""
882
991
  note: String
992
+
993
+ """Shipping address (Phase 3 — fulfillment context w jednym round-trip)"""
994
+ shippingAddress: CartAddressInput
883
995
  }
884
996
 
885
997
  """Result of cart creation"""
@@ -914,6 +1026,20 @@ type CartDiscountCode {
914
1026
  isApplicable: Boolean!
915
1027
  }
916
1028
 
1029
+ """Result of applying discount codes"""
1030
+ type CartDiscountCodesUpdatePayload {
1031
+ """Updated cart"""
1032
+ cart: Cart
1033
+
1034
+ """
1035
+ User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1036
+ """
1037
+ userErrors: [UserError!]!
1038
+
1039
+ """Non-fatal warnings"""
1040
+ warnings: [CartWarning!]!
1041
+ }
1042
+
917
1043
  """Single line item in the cart"""
918
1044
  type CartLine {
919
1045
  """Typed customer-filled attribute selections (surcharge + tax snapshot)"""
@@ -1039,34 +1165,29 @@ type CartRecommendations {
1039
1165
  youMayAlsoLike: [ProductRecommendation!]!
1040
1166
  }
1041
1167
 
1042
- """Result of removing cart lines"""
1043
- type CartRemoveLinesPayload {
1044
- """Updated cart"""
1168
+ """Input dla cartRemoveGiftCard mutation"""
1169
+ input CartRemoveGiftCardInput {
1170
+ """Cart ID"""
1171
+ cartId: ID!
1172
+
1173
+ """Gift card code (matching wartości aplikowanej karty)"""
1174
+ giftCardCode: String!
1175
+ }
1176
+
1177
+ """Result of removing gift card from cart"""
1178
+ type CartRemoveGiftCardPayload {
1179
+ """Updated cart (gift card usunięty z appliedGiftCards)"""
1045
1180
  cart: Cart
1046
1181
 
1047
- """
1048
- User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1049
- """
1182
+ """User errors (CartErrorCode-namespaced)"""
1050
1183
  userErrors: [UserError!]!
1051
1184
 
1052
1185
  """Non-fatal warnings"""
1053
1186
  warnings: [CartWarning!]!
1054
1187
  }
1055
1188
 
1056
- """Cart data for shipping calculation"""
1057
- input CartShippingInput {
1058
- """Currency code (ISO 4217)"""
1059
- currencyCode: String
1060
-
1061
- """Cart subtotal in cents"""
1062
- subtotal: Int
1063
-
1064
- """Total weight in grams"""
1065
- totalWeight: Int
1066
- }
1067
-
1068
- """Result of updating cart attributes"""
1069
- type CartUpdateAttributesPayload {
1189
+ """Result of removing cart lines"""
1190
+ type CartRemoveLinesPayload {
1070
1191
  """Updated cart"""
1071
1192
  cart: Cart
1072
1193
 
@@ -1079,13 +1200,22 @@ type CartUpdateAttributesPayload {
1079
1200
  warnings: [CartWarning!]!
1080
1201
  }
1081
1202
 
1082
- """Result of updating buyer identity"""
1083
- type CartUpdateBuyerIdentityPayload {
1084
- """Updated cart"""
1203
+ """Input dla cartSelectPaymentMethod mutation"""
1204
+ input CartSelectPaymentMethodInput {
1205
+ """Cart ID"""
1206
+ cartId: ID!
1207
+
1208
+ """Payment method (integration provider) ID"""
1209
+ paymentMethodId: ID!
1210
+ }
1211
+
1212
+ """Result of selecting payment method on cart"""
1213
+ type CartSelectPaymentMethodPayload {
1214
+ """Updated cart (selectedPaymentMethod populated)"""
1085
1215
  cart: Cart
1086
1216
 
1087
1217
  """
1088
- User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1218
+ User errors (CartErrorCode-namespaced — np. PAYMENT_METHOD_REQUIRED, INVALID_PAYMENT)
1089
1219
  """
1090
1220
  userErrors: [UserError!]!
1091
1221
 
@@ -1093,27 +1223,24 @@ type CartUpdateBuyerIdentityPayload {
1093
1223
  warnings: [CartWarning!]!
1094
1224
  }
1095
1225
 
1096
- """Result of updating cart lines"""
1097
- type CartUpdateLinesPayload {
1098
- """Updated cart"""
1099
- cart: Cart
1226
+ """Input dla cartSelectShippingMethod mutation (D8 term unification)"""
1227
+ input CartSelectShippingMethodInput {
1228
+ """Cart ID"""
1229
+ cartId: ID!
1100
1230
 
1101
1231
  """
1102
- User errors (code is namespaced e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1232
+ Shipping method ID (handle z available shipping methods query). Typed ID! per D8 rename argument rateId → shippingMethodId.
1103
1233
  """
1104
- userErrors: [UserError!]!
1105
-
1106
- """Non-fatal warnings"""
1107
- warnings: [CartWarning!]!
1234
+ shippingMethodId: ID!
1108
1235
  }
1109
1236
 
1110
- """Result of updating cart note"""
1111
- type CartUpdateNotePayload {
1112
- """Updated cart"""
1237
+ """Result of selecting shipping method on cart (D8 term unification)"""
1238
+ type CartSelectShippingMethodPayload {
1239
+ """Updated cart (selectedShippingMethod populated)"""
1113
1240
  cart: Cart
1114
1241
 
1115
1242
  """
1116
- User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1243
+ User errors (CartErrorCode-namespaced — np. SHIPPING_METHOD_REQUIRED, ZIP_CODE_NOT_SUPPORTED)
1117
1244
  """
1118
1245
  userErrors: [UserError!]!
1119
1246
 
@@ -1121,496 +1248,272 @@ type CartUpdateNotePayload {
1121
1248
  warnings: [CartWarning!]!
1122
1249
  }
1123
1250
 
1124
- """Cart warning (non-fatal advisory)"""
1125
- type CartWarning {
1126
- """Typed warning code"""
1127
- code: CartWarningCode!
1128
-
1129
- """Warning message"""
1130
- message: String!
1131
-
1132
- """Target identifier (cart line ID lub field path)"""
1133
- target: String!
1134
- }
1135
-
1136
- """Non-fatal cart warnings"""
1137
- enum CartWarningCode {
1138
- MERCHANDISE_NOT_AVAILABLE
1139
- MERCHANDISE_NOT_ENOUGH_STOCK
1140
- PAYMENTS_AMOUNT_REGION_MISMATCH
1141
- }
1142
-
1143
- """Product category - hierarchical organization"""
1144
- type Category {
1145
- """Child categories"""
1146
- children: [Category!]!
1147
-
1148
- """Category description"""
1149
- description: String
1150
-
1151
- """Unique identifier"""
1152
- id: ID!
1153
-
1154
- """Category image"""
1155
- image: Image
1156
-
1157
- """Depth level in hierarchy (0 = root)"""
1158
- level: Int!
1159
-
1160
- """Category name"""
1161
- name: String!
1162
-
1163
- """Parent category (null for root)"""
1164
- parent: Category
1165
-
1166
- """Full path (e.g., "Electronics/Phones/Smartphones")"""
1167
- path: String!
1168
-
1169
- """Number of products in category"""
1170
- productCount: Int!
1171
-
1172
- """Products in category"""
1173
- products(after: String, first: Float! = 20): CategoryConnection!
1174
-
1175
- """SEO metadata"""
1176
- seo: SEO
1177
-
1178
- """URL-friendly slug"""
1179
- slug: String!
1251
+ """Input dla cartSetBillingAddress mutation"""
1252
+ input CartSetBillingAddressInput {
1253
+ """Billing address (zostawia shipping bez zmian)"""
1254
+ address: CartAddressInput!
1180
1255
 
1181
- """Sort order within parent"""
1182
- sortOrder: Int!
1256
+ """Cart ID"""
1257
+ cartId: ID!
1183
1258
  }
1184
1259
 
1185
- """Paginated category list (Relay Connection)"""
1186
- type CategoryConnection {
1187
- """List of category edges (cursor + node pairs)"""
1188
- edges: [CategoryEdge!]!
1189
-
1190
- """List of category nodes (shortcut without cursor)"""
1191
- nodes: [Category!]!
1260
+ """Result of setting cart billing address"""
1261
+ type CartSetBillingAddressPayload {
1262
+ """Updated cart"""
1263
+ cart: Cart
1192
1264
 
1193
- """Pagination info"""
1194
- pageInfo: PageInfo!
1265
+ """User errors (CartErrorCode-namespaced)"""
1266
+ userErrors: [UserError!]!
1195
1267
 
1196
- """Total count of categories"""
1197
- totalCount: Int!
1268
+ """Non-fatal warnings"""
1269
+ warnings: [CartWarning!]!
1198
1270
  }
1199
1271
 
1200
- """Category edge in connection"""
1201
- type CategoryEdge {
1202
- """Cursor for pagination"""
1203
- cursor: String!
1204
-
1205
- """Category node"""
1206
- node: Category!
1207
- }
1272
+ """Input dla cartSetShippingAddress mutation"""
1273
+ input CartSetShippingAddressInput {
1274
+ """Shipping address"""
1275
+ address: CartAddressInput!
1208
1276
 
1209
- """Category filter"""
1210
- input CategoryFilter {
1211
- """Category ID"""
1212
- id: ID
1277
+ """Cart ID"""
1278
+ cartId: ID!
1213
1279
  }
1214
1280
 
1215
- """Category filter option"""
1216
- type CategoryFilterOption {
1217
- """Category ID"""
1218
- id: ID!
1219
-
1220
- """Nesting level (0 = root)"""
1221
- level: Int!
1222
-
1223
- """Category name"""
1224
- name: String!
1225
-
1226
- """Parent category ID"""
1227
- parentId: ID
1281
+ """Result of setting cart shipping address"""
1282
+ type CartSetShippingAddressPayload {
1283
+ """Updated cart"""
1284
+ cart: Cart
1228
1285
 
1229
- """Number of products in this category"""
1230
- productCount: Int!
1286
+ """
1287
+ User errors (CartErrorCode-namespaced — np. INVALID_ADDRESS, EMAIL_REQUIRED)
1288
+ """
1289
+ userErrors: [UserError!]!
1231
1290
 
1232
- """URL-friendly slug"""
1233
- slug: String!
1291
+ """Non-fatal warnings"""
1292
+ warnings: [CartWarning!]!
1234
1293
  }
1235
1294
 
1236
- """Checkout object"""
1237
- type Checkout {
1238
- """Applied gift cards"""
1239
- appliedGiftCards: [AppliedGiftCard!]!
1240
-
1241
- """Available payment methods (Requirements: R23.1, R23.2)"""
1242
- availablePaymentMethods: [PaymentMethod!]!
1243
-
1244
- """Available shipping rates"""
1245
- availableShippingRates: [ShippingRate!]!
1246
-
1247
- """Billing address"""
1248
- billingAddress: MailingAddress
1249
-
1250
- """Completed order ID"""
1251
- completedOrderId: String
1252
-
1253
- """Cost breakdown (subtotal/total/totalTax/totalShipping/totalDiscounts)"""
1254
- cost: CheckoutCost!
1255
-
1256
- """Created at"""
1257
- createdAt: DateTime!
1258
-
1259
- """Currency code"""
1260
- currencyCode: String!
1261
-
1262
- """Customer ID"""
1263
- customerId: String
1264
-
1265
- """Applied discounts with details"""
1266
- discountApplications: [DiscountApplication!]!
1267
-
1268
- """Applied discount codes"""
1269
- discountCodes: [DiscountCode!]!
1270
-
1271
- """Customer email"""
1272
- email: String
1273
-
1274
- """Checkout ID"""
1275
- id: ID!
1276
-
1277
- """Whether checkout is completed"""
1278
- isCompleted: Boolean!
1279
-
1280
- """Whether checkout is ready for payment"""
1281
- isReady: Boolean!
1282
-
1283
- """Line items"""
1284
- lineItems: [CheckoutLineItem!]!
1285
-
1286
- """Order note"""
1287
- note: String
1288
-
1289
- """Amount due for payment after gift cards applied"""
1290
- paymentDue: Money!
1291
-
1292
- """Customer phone"""
1293
- phone: String
1294
-
1295
- """Selected payment method ID (Requirements: R23.5)"""
1296
- selectedPaymentMethodId: ID
1297
-
1298
- """Shipping address"""
1299
- shippingAddress: MailingAddress
1300
-
1301
- """Selected shipping rate"""
1302
- shippingLine: ShippingRate
1303
-
1304
- """Whether shipping rates are ready"""
1305
- shippingRatesReady: Boolean!
1306
-
1307
- """Tax breakdown"""
1308
- taxLines: [TaxLine!]!
1309
-
1310
- """Total amount covered by gift cards"""
1311
- totalGiftCardAmount: Money!
1312
-
1313
- """Total quantity"""
1314
- totalQuantity: Float!
1295
+ """Cart data for shipping calculation"""
1296
+ input CartShippingInput {
1297
+ """Currency code (ISO 4217)"""
1298
+ currencyCode: String
1315
1299
 
1316
- """Updated at"""
1317
- updatedAt: DateTime!
1300
+ """Cart subtotal in cents"""
1301
+ subtotal: Int
1318
1302
 
1319
- """Checkout URL"""
1320
- webUrl: String!
1303
+ """Total weight in grams"""
1304
+ totalWeight: Int
1321
1305
  }
1322
1306
 
1323
- """Mailing address input"""
1324
- input CheckoutAddressInput {
1325
- """City"""
1326
- city: String!
1327
-
1328
- """Company name"""
1329
- company: String
1330
-
1331
- """ISO 3166-1 alpha-2 country code"""
1332
- country: CountryCode!
1333
-
1334
- """First name"""
1335
- firstName: String
1336
-
1337
- """Last name"""
1338
- lastName: String
1339
-
1340
- """Phone number"""
1341
- phone: String
1342
-
1343
- """Postal / ZIP code"""
1344
- postalCode: String!
1345
-
1346
- """State / province"""
1347
- state: String
1348
-
1349
- """First line of street address"""
1350
- streetLine1: String!
1351
-
1352
- """Second line of street address"""
1353
- streetLine2: String
1354
- }
1307
+ """Shipping method selected on a cart (D8 term unification)"""
1308
+ type CartShippingMethod {
1309
+ """Shipping method (rate) handle"""
1310
+ handle: ID!
1355
1311
 
1356
- """Checkout discount code apply payload"""
1357
- type CheckoutApplyDiscountCodePayload {
1358
- """Updated checkout"""
1359
- checkout: Checkout
1312
+ """Shipping cost"""
1313
+ price: Money!
1360
1314
 
1361
- """
1362
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1363
- """
1364
- userErrors: [UserError!]!
1315
+ """Display title (e.g. "DPD Standard 2 dni")"""
1316
+ title: String!
1365
1317
  }
1366
1318
 
1367
- """Checkout gift card apply payload"""
1368
- type CheckoutApplyGiftCardPayload {
1369
- """Updated checkout"""
1370
- checkout: Checkout
1319
+ """Result of updating cart attributes"""
1320
+ type CartUpdateAttributesPayload {
1321
+ """Updated cart"""
1322
+ cart: Cart
1371
1323
 
1372
1324
  """
1373
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1325
+ User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1374
1326
  """
1375
1327
  userErrors: [UserError!]!
1376
- }
1377
-
1378
- """Checkout complete input"""
1379
- input CheckoutCompleteInput {
1380
- """Idempotency key for duplicate prevention"""
1381
- idempotencyKey: String
1382
1328
 
1383
- """Payment method ID"""
1384
- paymentMethodId: String
1329
+ """Non-fatal warnings"""
1330
+ warnings: [CartWarning!]!
1385
1331
  }
1386
1332
 
1387
- """Checkout complete payload"""
1388
- type CheckoutCompletePayload {
1389
- """Completed checkout"""
1390
- checkout: Checkout
1391
-
1392
- """Created order (if checkout successful)"""
1393
- order: Order
1394
-
1395
- """Payment redirect URL (if payment required)"""
1396
- paymentUrl: String
1333
+ """Result of updating buyer identity"""
1334
+ type CartUpdateBuyerIdentityPayload {
1335
+ """Updated cart"""
1336
+ cart: Cart
1397
1337
 
1398
1338
  """
1399
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1339
+ User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1400
1340
  """
1401
1341
  userErrors: [UserError!]!
1402
- }
1403
1342
 
1404
- """Checkout cost breakdown"""
1405
- type CheckoutCost {
1406
- """Subtotal before discounts and taxes"""
1407
- subtotal: Money!
1408
-
1409
- """Total amount (after discounts, including taxes and shipping)"""
1410
- total: Money!
1411
-
1412
- """Total discount amount"""
1413
- totalDiscounts: Money!
1343
+ """Non-fatal warnings"""
1344
+ warnings: [CartWarning!]!
1345
+ }
1414
1346
 
1415
- """Total shipping cost"""
1416
- totalShipping: Money!
1347
+ """
1348
+ Input dla cartUpdateGiftCardRecipient mutation (gift card line item recipient info)
1349
+ """
1350
+ input CartUpdateGiftCardRecipientInput {
1351
+ """Cart ID"""
1352
+ cartId: ID!
1417
1353
 
1418
- """Total tax amount"""
1419
- totalTax: Money!
1420
- }
1354
+ """Cart line item ID (musi reprezentować gift card SKU)"""
1355
+ lineItemId: ID!
1421
1356
 
1422
- """Checkout create input"""
1423
- input CheckoutCreateInput {
1424
- """Existing cart ID to convert to checkout"""
1425
- cartId: ID
1357
+ """Personalised message dla recipienta (max 500 znaków)"""
1358
+ message: String
1426
1359
 
1427
- """Customer access token"""
1428
- customerAccessToken: String
1360
+ """Recipient email (gift card delivery target)"""
1361
+ recipientEmail: String
1429
1362
 
1430
- """Customer email"""
1431
- email: String
1363
+ """Recipient display name"""
1364
+ recipientName: String
1365
+ }
1432
1366
 
1433
- """Line items"""
1434
- lineItems: [CheckoutLineItemInput!]
1367
+ """Result of updating gift card recipient info on cart line item"""
1368
+ type CartUpdateGiftCardRecipientPayload {
1369
+ """Updated cart"""
1370
+ cart: Cart
1435
1371
 
1436
- """Note"""
1437
- note: String
1372
+ """User errors (CartErrorCode-namespaced)"""
1373
+ userErrors: [UserError!]!
1438
1374
 
1439
- """Shipping address"""
1440
- shippingAddress: CheckoutAddressInput
1375
+ """Non-fatal warnings"""
1376
+ warnings: [CartWarning!]!
1441
1377
  }
1442
1378
 
1443
- """Checkout create payload"""
1444
- type CheckoutCreatePayload {
1445
- """Created checkout"""
1446
- checkout: Checkout
1379
+ """Result of updating cart lines"""
1380
+ type CartUpdateLinesPayload {
1381
+ """Updated cart"""
1382
+ cart: Cart
1447
1383
 
1448
1384
  """
1449
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1385
+ User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1450
1386
  """
1451
1387
  userErrors: [UserError!]!
1452
- }
1453
-
1454
- """Gift card recipient input"""
1455
- input CheckoutGiftCardRecipientInput {
1456
- """Checkout ID"""
1457
- checkoutId: ID!
1458
1388
 
1459
- """Line item ID to attach recipient info to"""
1460
- lineItemId: ID!
1389
+ """Non-fatal warnings"""
1390
+ warnings: [CartWarning!]!
1391
+ }
1461
1392
 
1462
- """Personal message to recipient"""
1463
- message: String
1393
+ """Result of updating cart note"""
1394
+ type CartUpdateNotePayload {
1395
+ """Updated cart"""
1396
+ cart: Cart
1464
1397
 
1465
- """Recipient email address"""
1466
- recipientEmail: String
1398
+ """
1399
+ User errors (code is namespaced — e.g. CART_NOT_FOUND, CART_LINE_NOT_FOUND)
1400
+ """
1401
+ userErrors: [UserError!]!
1467
1402
 
1468
- """Recipient name"""
1469
- recipientName: String
1403
+ """Non-fatal warnings"""
1404
+ warnings: [CartWarning!]!
1470
1405
  }
1471
1406
 
1472
- """Checkout line item"""
1473
- type CheckoutLineItem {
1474
- """Line item ID"""
1475
- id: ID!
1407
+ """Cart warning (non-fatal advisory)"""
1408
+ type CartWarning {
1409
+ """Typed warning code"""
1410
+ code: CartWarningCode!
1476
1411
 
1477
- """Product image"""
1478
- image: Image
1412
+ """Warning message"""
1413
+ message: String!
1479
1414
 
1480
- """Price per unit"""
1481
- pricePerUnit: Money!
1415
+ """Target identifier (cart line ID lub field path)"""
1416
+ target: String!
1417
+ }
1482
1418
 
1483
- """Product ID"""
1484
- productId: String
1419
+ """Non-fatal cart warnings"""
1420
+ enum CartWarningCode {
1421
+ MERCHANDISE_NOT_AVAILABLE
1422
+ MERCHANDISE_NOT_ENOUGH_STOCK
1423
+ PAYMENTS_AMOUNT_REGION_MISMATCH
1424
+ }
1485
1425
 
1486
- """Quantity"""
1487
- quantity: Int!
1426
+ """Product category - hierarchical organization"""
1427
+ type Category {
1428
+ """Child categories"""
1429
+ children: [Category!]!
1488
1430
 
1489
- """SKU"""
1490
- sku: String
1431
+ """Category description"""
1432
+ description: String
1491
1433
 
1492
- """Product title"""
1493
- title: String!
1434
+ """Unique identifier"""
1435
+ id: ID!
1494
1436
 
1495
- """Total price for this line"""
1496
- total: Money!
1437
+ """Category image"""
1438
+ image: Image
1497
1439
 
1498
- """Product variant"""
1499
- variant: ProductVariant
1440
+ """Depth level in hierarchy (0 = root)"""
1441
+ level: Int!
1500
1442
 
1501
- """Product variant ID"""
1502
- variantId: String
1443
+ """Category name"""
1444
+ name: String!
1503
1445
 
1504
- """Variant title"""
1505
- variantTitle: String
1506
- }
1446
+ """Parent category (null for root)"""
1447
+ parent: Category
1507
1448
 
1508
- """Checkout line item input"""
1509
- input CheckoutLineItemInput {
1510
- """Quantity"""
1511
- quantity: Float!
1449
+ """Full path (e.g., "Electronics/Phones/Smartphones")"""
1450
+ path: String!
1512
1451
 
1513
- """Product variant ID"""
1514
- variantId: ID!
1515
- }
1452
+ """Number of products in category"""
1453
+ productCount: Int!
1516
1454
 
1517
- """Checkout discount code remove payload"""
1518
- type CheckoutRemoveDiscountCodePayload {
1519
- """Updated checkout"""
1520
- checkout: Checkout
1455
+ """Products in category"""
1456
+ products(after: String, first: Float! = 20): CategoryConnection!
1521
1457
 
1522
- """
1523
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1524
- """
1525
- userErrors: [UserError!]!
1526
- }
1458
+ """SEO metadata"""
1459
+ seo: SEO
1527
1460
 
1528
- """Checkout gift card remove payload"""
1529
- type CheckoutRemoveGiftCardPayload {
1530
- """Updated checkout"""
1531
- checkout: Checkout
1461
+ """URL-friendly slug"""
1462
+ slug: String!
1532
1463
 
1533
- """
1534
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1535
- """
1536
- userErrors: [UserError!]!
1464
+ """Sort order within parent"""
1465
+ sortOrder: Int!
1537
1466
  }
1538
1467
 
1539
- """Checkout payment method update payload"""
1540
- type CheckoutSelectPaymentMethodPayload {
1541
- """Updated checkout"""
1542
- checkout: Checkout
1468
+ """Paginated category list (Relay Connection)"""
1469
+ type CategoryConnection {
1470
+ """List of category edges (cursor + node pairs)"""
1471
+ edges: [CategoryEdge!]!
1543
1472
 
1544
- """
1545
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1546
- """
1547
- userErrors: [UserError!]!
1548
- }
1473
+ """List of category nodes (shortcut without cursor)"""
1474
+ nodes: [Category!]!
1549
1475
 
1550
- """Checkout shipping line update payload"""
1551
- type CheckoutSelectShippingRatePayload {
1552
- """Updated checkout"""
1553
- checkout: Checkout
1476
+ """Pagination info"""
1477
+ pageInfo: PageInfo!
1554
1478
 
1555
- """
1556
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1557
- """
1558
- userErrors: [UserError!]!
1479
+ """Total count of categories"""
1480
+ totalCount: Int!
1559
1481
  }
1560
1482
 
1561
- """Checkout billing address update payload"""
1562
- type CheckoutUpdateBillingAddressPayload {
1563
- """Updated checkout"""
1564
- checkout: Checkout
1483
+ """Category edge in connection"""
1484
+ type CategoryEdge {
1485
+ """Cursor for pagination"""
1486
+ cursor: String!
1565
1487
 
1566
- """
1567
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1568
- """
1569
- userErrors: [UserError!]!
1488
+ """Category node"""
1489
+ node: Category!
1570
1490
  }
1571
1491
 
1572
- """Checkout email update payload"""
1573
- type CheckoutUpdateEmailPayload {
1574
- """Updated checkout"""
1575
- checkout: Checkout
1576
-
1577
- """
1578
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1579
- """
1580
- userErrors: [UserError!]!
1492
+ """Category filter"""
1493
+ input CategoryFilter {
1494
+ """Category ID"""
1495
+ id: ID
1581
1496
  }
1582
1497
 
1583
- """Checkout gift card recipient update payload"""
1584
- type CheckoutUpdateGiftCardRecipientPayload {
1585
- """Updated checkout"""
1586
- checkout: Checkout
1498
+ """Category filter option"""
1499
+ type CategoryFilterOption {
1500
+ """Category ID"""
1501
+ id: ID!
1587
1502
 
1588
- """
1589
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1590
- """
1591
- userErrors: [UserError!]!
1592
- }
1503
+ """Nesting level (0 = root)"""
1504
+ level: Int!
1593
1505
 
1594
- """Checkout shipping address update payload"""
1595
- type CheckoutUpdateShippingAddressPayload {
1596
- """Updated checkout"""
1597
- checkout: Checkout
1506
+ """Category name"""
1507
+ name: String!
1598
1508
 
1599
- """
1600
- User errors (code is namespaced — e.g. CHECKOUT_NOT_FOUND, CHECKOUT_PAYMENT_FAILED)
1601
- """
1602
- userErrors: [UserError!]!
1603
- }
1509
+ """Parent category ID"""
1510
+ parentId: ID
1604
1511
 
1605
- """Checkout discount code validation result"""
1606
- type CheckoutValidateDiscountCodePayload {
1607
- """Validation result"""
1608
- result: DiscountValidationResult!
1512
+ """Number of products in this category"""
1513
+ productCount: Int!
1609
1514
 
1610
- """
1611
- User errors (for checkout-level issues; code is namespaced — e.g. CHECKOUT_NOT_FOUND)
1612
- """
1613
- userErrors: [UserError!]!
1515
+ """URL-friendly slug"""
1516
+ slug: String!
1614
1517
  }
1615
1518
 
1616
1519
  """Collection - curated group of products"""
@@ -2362,63 +2265,6 @@ type DeliveryEstimate {
2362
2265
  minDays: Int
2363
2266
  }
2364
2267
 
2365
- """Item affected by a discount (especially BXGY)"""
2366
- type DiscountAffectedItem {
2367
- """Discounted price per unit"""
2368
- discountedPrice: Money!
2369
-
2370
- """Whether this item is "free" in BXGY"""
2371
- isFreeItem: Boolean!
2372
-
2373
- """Original price per unit"""
2374
- originalPrice: Money!
2375
-
2376
- """Product ID"""
2377
- productId: ID!
2378
-
2379
- """Quantity affected by discount"""
2380
- quantity: Int!
2381
-
2382
- """Total savings for this item"""
2383
- savings: Money!
2384
-
2385
- """Product/variant title"""
2386
- title: String!
2387
-
2388
- """Variant ID"""
2389
- variantId: ID
2390
- }
2391
-
2392
- """Applied discount"""
2393
- type DiscountApplication {
2394
- """Items affected by this discount (for BXGY type)"""
2395
- affectedItems: [DiscountAffectedItem!]
2396
-
2397
- """Buy quantity for BXGY (e.g., 2 in "Buy 2 Get 1")"""
2398
- buyQuantity: Int
2399
-
2400
- """Discount code"""
2401
- code: String!
2402
-
2403
- """Discount percentage on "get" items (100 = free)"""
2404
- getDiscountPercent: Float
2405
-
2406
- """Get quantity for BXGY (e.g., 1 in "Buy 2 Get 1")"""
2407
- getQuantity: Int
2408
-
2409
- """Whether discount is applicable"""
2410
- isApplicable: Boolean!
2411
-
2412
- """Discount title/description"""
2413
- title: String
2414
-
2415
- """Type of discount"""
2416
- type: DiscountApplicationType
2417
-
2418
- """Discount amount"""
2419
- value: Money
2420
- }
2421
-
2422
2268
  """Type of discount being applied"""
2423
2269
  enum DiscountApplicationType {
2424
2270
  BUY_X_GET_Y
@@ -2427,15 +2273,6 @@ enum DiscountApplicationType {
2427
2273
  PERCENTAGE
2428
2274
  }
2429
2275
 
2430
- """Discount code applied to checkout"""
2431
- type DiscountCode {
2432
- """Discount code string"""
2433
- code: String!
2434
-
2435
- """Whether the code is currently applicable"""
2436
- isApplicable: Boolean!
2437
- }
2438
-
2439
2276
  """Error codes for discount validation"""
2440
2277
  enum DiscountErrorCode {
2441
2278
  CUSTOMER_NOT_ELIGIBLE
@@ -3560,71 +3397,55 @@ type Mutation {
3560
3397
  """Add lines to cart"""
3561
3398
  cartAddLines(id: ID!, lines: [CartLineInput!]!): CartAddLinesPayload!
3562
3399
 
3563
- """Apply discount codes"""
3564
- cartApplyDiscountCodes(discountCodes: [String!]!, id: ID!): CartApplyDiscountCodesPayload!
3400
+ """Apply gift card to cart"""
3401
+ cartApplyGiftCard(input: CartApplyGiftCardInput!): CartApplyGiftCardPayload!
3402
+
3403
+ """
3404
+ Complete cart → create Order (D6 — delegates do CartCompletionOrchestrator.processCart)
3405
+ """
3406
+ cartComplete(input: CartCompleteInput!): CartCompletePayload!
3565
3407
 
3566
3408
  """Create new cart"""
3567
3409
  cartCreate(input: CartCreateInput): CartCreatePayload!
3568
3410
 
3411
+ """Apply discount codes"""
3412
+ cartDiscountCodesUpdate(discountCodes: [String!]!, id: ID!): CartDiscountCodesUpdatePayload!
3413
+
3414
+ """Remove gift card from cart"""
3415
+ cartRemoveGiftCard(input: CartRemoveGiftCardInput!): CartRemoveGiftCardPayload!
3416
+
3569
3417
  """Remove lines from cart"""
3570
3418
  cartRemoveLines(id: ID!, lineIds: [ID!]!): CartRemoveLinesPayload!
3571
3419
 
3420
+ """Select payment method on cart"""
3421
+ cartSelectPaymentMethod(input: CartSelectPaymentMethodInput!): CartSelectPaymentMethodPayload!
3422
+
3423
+ """
3424
+ Select shipping method on cart (D8 term unification — wcześniej cartSelectShippingRate)
3425
+ """
3426
+ cartSelectShippingMethod(input: CartSelectShippingMethodInput!): CartSelectShippingMethodPayload!
3427
+
3428
+ """Set billing address on cart"""
3429
+ cartSetBillingAddress(input: CartSetBillingAddressInput!): CartSetBillingAddressPayload!
3430
+
3431
+ """Set shipping address on cart"""
3432
+ cartSetShippingAddress(input: CartSetShippingAddressInput!): CartSetShippingAddressPayload!
3433
+
3572
3434
  """Update cart attributes"""
3573
3435
  cartUpdateAttributes(attributes: [CartAttributeInput!]!, id: ID!): CartUpdateAttributesPayload!
3574
3436
 
3575
3437
  """Update buyer identity"""
3576
3438
  cartUpdateBuyerIdentity(buyerIdentity: CartBuyerIdentityInput!, id: ID!): CartUpdateBuyerIdentityPayload!
3577
3439
 
3440
+ """Set recipient info on gift card line item (personalised delivery)"""
3441
+ cartUpdateGiftCardRecipient(input: CartUpdateGiftCardRecipientInput!): CartUpdateGiftCardRecipientPayload!
3442
+
3578
3443
  """Update cart lines"""
3579
3444
  cartUpdateLines(id: ID!, lines: [CartLineUpdateInput!]!): CartUpdateLinesPayload!
3580
3445
 
3581
3446
  """Update cart note"""
3582
3447
  cartUpdateNote(id: ID!, note: String!): CartUpdateNotePayload!
3583
3448
 
3584
- """Apply discount code to checkout"""
3585
- checkoutApplyDiscountCode(discountCode: String!, id: ID!): CheckoutApplyDiscountCodePayload!
3586
-
3587
- """Apply gift card to checkout"""
3588
- checkoutApplyGiftCard(giftCardCode: String!, id: ID!): CheckoutApplyGiftCardPayload!
3589
-
3590
- """Complete checkout and create order"""
3591
- checkoutComplete(id: ID!, input: CheckoutCompleteInput): CheckoutCompletePayload!
3592
-
3593
- """Create new checkout"""
3594
- checkoutCreate(input: CheckoutCreateInput!): CheckoutCreatePayload!
3595
-
3596
- """Remove discount code from checkout"""
3597
- checkoutRemoveDiscountCode(discountCode: String!, id: ID!): CheckoutRemoveDiscountCodePayload!
3598
-
3599
- """Remove gift card from checkout"""
3600
- checkoutRemoveGiftCard(giftCardCode: String!, id: ID!): CheckoutRemoveGiftCardPayload!
3601
-
3602
- """Select payment method for checkout"""
3603
- checkoutSelectPaymentMethod(id: ID!, paymentMethodId: ID!): CheckoutSelectPaymentMethodPayload!
3604
-
3605
- """Select shipping rate for checkout"""
3606
- checkoutSelectShippingRate(
3607
- id: ID!
3608
-
3609
- """Shipping rate handle/id from checkout.availableShippingRates"""
3610
- rateId: String!
3611
- ): CheckoutSelectShippingRatePayload!
3612
-
3613
- """Update checkout billing address"""
3614
- checkoutUpdateBillingAddress(billingAddress: CheckoutAddressInput!, id: ID!): CheckoutUpdateBillingAddressPayload!
3615
-
3616
- """Update checkout email"""
3617
- checkoutUpdateEmail(email: String!, id: ID!): CheckoutUpdateEmailPayload!
3618
-
3619
- """Update gift card recipient info for a line item"""
3620
- checkoutUpdateGiftCardRecipient(input: CheckoutGiftCardRecipientInput!): CheckoutUpdateGiftCardRecipientPayload!
3621
-
3622
- """Update checkout shipping address"""
3623
- checkoutUpdateShippingAddress(id: ID!, shippingAddress: CheckoutAddressInput!): CheckoutUpdateShippingAddressPayload!
3624
-
3625
- """Validate discount code without applying"""
3626
- checkoutValidateDiscountCode(discountCode: String!, id: ID!): CheckoutValidateDiscountCodePayload!
3627
-
3628
3449
  """
3629
3450
  Activate customer account using raw activation token (admin-created flow)
3630
3451
  """
@@ -3747,6 +3568,9 @@ enum NodeType {
3747
3568
 
3748
3569
  """Customer order summary"""
3749
3570
  type Order implements Node {
3571
+ """Czy storefront może zainicjować płatność dla tego order"""
3572
+ canCreatePayment: Boolean!
3573
+
3750
3574
  """When order was cancelled"""
3751
3575
  cancelledAt: DateTime
3752
3576
 
@@ -3774,6 +3598,9 @@ type Order implements Node {
3774
3598
  """Order number (human-readable)"""
3775
3599
  orderNumber: String!
3776
3600
 
3601
+ """Kategoria payment method zmapowana z provider code"""
3602
+ paymentMethodType: PaymentMethodType!
3603
+
3777
3604
  """Payment status"""
3778
3605
  paymentStatus: OrderPaymentStatus!
3779
3606
 
@@ -3925,14 +3752,11 @@ type PaymentMethod {
3925
3752
 
3926
3753
  """Type of payment method"""
3927
3754
  enum PaymentMethodType {
3928
- APPLE_PAY
3929
3755
  BANK_TRANSFER
3930
3756
  BLIK
3931
3757
  CARD
3932
3758
  CASH_ON_DELIVERY
3933
- GOOGLE_PAY
3934
3759
  OTHER
3935
- PAYPAL
3936
3760
  }
3937
3761
 
3938
3762
  """Shop payment configuration (currency, country, providers)"""
@@ -4637,6 +4461,9 @@ type Query {
4637
4461
  """Get cart by ID"""
4638
4462
  cart(id: ID!): Cart
4639
4463
 
4464
+ """Validate discount code preview (read-only, no cart side effects)"""
4465
+ cartValidateDiscountCode(cartId: ID!, discountCode: String!): DiscountValidationResult!
4466
+
4640
4467
  """
4641
4468
  Lista kategorii (Relay Connection) z opcjonalnym filtrem rootsOnly/parentId
4642
4469
  """
@@ -4671,9 +4498,6 @@ type Query {
4671
4498
  slug: String
4672
4499
  ): Category
4673
4500
 
4674
- """Get checkout by ID"""
4675
- checkout(id: ID!): Checkout
4676
-
4677
4501
  """Get single collection"""
4678
4502
  collection(
4679
4503
  """Collection handle (slug)"""
@@ -5584,18 +5408,6 @@ type ShippingCarrier {
5584
5408
  serviceCode: String
5585
5409
  }
5586
5410
 
5587
- """Available shipping rate"""
5588
- type ShippingRate {
5589
- """Shipping rate ID"""
5590
- handle: ID!
5591
-
5592
- """Shipping price"""
5593
- price: Money!
5594
-
5595
- """Shipping rate title"""
5596
- title: String!
5597
- }
5598
-
5599
5411
  """Shop information"""
5600
5412
  type Shop {
5601
5413
  """Shop physical address"""
@@ -5925,18 +5737,6 @@ type SubscribeToMarketingPayload {
5925
5737
  userErrors: [UserError!]!
5926
5738
  }
5927
5739
 
5928
- """Tax line item"""
5929
- type TaxLine {
5930
- """Tax amount"""
5931
- price: Money!
5932
-
5933
- """Tax rate as decimal (e.g., 0.23 for 23%)"""
5934
- rate: Float!
5935
-
5936
- """Tax name"""
5937
- title: String!
5938
- }
5939
-
5940
5740
  """Custom tier benefit"""
5941
5741
  type TierBenefit {
5942
5742
  """Benefit description"""