@cloudcart/dev-mcp 0.2.0 → 0.2.3

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/data/admin.json CHANGED
@@ -2383,6 +2383,60 @@
2383
2383
  "isDeprecated": false,
2384
2384
  "deprecationReason": null
2385
2385
  },
2386
+ {
2387
+ "name": "customerEmailJob",
2388
+ "description": "Fetch the status of a customer-email batch by ID. Returns null if the batch is not found or belongs to another store.",
2389
+ "args": [
2390
+ {
2391
+ "name": "id",
2392
+ "description": "Batch ID returned by sendCustomerEmail.",
2393
+ "type": {
2394
+ "kind": "NON_NULL",
2395
+ "name": null,
2396
+ "ofType": {
2397
+ "kind": "SCALAR",
2398
+ "name": "ID",
2399
+ "ofType": null
2400
+ }
2401
+ },
2402
+ "defaultValue": null
2403
+ }
2404
+ ],
2405
+ "type": {
2406
+ "kind": "OBJECT",
2407
+ "name": "CustomerEmailJob",
2408
+ "ofType": null
2409
+ },
2410
+ "isDeprecated": false,
2411
+ "deprecationReason": null
2412
+ },
2413
+ {
2414
+ "name": "customerViberJob",
2415
+ "description": "Fetch the status of a customer-viber batch by ID. Returns null if the batch is not found or belongs to another store.",
2416
+ "args": [
2417
+ {
2418
+ "name": "id",
2419
+ "description": "Batch ID returned by sendCustomerViber.",
2420
+ "type": {
2421
+ "kind": "NON_NULL",
2422
+ "name": null,
2423
+ "ofType": {
2424
+ "kind": "SCALAR",
2425
+ "name": "ID",
2426
+ "ofType": null
2427
+ }
2428
+ },
2429
+ "defaultValue": null
2430
+ }
2431
+ ],
2432
+ "type": {
2433
+ "kind": "OBJECT",
2434
+ "name": "CustomerViberJob",
2435
+ "ofType": null
2436
+ },
2437
+ "isDeprecated": false,
2438
+ "deprecationReason": null
2439
+ },
2386
2440
  {
2387
2441
  "name": "analyticsReport",
2388
2442
  "description": "Run an analytics report. Returns structured columns + rows for AI agents, plus raw formatter data for chart rendering.",
@@ -20755,18 +20809,18 @@
20755
20809
  "deprecationReason": null
20756
20810
  },
20757
20811
  {
20758
- "name": "updateAnalyticsSettings",
20759
- "description": "Update analytics dashboard settings (statuses, device visibility, box layout, industry).",
20812
+ "name": "sendCustomerEmail",
20813
+ "description": "Send a free-text email (HTML + plain text, no template) from the store to one or many customers. Always asynchronous — dispatches a Bus::batch of per-recipient jobs and returns a CustomerEmailJob to poll via customerEmailJob(id). For MARKETING sends, recipients without marketing opt-in are silently filtered out; the skipped count is returned in the payload.",
20760
20814
  "args": [
20761
20815
  {
20762
20816
  "name": "input",
20763
- "description": "Settings input — all fields are optional; only provided fields are updated.",
20817
+ "description": "Targeting + content.",
20764
20818
  "type": {
20765
20819
  "kind": "NON_NULL",
20766
20820
  "name": null,
20767
20821
  "ofType": {
20768
20822
  "kind": "INPUT_OBJECT",
20769
- "name": "UpdateAnalyticsSettingsInput",
20823
+ "name": "SendCustomerEmailInput",
20770
20824
  "ofType": null
20771
20825
  }
20772
20826
  },
@@ -20778,23 +20832,7 @@
20778
20832
  "name": null,
20779
20833
  "ofType": {
20780
20834
  "kind": "OBJECT",
20781
- "name": "AnalyticsSettings",
20782
- "ofType": null
20783
- }
20784
- },
20785
- "isDeprecated": false,
20786
- "deprecationReason": null
20787
- },
20788
- {
20789
- "name": "resetAnalyticsSettings",
20790
- "description": "Reset analytics settings to defaults (removes all custom configuration).",
20791
- "args": [],
20792
- "type": {
20793
- "kind": "NON_NULL",
20794
- "name": null,
20795
- "ofType": {
20796
- "kind": "OBJECT",
20797
- "name": "AnalyticsSettings",
20835
+ "name": "SendCustomerEmailPayload",
20798
20836
  "ofType": null
20799
20837
  }
20800
20838
  },
@@ -20802,32 +20840,18 @@
20802
20840
  "deprecationReason": null
20803
20841
  },
20804
20842
  {
20805
- "name": "createDiscount",
20806
- "description": "Create a new discount.\nFor code-pro type: only name, date_start, active are used initially.\nFor all other types: creates the discount then processes targets, volume/quantity/countdown data.",
20843
+ "name": "sendCustomerViber",
20844
+ "description": "Send a free-text Viber message (with optional image and CTA button) from the store to one or many customers. Async via Bus::batch on the campaigns-messages6 queue; returns a CustomerViberJob to poll via customerViberJob(id). The Viber channel must be installed + configured in the campaigns marketplace; otherwise a VIBER_NOT_CONFIGURED error is returned before any dispatch.",
20807
20845
  "args": [
20808
- {
20809
- "name": "type",
20810
- "description": "Discount type.",
20811
- "type": {
20812
- "kind": "NON_NULL",
20813
- "name": null,
20814
- "ofType": {
20815
- "kind": "SCALAR",
20816
- "name": "String",
20817
- "ofType": null
20818
- }
20819
- },
20820
- "defaultValue": null
20821
- },
20822
20846
  {
20823
20847
  "name": "input",
20824
- "description": "Discount data.",
20848
+ "description": "Targeting + content.",
20825
20849
  "type": {
20826
20850
  "kind": "NON_NULL",
20827
20851
  "name": null,
20828
20852
  "ofType": {
20829
20853
  "kind": "INPUT_OBJECT",
20830
- "name": "CreateDiscountInput",
20854
+ "name": "SendCustomerViberInput",
20831
20855
  "ofType": null
20832
20856
  }
20833
20857
  },
@@ -20839,7 +20863,7 @@
20839
20863
  "name": null,
20840
20864
  "ofType": {
20841
20865
  "kind": "OBJECT",
20842
- "name": "Discount",
20866
+ "name": "SendCustomerViberPayload",
20843
20867
  "ofType": null
20844
20868
  }
20845
20869
  },
@@ -20847,32 +20871,18 @@
20847
20871
  "deprecationReason": null
20848
20872
  },
20849
20873
  {
20850
- "name": "updateDiscount",
20851
- "description": "Update an existing discount.\nUpdates core fields and type-specific data (targets, volume, quantity, countdown).",
20874
+ "name": "updateAnalyticsSettings",
20875
+ "description": "Update analytics dashboard settings (statuses, device visibility, box layout, industry).",
20852
20876
  "args": [
20853
- {
20854
- "name": "id",
20855
- "description": "Discount ID.",
20856
- "type": {
20857
- "kind": "NON_NULL",
20858
- "name": null,
20859
- "ofType": {
20860
- "kind": "SCALAR",
20861
- "name": "ID",
20862
- "ofType": null
20863
- }
20864
- },
20865
- "defaultValue": null
20866
- },
20867
20877
  {
20868
20878
  "name": "input",
20869
- "description": "Discount data.",
20879
+ "description": "Settings input — all fields are optional; only provided fields are updated.",
20870
20880
  "type": {
20871
20881
  "kind": "NON_NULL",
20872
20882
  "name": null,
20873
20883
  "ofType": {
20874
20884
  "kind": "INPUT_OBJECT",
20875
- "name": "UpdateDiscountInput",
20885
+ "name": "UpdateAnalyticsSettingsInput",
20876
20886
  "ofType": null
20877
20887
  }
20878
20888
  },
@@ -20884,46 +20894,7 @@
20884
20894
  "name": null,
20885
20895
  "ofType": {
20886
20896
  "kind": "OBJECT",
20887
- "name": "Discount",
20888
- "ofType": null
20889
- }
20890
- },
20891
- "isDeprecated": false,
20892
- "deprecationReason": null
20893
- },
20894
- {
20895
- "name": "deleteDiscounts",
20896
- "description": "Delete one or more discounts.",
20897
- "args": [
20898
- {
20899
- "name": "ids",
20900
- "description": "Discount IDs to delete.",
20901
- "type": {
20902
- "kind": "NON_NULL",
20903
- "name": null,
20904
- "ofType": {
20905
- "kind": "LIST",
20906
- "name": null,
20907
- "ofType": {
20908
- "kind": "NON_NULL",
20909
- "name": null,
20910
- "ofType": {
20911
- "kind": "SCALAR",
20912
- "name": "ID",
20913
- "ofType": null
20914
- }
20915
- }
20916
- }
20917
- },
20918
- "defaultValue": null
20919
- }
20920
- ],
20921
- "type": {
20922
- "kind": "NON_NULL",
20923
- "name": null,
20924
- "ofType": {
20925
- "kind": "SCALAR",
20926
- "name": "Boolean",
20897
+ "name": "AnalyticsSettings",
20927
20898
  "ofType": null
20928
20899
  }
20929
20900
  },
@@ -20931,52 +20902,15 @@
20931
20902
  "deprecationReason": null
20932
20903
  },
20933
20904
  {
20934
- "name": "changeDiscountsStatus",
20935
- "description": "Bulk activate or deactivate discounts.",
20936
- "args": [
20937
- {
20938
- "name": "ids",
20939
- "description": "Discount IDs.",
20940
- "type": {
20941
- "kind": "NON_NULL",
20942
- "name": null,
20943
- "ofType": {
20944
- "kind": "LIST",
20945
- "name": null,
20946
- "ofType": {
20947
- "kind": "NON_NULL",
20948
- "name": null,
20949
- "ofType": {
20950
- "kind": "SCALAR",
20951
- "name": "ID",
20952
- "ofType": null
20953
- }
20954
- }
20955
- }
20956
- },
20957
- "defaultValue": null
20958
- },
20959
- {
20960
- "name": "status",
20961
- "description": "New status.",
20962
- "type": {
20963
- "kind": "NON_NULL",
20964
- "name": null,
20965
- "ofType": {
20966
- "kind": "ENUM",
20967
- "name": "YesNo",
20968
- "ofType": null
20969
- }
20970
- },
20971
- "defaultValue": null
20972
- }
20973
- ],
20905
+ "name": "resetAnalyticsSettings",
20906
+ "description": "Reset analytics settings to defaults (removes all custom configuration).",
20907
+ "args": [],
20974
20908
  "type": {
20975
20909
  "kind": "NON_NULL",
20976
20910
  "name": null,
20977
20911
  "ofType": {
20978
- "kind": "SCALAR",
20979
- "name": "Boolean",
20912
+ "kind": "OBJECT",
20913
+ "name": "AnalyticsSettings",
20980
20914
  "ofType": null
20981
20915
  }
20982
20916
  },
@@ -20984,18 +20918,18 @@
20984
20918
  "deprecationReason": null
20985
20919
  },
20986
20920
  {
20987
- "name": "createCodeProCode",
20988
- "description": "Create a new code-pro code for a code-pro discount.",
20921
+ "name": "createDiscount",
20922
+ "description": "Create a new discount.\nFor code-pro type: only name, date_start, active are used initially.\nFor all other types: creates the discount then processes targets, volume/quantity/countdown data.",
20989
20923
  "args": [
20990
20924
  {
20991
- "name": "discountId",
20992
- "description": "Parent discount ID (must be code-pro type).",
20925
+ "name": "type",
20926
+ "description": "Discount type.",
20993
20927
  "type": {
20994
20928
  "kind": "NON_NULL",
20995
20929
  "name": null,
20996
20930
  "ofType": {
20997
20931
  "kind": "SCALAR",
20998
- "name": "ID",
20932
+ "name": "String",
20999
20933
  "ofType": null
21000
20934
  }
21001
20935
  },
@@ -21003,13 +20937,13 @@
21003
20937
  },
21004
20938
  {
21005
20939
  "name": "input",
21006
- "description": "Code data.",
20940
+ "description": "Discount data.",
21007
20941
  "type": {
21008
20942
  "kind": "NON_NULL",
21009
20943
  "name": null,
21010
20944
  "ofType": {
21011
20945
  "kind": "INPUT_OBJECT",
21012
- "name": "CodeProInput",
20946
+ "name": "CreateDiscountInput",
21013
20947
  "ofType": null
21014
20948
  }
21015
20949
  },
@@ -21021,7 +20955,7 @@
21021
20955
  "name": null,
21022
20956
  "ofType": {
21023
20957
  "kind": "OBJECT",
21024
- "name": "DiscountCodePro",
20958
+ "name": "Discount",
21025
20959
  "ofType": null
21026
20960
  }
21027
20961
  },
@@ -21029,26 +20963,12 @@
21029
20963
  "deprecationReason": null
21030
20964
  },
21031
20965
  {
21032
- "name": "updateCodeProCode",
21033
- "description": "Update an existing code-pro code.",
20966
+ "name": "updateDiscount",
20967
+ "description": "Update an existing discount.\nUpdates core fields and type-specific data (targets, volume, quantity, countdown).",
21034
20968
  "args": [
21035
20969
  {
21036
- "name": "discountId",
21037
- "description": "Parent discount ID.",
21038
- "type": {
21039
- "kind": "NON_NULL",
21040
- "name": null,
21041
- "ofType": {
21042
- "kind": "SCALAR",
21043
- "name": "ID",
21044
- "ofType": null
21045
- }
21046
- },
21047
- "defaultValue": null
21048
- },
21049
- {
21050
- "name": "codeId",
21051
- "description": "Code ID.",
20970
+ "name": "id",
20971
+ "description": "Discount ID.",
21052
20972
  "type": {
21053
20973
  "kind": "NON_NULL",
21054
20974
  "name": null,
@@ -21062,13 +20982,13 @@
21062
20982
  },
21063
20983
  {
21064
20984
  "name": "input",
21065
- "description": "Code data.",
20985
+ "description": "Discount data.",
21066
20986
  "type": {
21067
20987
  "kind": "NON_NULL",
21068
20988
  "name": null,
21069
20989
  "ofType": {
21070
20990
  "kind": "INPUT_OBJECT",
21071
- "name": "CodeProInput",
20991
+ "name": "UpdateDiscountInput",
21072
20992
  "ofType": null
21073
20993
  }
21074
20994
  },
@@ -21080,7 +21000,7 @@
21080
21000
  "name": null,
21081
21001
  "ofType": {
21082
21002
  "kind": "OBJECT",
21083
- "name": "DiscountCodePro",
21003
+ "name": "Discount",
21084
21004
  "ofType": null
21085
21005
  }
21086
21006
  },
@@ -21088,26 +21008,12 @@
21088
21008
  "deprecationReason": null
21089
21009
  },
21090
21010
  {
21091
- "name": "deleteCodeProCodes",
21092
- "description": "Delete one or more code-pro codes.",
21011
+ "name": "deleteDiscounts",
21012
+ "description": "Delete one or more discounts.",
21093
21013
  "args": [
21094
- {
21095
- "name": "discountId",
21096
- "description": "Parent discount ID.",
21097
- "type": {
21098
- "kind": "NON_NULL",
21099
- "name": null,
21100
- "ofType": {
21101
- "kind": "SCALAR",
21102
- "name": "ID",
21103
- "ofType": null
21104
- }
21105
- },
21106
- "defaultValue": null
21107
- },
21108
21014
  {
21109
21015
  "name": "ids",
21110
- "description": "Code IDs to delete.",
21016
+ "description": "Discount IDs to delete.",
21111
21017
  "type": {
21112
21018
  "kind": "NON_NULL",
21113
21019
  "name": null,
@@ -21141,26 +21047,12 @@
21141
21047
  "deprecationReason": null
21142
21048
  },
21143
21049
  {
21144
- "name": "changeCodeProCodesStatus",
21145
- "description": "Bulk activate or deactivate code-pro codes.",
21050
+ "name": "changeDiscountsStatus",
21051
+ "description": "Bulk activate or deactivate discounts.",
21146
21052
  "args": [
21147
- {
21148
- "name": "discountId",
21149
- "description": "Parent discount ID.",
21150
- "type": {
21151
- "kind": "NON_NULL",
21152
- "name": null,
21153
- "ofType": {
21154
- "kind": "SCALAR",
21155
- "name": "ID",
21156
- "ofType": null
21157
- }
21158
- },
21159
- "defaultValue": null
21160
- },
21161
21053
  {
21162
21054
  "name": "ids",
21163
- "description": "Code IDs.",
21055
+ "description": "Discount IDs.",
21164
21056
  "type": {
21165
21057
  "kind": "NON_NULL",
21166
21058
  "name": null,
@@ -21182,13 +21074,13 @@
21182
21074
  },
21183
21075
  {
21184
21076
  "name": "status",
21185
- "description": "New status (1 = active, 0 = inactive).",
21077
+ "description": "New status.",
21186
21078
  "type": {
21187
21079
  "kind": "NON_NULL",
21188
21080
  "name": null,
21189
21081
  "ofType": {
21190
- "kind": "SCALAR",
21191
- "name": "Int",
21082
+ "kind": "ENUM",
21083
+ "name": "YesNo",
21192
21084
  "ofType": null
21193
21085
  }
21194
21086
  },
@@ -21208,8 +21100,8 @@
21208
21100
  "deprecationReason": null
21209
21101
  },
21210
21102
  {
21211
- "name": "generateCodeProCodes",
21212
- "description": "Bulk-generate code-pro codes for a discount.\nSupports range (from-to sequential) or random (limit + length + structure).",
21103
+ "name": "createCodeProCode",
21104
+ "description": "Create a new code-pro code for a code-pro discount.",
21213
21105
  "args": [
21214
21106
  {
21215
21107
  "name": "discountId",
@@ -21227,13 +21119,13 @@
21227
21119
  },
21228
21120
  {
21229
21121
  "name": "input",
21230
- "description": "Generation parameters.",
21122
+ "description": "Code data.",
21231
21123
  "type": {
21232
21124
  "kind": "NON_NULL",
21233
21125
  "name": null,
21234
21126
  "ofType": {
21235
21127
  "kind": "INPUT_OBJECT",
21236
- "name": "CodeProGenerateInput",
21128
+ "name": "CodeProInput",
21237
21129
  "ofType": null
21238
21130
  }
21239
21131
  },
@@ -21244,8 +21136,8 @@
21244
21136
  "kind": "NON_NULL",
21245
21137
  "name": null,
21246
21138
  "ofType": {
21247
- "kind": "SCALAR",
21248
- "name": "Boolean",
21139
+ "kind": "OBJECT",
21140
+ "name": "DiscountCodePro",
21249
21141
  "ofType": null
21250
21142
  }
21251
21143
  },
@@ -21253,12 +21145,12 @@
21253
21145
  "deprecationReason": null
21254
21146
  },
21255
21147
  {
21256
- "name": "addFixedDiscountProducts",
21257
- "description": "Add variant prices to a fixed discount.",
21148
+ "name": "updateCodeProCode",
21149
+ "description": "Update an existing code-pro code.",
21258
21150
  "args": [
21259
21151
  {
21260
21152
  "name": "discountId",
21261
- "description": "Discount ID (must be fixed type).",
21153
+ "description": "Parent discount ID.",
21262
21154
  "type": {
21263
21155
  "kind": "NON_NULL",
21264
21156
  "name": null,
@@ -21271,23 +21163,29 @@
21271
21163
  "defaultValue": null
21272
21164
  },
21273
21165
  {
21274
- "name": "variants",
21275
- "description": "Variant prices.",
21166
+ "name": "codeId",
21167
+ "description": "Code ID.",
21276
21168
  "type": {
21277
21169
  "kind": "NON_NULL",
21278
21170
  "name": null,
21279
21171
  "ofType": {
21280
- "kind": "LIST",
21281
- "name": null,
21282
- "ofType": {
21283
- "kind": "NON_NULL",
21284
- "name": null,
21285
- "ofType": {
21286
- "kind": "INPUT_OBJECT",
21287
- "name": "FixedDiscountVariantInput",
21288
- "ofType": null
21289
- }
21290
- }
21172
+ "kind": "SCALAR",
21173
+ "name": "ID",
21174
+ "ofType": null
21175
+ }
21176
+ },
21177
+ "defaultValue": null
21178
+ },
21179
+ {
21180
+ "name": "input",
21181
+ "description": "Code data.",
21182
+ "type": {
21183
+ "kind": "NON_NULL",
21184
+ "name": null,
21185
+ "ofType": {
21186
+ "kind": "INPUT_OBJECT",
21187
+ "name": "CodeProInput",
21188
+ "ofType": null
21291
21189
  }
21292
21190
  },
21293
21191
  "defaultValue": null
@@ -21297,8 +21195,8 @@
21297
21195
  "kind": "NON_NULL",
21298
21196
  "name": null,
21299
21197
  "ofType": {
21300
- "kind": "SCALAR",
21301
- "name": "Boolean",
21198
+ "kind": "OBJECT",
21199
+ "name": "DiscountCodePro",
21302
21200
  "ofType": null
21303
21201
  }
21304
21202
  },
@@ -21306,26 +21204,12 @@
21306
21204
  "deprecationReason": null
21307
21205
  },
21308
21206
  {
21309
- "name": "updateFixedDiscountProduct",
21310
- "description": "Update variant prices for a product in a fixed discount. Replaces existing prices for the product.",
21207
+ "name": "deleteCodeProCodes",
21208
+ "description": "Delete one or more code-pro codes.",
21311
21209
  "args": [
21312
21210
  {
21313
21211
  "name": "discountId",
21314
- "description": "Discount ID (must be fixed type).",
21315
- "type": {
21316
- "kind": "NON_NULL",
21317
- "name": null,
21318
- "ofType": {
21319
- "kind": "SCALAR",
21320
- "name": "ID",
21321
- "ofType": null
21322
- }
21323
- },
21324
- "defaultValue": null
21325
- },
21326
- {
21327
- "name": "productId",
21328
- "description": "Product ID to update.",
21212
+ "description": "Parent discount ID.",
21329
21213
  "type": {
21330
21214
  "kind": "NON_NULL",
21331
21215
  "name": null,
@@ -21338,8 +21222,8 @@
21338
21222
  "defaultValue": null
21339
21223
  },
21340
21224
  {
21341
- "name": "variants",
21342
- "description": "New variant prices.",
21225
+ "name": "ids",
21226
+ "description": "Code IDs to delete.",
21343
21227
  "type": {
21344
21228
  "kind": "NON_NULL",
21345
21229
  "name": null,
@@ -21350,8 +21234,8 @@
21350
21234
  "kind": "NON_NULL",
21351
21235
  "name": null,
21352
21236
  "ofType": {
21353
- "kind": "INPUT_OBJECT",
21354
- "name": "FixedDiscountVariantInput",
21237
+ "kind": "SCALAR",
21238
+ "name": "ID",
21355
21239
  "ofType": null
21356
21240
  }
21357
21241
  }
@@ -21373,12 +21257,12 @@
21373
21257
  "deprecationReason": null
21374
21258
  },
21375
21259
  {
21376
- "name": "changeFixedProductsStatus",
21377
- "description": "Bulk activate or deactivate products in a fixed discount.",
21260
+ "name": "changeCodeProCodesStatus",
21261
+ "description": "Bulk activate or deactivate code-pro codes.",
21378
21262
  "args": [
21379
21263
  {
21380
21264
  "name": "discountId",
21381
- "description": "Discount ID.",
21265
+ "description": "Parent discount ID.",
21382
21266
  "type": {
21383
21267
  "kind": "NON_NULL",
21384
21268
  "name": null,
@@ -21391,8 +21275,8 @@
21391
21275
  "defaultValue": null
21392
21276
  },
21393
21277
  {
21394
- "name": "productIds",
21395
- "description": "Product IDs.",
21278
+ "name": "ids",
21279
+ "description": "Code IDs.",
21396
21280
  "type": {
21397
21281
  "kind": "NON_NULL",
21398
21282
  "name": null,
@@ -21414,13 +21298,13 @@
21414
21298
  },
21415
21299
  {
21416
21300
  "name": "status",
21417
- "description": "New status.",
21301
+ "description": "New status (1 = active, 0 = inactive).",
21418
21302
  "type": {
21419
21303
  "kind": "NON_NULL",
21420
21304
  "name": null,
21421
21305
  "ofType": {
21422
- "kind": "ENUM",
21423
- "name": "YesNo",
21306
+ "kind": "SCALAR",
21307
+ "name": "Int",
21424
21308
  "ofType": null
21425
21309
  }
21426
21310
  },
@@ -21440,12 +21324,12 @@
21440
21324
  "deprecationReason": null
21441
21325
  },
21442
21326
  {
21443
- "name": "deleteFixedDiscountProducts",
21444
- "description": "Delete products from a fixed discount.",
21327
+ "name": "generateCodeProCodes",
21328
+ "description": "Bulk-generate code-pro codes for a discount.\nSupports range (from-to sequential) or random (limit + length + structure).",
21445
21329
  "args": [
21446
21330
  {
21447
21331
  "name": "discountId",
21448
- "description": "Discount ID.",
21332
+ "description": "Parent discount ID (must be code-pro type).",
21449
21333
  "type": {
21450
21334
  "kind": "NON_NULL",
21451
21335
  "name": null,
@@ -21458,23 +21342,15 @@
21458
21342
  "defaultValue": null
21459
21343
  },
21460
21344
  {
21461
- "name": "productIds",
21462
- "description": "Product IDs to remove.",
21345
+ "name": "input",
21346
+ "description": "Generation parameters.",
21463
21347
  "type": {
21464
21348
  "kind": "NON_NULL",
21465
21349
  "name": null,
21466
21350
  "ofType": {
21467
- "kind": "LIST",
21468
- "name": null,
21469
- "ofType": {
21470
- "kind": "NON_NULL",
21471
- "name": null,
21472
- "ofType": {
21473
- "kind": "SCALAR",
21474
- "name": "ID",
21475
- "ofType": null
21476
- }
21477
- }
21351
+ "kind": "INPUT_OBJECT",
21352
+ "name": "CodeProGenerateInput",
21353
+ "ofType": null
21478
21354
  }
21479
21355
  },
21480
21356
  "defaultValue": null
@@ -21493,22 +21369,44 @@
21493
21369
  "deprecationReason": null
21494
21370
  },
21495
21371
  {
21496
- "name": "generateLegacyCodes",
21497
- "description": "Generate legacy discount codes.",
21372
+ "name": "addFixedDiscountProducts",
21373
+ "description": "Add variant prices to a fixed discount.",
21498
21374
  "args": [
21499
21375
  {
21500
- "name": "input",
21501
- "description": "Generation parameters.",
21376
+ "name": "discountId",
21377
+ "description": "Discount ID (must be fixed type).",
21502
21378
  "type": {
21503
21379
  "kind": "NON_NULL",
21504
21380
  "name": null,
21505
21381
  "ofType": {
21506
- "kind": "INPUT_OBJECT",
21507
- "name": "GenerateLegacyCodesInput",
21382
+ "kind": "SCALAR",
21383
+ "name": "ID",
21508
21384
  "ofType": null
21509
21385
  }
21510
21386
  },
21511
21387
  "defaultValue": null
21388
+ },
21389
+ {
21390
+ "name": "variants",
21391
+ "description": "Variant prices.",
21392
+ "type": {
21393
+ "kind": "NON_NULL",
21394
+ "name": null,
21395
+ "ofType": {
21396
+ "kind": "LIST",
21397
+ "name": null,
21398
+ "ofType": {
21399
+ "kind": "NON_NULL",
21400
+ "name": null,
21401
+ "ofType": {
21402
+ "kind": "INPUT_OBJECT",
21403
+ "name": "FixedDiscountVariantInput",
21404
+ "ofType": null
21405
+ }
21406
+ }
21407
+ }
21408
+ },
21409
+ "defaultValue": null
21512
21410
  }
21513
21411
  ],
21514
21412
  "type": {
@@ -21524,12 +21422,40 @@
21524
21422
  "deprecationReason": null
21525
21423
  },
21526
21424
  {
21527
- "name": "deleteLegacyCodes",
21528
- "description": "Delete one or more legacy discount codes.",
21425
+ "name": "updateFixedDiscountProduct",
21426
+ "description": "Update variant prices for a product in a fixed discount. Replaces existing prices for the product.",
21529
21427
  "args": [
21530
21428
  {
21531
- "name": "ids",
21532
- "description": "Code IDs to delete.",
21429
+ "name": "discountId",
21430
+ "description": "Discount ID (must be fixed type).",
21431
+ "type": {
21432
+ "kind": "NON_NULL",
21433
+ "name": null,
21434
+ "ofType": {
21435
+ "kind": "SCALAR",
21436
+ "name": "ID",
21437
+ "ofType": null
21438
+ }
21439
+ },
21440
+ "defaultValue": null
21441
+ },
21442
+ {
21443
+ "name": "productId",
21444
+ "description": "Product ID to update.",
21445
+ "type": {
21446
+ "kind": "NON_NULL",
21447
+ "name": null,
21448
+ "ofType": {
21449
+ "kind": "SCALAR",
21450
+ "name": "ID",
21451
+ "ofType": null
21452
+ }
21453
+ },
21454
+ "defaultValue": null
21455
+ },
21456
+ {
21457
+ "name": "variants",
21458
+ "description": "New variant prices.",
21533
21459
  "type": {
21534
21460
  "kind": "NON_NULL",
21535
21461
  "name": null,
@@ -21540,8 +21466,8 @@
21540
21466
  "kind": "NON_NULL",
21541
21467
  "name": null,
21542
21468
  "ofType": {
21543
- "kind": "SCALAR",
21544
- "name": "ID",
21469
+ "kind": "INPUT_OBJECT",
21470
+ "name": "FixedDiscountVariantInput",
21545
21471
  "ofType": null
21546
21472
  }
21547
21473
  }
@@ -21563,12 +21489,26 @@
21563
21489
  "deprecationReason": null
21564
21490
  },
21565
21491
  {
21566
- "name": "changeLegacyCodesStatus",
21567
- "description": "Bulk activate or deactivate legacy discount codes.",
21492
+ "name": "changeFixedProductsStatus",
21493
+ "description": "Bulk activate or deactivate products in a fixed discount.",
21568
21494
  "args": [
21569
21495
  {
21570
- "name": "ids",
21571
- "description": "Code IDs.",
21496
+ "name": "discountId",
21497
+ "description": "Discount ID.",
21498
+ "type": {
21499
+ "kind": "NON_NULL",
21500
+ "name": null,
21501
+ "ofType": {
21502
+ "kind": "SCALAR",
21503
+ "name": "ID",
21504
+ "ofType": null
21505
+ }
21506
+ },
21507
+ "defaultValue": null
21508
+ },
21509
+ {
21510
+ "name": "productIds",
21511
+ "description": "Product IDs.",
21572
21512
  "type": {
21573
21513
  "kind": "NON_NULL",
21574
21514
  "name": null,
@@ -21590,13 +21530,13 @@
21590
21530
  },
21591
21531
  {
21592
21532
  "name": "status",
21593
- "description": "New status (1 = active, 0 = inactive).",
21533
+ "description": "New status.",
21594
21534
  "type": {
21595
21535
  "kind": "NON_NULL",
21596
21536
  "name": null,
21597
21537
  "ofType": {
21598
- "kind": "SCALAR",
21599
- "name": "Int",
21538
+ "kind": "ENUM",
21539
+ "name": "YesNo",
21600
21540
  "ofType": null
21601
21541
  }
21602
21542
  },
@@ -21616,30 +21556,52 @@
21616
21556
  "deprecationReason": null
21617
21557
  },
21618
21558
  {
21619
- "name": "createCrossSell",
21620
- "description": "Create a new cross-sell offer.\nRequires target conditions and action products.\nOptionally links to a parent offer for tree building.",
21559
+ "name": "deleteFixedDiscountProducts",
21560
+ "description": "Delete products from a fixed discount.",
21621
21561
  "args": [
21622
21562
  {
21623
- "name": "input",
21624
- "description": "Cross-sell data.",
21563
+ "name": "discountId",
21564
+ "description": "Discount ID.",
21625
21565
  "type": {
21626
21566
  "kind": "NON_NULL",
21627
21567
  "name": null,
21628
21568
  "ofType": {
21629
- "kind": "INPUT_OBJECT",
21630
- "name": "CreateCrossSellInput",
21569
+ "kind": "SCALAR",
21570
+ "name": "ID",
21631
21571
  "ofType": null
21632
21572
  }
21633
21573
  },
21634
21574
  "defaultValue": null
21575
+ },
21576
+ {
21577
+ "name": "productIds",
21578
+ "description": "Product IDs to remove.",
21579
+ "type": {
21580
+ "kind": "NON_NULL",
21581
+ "name": null,
21582
+ "ofType": {
21583
+ "kind": "LIST",
21584
+ "name": null,
21585
+ "ofType": {
21586
+ "kind": "NON_NULL",
21587
+ "name": null,
21588
+ "ofType": {
21589
+ "kind": "SCALAR",
21590
+ "name": "ID",
21591
+ "ofType": null
21592
+ }
21593
+ }
21594
+ }
21595
+ },
21596
+ "defaultValue": null
21635
21597
  }
21636
21598
  ],
21637
21599
  "type": {
21638
21600
  "kind": "NON_NULL",
21639
21601
  "name": null,
21640
21602
  "ofType": {
21641
- "kind": "OBJECT",
21642
- "name": "CrossSell",
21603
+ "kind": "SCALAR",
21604
+ "name": "Boolean",
21643
21605
  "ofType": null
21644
21606
  }
21645
21607
  },
@@ -21647,32 +21609,18 @@
21647
21609
  "deprecationReason": null
21648
21610
  },
21649
21611
  {
21650
- "name": "updateCrossSell",
21651
- "description": "Update an existing cross-sell offer.\nTargets and actions are replaced entirely when provided.",
21612
+ "name": "generateLegacyCodes",
21613
+ "description": "Generate legacy discount codes.",
21652
21614
  "args": [
21653
- {
21654
- "name": "id",
21655
- "description": "Cross-sell ID.",
21656
- "type": {
21657
- "kind": "NON_NULL",
21658
- "name": null,
21659
- "ofType": {
21660
- "kind": "SCALAR",
21661
- "name": "ID",
21662
- "ofType": null
21663
- }
21664
- },
21665
- "defaultValue": null
21666
- },
21667
21615
  {
21668
21616
  "name": "input",
21669
- "description": "Cross-sell data.",
21617
+ "description": "Generation parameters.",
21670
21618
  "type": {
21671
21619
  "kind": "NON_NULL",
21672
21620
  "name": null,
21673
21621
  "ofType": {
21674
21622
  "kind": "INPUT_OBJECT",
21675
- "name": "UpdateCrossSellInput",
21623
+ "name": "GenerateLegacyCodesInput",
21676
21624
  "ofType": null
21677
21625
  }
21678
21626
  },
@@ -21683,8 +21631,8 @@
21683
21631
  "kind": "NON_NULL",
21684
21632
  "name": null,
21685
21633
  "ofType": {
21686
- "kind": "OBJECT",
21687
- "name": "CrossSell",
21634
+ "kind": "SCALAR",
21635
+ "name": "Boolean",
21688
21636
  "ofType": null
21689
21637
  }
21690
21638
  },
@@ -21692,12 +21640,12 @@
21692
21640
  "deprecationReason": null
21693
21641
  },
21694
21642
  {
21695
- "name": "deleteCrossSells",
21696
- "description": "Delete one or more cross-sell offers.",
21643
+ "name": "deleteLegacyCodes",
21644
+ "description": "Delete one or more legacy discount codes.",
21697
21645
  "args": [
21698
21646
  {
21699
21647
  "name": "ids",
21700
- "description": "Cross-sell IDs to delete.",
21648
+ "description": "Code IDs to delete.",
21701
21649
  "type": {
21702
21650
  "kind": "NON_NULL",
21703
21651
  "name": null,
@@ -21731,12 +21679,12 @@
21731
21679
  "deprecationReason": null
21732
21680
  },
21733
21681
  {
21734
- "name": "changeCrossSellsStatus",
21735
- "description": "Bulk activate or deactivate cross-sell offers.",
21682
+ "name": "changeLegacyCodesStatus",
21683
+ "description": "Bulk activate or deactivate legacy discount codes.",
21736
21684
  "args": [
21737
21685
  {
21738
21686
  "name": "ids",
21739
- "description": "Cross-sell IDs.",
21687
+ "description": "Code IDs.",
21740
21688
  "type": {
21741
21689
  "kind": "NON_NULL",
21742
21690
  "name": null,
@@ -21784,65 +21732,18 @@
21784
21732
  "deprecationReason": null
21785
21733
  },
21786
21734
  {
21787
- "name": "duplicateCrossSells",
21788
- "description": "Duplicate one or more cross-sell offers.",
21789
- "args": [
21790
- {
21791
- "name": "ids",
21792
- "description": "Cross-sell IDs to duplicate.",
21793
- "type": {
21794
- "kind": "NON_NULL",
21795
- "name": null,
21796
- "ofType": {
21797
- "kind": "LIST",
21798
- "name": null,
21799
- "ofType": {
21800
- "kind": "NON_NULL",
21801
- "name": null,
21802
- "ofType": {
21803
- "kind": "SCALAR",
21804
- "name": "ID",
21805
- "ofType": null
21806
- }
21807
- }
21808
- }
21809
- },
21810
- "defaultValue": null
21811
- }
21812
- ],
21813
- "type": {
21814
- "kind": "NON_NULL",
21815
- "name": null,
21816
- "ofType": {
21817
- "kind": "LIST",
21818
- "name": null,
21819
- "ofType": {
21820
- "kind": "NON_NULL",
21821
- "name": null,
21822
- "ofType": {
21823
- "kind": "OBJECT",
21824
- "name": "CrossSell",
21825
- "ofType": null
21826
- }
21827
- }
21828
- }
21829
- },
21830
- "isDeprecated": false,
21831
- "deprecationReason": null
21832
- },
21833
- {
21834
- "name": "createUpSell",
21835
- "description": "Create a new up-sell offer.\nProduct IDs are resolved automatically from variant IDs.\nOptionally links to a parent offer for tree building.",
21735
+ "name": "createCrossSell",
21736
+ "description": "Create a new cross-sell offer.\nRequires target conditions and action products.\nOptionally links to a parent offer for tree building.",
21836
21737
  "args": [
21837
21738
  {
21838
21739
  "name": "input",
21839
- "description": "Up-sell data.",
21740
+ "description": "Cross-sell data.",
21840
21741
  "type": {
21841
21742
  "kind": "NON_NULL",
21842
21743
  "name": null,
21843
21744
  "ofType": {
21844
21745
  "kind": "INPUT_OBJECT",
21845
- "name": "CreateUpSellInput",
21746
+ "name": "CreateCrossSellInput",
21846
21747
  "ofType": null
21847
21748
  }
21848
21749
  },
@@ -21854,7 +21755,7 @@
21854
21755
  "name": null,
21855
21756
  "ofType": {
21856
21757
  "kind": "OBJECT",
21857
- "name": "UpSell",
21758
+ "name": "CrossSell",
21858
21759
  "ofType": null
21859
21760
  }
21860
21761
  },
@@ -21862,12 +21763,12 @@
21862
21763
  "deprecationReason": null
21863
21764
  },
21864
21765
  {
21865
- "name": "updateUpSell",
21866
- "description": "Update an existing up-sell offer.\nProduct IDs are resolved automatically when variant IDs change.",
21766
+ "name": "updateCrossSell",
21767
+ "description": "Update an existing cross-sell offer.\nTargets and actions are replaced entirely when provided.",
21867
21768
  "args": [
21868
21769
  {
21869
21770
  "name": "id",
21870
- "description": "Up-sell ID.",
21771
+ "description": "Cross-sell ID.",
21871
21772
  "type": {
21872
21773
  "kind": "NON_NULL",
21873
21774
  "name": null,
@@ -21881,13 +21782,13 @@
21881
21782
  },
21882
21783
  {
21883
21784
  "name": "input",
21884
- "description": "Up-sell data.",
21785
+ "description": "Cross-sell data.",
21885
21786
  "type": {
21886
21787
  "kind": "NON_NULL",
21887
21788
  "name": null,
21888
21789
  "ofType": {
21889
21790
  "kind": "INPUT_OBJECT",
21890
- "name": "UpdateUpSellInput",
21791
+ "name": "UpdateCrossSellInput",
21891
21792
  "ofType": null
21892
21793
  }
21893
21794
  },
@@ -21899,7 +21800,7 @@
21899
21800
  "name": null,
21900
21801
  "ofType": {
21901
21802
  "kind": "OBJECT",
21902
- "name": "UpSell",
21803
+ "name": "CrossSell",
21903
21804
  "ofType": null
21904
21805
  }
21905
21806
  },
@@ -21907,12 +21808,12 @@
21907
21808
  "deprecationReason": null
21908
21809
  },
21909
21810
  {
21910
- "name": "deleteUpSells",
21911
- "description": "Delete one or more up-sell offers.",
21811
+ "name": "deleteCrossSells",
21812
+ "description": "Delete one or more cross-sell offers.",
21912
21813
  "args": [
21913
21814
  {
21914
21815
  "name": "ids",
21915
- "description": "Up-sell IDs to delete.",
21816
+ "description": "Cross-sell IDs to delete.",
21916
21817
  "type": {
21917
21818
  "kind": "NON_NULL",
21918
21819
  "name": null,
@@ -21946,12 +21847,12 @@
21946
21847
  "deprecationReason": null
21947
21848
  },
21948
21849
  {
21949
- "name": "changeUpSellsStatus",
21950
- "description": "Bulk activate or deactivate up-sell offers.",
21850
+ "name": "changeCrossSellsStatus",
21851
+ "description": "Bulk activate or deactivate cross-sell offers.",
21951
21852
  "args": [
21952
21853
  {
21953
21854
  "name": "ids",
21954
- "description": "Up-sell IDs.",
21855
+ "description": "Cross-sell IDs.",
21955
21856
  "type": {
21956
21857
  "kind": "NON_NULL",
21957
21858
  "name": null,
@@ -21999,12 +21900,12 @@
21999
21900
  "deprecationReason": null
22000
21901
  },
22001
21902
  {
22002
- "name": "duplicateUpSells",
22003
- "description": "Duplicate one or more up-sell offers.",
21903
+ "name": "duplicateCrossSells",
21904
+ "description": "Duplicate one or more cross-sell offers.",
22004
21905
  "args": [
22005
21906
  {
22006
21907
  "name": "ids",
22007
- "description": "Up-sell IDs to duplicate.",
21908
+ "description": "Cross-sell IDs to duplicate.",
22008
21909
  "type": {
22009
21910
  "kind": "NON_NULL",
22010
21911
  "name": null,
@@ -22036,7 +21937,7 @@
22036
21937
  "name": null,
22037
21938
  "ofType": {
22038
21939
  "kind": "OBJECT",
22039
- "name": "UpSell",
21940
+ "name": "CrossSell",
22040
21941
  "ofType": null
22041
21942
  }
22042
21943
  }
@@ -22046,49 +21947,18 @@
22046
21947
  "deprecationReason": null
22047
21948
  },
22048
21949
  {
22049
- "name": "saveBumpCartSettings",
22050
- "description": "Save BumpCart settings. App must be installed.",
22051
- "args": [
22052
- {
22053
- "name": "input",
22054
- "description": "BumpCart settings data.",
22055
- "type": {
22056
- "kind": "NON_NULL",
22057
- "name": null,
22058
- "ofType": {
22059
- "kind": "INPUT_OBJECT",
22060
- "name": "BumpCartSettingsInput",
22061
- "ofType": null
22062
- }
22063
- },
22064
- "defaultValue": null
22065
- }
22066
- ],
22067
- "type": {
22068
- "kind": "NON_NULL",
22069
- "name": null,
22070
- "ofType": {
22071
- "kind": "OBJECT",
22072
- "name": "BumpCartSettings",
22073
- "ofType": null
22074
- }
22075
- },
22076
- "isDeprecated": false,
22077
- "deprecationReason": null
22078
- },
22079
- {
22080
- "name": "createCartRule",
22081
- "description": "Create a new cart rule.",
21950
+ "name": "createUpSell",
21951
+ "description": "Create a new up-sell offer.\nProduct IDs are resolved automatically from variant IDs.\nOptionally links to a parent offer for tree building.",
22082
21952
  "args": [
22083
21953
  {
22084
21954
  "name": "input",
22085
- "description": "Cart rule data.",
21955
+ "description": "Up-sell data.",
22086
21956
  "type": {
22087
21957
  "kind": "NON_NULL",
22088
21958
  "name": null,
22089
21959
  "ofType": {
22090
21960
  "kind": "INPUT_OBJECT",
22091
- "name": "CartRuleInput",
21961
+ "name": "CreateUpSellInput",
22092
21962
  "ofType": null
22093
21963
  }
22094
21964
  },
@@ -22100,7 +21970,7 @@
22100
21970
  "name": null,
22101
21971
  "ofType": {
22102
21972
  "kind": "OBJECT",
22103
- "name": "CartRuleType",
21973
+ "name": "UpSell",
22104
21974
  "ofType": null
22105
21975
  }
22106
21976
  },
@@ -22108,12 +21978,12 @@
22108
21978
  "deprecationReason": null
22109
21979
  },
22110
21980
  {
22111
- "name": "updateCartRule",
22112
- "description": "Update an existing cart rule. Replaces all rows.",
21981
+ "name": "updateUpSell",
21982
+ "description": "Update an existing up-sell offer.\nProduct IDs are resolved automatically when variant IDs change.",
22113
21983
  "args": [
22114
21984
  {
22115
21985
  "name": "id",
22116
- "description": "Cart rule ID.",
21986
+ "description": "Up-sell ID.",
22117
21987
  "type": {
22118
21988
  "kind": "NON_NULL",
22119
21989
  "name": null,
@@ -22127,13 +21997,13 @@
22127
21997
  },
22128
21998
  {
22129
21999
  "name": "input",
22130
- "description": "Cart rule data.",
22000
+ "description": "Up-sell data.",
22131
22001
  "type": {
22132
22002
  "kind": "NON_NULL",
22133
22003
  "name": null,
22134
22004
  "ofType": {
22135
22005
  "kind": "INPUT_OBJECT",
22136
- "name": "CartRuleInput",
22006
+ "name": "UpdateUpSellInput",
22137
22007
  "ofType": null
22138
22008
  }
22139
22009
  },
@@ -22145,7 +22015,7 @@
22145
22015
  "name": null,
22146
22016
  "ofType": {
22147
22017
  "kind": "OBJECT",
22148
- "name": "CartRuleType",
22018
+ "name": "UpSell",
22149
22019
  "ofType": null
22150
22020
  }
22151
22021
  },
@@ -22153,19 +22023,27 @@
22153
22023
  "deprecationReason": null
22154
22024
  },
22155
22025
  {
22156
- "name": "deleteCartRule",
22157
- "description": "Delete a cart rule (soft delete).",
22026
+ "name": "deleteUpSells",
22027
+ "description": "Delete one or more up-sell offers.",
22158
22028
  "args": [
22159
22029
  {
22160
- "name": "id",
22161
- "description": "Cart rule ID.",
22030
+ "name": "ids",
22031
+ "description": "Up-sell IDs to delete.",
22162
22032
  "type": {
22163
22033
  "kind": "NON_NULL",
22164
22034
  "name": null,
22165
22035
  "ofType": {
22166
- "kind": "SCALAR",
22167
- "name": "ID",
22168
- "ofType": null
22036
+ "kind": "LIST",
22037
+ "name": null,
22038
+ "ofType": {
22039
+ "kind": "NON_NULL",
22040
+ "name": null,
22041
+ "ofType": {
22042
+ "kind": "SCALAR",
22043
+ "name": "ID",
22044
+ "ofType": null
22045
+ }
22046
+ }
22169
22047
  }
22170
22048
  },
22171
22049
  "defaultValue": null
@@ -22184,26 +22062,34 @@
22184
22062
  "deprecationReason": null
22185
22063
  },
22186
22064
  {
22187
- "name": "changeCartRuleStatus",
22188
- "description": "Change the status of a cart rule.",
22065
+ "name": "changeUpSellsStatus",
22066
+ "description": "Bulk activate or deactivate up-sell offers.",
22189
22067
  "args": [
22190
22068
  {
22191
- "name": "id",
22192
- "description": "Cart rule ID.",
22069
+ "name": "ids",
22070
+ "description": "Up-sell IDs.",
22193
22071
  "type": {
22194
22072
  "kind": "NON_NULL",
22195
22073
  "name": null,
22196
22074
  "ofType": {
22197
- "kind": "SCALAR",
22198
- "name": "ID",
22199
- "ofType": null
22075
+ "kind": "LIST",
22076
+ "name": null,
22077
+ "ofType": {
22078
+ "kind": "NON_NULL",
22079
+ "name": null,
22080
+ "ofType": {
22081
+ "kind": "SCALAR",
22082
+ "name": "ID",
22083
+ "ofType": null
22084
+ }
22085
+ }
22200
22086
  }
22201
22087
  },
22202
22088
  "defaultValue": null
22203
22089
  },
22204
22090
  {
22205
22091
  "name": "status",
22206
- "description": "New status: 0=inactive, 1=active.",
22092
+ "description": "New status (1 = active, 0 = inactive).",
22207
22093
  "type": {
22208
22094
  "kind": "NON_NULL",
22209
22095
  "name": null,
@@ -22220,8 +22106,8 @@
22220
22106
  "kind": "NON_NULL",
22221
22107
  "name": null,
22222
22108
  "ofType": {
22223
- "kind": "OBJECT",
22224
- "name": "CartRuleType",
22109
+ "kind": "SCALAR",
22110
+ "name": "Boolean",
22225
22111
  "ofType": null
22226
22112
  }
22227
22113
  },
@@ -22229,18 +22115,65 @@
22229
22115
  "deprecationReason": null
22230
22116
  },
22231
22117
  {
22232
- "name": "sortCartRules",
22233
- "description": "Update sort order for multiple cart rules.",
22118
+ "name": "duplicateUpSells",
22119
+ "description": "Duplicate one or more up-sell offers.",
22120
+ "args": [
22121
+ {
22122
+ "name": "ids",
22123
+ "description": "Up-sell IDs to duplicate.",
22124
+ "type": {
22125
+ "kind": "NON_NULL",
22126
+ "name": null,
22127
+ "ofType": {
22128
+ "kind": "LIST",
22129
+ "name": null,
22130
+ "ofType": {
22131
+ "kind": "NON_NULL",
22132
+ "name": null,
22133
+ "ofType": {
22134
+ "kind": "SCALAR",
22135
+ "name": "ID",
22136
+ "ofType": null
22137
+ }
22138
+ }
22139
+ }
22140
+ },
22141
+ "defaultValue": null
22142
+ }
22143
+ ],
22144
+ "type": {
22145
+ "kind": "NON_NULL",
22146
+ "name": null,
22147
+ "ofType": {
22148
+ "kind": "LIST",
22149
+ "name": null,
22150
+ "ofType": {
22151
+ "kind": "NON_NULL",
22152
+ "name": null,
22153
+ "ofType": {
22154
+ "kind": "OBJECT",
22155
+ "name": "UpSell",
22156
+ "ofType": null
22157
+ }
22158
+ }
22159
+ }
22160
+ },
22161
+ "isDeprecated": false,
22162
+ "deprecationReason": null
22163
+ },
22164
+ {
22165
+ "name": "saveBumpCartSettings",
22166
+ "description": "Save BumpCart settings. App must be installed.",
22234
22167
  "args": [
22235
22168
  {
22236
22169
  "name": "input",
22237
- "description": "Input with ordered array of rule IDs.",
22170
+ "description": "BumpCart settings data.",
22238
22171
  "type": {
22239
22172
  "kind": "NON_NULL",
22240
22173
  "name": null,
22241
22174
  "ofType": {
22242
22175
  "kind": "INPUT_OBJECT",
22243
- "name": "CartRuleSortInput",
22176
+ "name": "BumpCartSettingsInput",
22244
22177
  "ofType": null
22245
22178
  }
22246
22179
  },
@@ -22251,8 +22184,8 @@
22251
22184
  "kind": "NON_NULL",
22252
22185
  "name": null,
22253
22186
  "ofType": {
22254
- "kind": "SCALAR",
22255
- "name": "Boolean",
22187
+ "kind": "OBJECT",
22188
+ "name": "BumpCartSettings",
22256
22189
  "ofType": null
22257
22190
  }
22258
22191
  },
@@ -22260,18 +22193,18 @@
22260
22193
  "deprecationReason": null
22261
22194
  },
22262
22195
  {
22263
- "name": "createProductBanner",
22264
- "description": "Create a new product banner.",
22196
+ "name": "createCartRule",
22197
+ "description": "Create a new cart rule.",
22265
22198
  "args": [
22266
22199
  {
22267
22200
  "name": "input",
22268
- "description": "Banner input data.",
22201
+ "description": "Cart rule data.",
22269
22202
  "type": {
22270
22203
  "kind": "NON_NULL",
22271
22204
  "name": null,
22272
22205
  "ofType": {
22273
22206
  "kind": "INPUT_OBJECT",
22274
- "name": "CreateProductBannerInput",
22207
+ "name": "CartRuleInput",
22275
22208
  "ofType": null
22276
22209
  }
22277
22210
  },
@@ -22283,7 +22216,7 @@
22283
22216
  "name": null,
22284
22217
  "ofType": {
22285
22218
  "kind": "OBJECT",
22286
- "name": "ProductBannerLabelMutationResult",
22219
+ "name": "CartRuleType",
22287
22220
  "ofType": null
22288
22221
  }
22289
22222
  },
@@ -22291,12 +22224,12 @@
22291
22224
  "deprecationReason": null
22292
22225
  },
22293
22226
  {
22294
- "name": "updateProductBanner",
22295
- "description": "Update an existing product banner.",
22227
+ "name": "updateCartRule",
22228
+ "description": "Update an existing cart rule. Replaces all rows.",
22296
22229
  "args": [
22297
22230
  {
22298
22231
  "name": "id",
22299
- "description": "Banner ID.",
22232
+ "description": "Cart rule ID.",
22300
22233
  "type": {
22301
22234
  "kind": "NON_NULL",
22302
22235
  "name": null,
@@ -22310,13 +22243,13 @@
22310
22243
  },
22311
22244
  {
22312
22245
  "name": "input",
22313
- "description": "Banner input data.",
22246
+ "description": "Cart rule data.",
22314
22247
  "type": {
22315
22248
  "kind": "NON_NULL",
22316
22249
  "name": null,
22317
22250
  "ofType": {
22318
22251
  "kind": "INPUT_OBJECT",
22319
- "name": "UpdateProductBannerInput",
22252
+ "name": "CartRuleInput",
22320
22253
  "ofType": null
22321
22254
  }
22322
22255
  },
@@ -22328,7 +22261,7 @@
22328
22261
  "name": null,
22329
22262
  "ofType": {
22330
22263
  "kind": "OBJECT",
22331
- "name": "ProductBannerLabelMutationResult",
22264
+ "name": "CartRuleType",
22332
22265
  "ofType": null
22333
22266
  }
22334
22267
  },
@@ -22336,27 +22269,19 @@
22336
22269
  "deprecationReason": null
22337
22270
  },
22338
22271
  {
22339
- "name": "deleteProductBanners",
22340
- "description": "Delete product banners by IDs.",
22272
+ "name": "deleteCartRule",
22273
+ "description": "Delete a cart rule (soft delete).",
22341
22274
  "args": [
22342
22275
  {
22343
- "name": "ids",
22344
- "description": "Banner IDs to delete.",
22276
+ "name": "id",
22277
+ "description": "Cart rule ID.",
22345
22278
  "type": {
22346
22279
  "kind": "NON_NULL",
22347
22280
  "name": null,
22348
22281
  "ofType": {
22349
- "kind": "LIST",
22350
- "name": null,
22351
- "ofType": {
22352
- "kind": "NON_NULL",
22353
- "name": null,
22354
- "ofType": {
22355
- "kind": "SCALAR",
22356
- "name": "ID",
22357
- "ofType": null
22358
- }
22359
- }
22282
+ "kind": "SCALAR",
22283
+ "name": "ID",
22284
+ "ofType": null
22360
22285
  }
22361
22286
  },
22362
22287
  "defaultValue": null
@@ -22366,8 +22291,8 @@
22366
22291
  "kind": "NON_NULL",
22367
22292
  "name": null,
22368
22293
  "ofType": {
22369
- "kind": "OBJECT",
22370
- "name": "ProductBannerLabelMutationResult",
22294
+ "kind": "SCALAR",
22295
+ "name": "Boolean",
22371
22296
  "ofType": null
22372
22297
  }
22373
22298
  },
@@ -22375,34 +22300,26 @@
22375
22300
  "deprecationReason": null
22376
22301
  },
22377
22302
  {
22378
- "name": "changeProductBannerStatus",
22379
- "description": "Change status of product banners.",
22303
+ "name": "changeCartRuleStatus",
22304
+ "description": "Change the status of a cart rule.",
22380
22305
  "args": [
22381
22306
  {
22382
- "name": "ids",
22383
- "description": "Banner IDs.",
22307
+ "name": "id",
22308
+ "description": "Cart rule ID.",
22384
22309
  "type": {
22385
22310
  "kind": "NON_NULL",
22386
22311
  "name": null,
22387
22312
  "ofType": {
22388
- "kind": "LIST",
22389
- "name": null,
22390
- "ofType": {
22391
- "kind": "NON_NULL",
22392
- "name": null,
22393
- "ofType": {
22394
- "kind": "SCALAR",
22395
- "name": "ID",
22396
- "ofType": null
22397
- }
22398
- }
22313
+ "kind": "SCALAR",
22314
+ "name": "ID",
22315
+ "ofType": null
22399
22316
  }
22400
22317
  },
22401
22318
  "defaultValue": null
22402
22319
  },
22403
22320
  {
22404
22321
  "name": "status",
22405
- "description": "New status (0 = inactive, 1 = active).",
22322
+ "description": "New status: 0=inactive, 1=active.",
22406
22323
  "type": {
22407
22324
  "kind": "NON_NULL",
22408
22325
  "name": null,
@@ -22420,7 +22337,7 @@
22420
22337
  "name": null,
22421
22338
  "ofType": {
22422
22339
  "kind": "OBJECT",
22423
- "name": "ProductBannerLabelMutationResult",
22340
+ "name": "CartRuleType",
22424
22341
  "ofType": null
22425
22342
  }
22426
22343
  },
@@ -22428,18 +22345,49 @@
22428
22345
  "deprecationReason": null
22429
22346
  },
22430
22347
  {
22431
- "name": "createProductLabel",
22432
- "description": "Create a new product label.",
22348
+ "name": "sortCartRules",
22349
+ "description": "Update sort order for multiple cart rules.",
22433
22350
  "args": [
22434
22351
  {
22435
22352
  "name": "input",
22436
- "description": "Label input data.",
22353
+ "description": "Input with ordered array of rule IDs.",
22437
22354
  "type": {
22438
22355
  "kind": "NON_NULL",
22439
22356
  "name": null,
22440
22357
  "ofType": {
22441
22358
  "kind": "INPUT_OBJECT",
22442
- "name": "CreateProductLabelInput",
22359
+ "name": "CartRuleSortInput",
22360
+ "ofType": null
22361
+ }
22362
+ },
22363
+ "defaultValue": null
22364
+ }
22365
+ ],
22366
+ "type": {
22367
+ "kind": "NON_NULL",
22368
+ "name": null,
22369
+ "ofType": {
22370
+ "kind": "SCALAR",
22371
+ "name": "Boolean",
22372
+ "ofType": null
22373
+ }
22374
+ },
22375
+ "isDeprecated": false,
22376
+ "deprecationReason": null
22377
+ },
22378
+ {
22379
+ "name": "createProductBanner",
22380
+ "description": "Create a new product banner.",
22381
+ "args": [
22382
+ {
22383
+ "name": "input",
22384
+ "description": "Banner input data.",
22385
+ "type": {
22386
+ "kind": "NON_NULL",
22387
+ "name": null,
22388
+ "ofType": {
22389
+ "kind": "INPUT_OBJECT",
22390
+ "name": "CreateProductBannerInput",
22443
22391
  "ofType": null
22444
22392
  }
22445
22393
  },
@@ -22459,12 +22407,12 @@
22459
22407
  "deprecationReason": null
22460
22408
  },
22461
22409
  {
22462
- "name": "updateProductLabel",
22463
- "description": "Update an existing product label.",
22410
+ "name": "updateProductBanner",
22411
+ "description": "Update an existing product banner.",
22464
22412
  "args": [
22465
22413
  {
22466
22414
  "name": "id",
22467
- "description": "Label ID.",
22415
+ "description": "Banner ID.",
22468
22416
  "type": {
22469
22417
  "kind": "NON_NULL",
22470
22418
  "name": null,
@@ -22478,13 +22426,13 @@
22478
22426
  },
22479
22427
  {
22480
22428
  "name": "input",
22481
- "description": "Label input data.",
22429
+ "description": "Banner input data.",
22482
22430
  "type": {
22483
22431
  "kind": "NON_NULL",
22484
22432
  "name": null,
22485
22433
  "ofType": {
22486
22434
  "kind": "INPUT_OBJECT",
22487
- "name": "UpdateProductLabelInput",
22435
+ "name": "UpdateProductBannerInput",
22488
22436
  "ofType": null
22489
22437
  }
22490
22438
  },
@@ -22504,12 +22452,12 @@
22504
22452
  "deprecationReason": null
22505
22453
  },
22506
22454
  {
22507
- "name": "deleteProductLabels",
22508
- "description": "Delete product labels by IDs.",
22455
+ "name": "deleteProductBanners",
22456
+ "description": "Delete product banners by IDs.",
22509
22457
  "args": [
22510
22458
  {
22511
22459
  "name": "ids",
22512
- "description": "Label IDs to delete.",
22460
+ "description": "Banner IDs to delete.",
22513
22461
  "type": {
22514
22462
  "kind": "NON_NULL",
22515
22463
  "name": null,
@@ -22543,12 +22491,12 @@
22543
22491
  "deprecationReason": null
22544
22492
  },
22545
22493
  {
22546
- "name": "changeProductLabelStatus",
22547
- "description": "Change status of product labels.",
22494
+ "name": "changeProductBannerStatus",
22495
+ "description": "Change status of product banners.",
22548
22496
  "args": [
22549
22497
  {
22550
22498
  "name": "ids",
22551
- "description": "Label IDs.",
22499
+ "description": "Banner IDs.",
22552
22500
  "type": {
22553
22501
  "kind": "NON_NULL",
22554
22502
  "name": null,
@@ -22596,18 +22544,18 @@
22596
22544
  "deprecationReason": null
22597
22545
  },
22598
22546
  {
22599
- "name": "createSegment",
22600
- "description": "Create a new segment. Name is auto-generated from conditions. A background worker builds membership.\nIMPORTANT: Call `segmentConditions` first to discover valid condition keys and nesting rules.\nUse each condition's `key` field (full module ID like 'marketing.segments.conditions.order'), NOT the short `id`.",
22547
+ "name": "createProductLabel",
22548
+ "description": "Create a new product label.",
22601
22549
  "args": [
22602
22550
  {
22603
22551
  "name": "input",
22604
- "description": "Segment creation input.",
22552
+ "description": "Label input data.",
22605
22553
  "type": {
22606
22554
  "kind": "NON_NULL",
22607
22555
  "name": null,
22608
22556
  "ofType": {
22609
22557
  "kind": "INPUT_OBJECT",
22610
- "name": "CreateSegmentInput",
22558
+ "name": "CreateProductLabelInput",
22611
22559
  "ofType": null
22612
22560
  }
22613
22561
  },
@@ -22619,7 +22567,7 @@
22619
22567
  "name": null,
22620
22568
  "ofType": {
22621
22569
  "kind": "OBJECT",
22622
- "name": "Segment",
22570
+ "name": "ProductBannerLabelMutationResult",
22623
22571
  "ofType": null
22624
22572
  }
22625
22573
  },
@@ -22627,12 +22575,12 @@
22627
22575
  "deprecationReason": null
22628
22576
  },
22629
22577
  {
22630
- "name": "updateSegment",
22631
- "description": "Update a segment's conditions. Triggers a rebuild of membership by the background worker.",
22578
+ "name": "updateProductLabel",
22579
+ "description": "Update an existing product label.",
22632
22580
  "args": [
22633
22581
  {
22634
22582
  "name": "id",
22635
- "description": "Segment ID.",
22583
+ "description": "Label ID.",
22636
22584
  "type": {
22637
22585
  "kind": "NON_NULL",
22638
22586
  "name": null,
@@ -22646,13 +22594,13 @@
22646
22594
  },
22647
22595
  {
22648
22596
  "name": "input",
22649
- "description": "Segment update input.",
22597
+ "description": "Label input data.",
22650
22598
  "type": {
22651
22599
  "kind": "NON_NULL",
22652
22600
  "name": null,
22653
22601
  "ofType": {
22654
22602
  "kind": "INPUT_OBJECT",
22655
- "name": "UpdateSegmentInput",
22603
+ "name": "UpdateProductLabelInput",
22656
22604
  "ofType": null
22657
22605
  }
22658
22606
  },
@@ -22664,38 +22612,7 @@
22664
22612
  "name": null,
22665
22613
  "ofType": {
22666
22614
  "kind": "OBJECT",
22667
- "name": "Segment",
22668
- "ofType": null
22669
- }
22670
- },
22671
- "isDeprecated": false,
22672
- "deprecationReason": null
22673
- },
22674
- {
22675
- "name": "deleteSegment",
22676
- "description": "Delete a segment (soft delete).",
22677
- "args": [
22678
- {
22679
- "name": "id",
22680
- "description": "Segment ID.",
22681
- "type": {
22682
- "kind": "NON_NULL",
22683
- "name": null,
22684
- "ofType": {
22685
- "kind": "SCALAR",
22686
- "name": "ID",
22687
- "ofType": null
22688
- }
22689
- },
22690
- "defaultValue": null
22691
- }
22692
- ],
22693
- "type": {
22694
- "kind": "NON_NULL",
22695
- "name": null,
22696
- "ofType": {
22697
- "kind": "SCALAR",
22698
- "name": "Boolean",
22615
+ "name": "ProductBannerLabelMutationResult",
22699
22616
  "ofType": null
22700
22617
  }
22701
22618
  },
@@ -22703,12 +22620,211 @@
22703
22620
  "deprecationReason": null
22704
22621
  },
22705
22622
  {
22706
- "name": "deleteSegments",
22707
- "description": "Delete multiple segments (soft delete).",
22623
+ "name": "deleteProductLabels",
22624
+ "description": "Delete product labels by IDs.",
22708
22625
  "args": [
22709
22626
  {
22710
22627
  "name": "ids",
22711
- "description": "Segment IDs.",
22628
+ "description": "Label IDs to delete.",
22629
+ "type": {
22630
+ "kind": "NON_NULL",
22631
+ "name": null,
22632
+ "ofType": {
22633
+ "kind": "LIST",
22634
+ "name": null,
22635
+ "ofType": {
22636
+ "kind": "NON_NULL",
22637
+ "name": null,
22638
+ "ofType": {
22639
+ "kind": "SCALAR",
22640
+ "name": "ID",
22641
+ "ofType": null
22642
+ }
22643
+ }
22644
+ }
22645
+ },
22646
+ "defaultValue": null
22647
+ }
22648
+ ],
22649
+ "type": {
22650
+ "kind": "NON_NULL",
22651
+ "name": null,
22652
+ "ofType": {
22653
+ "kind": "OBJECT",
22654
+ "name": "ProductBannerLabelMutationResult",
22655
+ "ofType": null
22656
+ }
22657
+ },
22658
+ "isDeprecated": false,
22659
+ "deprecationReason": null
22660
+ },
22661
+ {
22662
+ "name": "changeProductLabelStatus",
22663
+ "description": "Change status of product labels.",
22664
+ "args": [
22665
+ {
22666
+ "name": "ids",
22667
+ "description": "Label IDs.",
22668
+ "type": {
22669
+ "kind": "NON_NULL",
22670
+ "name": null,
22671
+ "ofType": {
22672
+ "kind": "LIST",
22673
+ "name": null,
22674
+ "ofType": {
22675
+ "kind": "NON_NULL",
22676
+ "name": null,
22677
+ "ofType": {
22678
+ "kind": "SCALAR",
22679
+ "name": "ID",
22680
+ "ofType": null
22681
+ }
22682
+ }
22683
+ }
22684
+ },
22685
+ "defaultValue": null
22686
+ },
22687
+ {
22688
+ "name": "status",
22689
+ "description": "New status (0 = inactive, 1 = active).",
22690
+ "type": {
22691
+ "kind": "NON_NULL",
22692
+ "name": null,
22693
+ "ofType": {
22694
+ "kind": "SCALAR",
22695
+ "name": "Int",
22696
+ "ofType": null
22697
+ }
22698
+ },
22699
+ "defaultValue": null
22700
+ }
22701
+ ],
22702
+ "type": {
22703
+ "kind": "NON_NULL",
22704
+ "name": null,
22705
+ "ofType": {
22706
+ "kind": "OBJECT",
22707
+ "name": "ProductBannerLabelMutationResult",
22708
+ "ofType": null
22709
+ }
22710
+ },
22711
+ "isDeprecated": false,
22712
+ "deprecationReason": null
22713
+ },
22714
+ {
22715
+ "name": "createSegment",
22716
+ "description": "Create a new segment. Name is auto-generated from conditions. A background worker builds membership.\nIMPORTANT: Call `segmentConditions` first to discover valid condition keys and nesting rules.\nUse each condition's `key` field (full module ID like 'marketing.segments.conditions.order'), NOT the short `id`.",
22717
+ "args": [
22718
+ {
22719
+ "name": "input",
22720
+ "description": "Segment creation input.",
22721
+ "type": {
22722
+ "kind": "NON_NULL",
22723
+ "name": null,
22724
+ "ofType": {
22725
+ "kind": "INPUT_OBJECT",
22726
+ "name": "CreateSegmentInput",
22727
+ "ofType": null
22728
+ }
22729
+ },
22730
+ "defaultValue": null
22731
+ }
22732
+ ],
22733
+ "type": {
22734
+ "kind": "NON_NULL",
22735
+ "name": null,
22736
+ "ofType": {
22737
+ "kind": "OBJECT",
22738
+ "name": "Segment",
22739
+ "ofType": null
22740
+ }
22741
+ },
22742
+ "isDeprecated": false,
22743
+ "deprecationReason": null
22744
+ },
22745
+ {
22746
+ "name": "updateSegment",
22747
+ "description": "Update a segment's conditions. Triggers a rebuild of membership by the background worker.",
22748
+ "args": [
22749
+ {
22750
+ "name": "id",
22751
+ "description": "Segment ID.",
22752
+ "type": {
22753
+ "kind": "NON_NULL",
22754
+ "name": null,
22755
+ "ofType": {
22756
+ "kind": "SCALAR",
22757
+ "name": "ID",
22758
+ "ofType": null
22759
+ }
22760
+ },
22761
+ "defaultValue": null
22762
+ },
22763
+ {
22764
+ "name": "input",
22765
+ "description": "Segment update input.",
22766
+ "type": {
22767
+ "kind": "NON_NULL",
22768
+ "name": null,
22769
+ "ofType": {
22770
+ "kind": "INPUT_OBJECT",
22771
+ "name": "UpdateSegmentInput",
22772
+ "ofType": null
22773
+ }
22774
+ },
22775
+ "defaultValue": null
22776
+ }
22777
+ ],
22778
+ "type": {
22779
+ "kind": "NON_NULL",
22780
+ "name": null,
22781
+ "ofType": {
22782
+ "kind": "OBJECT",
22783
+ "name": "Segment",
22784
+ "ofType": null
22785
+ }
22786
+ },
22787
+ "isDeprecated": false,
22788
+ "deprecationReason": null
22789
+ },
22790
+ {
22791
+ "name": "deleteSegment",
22792
+ "description": "Delete a segment (soft delete).",
22793
+ "args": [
22794
+ {
22795
+ "name": "id",
22796
+ "description": "Segment ID.",
22797
+ "type": {
22798
+ "kind": "NON_NULL",
22799
+ "name": null,
22800
+ "ofType": {
22801
+ "kind": "SCALAR",
22802
+ "name": "ID",
22803
+ "ofType": null
22804
+ }
22805
+ },
22806
+ "defaultValue": null
22807
+ }
22808
+ ],
22809
+ "type": {
22810
+ "kind": "NON_NULL",
22811
+ "name": null,
22812
+ "ofType": {
22813
+ "kind": "SCALAR",
22814
+ "name": "Boolean",
22815
+ "ofType": null
22816
+ }
22817
+ },
22818
+ "isDeprecated": false,
22819
+ "deprecationReason": null
22820
+ },
22821
+ {
22822
+ "name": "deleteSegments",
22823
+ "description": "Delete multiple segments (soft delete).",
22824
+ "args": [
22825
+ {
22826
+ "name": "ids",
22827
+ "description": "Segment IDs.",
22712
22828
  "type": {
22713
22829
  "kind": "NON_NULL",
22714
22830
  "name": null,
@@ -56300,6 +56416,1027 @@
56300
56416
  "enumValues": null,
56301
56417
  "possibleTypes": null
56302
56418
  },
56419
+ {
56420
+ "kind": "ENUM",
56421
+ "name": "CustomerEmailType",
56422
+ "description": "Delivery classification for an ad-hoc customer email. Drives consent filtering on dispatch.",
56423
+ "fields": null,
56424
+ "inputFields": null,
56425
+ "interfaces": null,
56426
+ "enumValues": [
56427
+ {
56428
+ "name": "TRANSACTIONAL",
56429
+ "description": "Transactional / service message. Sent regardless of marketing opt-in. Use for refund explanations, account notices, order follow-ups.",
56430
+ "isDeprecated": false,
56431
+ "deprecationReason": null
56432
+ },
56433
+ {
56434
+ "name": "MARKETING",
56435
+ "description": "Marketing / promotional. Only delivered to customers with marketing opt-in (Customer.marketingPrefs.marketing = yes). Skipped recipients are reported in the payload.",
56436
+ "isDeprecated": false,
56437
+ "deprecationReason": null
56438
+ }
56439
+ ],
56440
+ "possibleTypes": null
56441
+ },
56442
+ {
56443
+ "kind": "ENUM",
56444
+ "name": "CustomerEmailJobStatus",
56445
+ "description": "Lifecycle state of a customer-email batch.",
56446
+ "fields": null,
56447
+ "inputFields": null,
56448
+ "interfaces": null,
56449
+ "enumValues": [
56450
+ {
56451
+ "name": "PENDING",
56452
+ "description": "Batch created, jobs not yet picked up by a worker.",
56453
+ "isDeprecated": false,
56454
+ "deprecationReason": null
56455
+ },
56456
+ {
56457
+ "name": "PROCESSING",
56458
+ "description": "Worker is processing at least one job in the batch.",
56459
+ "isDeprecated": false,
56460
+ "deprecationReason": null
56461
+ },
56462
+ {
56463
+ "name": "FINISHED",
56464
+ "description": "All jobs in the batch finished (any mix of successes and failures).",
56465
+ "isDeprecated": false,
56466
+ "deprecationReason": null
56467
+ },
56468
+ {
56469
+ "name": "CANCELLED",
56470
+ "description": "Batch was cancelled before completion.",
56471
+ "isDeprecated": false,
56472
+ "deprecationReason": null
56473
+ }
56474
+ ],
56475
+ "possibleTypes": null
56476
+ },
56477
+ {
56478
+ "kind": "OBJECT",
56479
+ "name": "CustomerEmailJob",
56480
+ "description": "Tracking record for a sendCustomerEmail dispatch. One per mutation call, regardless of recipient count.",
56481
+ "fields": [
56482
+ {
56483
+ "name": "id",
56484
+ "description": "Batch ID (UUID). Persists after completion; use to poll status.",
56485
+ "args": [],
56486
+ "type": {
56487
+ "kind": "NON_NULL",
56488
+ "name": null,
56489
+ "ofType": {
56490
+ "kind": "SCALAR",
56491
+ "name": "ID",
56492
+ "ofType": null
56493
+ }
56494
+ },
56495
+ "isDeprecated": false,
56496
+ "deprecationReason": null
56497
+ },
56498
+ {
56499
+ "name": "status",
56500
+ "description": "Current state.",
56501
+ "args": [],
56502
+ "type": {
56503
+ "kind": "NON_NULL",
56504
+ "name": null,
56505
+ "ofType": {
56506
+ "kind": "ENUM",
56507
+ "name": "CustomerEmailJobStatus",
56508
+ "ofType": null
56509
+ }
56510
+ },
56511
+ "isDeprecated": false,
56512
+ "deprecationReason": null
56513
+ },
56514
+ {
56515
+ "name": "totalJobs",
56516
+ "description": "Total recipients queued (after consent and missing-email filtering).",
56517
+ "args": [],
56518
+ "type": {
56519
+ "kind": "NON_NULL",
56520
+ "name": null,
56521
+ "ofType": {
56522
+ "kind": "SCALAR",
56523
+ "name": "Int",
56524
+ "ofType": null
56525
+ }
56526
+ },
56527
+ "isDeprecated": false,
56528
+ "deprecationReason": null
56529
+ },
56530
+ {
56531
+ "name": "pendingJobs",
56532
+ "description": "Jobs still waiting to run.",
56533
+ "args": [],
56534
+ "type": {
56535
+ "kind": "NON_NULL",
56536
+ "name": null,
56537
+ "ofType": {
56538
+ "kind": "SCALAR",
56539
+ "name": "Int",
56540
+ "ofType": null
56541
+ }
56542
+ },
56543
+ "isDeprecated": false,
56544
+ "deprecationReason": null
56545
+ },
56546
+ {
56547
+ "name": "processedJobs",
56548
+ "description": "Jobs that finished running (both successful and failed). Strict success count is processedJobs - failedJobs.",
56549
+ "args": [],
56550
+ "type": {
56551
+ "kind": "NON_NULL",
56552
+ "name": null,
56553
+ "ofType": {
56554
+ "kind": "SCALAR",
56555
+ "name": "Int",
56556
+ "ofType": null
56557
+ }
56558
+ },
56559
+ "isDeprecated": false,
56560
+ "deprecationReason": null
56561
+ },
56562
+ {
56563
+ "name": "failedJobs",
56564
+ "description": "Jobs that errored. Individual failures don't fail the batch.",
56565
+ "args": [],
56566
+ "type": {
56567
+ "kind": "NON_NULL",
56568
+ "name": null,
56569
+ "ofType": {
56570
+ "kind": "SCALAR",
56571
+ "name": "Int",
56572
+ "ofType": null
56573
+ }
56574
+ },
56575
+ "isDeprecated": false,
56576
+ "deprecationReason": null
56577
+ },
56578
+ {
56579
+ "name": "progress",
56580
+ "description": "Progress percentage (0–100). Computed as processedJobs / totalJobs * 100, or 100 when totalJobs is 0.",
56581
+ "args": [],
56582
+ "type": {
56583
+ "kind": "NON_NULL",
56584
+ "name": null,
56585
+ "ofType": {
56586
+ "kind": "SCALAR",
56587
+ "name": "Int",
56588
+ "ofType": null
56589
+ }
56590
+ },
56591
+ "isDeprecated": false,
56592
+ "deprecationReason": null
56593
+ },
56594
+ {
56595
+ "name": "createdAt",
56596
+ "description": "UTC timestamp the batch was created.",
56597
+ "args": [],
56598
+ "type": {
56599
+ "kind": "NON_NULL",
56600
+ "name": null,
56601
+ "ofType": {
56602
+ "kind": "SCALAR",
56603
+ "name": "DateTime",
56604
+ "ofType": null
56605
+ }
56606
+ },
56607
+ "isDeprecated": false,
56608
+ "deprecationReason": null
56609
+ },
56610
+ {
56611
+ "name": "finishedAt",
56612
+ "description": "UTC timestamp the batch finished, if it has.",
56613
+ "args": [],
56614
+ "type": {
56615
+ "kind": "SCALAR",
56616
+ "name": "DateTime",
56617
+ "ofType": null
56618
+ },
56619
+ "isDeprecated": false,
56620
+ "deprecationReason": null
56621
+ }
56622
+ ],
56623
+ "inputFields": null,
56624
+ "interfaces": [],
56625
+ "enumValues": null,
56626
+ "possibleTypes": null
56627
+ },
56628
+ {
56629
+ "kind": "OBJECT",
56630
+ "name": "CustomerEmailUserError",
56631
+ "description": "Per-error detail for sendCustomerEmail validation failures.",
56632
+ "fields": [
56633
+ {
56634
+ "name": "field",
56635
+ "description": "Path to the offending input field. Empty when the error is global.",
56636
+ "args": [],
56637
+ "type": {
56638
+ "kind": "LIST",
56639
+ "name": null,
56640
+ "ofType": {
56641
+ "kind": "NON_NULL",
56642
+ "name": null,
56643
+ "ofType": {
56644
+ "kind": "SCALAR",
56645
+ "name": "String",
56646
+ "ofType": null
56647
+ }
56648
+ }
56649
+ },
56650
+ "isDeprecated": false,
56651
+ "deprecationReason": null
56652
+ },
56653
+ {
56654
+ "name": "message",
56655
+ "description": "Human-readable error message.",
56656
+ "args": [],
56657
+ "type": {
56658
+ "kind": "NON_NULL",
56659
+ "name": null,
56660
+ "ofType": {
56661
+ "kind": "SCALAR",
56662
+ "name": "String",
56663
+ "ofType": null
56664
+ }
56665
+ },
56666
+ "isDeprecated": false,
56667
+ "deprecationReason": null
56668
+ },
56669
+ {
56670
+ "name": "code",
56671
+ "description": "Machine-readable error code.",
56672
+ "args": [],
56673
+ "type": {
56674
+ "kind": "ENUM",
56675
+ "name": "CustomerEmailErrorCode",
56676
+ "ofType": null
56677
+ },
56678
+ "isDeprecated": false,
56679
+ "deprecationReason": null
56680
+ }
56681
+ ],
56682
+ "inputFields": null,
56683
+ "interfaces": [],
56684
+ "enumValues": null,
56685
+ "possibleTypes": null
56686
+ },
56687
+ {
56688
+ "kind": "ENUM",
56689
+ "name": "CustomerEmailErrorCode",
56690
+ "description": "Enumerated failure modes for sendCustomerEmail.",
56691
+ "fields": null,
56692
+ "inputFields": null,
56693
+ "interfaces": null,
56694
+ "enumValues": [
56695
+ {
56696
+ "name": "NO_RECIPIENTS",
56697
+ "description": "No recipients could be resolved from the supplied targeting.",
56698
+ "isDeprecated": false,
56699
+ "deprecationReason": null
56700
+ },
56701
+ {
56702
+ "name": "BODY_REQUIRED",
56703
+ "description": "Neither html nor text was provided, or both were empty.",
56704
+ "isDeprecated": false,
56705
+ "deprecationReason": null
56706
+ },
56707
+ {
56708
+ "name": "TARGETING_REQUIRED",
56709
+ "description": "None of customer_id / customer_ids / segment_id was supplied.",
56710
+ "isDeprecated": false,
56711
+ "deprecationReason": null
56712
+ },
56713
+ {
56714
+ "name": "TARGETING_EXCLUSIVE",
56715
+ "description": "More than one targeting mode was supplied; exactly one is allowed.",
56716
+ "isDeprecated": false,
56717
+ "deprecationReason": null
56718
+ },
56719
+ {
56720
+ "name": "SUBJECT_REQUIRED",
56721
+ "description": "subject was empty or whitespace.",
56722
+ "isDeprecated": false,
56723
+ "deprecationReason": null
56724
+ },
56725
+ {
56726
+ "name": "INVALID_EMAIL",
56727
+ "description": "reply_to was supplied but not a valid email address.",
56728
+ "isDeprecated": false,
56729
+ "deprecationReason": null
56730
+ }
56731
+ ],
56732
+ "possibleTypes": null
56733
+ },
56734
+ {
56735
+ "kind": "OBJECT",
56736
+ "name": "SendCustomerEmailPayload",
56737
+ "description": "Response for sendCustomerEmail.",
56738
+ "fields": [
56739
+ {
56740
+ "name": "job",
56741
+ "description": "Tracking record. Null when userErrors is non-empty (dispatch did not happen).",
56742
+ "args": [],
56743
+ "type": {
56744
+ "kind": "OBJECT",
56745
+ "name": "CustomerEmailJob",
56746
+ "ofType": null
56747
+ },
56748
+ "isDeprecated": false,
56749
+ "deprecationReason": null
56750
+ },
56751
+ {
56752
+ "name": "skippedByConsent",
56753
+ "description": "Number of customers filtered out because they have not opted in to marketing (only applies when type = MARKETING).",
56754
+ "args": [],
56755
+ "type": {
56756
+ "kind": "NON_NULL",
56757
+ "name": null,
56758
+ "ofType": {
56759
+ "kind": "SCALAR",
56760
+ "name": "Int",
56761
+ "ofType": null
56762
+ }
56763
+ },
56764
+ "isDeprecated": false,
56765
+ "deprecationReason": null
56766
+ },
56767
+ {
56768
+ "name": "skippedByMissingEmail",
56769
+ "description": "Number of customers filtered out because they have no email address on file.",
56770
+ "args": [],
56771
+ "type": {
56772
+ "kind": "NON_NULL",
56773
+ "name": null,
56774
+ "ofType": {
56775
+ "kind": "SCALAR",
56776
+ "name": "Int",
56777
+ "ofType": null
56778
+ }
56779
+ },
56780
+ "isDeprecated": false,
56781
+ "deprecationReason": null
56782
+ },
56783
+ {
56784
+ "name": "complianceHint",
56785
+ "description": "Compliance reminder. Non-null when type = MARKETING — advises the caller to include opt-out wording in the body until auto-injected unsubscribe lands.",
56786
+ "args": [],
56787
+ "type": {
56788
+ "kind": "SCALAR",
56789
+ "name": "String",
56790
+ "ofType": null
56791
+ },
56792
+ "isDeprecated": false,
56793
+ "deprecationReason": null
56794
+ },
56795
+ {
56796
+ "name": "userErrors",
56797
+ "description": "Validation / business-rule errors. Empty on success.",
56798
+ "args": [],
56799
+ "type": {
56800
+ "kind": "NON_NULL",
56801
+ "name": null,
56802
+ "ofType": {
56803
+ "kind": "LIST",
56804
+ "name": null,
56805
+ "ofType": {
56806
+ "kind": "NON_NULL",
56807
+ "name": null,
56808
+ "ofType": {
56809
+ "kind": "OBJECT",
56810
+ "name": "CustomerEmailUserError",
56811
+ "ofType": null
56812
+ }
56813
+ }
56814
+ }
56815
+ },
56816
+ "isDeprecated": false,
56817
+ "deprecationReason": null
56818
+ }
56819
+ ],
56820
+ "inputFields": null,
56821
+ "interfaces": [],
56822
+ "enumValues": null,
56823
+ "possibleTypes": null
56824
+ },
56825
+ {
56826
+ "kind": "INPUT_OBJECT",
56827
+ "name": "SendCustomerEmailInput",
56828
+ "description": "Targeting + content for sendCustomerEmail. Exactly one of customer_id, customer_ids, segment_id must be supplied.",
56829
+ "fields": null,
56830
+ "inputFields": [
56831
+ {
56832
+ "name": "type",
56833
+ "description": "Delivery classification. Drives marketing-consent filtering.",
56834
+ "type": {
56835
+ "kind": "NON_NULL",
56836
+ "name": null,
56837
+ "ofType": {
56838
+ "kind": "ENUM",
56839
+ "name": "CustomerEmailType",
56840
+ "ofType": null
56841
+ }
56842
+ },
56843
+ "defaultValue": null
56844
+ },
56845
+ {
56846
+ "name": "subject",
56847
+ "description": "Email subject. Non-empty.",
56848
+ "type": {
56849
+ "kind": "NON_NULL",
56850
+ "name": null,
56851
+ "ofType": {
56852
+ "kind": "SCALAR",
56853
+ "name": "String",
56854
+ "ofType": null
56855
+ }
56856
+ },
56857
+ "defaultValue": null
56858
+ },
56859
+ {
56860
+ "name": "html",
56861
+ "description": "HTML body. At least one of html / text must be non-empty.",
56862
+ "type": {
56863
+ "kind": "SCALAR",
56864
+ "name": "String",
56865
+ "ofType": null
56866
+ },
56867
+ "defaultValue": null
56868
+ },
56869
+ {
56870
+ "name": "text",
56871
+ "description": "Plain-text body. If provided alongside html, serves as the alternative part. If provided alone, a minimal HTML envelope is generated so all clients render it.",
56872
+ "type": {
56873
+ "kind": "SCALAR",
56874
+ "name": "String",
56875
+ "ofType": null
56876
+ },
56877
+ "defaultValue": null
56878
+ },
56879
+ {
56880
+ "name": "customer_id",
56881
+ "description": "Single recipient by customer ID.",
56882
+ "type": {
56883
+ "kind": "SCALAR",
56884
+ "name": "ID",
56885
+ "ofType": null
56886
+ },
56887
+ "defaultValue": null
56888
+ },
56889
+ {
56890
+ "name": "customer_ids",
56891
+ "description": "Explicit list of customer IDs. Use when agent already has a list from a customers() query.",
56892
+ "type": {
56893
+ "kind": "LIST",
56894
+ "name": null,
56895
+ "ofType": {
56896
+ "kind": "NON_NULL",
56897
+ "name": null,
56898
+ "ofType": {
56899
+ "kind": "SCALAR",
56900
+ "name": "ID",
56901
+ "ofType": null
56902
+ }
56903
+ }
56904
+ },
56905
+ "defaultValue": null
56906
+ },
56907
+ {
56908
+ "name": "segment_id",
56909
+ "description": "Segment ID — resolves to all customers linked to subscribers in the segment. Uses the same subscriber_to_segments join as customers(segment: id).",
56910
+ "type": {
56911
+ "kind": "SCALAR",
56912
+ "name": "ID",
56913
+ "ofType": null
56914
+ },
56915
+ "defaultValue": null
56916
+ },
56917
+ {
56918
+ "name": "reply_to",
56919
+ "description": "Reply-To header override. Defaults to the store's configured site_email.",
56920
+ "type": {
56921
+ "kind": "SCALAR",
56922
+ "name": "String",
56923
+ "ofType": null
56924
+ },
56925
+ "defaultValue": null
56926
+ }
56927
+ ],
56928
+ "interfaces": null,
56929
+ "enumValues": null,
56930
+ "possibleTypes": null
56931
+ },
56932
+ {
56933
+ "kind": "ENUM",
56934
+ "name": "CustomerViberJobStatus",
56935
+ "description": "Lifecycle state of a customer-viber batch. Mirrors CustomerEmailJobStatus.",
56936
+ "fields": null,
56937
+ "inputFields": null,
56938
+ "interfaces": null,
56939
+ "enumValues": [
56940
+ {
56941
+ "name": "PENDING",
56942
+ "description": "Batch created, jobs not yet picked up by a worker.",
56943
+ "isDeprecated": false,
56944
+ "deprecationReason": null
56945
+ },
56946
+ {
56947
+ "name": "PROCESSING",
56948
+ "description": "Worker is processing at least one job in the batch.",
56949
+ "isDeprecated": false,
56950
+ "deprecationReason": null
56951
+ },
56952
+ {
56953
+ "name": "FINISHED",
56954
+ "description": "All jobs in the batch finished (any mix of successes and failures).",
56955
+ "isDeprecated": false,
56956
+ "deprecationReason": null
56957
+ },
56958
+ {
56959
+ "name": "CANCELLED",
56960
+ "description": "Batch was cancelled before completion.",
56961
+ "isDeprecated": false,
56962
+ "deprecationReason": null
56963
+ }
56964
+ ],
56965
+ "possibleTypes": null
56966
+ },
56967
+ {
56968
+ "kind": "OBJECT",
56969
+ "name": "CustomerViberJob",
56970
+ "description": "Tracking record for a sendCustomerViber dispatch.",
56971
+ "fields": [
56972
+ {
56973
+ "name": "id",
56974
+ "description": "Batch ID (UUID). Persists after completion; use to poll status.",
56975
+ "args": [],
56976
+ "type": {
56977
+ "kind": "NON_NULL",
56978
+ "name": null,
56979
+ "ofType": {
56980
+ "kind": "SCALAR",
56981
+ "name": "ID",
56982
+ "ofType": null
56983
+ }
56984
+ },
56985
+ "isDeprecated": false,
56986
+ "deprecationReason": null
56987
+ },
56988
+ {
56989
+ "name": "status",
56990
+ "description": "Current state.",
56991
+ "args": [],
56992
+ "type": {
56993
+ "kind": "NON_NULL",
56994
+ "name": null,
56995
+ "ofType": {
56996
+ "kind": "ENUM",
56997
+ "name": "CustomerViberJobStatus",
56998
+ "ofType": null
56999
+ }
57000
+ },
57001
+ "isDeprecated": false,
57002
+ "deprecationReason": null
57003
+ },
57004
+ {
57005
+ "name": "totalJobs",
57006
+ "description": "Total recipients queued (after consent, missing-phone, and channel filtering).",
57007
+ "args": [],
57008
+ "type": {
57009
+ "kind": "NON_NULL",
57010
+ "name": null,
57011
+ "ofType": {
57012
+ "kind": "SCALAR",
57013
+ "name": "Int",
57014
+ "ofType": null
57015
+ }
57016
+ },
57017
+ "isDeprecated": false,
57018
+ "deprecationReason": null
57019
+ },
57020
+ {
57021
+ "name": "pendingJobs",
57022
+ "description": "Jobs still waiting to run.",
57023
+ "args": [],
57024
+ "type": {
57025
+ "kind": "NON_NULL",
57026
+ "name": null,
57027
+ "ofType": {
57028
+ "kind": "SCALAR",
57029
+ "name": "Int",
57030
+ "ofType": null
57031
+ }
57032
+ },
57033
+ "isDeprecated": false,
57034
+ "deprecationReason": null
57035
+ },
57036
+ {
57037
+ "name": "processedJobs",
57038
+ "description": "Jobs that finished running (both successful and failed). Strict success count is processedJobs - failedJobs.",
57039
+ "args": [],
57040
+ "type": {
57041
+ "kind": "NON_NULL",
57042
+ "name": null,
57043
+ "ofType": {
57044
+ "kind": "SCALAR",
57045
+ "name": "Int",
57046
+ "ofType": null
57047
+ }
57048
+ },
57049
+ "isDeprecated": false,
57050
+ "deprecationReason": null
57051
+ },
57052
+ {
57053
+ "name": "failedJobs",
57054
+ "description": "Jobs that errored — e.g. invalid phone, InfoBip rejected, Viber unsubscribed.",
57055
+ "args": [],
57056
+ "type": {
57057
+ "kind": "NON_NULL",
57058
+ "name": null,
57059
+ "ofType": {
57060
+ "kind": "SCALAR",
57061
+ "name": "Int",
57062
+ "ofType": null
57063
+ }
57064
+ },
57065
+ "isDeprecated": false,
57066
+ "deprecationReason": null
57067
+ },
57068
+ {
57069
+ "name": "progress",
57070
+ "description": "Progress percentage (0–100).",
57071
+ "args": [],
57072
+ "type": {
57073
+ "kind": "NON_NULL",
57074
+ "name": null,
57075
+ "ofType": {
57076
+ "kind": "SCALAR",
57077
+ "name": "Int",
57078
+ "ofType": null
57079
+ }
57080
+ },
57081
+ "isDeprecated": false,
57082
+ "deprecationReason": null
57083
+ },
57084
+ {
57085
+ "name": "createdAt",
57086
+ "description": "UTC timestamp the batch was created.",
57087
+ "args": [],
57088
+ "type": {
57089
+ "kind": "NON_NULL",
57090
+ "name": null,
57091
+ "ofType": {
57092
+ "kind": "SCALAR",
57093
+ "name": "DateTime",
57094
+ "ofType": null
57095
+ }
57096
+ },
57097
+ "isDeprecated": false,
57098
+ "deprecationReason": null
57099
+ },
57100
+ {
57101
+ "name": "finishedAt",
57102
+ "description": "UTC timestamp the batch finished, if it has.",
57103
+ "args": [],
57104
+ "type": {
57105
+ "kind": "SCALAR",
57106
+ "name": "DateTime",
57107
+ "ofType": null
57108
+ },
57109
+ "isDeprecated": false,
57110
+ "deprecationReason": null
57111
+ }
57112
+ ],
57113
+ "inputFields": null,
57114
+ "interfaces": [],
57115
+ "enumValues": null,
57116
+ "possibleTypes": null
57117
+ },
57118
+ {
57119
+ "kind": "OBJECT",
57120
+ "name": "CustomerViberUserError",
57121
+ "description": "Per-error detail for sendCustomerViber validation / precondition failures.",
57122
+ "fields": [
57123
+ {
57124
+ "name": "field",
57125
+ "description": "Path to the offending input field. Empty when the error is global.",
57126
+ "args": [],
57127
+ "type": {
57128
+ "kind": "LIST",
57129
+ "name": null,
57130
+ "ofType": {
57131
+ "kind": "NON_NULL",
57132
+ "name": null,
57133
+ "ofType": {
57134
+ "kind": "SCALAR",
57135
+ "name": "String",
57136
+ "ofType": null
57137
+ }
57138
+ }
57139
+ },
57140
+ "isDeprecated": false,
57141
+ "deprecationReason": null
57142
+ },
57143
+ {
57144
+ "name": "message",
57145
+ "description": "Human-readable error message.",
57146
+ "args": [],
57147
+ "type": {
57148
+ "kind": "NON_NULL",
57149
+ "name": null,
57150
+ "ofType": {
57151
+ "kind": "SCALAR",
57152
+ "name": "String",
57153
+ "ofType": null
57154
+ }
57155
+ },
57156
+ "isDeprecated": false,
57157
+ "deprecationReason": null
57158
+ },
57159
+ {
57160
+ "name": "code",
57161
+ "description": "Machine-readable error code.",
57162
+ "args": [],
57163
+ "type": {
57164
+ "kind": "ENUM",
57165
+ "name": "CustomerViberErrorCode",
57166
+ "ofType": null
57167
+ },
57168
+ "isDeprecated": false,
57169
+ "deprecationReason": null
57170
+ }
57171
+ ],
57172
+ "inputFields": null,
57173
+ "interfaces": [],
57174
+ "enumValues": null,
57175
+ "possibleTypes": null
57176
+ },
57177
+ {
57178
+ "kind": "ENUM",
57179
+ "name": "CustomerViberErrorCode",
57180
+ "description": "Enumerated failure modes for sendCustomerViber.",
57181
+ "fields": null,
57182
+ "inputFields": null,
57183
+ "interfaces": null,
57184
+ "enumValues": [
57185
+ {
57186
+ "name": "NO_RECIPIENTS",
57187
+ "description": "No recipients could be resolved from the supplied targeting.",
57188
+ "isDeprecated": false,
57189
+ "deprecationReason": null
57190
+ },
57191
+ {
57192
+ "name": "MESSAGE_REQUIRED",
57193
+ "description": "message was empty or whitespace.",
57194
+ "isDeprecated": false,
57195
+ "deprecationReason": null
57196
+ },
57197
+ {
57198
+ "name": "MESSAGE_TOO_LONG",
57199
+ "description": "message exceeds the InfoBip 1000-character limit.",
57200
+ "isDeprecated": false,
57201
+ "deprecationReason": null
57202
+ },
57203
+ {
57204
+ "name": "TARGETING_REQUIRED",
57205
+ "description": "Neither customer_id, customer_ids, nor segment_id was supplied.",
57206
+ "isDeprecated": false,
57207
+ "deprecationReason": null
57208
+ },
57209
+ {
57210
+ "name": "TARGETING_EXCLUSIVE",
57211
+ "description": "More than one targeting mode was supplied; exactly one is allowed.",
57212
+ "isDeprecated": false,
57213
+ "deprecationReason": null
57214
+ },
57215
+ {
57216
+ "name": "BUTTON_FIELDS_INCOMPLETE",
57217
+ "description": "button_text is set but button_url is not (or vice-versa) — both are required together.",
57218
+ "isDeprecated": false,
57219
+ "deprecationReason": null
57220
+ },
57221
+ {
57222
+ "name": "INVALID_IMAGE_URL",
57223
+ "description": "image_url is not a valid URL.",
57224
+ "isDeprecated": false,
57225
+ "deprecationReason": null
57226
+ },
57227
+ {
57228
+ "name": "INVALID_BUTTON_URL",
57229
+ "description": "button_url is not a valid URL.",
57230
+ "isDeprecated": false,
57231
+ "deprecationReason": null
57232
+ },
57233
+ {
57234
+ "name": "VIBER_NOT_CONFIGURED",
57235
+ "description": "Viber channel is not installed or not configured on this store. Install via the admin apps marketplace first.",
57236
+ "isDeprecated": false,
57237
+ "deprecationReason": null
57238
+ }
57239
+ ],
57240
+ "possibleTypes": null
57241
+ },
57242
+ {
57243
+ "kind": "OBJECT",
57244
+ "name": "SendCustomerViberPayload",
57245
+ "description": "Response for sendCustomerViber.",
57246
+ "fields": [
57247
+ {
57248
+ "name": "job",
57249
+ "description": "Tracking record. Null when userErrors is non-empty (dispatch did not happen).",
57250
+ "args": [],
57251
+ "type": {
57252
+ "kind": "OBJECT",
57253
+ "name": "CustomerViberJob",
57254
+ "ofType": null
57255
+ },
57256
+ "isDeprecated": false,
57257
+ "deprecationReason": null
57258
+ },
57259
+ {
57260
+ "name": "skippedByConsent",
57261
+ "description": "Customers filtered out because they have not opted in to marketing (only applies when type = MARKETING).",
57262
+ "args": [],
57263
+ "type": {
57264
+ "kind": "NON_NULL",
57265
+ "name": null,
57266
+ "ofType": {
57267
+ "kind": "SCALAR",
57268
+ "name": "Int",
57269
+ "ofType": null
57270
+ }
57271
+ },
57272
+ "isDeprecated": false,
57273
+ "deprecationReason": null
57274
+ },
57275
+ {
57276
+ "name": "skippedByMissingPhone",
57277
+ "description": "Customers filtered out because they have no phone number on file (shipping / billing / alternative).",
57278
+ "args": [],
57279
+ "type": {
57280
+ "kind": "NON_NULL",
57281
+ "name": null,
57282
+ "ofType": {
57283
+ "kind": "SCALAR",
57284
+ "name": "Int",
57285
+ "ofType": null
57286
+ }
57287
+ },
57288
+ "isDeprecated": false,
57289
+ "deprecationReason": null
57290
+ },
57291
+ {
57292
+ "name": "complianceHint",
57293
+ "description": "Compliance reminder for MARKETING sends — reminds caller to include opt-out wording.",
57294
+ "args": [],
57295
+ "type": {
57296
+ "kind": "SCALAR",
57297
+ "name": "String",
57298
+ "ofType": null
57299
+ },
57300
+ "isDeprecated": false,
57301
+ "deprecationReason": null
57302
+ },
57303
+ {
57304
+ "name": "userErrors",
57305
+ "description": "Validation / precondition errors. Empty on success.",
57306
+ "args": [],
57307
+ "type": {
57308
+ "kind": "NON_NULL",
57309
+ "name": null,
57310
+ "ofType": {
57311
+ "kind": "LIST",
57312
+ "name": null,
57313
+ "ofType": {
57314
+ "kind": "NON_NULL",
57315
+ "name": null,
57316
+ "ofType": {
57317
+ "kind": "OBJECT",
57318
+ "name": "CustomerViberUserError",
57319
+ "ofType": null
57320
+ }
57321
+ }
57322
+ }
57323
+ },
57324
+ "isDeprecated": false,
57325
+ "deprecationReason": null
57326
+ }
57327
+ ],
57328
+ "inputFields": null,
57329
+ "interfaces": [],
57330
+ "enumValues": null,
57331
+ "possibleTypes": null
57332
+ },
57333
+ {
57334
+ "kind": "INPUT_OBJECT",
57335
+ "name": "SendCustomerViberInput",
57336
+ "description": "Targeting + content for sendCustomerViber. Exactly one of customer_id, customer_ids, segment_id must be supplied.",
57337
+ "fields": null,
57338
+ "inputFields": [
57339
+ {
57340
+ "name": "type",
57341
+ "description": "Delivery classification. Drives marketing-consent filtering. Shared enum with email.",
57342
+ "type": {
57343
+ "kind": "NON_NULL",
57344
+ "name": null,
57345
+ "ofType": {
57346
+ "kind": "ENUM",
57347
+ "name": "CustomerEmailType",
57348
+ "ofType": null
57349
+ }
57350
+ },
57351
+ "defaultValue": null
57352
+ },
57353
+ {
57354
+ "name": "message",
57355
+ "description": "Viber message body. Max 1000 characters (InfoBip Viber Business limit). Non-empty.",
57356
+ "type": {
57357
+ "kind": "NON_NULL",
57358
+ "name": null,
57359
+ "ofType": {
57360
+ "kind": "SCALAR",
57361
+ "name": "String",
57362
+ "ofType": null
57363
+ }
57364
+ },
57365
+ "defaultValue": null
57366
+ },
57367
+ {
57368
+ "name": "image_url",
57369
+ "description": "Optional image URL shown above the message.",
57370
+ "type": {
57371
+ "kind": "SCALAR",
57372
+ "name": "String",
57373
+ "ofType": null
57374
+ },
57375
+ "defaultValue": null
57376
+ },
57377
+ {
57378
+ "name": "button_text",
57379
+ "description": "Optional CTA button label. Must be paired with button_url.",
57380
+ "type": {
57381
+ "kind": "SCALAR",
57382
+ "name": "String",
57383
+ "ofType": null
57384
+ },
57385
+ "defaultValue": null
57386
+ },
57387
+ {
57388
+ "name": "button_url",
57389
+ "description": "Optional CTA button target URL. Must be paired with button_text.",
57390
+ "type": {
57391
+ "kind": "SCALAR",
57392
+ "name": "String",
57393
+ "ofType": null
57394
+ },
57395
+ "defaultValue": null
57396
+ },
57397
+ {
57398
+ "name": "customer_id",
57399
+ "description": "Single recipient by customer ID.",
57400
+ "type": {
57401
+ "kind": "SCALAR",
57402
+ "name": "ID",
57403
+ "ofType": null
57404
+ },
57405
+ "defaultValue": null
57406
+ },
57407
+ {
57408
+ "name": "customer_ids",
57409
+ "description": "Explicit list of customer IDs.",
57410
+ "type": {
57411
+ "kind": "LIST",
57412
+ "name": null,
57413
+ "ofType": {
57414
+ "kind": "NON_NULL",
57415
+ "name": null,
57416
+ "ofType": {
57417
+ "kind": "SCALAR",
57418
+ "name": "ID",
57419
+ "ofType": null
57420
+ }
57421
+ }
57422
+ },
57423
+ "defaultValue": null
57424
+ },
57425
+ {
57426
+ "name": "segment_id",
57427
+ "description": "Segment ID — resolves to all customers linked to subscribers in the segment.",
57428
+ "type": {
57429
+ "kind": "SCALAR",
57430
+ "name": "ID",
57431
+ "ofType": null
57432
+ },
57433
+ "defaultValue": null
57434
+ }
57435
+ ],
57436
+ "interfaces": null,
57437
+ "enumValues": null,
57438
+ "possibleTypes": null
57439
+ },
56303
57440
  {
56304
57441
  "kind": "ENUM",
56305
57442
  "name": "AnalyticsCompare",